Book Read Free

Darwin Among the Machines

Page 17

by George B. Dyson


  “The Princeton experiments were continued for more than 5,000 generations using universes of 512 numbers,” Barricelli reported. “Moreover, the actual size of the universe was usually increased far beyond 512 numbers by running several parallel experiments with regular interchanging of several (50 to 100) consecutive numbers between two universes. . . . Within a few hundred generations a single primitive variety of symbioorganism invaded the whole universe. After that stage was reached no collisions leading to new mutations occurred and no evolution was possible. The universe had reached a stage of ‘organized homogeneity’ which would remain unchanged for any number of following generations. . . . In many instances a new mutation rule would lead to a complete disorganization of the whole universe, apparently due to the death by starvation of a parasite, which in this case was the last surviving organism. . . . Homogeneity problems were eventually overcome by using different mutation rules in different sections of each universe. Also slight modifications of the reproduction rule were used in different universes to create different types of environment . . . by running several parallel experiments and by exchanging segments between two universes every 200 or 500 generations it was possible to break homogeneity whenever it developed in one of the universes.”19

  As Alan Turing had blurred the distinction between intelligence and nonintelligence by means of his universal machine, so Barricelli’s numerical symbioorganisms blurred the distinction between living and nonliving things. Barricelli cautioned his audience against “the temptation to attribute to the numerical symbioorganisms a little too many of the properties of living beings,” and warned that “the author takes no responsibility for inferences and interpretations which are not rigorous consequences of the facts presented.”20 He stressed that although numerical symbioorganisms and known terrestrial life-forms exhibited parallels in evolutionary behavior, this did not imply that numerical symbioorganisms were alive. “Are they the beginning of, or some sort of, foreign life forms? Are they only models?” he asked. “They are not models, not any more than living organisms are models. They are a particular class of self-reproducing structures already defined.” As to whether they are living, “it does not make sense to ask whether symbioorganisms are living as long as no clear-cut definition of ‘living’ has been given.”21 A clear-cut definition of “living” remains elusive to this day.

  Barricelli’s numerical organisms were like tropical fish in an aquarium, confined to an ornamental fragment of a foreign ecosystem, sealed behind the glass face of a Williams tube. The perforated cards that provided the only lasting evidence of their existence were lifeless imprints, skeletons preserved for study and display. The numerical organisms consisted of genotype alone and were far, far, simpler than even the most primitive viruses found in living cells (or computer systems) today. Barricelli knew that “something more is needed to understand the formation of organs and properties with a complexity comparable to those of living organisms. No matter how many mutations occur, the numbers . . . will never become anything more complex than plain numbers.”22 Symbiogenesis—the forging of coalitions leading to higher levels of complexity—was the key to evolutionary success, but success in a closed, artificial universe has only fleeting meaning in our own. Translation into a more tangible phenotype (the interpretation or execution, whether by physical chemistry or other means, of the organism’s genetic code) was required to establish a presence in our universe, if Barricelli’s numerical symbioorganisms were to become more than laboratory curiosities, here one microsecond and gone the next.

  Barricelli wondered “whether it would be possible to select symbioorganisms able to perform a specific task assigned to them. The task may be any operation permitting a measure of the performance reached by the symbioorganisms involved; for example, the task may consist in deciding the moves in a game being played against a human or against another symbioorganism.”23 In a later series of experiments (performed on an IBM 704 computer at the AEC computing laboratory at New York University in 1959 and at Brookhaven National Laboratory in 1960) Barricelli evolved a class of numerical organisms that learned to play a simple but nontrivial game called “Tac-Tix,” played on a 6-by-6 board and invented by Piet Hein. The experiment was configured so as to relate game performance to reproductive success. “With present speed, it may take 10,000 generations (about 80 machine hours on the IBM 704. . .) to reach an average game quality higher than 1,” Barricelli estimated, this being the quality expected of a rank human beginner playing for the first few times.24 In 1963, using the large Atlas computer at Manchester University, this objective was achieved for a short time, but without further improvement, a limitation that Barricelli attributed to “the severe restrictions . . . concerning the number of instructions and machine time the symbioorganisms were allowed to use.”25

  In contrast to the IAS experiments, in which the numerical symbioorganisms consisted solely of genetic code, the Tac-Tix experiments led to “the formation of non-genetic numerical patterns characteristic for each symbioorganism. Such numerical patterns may present unlimited possibilities for developing structures and organs of any kind to perform the tasks for which they are designed.”26 A numerical phenotype had taken form. This phenotype was interpreted as moves in a board game, via a limited alphabet of machine instructions to which the gene sequence was mapped, just as sequences of nucleotides code for an alphabet of amino acids in translating proteins from DNA. “Perhaps the closest analogy to the protein molecule in our numeric symbioorganisms would be a subroutine which is part of the symbioorganism’s game strategy program, and whose instructions, stored in the machine memory, are specified by the numbers of which the symbioorganism is composed,” Barricelli explained 27 In coding for valid instructions at the level of phenotype rather than genotype, evolutionary search is much more likely to lead to meaningful sequences, for the same reason that a meaningful sentence is far more likely to be evolved by choosing words out of a dictionary than by choosing letters out of a hat.

  A purely numerical sequence could in principle (and in time) evolve to be translated, through any number of intermediary languages, into anything else. “Given a chance to act on a set of pawns or toy bricks of some sort the symbioorganisms will ‘learn’ how to operate them in a way which increases their chance for survival,” Barricelli explained. “This tendency to act on any thing which can have importance for survival is the key to the understanding of the formation of complex instruments and organs and the ultimate development of a whole body of somatic or non-genetic structures.”28 Once the concept of translation from genotype to phenotype is given form, Darwinian evolution picks up speed—not just the evolution of organisms, but the evolution of the genetic language and translation system that provide the flexibility and redundancy to survive in a noisy, unpredictable world. A successful interpretive language not only tolerates ambiguity, it takes advantage of it. “It is almost too easy to imagine possible uses for phenotype structures—because the specification for an effective phenotype is so sloppy,” wrote A. G. Cairns-Smith in his Seven Clues to the Origin of Life. “A phenotype has to make life easier or less dangerous for the genes that (in part) brought it into existence. There are no rules laid down as to how this should be done.”29

  Barricelli’s pronouncements had a vaguely foreboding, Butlerish air about them, despite the disclaimer about confusing “life-like” with “alive.” Samuel Butler had warned that Darwin’s irresistible logic applied not only to the kingdom of nature but to the kingdom of machines; Nils Barricelli now demonstrated that it was the kingdom of numbers that held the key to that “Great First Cause” of Erasmus Darwin’s “one living filament,” whether encoded as strings of nucleotides or as strings of electronic bits. Barricelli saw that electronic digital computers heralded an unprecedented change of evolutionary pace, just as Butler had seen evolution quickened by the age of steam.

  Barricelli, like Samuel Butler, was a nonconformist whose contributions were obscured by lingering arguments
