<- 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 67
Simula 1 (1962-1964) and Simula 67 (1967) were the first two object-oriented (00) languages. Simula 67 introduced most of the key concepts of object-oriented programming: objects, classes, subclasses and virtual procedures, combined with safe referencing mechanisms for making the contents of separately compiled classes available to programs. It became clear that features introduced in Simula 1 were of interest from points of view other than simulation and modeling, especially the data structuring possibilities inherent in the process concept and the associated list-processing facilities. Also, coroutine-like sequencing could be useful without the use of a system time concept. In order to clean up the language, a class declaration was introduced, giving rise to blocklike objects (with mechanisms for coroutine sequencing added), as well as direct typed object pointers in the manner of record handling as proposed by C. A. R. Hoare and implemented in the Pascal language. Thus, if C is a class declaring an attribute A, and x is a ref (C) pointer, then x.A is a secure access to the attribute A belonging to the referenced object. The most important innovation in Simula 67 was a mechanism for declaring subclasses with inheritance. Let C be a class. Then C class D; begin (class body) end is a subclass of C, and D objects inherit all C attributes. C may express properties common to a number of subclasses in the same program, or, if separately compiled, it may serve as a reusable plug-in unit. The subclass mechanism also makes it possible to formulate "application languages" for special problem areas by collecting relevant concepts in a class. In particular, the special purpose simulation facilities of Simula 1 could be introduced using a built-in class declaration. What are the reasons for the success of the class and subclass concepts? The following properties are probably important: the capacity for concept modeling and for providing reusable program components. Sometimes it is important that aspects of the real world can be directly mapped to program structures. One final notion deserves to be mentioned: virtual procedures. It is sometimes useful to redeclare inherited attributes. The standard binding rule of attribute identifiers is that they refer to the last declaration "statically visible" at the subclass level of the accessing identifier occurrence. However, if a procedure attribute is declared "virtual," access is to the declaration occurring deepest down in the actual object, regardless of the subclass level of the accessing occurrence. This implies that a virtual procedure becomes more like a "replaceable part" or formal parameter. Simula 67 is still being used in many places around the world, but its main impact has been through introducing one of the major categories of programming, object-oriented programming. In the 1980s tremendous resources were put behind the Ada language and the logic programming language Prolog, and many believed that these two languages would come to dominate practical programming in the next decade. Instead, object-oriented programming has become a dominant style of developing complex programs with large numbers of interacting components. Among the multitude of object-oriented languages are Eiffel, Clos, Seif, C++, C# and Java. Beta is a very general object-oriented language in the Simula tradition. Simula has influenced other important developments. The idea of data structures with associated operators has led to a notion of "abstract" data types (Dahl and Hoare, 1972). Who invented abstract data types? No one, really. Like so many timely ideas it was "in the air". Parnas was preaching the virtues of information hiding. Dahl and Nygaard were using Simula 67 to create rich sets of abstractions. Wirth and Liskov were demonstrating how programming languages could be used to protect programmers from themselves. Hoare was showing how monitors could be used to structure programs and axiomatic systems used to reason about them. A modified version of the language was used in the design of VLSI circuitry (Intel, Caltech, Stanford). Alan Kay's group at Xerox PARC used Simula as a platform for their development of the Smalltalk language in the 1970s, extending object orientation significantly by the integration of graphical user interfaces (GUIs) and interactive execution. Finally, Bjarne Stroustrup started his development of C++ in the 1980s by bringing key concepts of Simula into the C programming language. [Sources: Encyclopedia of Computer Science, Fourth Edition, Anthony Ralston, Edwin D. Reilly, David Hemmendinger; Manfred Broy, Ernst Denert, Software Pioneers, Contributions to Software Engineering]
 

 

<- People Behind Informatics


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