Joseph "Lick" Licklider: "Intergalactic computer network" (1963)

image

Engineering

In this letter sent to D. K. R. Licklider his colleagues in 1963, the analysis of complex problems that will be faced when creating computer network time sharing with advanced software that will lead to the creation of ARPANet, the predecessor of the current Internet. And would the next steps for an Intergalactic computer network?

MANAGEMENT of PERSPECTIVE RESEARCH PROJECTS (ARPA)
Washington 25, D.C. April 23, 1963
MEMO TO: members and affiliates of the Intergalactic computer network
FROM: J. C. R. Licklider
SUBJECT: Topics for discussion at an upcoming meeting.

First, I apologize for the fact that I had to postpone the meeting scheduled for 3 may 1963 in Palo Alto. Department of ARPA research team just received a new assignment to which you want to begin immediately, and should I devote the whole next week. Priority is extremely high. I'm very sorry for this inconvenience to those of you who already had it all planned for 3 may. Since the rest of this week I will spend in Cambridge, I'll ask his colleagues to postpone the meeting on may 10 in the same place.

I decided to organize a meeting in connection with the fact that I have no clear understanding of the entire structure. I'm afraid that this fact will be too evident in the following paragraphs. Nevertheless, I will try to transfer some data from primary sources and to Express their thoughts about the possible interaction between the various operations carried out in the framework of this event in General, and for which, as you might guess, I can't think of a name.

First and foremost, I would like to mention that we are all, of course, are busy with their projects, efforts and implement each their own (personal and/or organizational) aspirations. I think we share common characteristics that are, in some sense, associated with the development of prior art or technology of information processing, as well as with the progress of intellectual abilities (human, human-machine or complex machine) and the approach to the theory of science. At least individual parts to some extent interdependent. To achieve success, each of the active research needs a software and hardware support suitable for a wide range of tasks and more complex than each individual can create in a reasonable time.

To achieve their goals, different team members will be responsible for the control system, languages and compilers, system debug, and document management, as well as for basic computer programs with more or less the General degree of utility. As one of the topics of the meeting, perhaps even it will be primary, will consider the possibility of extracting mutual benefits from this activity, i.e. to identify who depends on whom, and who, what and as a result, some actions may benefit from other group members. Of course, you must take into account all costs. Nevertheless, it seems to me that each of us benefit from awareness of the preliminary plans before these plans are approved, more likely than loss. I in any case do not dispute the need for everyone to adhere to some rigid system of rules and restrictions that could increase, for example, interchangeability of programs.

But I do think we need to see a picture of the mutual influence of the main stages of some of the planned works. All in one place, that the scheme of work was clearly to be seen, where a system-wide agreement, and where more important to go to the individual concessions for the common good of the group.
Of course, it is difficult to determine what constitutes "the common good of the group". Even if there is a risk to confuse their personal goals (or goals ARPA) with the objectives of the "group", all the same, allow me to share ideas that could, in a sense, to be the desire of a group, system, or network.

Appears programming languages, debugging languages, languages of control systems with time sharing, languages, computer networks, databases (or languages storing and reading files), and possibly other kinds of languages. Perhaps to counter this or slightly restrict such dissemination would be beneficial, maybe not. But it seems to me that there is no doubt that for these languages it would be good to develop a process of "transferring knowledge obtained through learning." One way may be to support group teamwork in the adoption of inconsistent and partially inconsistent decisions arising in the process of designing and implementing languages. For example, will be of little use from a variety of characters, one per person, or institution, labeling "refers to the content or type of content refers to". It is advisable carefully to keep to the uniformity, yet it is acceptable in the framework of a set of podjazdow the language system (e.g., system programming, debugging, and separation time), whether the languages, related to JOVIAL on the computer Q-32, or the system based on Algol (if such were developed and different from the JOVIAL family of languages) for the Q-32, or a number of languages based on FORTRAN for a 7090 or 7094.

Writing the previous paragraph, I began to clearly understand that the complexity of the problem of uniformity within the subset of interrelated languages is that in a given time on a given computer will only work with one system for time-sharing, while several programming languages with the corresponding language debugging can work at the same time. Control language time-sharing can work closely with just one pair of languages to write and debug. As for syntax, there is a need for a "preferred" language for each computer or system, from which it follows that we need to check that the control language time-sharing corresponds to the preferred language. Regarding semantics, or, at least, matching of certain symbols to specific management functions, I believe that it is possible, although maybe not quite conveniently, provide different operators for several different special dictionaries. In any case, there is such a problem, or even a number of problems.