with the authorities of his time. After receiving a degree in mathematics and physics at the University of Rome in 1936, he emigrated, out of opposition to the Fascists, to Norway in 1938. He prepared his doctoral thesis (on climate variations) during the war, submitting the thesis in 1946. “However it was 500 pages long, and was found to be too long to print,” remarked Barricelli’s former student and fellow mathematician Tor Gulliksen. “He did not agree to cut it to an acceptable size, and chose instead not to obtain the doctoral degree!”30 Gulliksen worked as Barricelli’s assistant for the summer of 1962 and 1963, using the Atlas computer at Manchester, the most powerful computer of its time, in an attempt to evolve numerical symbioorganisms for playing chess.

  After a series of visiting appointments in virus genetics and theoretical biology, Barricelli returned to the University of Oslo in 1969, where he remained a guest of the Mathematical Research Institute until his death—“but without a salary,” said Gulliksen. “He would rather keep his complete freedom as a researcher than enter a permanent position at the University.”31 Barricelli believed that an inconsistency was concealed within Kurt Gödel’s 1931 incompleteness results, a suspicion that alienated him from the mathematical establishment and led to the publication of a series of research papers on this and other subjects at his own expense. “He believed that every mathematical statement could either be proved or disproved. He insisted that Gödel’s proof was faulty,” said Simen Gaure, who assisted with Barricelli’s proof generator project in 1983–1985. Gaure was hired (“He paid us directly out of his wallet, fairly good pay it was too, at least for students”) after a selection process that required searching for a deeply hidden flaw in a sample proof. “Those who could point out the flaw were accepted as not yet ruined by mathematical education,” reported Gaure. Barricelli intended “to actually build a machine which could prove or disprove any statement of arithmetic and projective geometry. He developed something he called ‘B-mathematics,’ which was a logic language particularly well suited for this task. . . . The proof constructor programs were written in Fortran and Simula on a DEC system 10 computer. I once asked him what the ‘B’ in ‘B-math’ was. He answered that he hadn’t decided on that; it could be ‘Boolean,’ or it could be ‘Barricelli,’ or something else, he said.”32

  Barricelli and the B-mathematics language died together in January 1993. “Languages as well as species evolve by mutation, crossing and selection,” Barricelli had noted in 1966. “A language cannot survive or propagate unless there are humans or whatever species is using the language. But that is a property it has in common with many symbionts and parasites. One may consider a language as a symbiont of Homo sapiens of a different nature than the nucleic acid–protein combinations we are used to consider as living organisms.”33 Barricelli’s language did not outlive its host. But his numerical symbioorganisms may still be lying dormant in a deck of punched cards somewhere, surviving long after magnetically stored data have decayed. “He insisted on using punch cards, even when everybody had computer screens,” Gaure remembered. “He gave two reasons for this: when you sit in front of a screen your ability to think clearly declines because you’re distracted by irrelevancies, and when you store your data on magnetic media you can’t be sure they’re there permanently, you actually don’t know where they are at all.”34

  Barricelli’s use of biological terminology to describe self-reproducing code fragments is reminiscent of early pronouncements about artificial intelligence, when machines that processed information with less intelligence than a pocket calculator were referred to as machines that think. A relic from the age of vacuum tubes and giant brains, Barricelli’s IAS experiments strike the modern reader as naïve—until you stop and reflect that numerical symbioorganisms have, in less than fifty years, proliferated explosively, deeply infiltrating the workings of life on earth. With our cooperation as symbiotic hosts, self-reproducing numbers are managing (Barricelli would say learning) to exercise increasingly detailed and far-reaching control over the conditions in our universe that are helping to make life more comfortable in theirs. Are the predictions of Samuel Butler and Nils Barricelli turning out to be correct?

  “Since computer time and memory still is a limiting factor, the non-genetic patterns of each numeric symbioorganism are constructed only when they are needed and are removed from the memory as soon as they have performed their task,” explained Barricelli, describing the Tac-Tix–playing organisms of 1959. He might as well have been describing that class of numerical symbioorganisms—computer software—that we execute and terminate from moment to moment today. “This situation is in some respects comparable to the one which would arise among living beings if the genetic material got into the habit of creating a body or a somatic structure only when a situation arises which requires the performance of a specific task (for instance a fight with another organism), and assuming that the body would be disintegrated as soon as its objective had been fulfilled.”35

  The precursors of symbiogenesis in the von Neumann universe were order codes, conceived (in the Burks–Goldstine-von Neumann reports) before the digital matrix that was to support their existence had even taken physical form. Order codes constituted a fundamental alphabet that diversified in association with the proliferation of different hosts. In time, successful and error-free sequences of order codes formed into subroutines—the elementary units common to all programs—just as a common repertoire of nucleotides is composed into strings of DNA. Subroutines became organized into an expanding hierarchy of languages, which then influenced the computational atmosphere as pervasively as the oxygen released by early microbes influenced the subsequent course of life.

  By the 1960s complex numerical symbioorganisms known as operating systems had evolved, bringing with them entire ecologies of symbionts, parasites, and coevolving hosts. The most successful operating systems, such as OS/360, MS-DOS, and UNIX, succeeded in transforming and expanding the digital universe to better propagate themselves. It took five thousand programmer-years of effort to write and debug the OS/360 code; the parasites and symbionts sprouted up overnight. There was strength in numbers. “The success of some programming systems depended on the number of machines they would run on,” commented John Backus, principal author of Fortran, a language that has had a long and fruitful symbiosis with many hosts.36 The success of the machines depended in turn on their ability to support the successful languages; those that clung to dead languages or moribund operating systems became extinct.

  The computational ecology grew by leaps and bounds. In 1954, IBM’s model 650 computer shipped with 6,000 lines of code; the first release of OS/360 in 1966 totaled just under 400,000 instructions, expanding to 2 million instructions by the early 1970s. The total of all system software provided by the major computer manufacturers reached 1 million lines of code by 1959, and 100 million by 1972. The amount of random-access memory in use worldwide, costing an average $4.00 per byte, reached a total of 1,000 megabytes in 1966, and a total of 10,000 megabytes, at an average cost of $1.20 per byte, in 1971. Annual sales of punched cards by U.S. manufacturers exceeded 200 billion cards (or 500,000 tons) in 1967, after which the number of cards began to decline in favor of magnetic tapes and disks.37

  In the 1970s, with the introduction of the microprocessor, a second stage of this revolution was launched. The replication of processors thousands and millions at a time led to the growth of new forms of numerical symbioorganisms, just as the advent of metazoans sparked a series of developments culminating in an explosion of new life-forms six hundred million years ago. New species of numerical symbioorganisms began to appear, reproduce, and become extinct at a rate governed by the exchange of floppy disks rather than the frequency of new generations of mainframes at IBM. Code was written, copied, combined, borrowed, and stolen among software producers as freely as in a primordial soup of living but only vaguely differentiated cells. Anyone who put together some code that could be executed as a useful process—like Dan Bricklin’s Visicalc
