ISSN 0361-7688, Programming and Computer Software, 2009, Vol. 35, No. 1, pp. 2–5. © Pleiades Publishing, Ltd., 2009. Original Russian Text © E.Z. Lyubimskii, 2009, published in Programmirovanie, 2009, Vol. 35, No. 1.
On the Path to Building a Community of Programs E. Z. Lyubimskii† Keldysh Institute of Applied Mathematics, Russian Academy of Sciences, Miusskaya pl. 4, Moscow, 125047 Russia e-mail:
[email protected] Received September 23, 2008
Abstract—The grid project is the next step on the path to the creation of a worldwide artificial mind. For example, the Internet made it possible for people not to care about the place where the information is stored and how it is delivered. The grid allows people not to care about where and which resources are used to execute their programs. The next step will make it possible not to care about what programs are used to perform the desired tasks. It will be sufficient to set a task and programs will find and organize themselves so as to perform it. Even this step will not be the last one. All these features define the process of creating the universal mind from outside, that is, from the viewpoint of users. It is also important to see the internal substance of this process. From the inside, this is the process of creating a global community of programs. In the first decades of software development, the key problem was creating increasingly complicated and clever programs. Beginning in the 1990s, the main problem changed: now, it is to ensure the coexistence and cooperative operation of programs. This is a quite objective process, and it is governed by certain laws of which we mention two. First, the structure of the community of programs and the means of their interaction are largely similar to the structure and means of interaction in human society. Second, the human society becomes increasingly dependent on the community of programs, while the community of programs gradually becomes less dependent on the participation of people in its activity. Some day, the community of programs will become allsufficient. It is a very important and many-sided question how the relationship between the human society and the community of programs will develop, and we must start studying this problem now. As the first step, I propose to build a model of the future community of programs involving researchers of various specialities. The study of this model will enable us to correctly guide the construction of the community of programs. DOI: 10.1134/S0361768809010022 †
A VIEW FROM THE OUTSIDE: INFOSPHERE Immediately after the invention of computers, we started teaching them. Initially, we taught computers to perform computations. Then, we started to improve their skills by developing various service programs. First, so-called linkage editors appeared, which could assemble large programs from small ones and organize libraries of such half-finished programs. Later, compilers were written that taught computers to understand various programming languages. The next stage was the development of operating systems, which almost hid computers from users and could control the operation of computer devices thus making them work in parallel. Operating systems also made it possible to run several programs on the same computer simultaneously and serve several users. Software for local area networks enabled employees of the same organization exchange information from their desks. A new stage began when regional, national, and later global computer communications were laid. Programs located at the nodes of the global computer net-
work turned all the computers connected to the network to its clients. Each of them got a unique address, and they obtained the possibility to quickly exchange information. At this moment, it became evident that the global computer brain will be distributed rather than centralized. A complex of programs under the common name “Internet” that covered the global computer network has played the major role in uniting the software developers in the world and in the considerable extension of the ranks of computer users. The Internet relieved us of the necessity to know where the desired information is stored; it ensured the reliable delivery of this information, and created conditions for the development of a variety of information servers. New sections of population got quick access to reference, encyclopedic and other kinds of information, to universal, specialized, worldwide, and regional libraries, and other storages of information. Programmers and other people acquired the possibility to develop joint projects without leaving their cities and countries. Now, we have on the Internet programs that represent agents of the real world such as industrial enter-
† Deceased.
2
ON THE PATH TO BUILDING A COMMUNITY OF PROGRAMS
prises, organizations, banks, stock exchanges, government bodies, and mass media. These programs (sites) not only disseminate information about the agents they represent but sometimes act on their behalf—hold tenders, make contracts, manage accounts, etc. Presently, a new layer of programs which was given the name “grid” is built over the Internet. The Internet socialized information, and the grid is going to socialize computer resources. We will cease to bother where our programs are executed. The corresponding programs (they are called services in the grid) will find appropriate available resources, arrange with their owners the conditions of use, deliver there our programs and files containing the initial data, and then deliver us the results. All the necessary measures for the reliable identification of the customer and executor will be taken, the confidentiality of the transferred data will be ensured, and so on. Our interests in this process will be represented by special certified program agents. The interests of the resource owners will naturally be represented by program agents as well. It remains to note that the resources in the grid are not only computers but also communication channels, databases, and various external devices, that is, everything that can obtain, generate, process, store, and transfer information. Software is also included in this list. It is easy to assume that the resources of the real world will be also considered as grid resources. Certainly, this is not the final stage. The next software superstructure apparently will take from us the care of knowing which programs perform our tasks. It will be sufficient to formulate it in certain terms, and intelligent services in the superstructure will find an appropriate program or a group of programs, organize their interaction, and pass them to grid services for execution. At some time, we will see that the language in which we communicate with programs has the basic features inherent in natural languages such as free vocabulary, a conventional set of basic concepts and relationships between them, the capability to explain new concepts in terms of already available ones, incomplete and approximate expressions and the possibility to refine them in the course of a dialog, and so on. From this moment on, we can tell that we deal with the worldwide artificial mind, which certainly will continue to develop, but now using its own effort in addition to human efforts (partially, we already observe this phenomenon now). This will mean that programs learned to read our books and watch our films (at least, scientific ones) and that they know how to interpret readings of their sensors. Therefore, we will be able to conclude that the programs formed a model of the world corresponding to our model and continue to develop and improve it on the basis of their experience, that is, reflexively. This will mean that a new “infosphere” has PROGRAMMING AND COMPUTER SOFTWARE
Vol. 35
3
formed within the noosphere introduced by Vernadsky (or along with it). From the outside, the noosphere looks as the unified worldwide mind; from the inside, it is the community of thinking units (homo sapiens). These thinking units are connected by a dense network of communications, know how to unite themselves for cooperative actions into various types of groups; they learned and continue to learn rules of coexistence on the planet, that is, in the common habitat with a limited amount of resources. They learned how to write down and save their knowledge in libraries and other knowledge stores, how to systemize the knowledge using various classifiers, and how to make it a public property. Let us discuss the internal structure of the infosphere. We will see that the infosphere will be a community of programs organized on the basis of the same principles as the human society. Even at the present time, when working on a computer, we deal not with an isolated program but with an organized set of programs and data involved in a dialog. Therefore, the internal meaning of the process of “informatization” and computerization of society, which is a major trend in the modern growth of technology, is that we are together building the worldwide community of programs. PROGRAMS AND COMPUTERS Before starting to discuss the community of programs in more detail, I must explain why I mention only programs rather than computers, communication hardware, or external devices. It is conventional to assume that the grid consists of computation nodes, high-speed global communication channels, and the software is a secondary thing. Is it correct to discuss software without mentioning computers? Yes, I think it is. A program is a kind of general knowledge, while a computer is only an instrument used to interpret this knowledge. The program is independent of the computer in the sense that if the former knows, for example, how to multiply matrices, it will be able to multiply them on any computer (possibly, upon the proper translation). On the other hand, any computer does only what a program instructs it to do. Under the control of a program designed to multiply matrices, a computer will multiply them; and under the control of a program designed to add matrices, it will add them. If any particular computer breaks, the program remains untouched. Much the same as when a piano breaks, the Moonlight Sonata remains untouched. Computers all over the world and channels connecting them are a habitat for programs. Somewhere in this habitat, they are developed by programmers, debugged, tested, and optimized. Programs are stored in various places. Sometimes, multiple copies are stored in different places. In response to our requests, some programs move other programs to distant parts of the network or No. 1
2009
4
LYUBIMSKII
distribute their copies over many computers for the parallel execution. Using software terminology, one can say that the lifecycle of programs proceeds in this habitat. By means of various external devices (displays, keyboards, sensors, effectors in industry, computer vision systems and motor organs of robots), the infosphere interacts with the external world, where we also belong. Presently, the interaction is wider. The infosphere obtains from the external world electric energy, new computers, communication channels, and so on. This means that the infosphere is at an early stage of its development. But even now the future infosphere gives back to the external world much more than it gets from it by providing a powerful intelligent tool. Otherwise, we would not invest so many resources in it. A VIEW FROM THE INSIDE: COMMUNITY OF PROGRAMS In the first years after their appearance, computers operated in the single program mode and were mainly used for computing complicated functions. The interaction between programs was restricted to passing the results obtained by one program to another one and to calling other programs as subroutines. However, even at that time, programmers tried to develop not isolated programs but modules designed for the joint operation with other modules. An ideal (which is not yet achieved) was the complete assimilation of a new module in the computer library just as new knowledge is assimilated in the system of knowledge of a human being. The full-fledged dynamic interaction of concurrently executing programs became possible under the control of operating systems. Initially, operating systems were designed to organize the parallel operation of all the computer devices, and several programs were executed only to make those devices work more intensively. Under these conditions, an operating system was supposed to isolate programs from each other and organize their concurrent execution with account of their priorities. Soon, operating systems began to provide means for the organization of the joint work of several programs performing a common task. They became able to share resources, pass resources to each other temporarily or for keeps, exchange messages, synchronize their passage through checkpoints, and so on. Thus, operating systems undertook the management of both legal and technological matters. They regulated the coexistence of programs in the common habitat and organized their joint activities. Simultaneously, the range of tasks performed using computers considerably expanded. In particular, this range included modeling and automation of the activities of groups of people (a popular example is document management in an organization), modeling of
social relations, and modeling of the mental activity of people. It immediately became clear that the principles of the system interaction of components in all those cases are identical and coincide with the principles underlying the interaction of programs under the control of operating systems (for example, see Kamynin, S.S and Lyubimskii, E.Z, The Use of Collective Principles in the Structure of Complex Software Systems, in Development Prospects in System Programming, Novosibirsk, 1978). Certainly, this coincidence was not accidental. The future development of the system and application programming was the deliberate or unaware use of the ideas and methods of system interaction. For example, to organize the interaction of programs representing agents of a group of people, interaction mechanisms similar to real-life ones were put into program code. Later, these mechanisms accumulated in the basic software (software infrastructure) and became a part of the habitat of other programs. It is interesting that these processes began already when programs were run on isolated computers. The appearance of the worldwide computer network as the habitat led to the further growth of the software infrastructure. For example, it was earlier necessary to give a program the name of a file containing the input data; nowadays, such a file must be transported at a large distance through many intermediate stations. To satisfy these needs, a transport infrastructure was created. It ensures reliable exchange of information using shortest paths and protects them not only from random failures but also from malicious intruders (spies, hackers that infect data with viruses, and the like). A quite new notary infrastructure has appeared and is developing. Each program obtains from its customer an encoded certificate that certifies the program’s right to transact on behalf of this customer (for example, use a resource with the guarantee of payment). Various program notaries grant and check such certificates in the global network. There are many other competing services (legal, technological, and task oriented) that have not yet become standard. On the whole, the infrastructure that is being developed in the software habitat more and more resembles the infrastructure of the human society. PROBLEMS AND CONCLUSIONS Let us discuss some properties of the process of constructing the community of programs. This process is objective as any kind of the technological progress in the sense that no individual or a group of people can stop it. The future of this process is that the community of programs (the infosphere) will sometimes control industrial processes, transport, finances, and everything that supports the existence of the human society. Among other things, programs will control the reproduction of their habitat. Therefore, we
PROGRAMMING AND COMPUTER SOFTWARE
Vol. 35
No. 1
2009
ON THE PATH TO BUILDING A COMMUNITY OF PROGRAMS
will become completely dependent on the community of programs, while this community will be (technically) independent of us. The community of programs is developed spontaneously using the trial-and-error approach as industrial, scientific, and other needs require. First, such an approach is expensive because many trials could be avoided if we could predict their result. Second, it is dangerous because we cannot predict what kind of the community of programs will be eventually created and what relationships with it will be formed. It is unclear whether an analog of self-consciousness can appear in the community of programs. However it is beyond doubt that there will be people who will try to trigger critical mechanisms in this community. Actually, they have already been doing this for some time. So, what can be done? If we cannot or do not want to stop a process, it should be headed and set on the right track. We must change from the spontaneous to the scientifically founded development of a well-balanced community of programs that will have a balanced relationship with the human society. The first step is to see a sufficiently detailed picture of this “bright future.” This is a problem that requires the participation of experts in various fields; however, it seems that we are already able to solve it. We can take our society as a pattern, and then reject, keep, or modify its mechanisms. For example, analogs of political parties will hardly be needed. However, we will need a monetary system, banks, stocks, accounting, and audit (it is interesting, how they will correspond with ours?). The civil code must be given considerable attention. Subjects of law in the community of programs must be defined. For example, what is the legal difference between an individual program, a program that manages a database, and a program that serves as an agent of an enterprise? It is clear that some kind of “police” will be needed. One can hope that its work will ensure the complete crime detection if we manage to introduce a complete logging of events in the network (one must consider all pros and cons). Our conception of the future must become a criterion for estimating modern projects and provide a basis for their design. We must understand that this time we are creating not a conventional tool but a system that is at least equal to our society in intelligence. It will not
PROGRAMMING AND COMPUTER SOFTWARE
Vol. 35
5
remain a mere tool. It can either become our partner or our rival. Although the critical point is still far away (several dozens of years), we are passing the bifurcation point now (if we have not already passed it). DISCUSSION Think this is science fiction? It is difficult to imagine that a program will sometimes pursue some new goals that were not envisaged in its design. In fact, it does not need to do it. This is the whole system of programs that gets a new quality. If it is difficult for you to admit this, recall that you also consist of simple atoms of which each is exactly the same as it should be according to the periodic table. What is important is the system in which these atoms are organized. The structure of this system and the interaction of its subsystems and elements are much more important than the atoms the system consists of. The structure and interaction mechanisms in the system of programs we are creating copy the structure and interaction mechanisms of the system called human society. For that reason, we may expect that their behavior will have much in common. The necessity of copying from one system to the other is determined by two factors. First, the programs that represent the subjects of the real world (individual and legal persons) must simulate the interaction of those subjects in the network, which is the habitat of these models. Second, the habitat of programs has common features with our habitat such as limited resources, the capability to communicate and join efforts for cooperative activity, and so on. The last argument is that the proposed plan is useful as such even if one does not believe that the danger is real. Here is what I propose. Suppose that all the technical problems concerning the construction of the worldwide mind are solved and that we taught the programs to understand our requests and respond to them. I propose to describe how the global computer network and the system (community) of programs should be organized in this case so that it is convenient and safe to interact with it. Then, make a plan having in mind the target and the current state of our technology. This is the correct organization of the technology of developing complex systems, which is, however, repeatedly neglected by mankind.
No. 1
2009