Self-Replicating Distributed Virtual Machines Lance R. Williams Dept. of Computer Science University of New Mexico.

Slides:



Advertisements
Similar presentations
What is a Computer Program? For a computer to be able to do anything (multiply, play a song, run a word processor), it must be given the instructions.
Advertisements

A LEGO-like Lightweight Component Architecture for Organic Computing Thomas Schöbel-Theuer, Universität Stuttgart
CPU Review and Programming Models CT101 – Computing Systems.
The Recursion Theorem Sipser – pages Self replication Living things are machines Living things can self-reproduce Machines cannot self reproduce.
MATHEMATICAL FOUNDATIONS SUPPLEMENTAL MATERIAL – NOT ON EXAM.
Cmput Lecture 8 Department of Computing Science University of Alberta ©Duane Szafron 2000 Revised 1/26/00 The Java Memory Model.
Finite Automata and Non Determinism
Slides prepared by Rose Williams, Binghamton University Chapter 1 Getting Started 1.1 Introduction to Java.
1 Programming Languages b Each type of CPU has its own specific machine language b But, writing programs in machine languages is cumbersome (too detailed)
Encapsulation by Subprograms and Type Definitions
Programming Languages Structure
Chapter 2: Impact of Machine Architectures What is the Relationship Between Programs, Programming Languages, and Computers.
Communication in Distributed Systems –Part 2
Lecture 2: Do you speak Java?. From Problem to Program Last Lecture we looked at modeling with objects! Steps to solving a business problem –Investigate.
Self-reproducing programs. And Introduction to logic. COS 116: 3/6/2008 Sanjeev Arora.
Tangle: A General Purpose, Concurrent, Object Oriented, Actor Based Programming Language Chris Wailes and Graham Price.
1. 2 Chapter 1 Introduction to Computers, Programs, and Java.
Parallelization: Conway’s Game of Life. Cellular automata: Important for science Biology – Mapping brain tumor growth Ecology – Interactions of species.
Computer Programming 12 Mr. Jean March 3 rd, 2014.
© The McGraw-Hill Companies, 2006 Chapter 1 The first step.
Modern Concurrency Abstractions for C# by Nick Benton, Luca Cardelli & C´EDRIC FOURNET Microsoft Research.
More Theory of Computing
Self-reproducing programs. And Introduction to logic. COS 116, Spring 2012 Adam Finkelstein.
Implementing Scheme in a Virtual World Lance R. Williams Dept. of Computer Science University of New Mexico.
Concurrency Programming Chapter 2. The Role of Abstraction Scientific descriptions of the world are based on abstractions. A living animal is a system.
4 - 1 Copyright © 2006, The McGraw-Hill Companies, Inc. All rights reserved.
Levels of Architecture & Language CHAPTER 1 © copyright Bobby Hoggard / material may not be redistributed without permission.
CS 363 Comparative Programming Languages
JIT in webkit. What’s JIT See time_compilation for more info. time_compilation.
CS101 Introduction to Computing Lecture Programming Languages.
FRST JAVA PROGRAM. Getting Started with Java Programming A Simple Java Application Compiling Programs Executing Applications.
Programming Languages and Design Lecture 3 Semantic Specifications of Programming Languages Instructor: Li Ma Department of Computer Science Texas Southern.
Theory of Programming Languages Introduction. What is a Programming Language? John von Neumann (1940’s) –Stored program concept –CPU actions determined.
©Brooks/Cole, 2003 Chapter 17 Theory of Computation.
Perl Tutorial. Why PERL ??? Practical extraction and report language Similar to shell script but lot easier and more powerful Easy availablity All details.
FOUNDATION IN INFORMATION TECHNOLOGY (CS-T-101) TOPIC : INFORMATION SYSTEM – SOFTWARE.
1.4 Representation of data in computer systems Instructions.
CSC1200 INTRODUCTION TO PROGRAMMING Dr. Maureen Markel
 Programming - the process of creating computer programs.