With the language control network of computers is not so simple. Imagine a situation when several different agencies networked with each of them has a high degree of individuality, using its own special methods and its own specially designed languages. Is not a task easier would be if all companies were obliged to adopt some language or, at least, to conclude an agreement on how to ask the question "what language do you speak?" In fact, this problem is from the category of science fiction: "How to organize the process of communication between completely non-interacting "intelligent" beings?" But I should not get involved in their most extreme assumptions about newsinessence. (But I'm willing to share my assumptions about rationality) would be Correct to ask such questions: the Language of network management is the same as the control language time-sharing? (If so, the result is a control language time-sharing the General form) is the language the network control language managing time-sharing, and whether the language of network management is common to multiple networked devices? Is there such a thing as the language of network management? (For example, whether the user can manage your computer so that to be able to connect it to any part of the existing network, and then just go into the right mode?)
In the previous paragraph I have described the essence of complexity. Let's take a look from a different angle. Obviously, someone from employees of the company will be engaged in the compiler, or compilers, with the aim to transform existing programs that compile FORTAN, JOVIAL, ALGOL, LISP and IPL-V (or V-l or V-ll). If the list is incomplete, then it makes sense to study the planned works on compatibility. Moreover, I believe that to consider plans for upcoming work you also need to see what their specific functions as well as to determine whether the point is to determine a set of desired features, and try to implement them in one language and one system of compilers. I am convinced that the functions of a data structure of type list as a potential element of the languages ALGOL and JOVIAL that we need to think in terms of enable this type of structure in existing languages, and in terms of design languages based on it.

It may be that only in rare cases, the most computers system or even all of them work together in a single network. However, the development of performance in the integrated network is quite interesting and important. If you were to work in such a network, what an vague idea, we would have had at least four large computer, perhaps six or eight small, and huge selection of disc files and magnetic tape units, not to mention remote consoles and teletype. Easier in this case to look through the eyes of the user to understand that he wished that he could do, and then try to determine how to create a system tailored to his requirements. Below are my vision of the needs of the user.

(Let's assume I'm sitting at the console, which includes a CRT display, light pen, and typewriter.) I want to retrieve a set of experimental data recorded on a tape called "Test listening". Data is stored under the name of "experiment 3" and, in fact, represent the percent of the different relations signal/noise. And these empirical functions a lot. Experimental data are presented in matrix form: several listeners, several modes of transmission, some frequencies of the signal with different periods of duration. First I would like to assign to the measured data, some "theoretically" derived graphs. But beforehand I want to find out what basic function I choose to define a theoretical correlation percentage and signal-to-noise. On another tape, called "Approksimativnye curves", I have a few procedures for the selection of the linear and the exponential function and the cumulative normal distribution function. But I would like to try and others. Let's first look at functions for which I have programs. But the problem is that good programs for drawing graphs I have just not. And I want one of those to borrow. Fit a simple rectangular coordinate system, but I would like to set the number of divisions on each axis, as well as signs.

And to enter this information I'm going through my typewriter. Somewhere in the system there is a suitable program for plotting? Based on the prevailing network doctrine, I interrogate first the local store, and then, and other members of the network. Suppose I work in the centre for statistical data (approx. lane SDC — quite a multivalued abbreviation, so the translation is one of the options more or less appropriate in context), and that I found the right program on the file disk Berkeley.

But my program written in JOVIAL, and those that I found on FORTRAN. I need to present them in a relocatable binary form and used as submodules in your program for approximation of functions either at run time or at boot time.

The approximation result data of the cumulative normal distribution function was not so bad, but I'm more interested in basic functionality, which I can manage, setting several values of the curve length, rather than to meet any particular theory of the demodulation process so I just want to find out if anyone in the system any program for approximation of curves, which takes as input the function supplied by the user or in which there are built-in functions remotely resembling a cumulative curve of the normal distribution, only asymmetrical. Suppose I'm looking at different files, or even the main network resource, and understand that there are no such programs. So I decide to continue with the normal distribution curve.

At this stage, I have a little Oprogramowanie. I'm going to work with their data and programs of the approximation for a normal curve to illustrate how those programs work that I have Pushistov. I need to schedule, approximated at different subset of their data, limiting the average value, and achieving slow growth differences as you move along the axis of ordinal numbers and ratios, while still allowing for the slight differences in the sets of numerical values of the curve length for different subjects. So, next step, create a certain the main program to set the values of the curve length approximation procedures and output as graphical representations and numerical indicators of the level of approximation in the process of placing a suitable (for me) settings. And all this using the light pen and screen of the oscilloscope. Let's just say, for my actual data I write my program again and again to the auxiliary programs mentioned above, until you get the desired result.

Suppose I finally did it, and I have some acceptable results, images that reflect how the data is obtained experimentally, and "theoretically" calibrated graphs of functions, and new programs for re-use in the future. I want to create a system of a number of such programs, and store it under the name "System for the approximation of the function of the normal distribution with the length constraint curve".

Next, imagine that my intuitive and natural way of naming system goes against the common naming conventions of the programs on the network. I would like to get something drew my attention to the differences from the accepted norms, because when it comes to program libraries and public files of useful data, I'm becoming a bona fide "employee, highly devoted to your organization."

In the previous paragraph I must have tried several network functions. I did extract desired information through a system, which searches for the program according to the main specific me criteria. Maybe this system was based on the descriptors (or something similar), as well as understanding computer-natural language that will not be soon. However, it would be nice to use certain features of the avant-garde linguistics. Using someone else's program, I thus have worked on some relationships between own and borrowed software. Hopefully, I did it without much effort, and that connection was established (or laid the Foundation for their installation), when the program became part of me used the system.

Any other data I have not used, but only because I had my own. If I was trying to test some theory, I would use not only third-party programs, but also to collect other people's data.

For example, all the action happens on the computer in statistics data center where, as expected, I was. However, I would leave it at the level of speculation. Even with the complex network management system, I could not decide whether to send the data somewhere for processing or to download programs and run them on your data set. I don't mind to make such decisions, at least for a while, but, in principle, it would be better if it will make the computer or the network itself. Upon completion, I collected my data in one place that could benefit others. Perhaps it gave a kind of impetus to the creation of a system of control agreements, which in the early stages should be based on human ratings and machine processing.
Described example (sorry, the description is pretty long) destined to become a kind of example of examples. I would like to gather, or to be sure that someone else will gather a large number of such examples to see what apps and equipment they need. Something tells me that the result of a large number of such examples would be very large memory with random access.

Now, let us approach the problem from the other side, and I will describe the course of his thoughts. (And here I was interrupted, and the discussion that was about to go in a different direction). First, it is unclear until the end what "clean procedure". I understand that the new version of JOVIAL is going to compile programs in absolute "procedural" style. But will other compilers different institutions to do the same?

Second, the unclear situation with the interpretation of requests from one organization to the other. I vaguely imagine a system that could transform the incoming language commands or questions generated by the rules under which the organization operates. On the other hand, the transformation, of course, can be carried out on the sender side. And yet, can be achieved this consistency, in which all communicate in a common language and use common formats. Thirdly, there is a problem with protection and updating shared files. I don't want to use the data from a file that another user at this time is making changes. In working together you can use something approximately similar with the category of data protection in the armed forces. But in this case we are going to manage?

Further we will discuss the problem step-by-step compilation. Is it true that A. D. Perlis with their "associated lists", in fact, have solved this problem as well and is similar to the task "compile-test-recompile"?

And now for the questions about hardware. My concern is that the task of accounting for borders, or, to speak more common language, tasks, memory protection, it may cost us to do on the machine is Q-32 and on other machines it will be expensive and difficult. I am also concerned about the problem of swap and transmission between core and memory of the second level, which will be difficult and expensive to solve on the 7090 and 7094, and I am concerned that the possibility of time-sharing will not bring much benefit without a quick transfers and swapping. What would be the best solution? At what stage are our plans?

Long description of example implicitly hear the question about the connection routines at run time. The challenge itself is simple using the directory is easy to do, but to deal with system variables not so simple. Can be, in principle, it's easy, and it should be noted that, probably, it is irrational to control the connection of system variables at run time through tables or simple circuits addressing.
It is time to finish the letter, because I need to catch a plane. I wanted to review the interests of the Department of command and control of the ARPA within the theme of improved versions of interaction human-computer in computer networks and systems with time division.

I think everyone knows the reasons for the interest in this field from the ARPA, but, if necessary, I can briefly to highlight them at the meeting. The fact that the armed forces badly need the solution of many problems which will arise in the future and we would be able to help them, if the maximum used being developed the device.

I hope that the obvious benefits in working together and programming will abound, which will lead us to the solution of problems and thus create technology that meets the needs of the armed forces. When problems appear clearly in the military sphere, and it seems that they are not affected by the field research, then ARPA takes action to their regulation as of the occurrence of such situations. But hopefully many of these issues will be equally important in both spheres.
In conclusion, I repeat that we should discuss the issues and challenges that I was trying to imagine here. Perhaps some questions were not specified. I hope the discussion will not be as confusing as my letter, which I have done.

the

PS


Who wants to help deal with the origins of the computer revolution and help with the translation — write to the PM.

Joseph "Lick" Licklider: "the Symbiosis of man and computer" (1960), part 1
Article based on information from habrahabr.ru

Комментарии

Популярные сообщения из этого блога

Templates ESKD and GOST 7.32 for Lyx 1.6.x

Monitoring PostgreSQL + php-fpm + nginx + disk using Zabbix

Custom table in MODx Revolution