BASIC BASIC was the first language to be designed for use on timesharing, interactive terminals. It was the first language which considered programmer time more valuable than computer time. This was revolutionary for that time. Simula 67 Simula was for the most part a superset of Algol, and contributed the class, the first step towards data abstraction. Simula was used for simulations, and the class-as-data-abstraction concept wasn't recognized and appreciated until years later. Algol 68 Algol 68 is orthogonal--almost any feature can be combined with any other feature in a meaningful way. For example, an if-then-else statement could appear on either side of an assignment statement. For the most part, this flexibility made things too complicated; few used the language. Pascal Pascal was an Algol descendant designed as a language for teaching algorithms. Meaningful contributions included in Pascal were the case (switch) statement, and value-result (in/out) parameters. Pascal was used in education everywhere for about 20 years, and it replaced Algol as the language for the communication of algorithms in journals. Its simplicity (part of its design) made it not powerful/useful enough to use in practice much. C C evolved from a series of prior language into a portable systems language. C has strong influences from Algol 68; C is very orthogonal. C was strongly coupled to the UNIX operating system, which helped its growth. Smalltalk 80 Smalltalk, based on Simula, is the first truly object-oriented language. Classes have instances, and all computation is expressed as messages sent to an object. Smalltalk is remarkable not only for OO, but also for its programming environment. Smalltalk relies on a windowed interface and a pointing device. Ada Ada is the result of the largest language design ever. It was contracted by the US Department of Defense as a language which embedded systems could be reliably and efficiently programmed. A long series of requirements docs were made for Ada, and then four companies designed languages, and the best was chosen. The first Ada compiler took years to develop--it was written in Ada. Ada contributed packages as a way to encapsulate data objects and specify data types. Ada provides good exception handling facilities, for detecting and recovering from software and hardware exceptions. Ada has generics, which allow code to be reused with many different data types. Ada also provides a decent concurrency mechanism. Ada was heavily influenced by Pascal. A recent revision, Ada 95, has OO. C++ C++ was created as an extension to C to support OO. It was designed to be compatible with C and as efficient as it. It was also designed with the intent to provide a transition path for programmers moving from traditional structured programming to OO programming. C++ included public/private access, multiple inheritance, constructors and destructors, and operator overloading. Leveraging off the success of C, C++ became a popular commercial language. Eiffel Eiffel was designed as a language with expressivity and power equal to C++, but with much greater readability and writeability due to simplicity and single-minded design in the language. Eiffel also includes the idea of enforcing assertions via interface contracts. Commercial issues have prevented Eiffel from becoming a major success. -------- Homework -------- At some point you should read chapters 1 and 2 of the book, but this weekend, you should really read chapter 3, in order to make next week's lectures more understandable. Those of you who have either had 2430 very recently or have had 3156 will find next week's material familiar, as it talks about context-free grammars and BNFs. Sometime after next Monday morning, but before next class, take ten minutes to examine the material on the class web page. There will be a short quiz Tuesday which I will use to verify that you visited the web page. Fortran (1957) | \ LISP (1959) | \ | Algol (1960) COBOL (1960) \ | | \ / \| | \ / ______| \ | /\ | | PL/I (1964) \---------------- | | \ | | BASIC (1965) SIMULA (1967) | | / | \ | | / | \ Algol (1968) | / | \ | Pascal (1972) / | \ C (1972) | / | \_____ | | | | \ | | | Smalltalk (1980) \ | | | \ | Ada (1983) | \ | \ | \ | \ | C++ (1985) \ | Eiffel (1990)