<- People Behind Informatics


All 0-9 A B C D E F G H I J K L M N O P Q R S T U V W XY Z




 
Simula 1
Simula 1 (1962-1964) and Simula 67 (1967) were the first two object-oriented (00) languages. Technically Simula 1 was an ad hoc extension of the Algol 60 programming language. One of the reasons for basing the new language an Algol was Algol's concept of block. Algol blocks combine data and operations containing local variable and procedure declarations as well as an action sequence pattern. Through the procedure call mechanism, many invocations of a block may coexist in an Algol program execution in the sense of being dynamically nested, each with its own local variables and declared procedures. For the purpose of system modeling, it was useful to break away from the rigid dynamic nesting regime of Algol, introducing the concept of quasi-parallel processes, each an activation of (the body of) a so-cal e activity declaration, structurally similar to a procedure declaration. Quasi-parallel processing is a way of simulating concurrent action sequences within a single sequential computation. Control will jump from one process to another as the result of certain special sequencing statements, leaving behind a "reactivation point" indicating where in the process operations are to be resumed when control returns. At the Same time a concept of simulated time was introduced. Each process was given a local time variable indicating the system time scheduled for its next active period, and a list was kept of processes ordered according to time values. A system invariant was established so that the process at the front of the time list would be the currently active one. Its local time value would define the current simulated time. Thus, a statement such as h o l d ( t ) , representing the passage of t units of simulated time, could be implemented by detaching the active process from the time List, increasing its local time value by t, and reinserting it into the time list according to its new time value. The process now at the end of the time list would be resumed at its reactivation point. Explicit pointer values were introduced for the purpose of process identification (it follows that the language had List processing (q.v.) capabilities). Processes could interact through nonlocal variables and by accessing each other's "attributes," i.e. local variables and procedures, declared at the outermost block. Algol 60 had introduced an important principle of high-level programming: that the behavior of any program accepted by the compiler should be explainable by reasoning completely in terms of the language semantics, independently of implementation details. In particular, there must be data access security in the sense that accessible data actually exist and are interpreted according to their declaration. In order to retain such security a special mechanism for the "remote" accessing of process attributes, called an inspection block, had to be invented, so that the "kind" of a referenced process could be ascertained by an explicit test before its attributes were accessed. In each inspection block the attributes of a process of the corresponding kind are directly accessible. In Algol the storage for each block activation can be recycled upon exit, leading to a very simple and efficient storage management using a last in, first out stack (q.v.) regime. In Simula, Algol-like blocks can be treated similarly, but each process needs an independent stack, which necessitates a much more complicated dynamic store management. For the purpose of data access security, processes must not dispose of their storage, but have to remain in memory as long as there are accessible pointers to them. Thus, a garbage collection (q.v.) mechanism was required in order to achieve efficient memory usage. Experience has shown that Simula 1 was a successful instrument for simulation purposes, as well as for system description. The fact that the whole of Algol was included in the language implied that it was easy to add facilities for special purposes such as pseudorandom number generation (q.v.) and data accumulation. Processes would typically range from full-fledged Algol-like programs to passive data structures with associated operators.[1] [1: Encyclopedia of Computer Science, Fourth Edition, Anthony Ralston, Edwin D. Reilly, David Hemmendinger]
 

 

<- People Behind Informatics


Home  |  Top  |  Search  |  Gallery  | Glossary  | Sitemap  |  Making Of  |  Help