Georgia Institute of Technology Speed part 4 Barb Ericson Georgia Institute of Technology May 2006.
Sahar Mosleh California State University San MarcosPage 1 Assembly language and Digital Circuit By Sahar Mosleh California State University San Marcos.
1 Chapter 1 Programming Languages Evolution of Programming Languages To run a Java program: Java instructions need to be translated into an intermediate.
Simple ALU How to perform this C language integer operation in the computer C=A+B; ? The arithmetic/logic unit (ALU) of a processor performs integer arithmetic.
The Functions and Purposes of Translators Translators, Interpreters and Compilers - High Level Languages.
1 Introduction to Turing Machines
The Functions and Purposes of Translators Translators, Interpreters and Compilers - High Level Languages.
Chapter 12 Theory of Computation Introduction to CS 1 st Semester, 2014 Sanghyun Park.
KERRY BARNES WILLIAM LUNDGREN JAMES STEED
Riyadh Philanthropic Society For Science Prince Sultan College For Woman Dept. of Computer & Information Sciences CS 251 Introduction to Computer Organization.
INTRODUCTION TO COMPUTER PROGRAMMING(IT-303) Basics.
Invitation to Computer Science 6th Edition
Computer Systems Nat 5 Computing Science
Scala days 2010 exmachina.
Advanced Computer Systems
Programming what is C++
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
Why to use the assembly and why we need this course at all?
Computer Systems Nat 5 Computing Science
Topic: Difference b/w JDK, JRE, JIT, JVM
Text by: Lambert and Osborne
Ch. 11 Theory of Computation
Programming Languages
The Metacircular Evaluator
Programming Languages
Fundamentals of Programming
Chapter 6: Programming Languages
A programming language
Programming language translators
Presentation transcript:

Self-Replicating Distributed Virtual Machines Lance R. Williams Dept. of Computer Science University of New Mexico

Church-Turing Thesis  All models of effective computation are equivalently powerful.  However, certain models offer advantages with respect to particular modes of physical implementation.  The von Neumann machine is well-suited to implementation using electronic components.

Signaling Networks  The von Neumann machine is less useful as a model for computations implemented using signaling networks of neurons, molecules, nanomachines, or bacteria.  The ACTOR model (Hewitt ‘73) is potentially better suited to this mode of implementation.

ACTOR Model  A model of concurrent computation  An actor is a process.  Actors execute asynchronously and in parallel.  An actor can send/receive messages to/from other actors.  An actor can create new actors.

Distributed Virtual Machines  Compile programs written in a simple and expressive programming language into a network of actors  Actors represent virtual machine bytecodes and basic datatypes.  The network of actors constitutes the code, stack, and heap of a distributed virtual machine.

Example argumentrefer close assign halt closure put def symbol argument refer pair apply refer primitive (define sqr (lambda (x) (* x x))) COMPILATION put number put pair apply ref symbol pair put pair get number get pair get

The Cell  It is a popular fallacy that DNA is a self- replicating molecule.  DNA is a molecular representation.  DNA can be used to represent a description of a self-replicating machine called the cell.  The cell translates the DNA into a copy of the cell and a copy of the DNA.

Quines  A quine is a program which prints its own source code.  A quine consists of program and data.  The program uses the data to construct copies of the program and the data.

Self-Replicating Distributed Virtual Machines  A compiler can be implemented as a distributed virtual machine.  The distributed virtual machine can copy itself by compiling its own source code.  A distributed virtual machine which copies itself and then copies its own source code is (in effect) a non-biological cell.

Bacterial Implementation molecular lock molecular key continuation (plasmid) bytecode n bytecode n+1 bacterium

Conclusion  ACTOR model is better suited to describing signaling network embodied computations than the von Neumann machine.  A compiler implemented as a distributed virtual machine can copy itself simply by compiling its own source code.  A self-replicating distributed virtual machine embodied using bacteria would be a meta-cell.