in 1979—was in for a wild ride. Businesses sprouted like mushrooms, supported by the digital mycelium underneath. Corporations came and went, but successful code lived on.

  Twenty years later, fueled by an epidemic of packet-switching protocols, a particularly virulent strain of symbiotic code, the neo-Cambrian explosion entered a third and yet more volatile phase. Now able to replicate at the speed of light instead of at the speed of circulating floppy disks, numerical symbioorganisms began competing not only for memory and CPU cycles within their local hosts but within a multitude of hosts at a single time. Successful code is now executed in millions of places at once, just as a successful genotype is expressed within each of an organism’s many cells. The possibilities of complex, multicellular digital organisms are only beginning to be explored.

  The introduction of distributed object-oriented programming languages (metalanguages, such as Java, that allow symbiogenesis to transcend the proprietary divisions between lower-level languages in use by different hosts) is enabling numerical symbioorganisms to roam, reproduce, and execute freely across the computational universe as a whole. Through the same hierarchical evolution by which order codes were organized into subroutines and subroutines into programs, objects, being midlevel conglomerations of code, will form higher-level structures distributed across the net. Object-oriented programming languages were first introduced some years ago with a big splash that turned out to be a flop. But what failed to thrive on the desktop may behave entirely differently on the Internet. Nils Barricelli, in 1985, drew a parallel between higher-level object-oriented languages and the metalanguages used in cellular communication, but he put the analogy the other way: “If humans, instead of transmitting to each other reprints and complicated explanations, developed the habit of transmitting computer programs allowing a computer-directed factory to construct the machine needed for a particular purpose, that would be the closest analogue to the communication methods among cells of various species.”38

 

‹ Prev