Simula and Smalltalk Simula 67 Brief History Comparison to Algol 60 Objects in Simula Example: Circles and Lines

Total Page:16

File Type:pdf, Size:1020Kb

Simula and Smalltalk Simula 67 Brief History Comparison to Algol 60 Objects in Simula Example: Circles and Lines CS 242 Simula 67 • First object‐oriented language • Designed for simulation Simula and Smalltalk – Later recognized as general‐purpose prog language • Extension of Algol 60 John Mitchell • Standardized as Simula (no “67”) in 1977 • Inspiration to many later designers – Smalltalk – C++ – ... Brief history Comparison to Algol 60 • Norwegian Computing Center • Added features – Designers: Dahl, Myhrhaug, Nygaard – class concept – Simula‐1 in 1966 (strictly a simulation language) – reference variables (pointers to objects) – General language ideas – pass‐by‐reference • Influenced by Hoare’s ideas on data types – char, text, I/O • Added classes and prefixing (subtyping) to Algol 60 – coroutines – Nygaard • Removed • Operations Research specialist and political activist • Wanted language to describe social and industrial systems – Changed default par passing from pass‐by‐name • Allow “ordinary people” to understand political (?) changes – some var initialization requirements – Dahl and Myhrhaug – own (=C static) variables • Maintained concern for general programming – string type (in favor of text type) Objects in Simula Example: Circles and lines • Class • Problem – A procedure that returns a pointer to its activation record – Find the center and radius of the circle q passing through three distinct points, p, q, • Object p and r – Activation record produced by call to a class r • Objec t access • Solution – Access any local variable or procedures using dot – Draw intersecting circles Cp, Cq around p,q notation: object. and circles Cq’, Cr around q, r (Picture assumes Cq = Cq’) • Memory management – Draw lines through circle intersections – Objects are garbage collected – The intersection of the lines is the center • user destructors considered undesirable of the desired circle. – Error if the points are colinear. 1 Approach in Simula Simula Point Class • Methodology class Point(x,y); real x,y; formal p is pointer to Point – Represent points, lines, and circles as objects. begin – Equip objects with necessary operations. boolean procedure equals(p); ref(Point) p; • Operations if p =/= none then equals := abs(x ‐ p.x) + abs(y ‐ p.y) < 0.00001 – Point real procedure distance(p); ref(Point) p; equality(anotherPoint) : boolean if p == none then error else distance(anotherPoint) : real (needed to construct circles) distance := sqrt(( x ‐ p.x )**2 + (y ‐ p.y) ** 2); – Line end ***Point*** parallelto(anotherLine) : boolean (to see if lines intersect) meets(anotherLine) : REF(Point) – Circle p :‐ new Point(1.0, 2.5); uninitialized ptr has q :‐ new Point(2.0,3.5); intersects(anotherCircle) : REF(Line) value none if p.distance(q) > 2 then ... pointer assignment Representation of objects Simula line class class Line(a,b,c); real a,b,c; Local variables begin p access link boolean procedure parallelto(l); ref(Line) l; line determined by real x 1.0 code for if l =/= none then parallelto := ... ax+by+c=0 real y 2.5 equals ref(Point) procedure meets(l); ref(Line) l; begin real t; ppqroc equals Procedures if l =/= none and ~lllt(l)~parallelto(l) then ... proc distance code for end; distance real d; d := sqrt(a**2 + b**2); if d = 0.0 then error else begin d := 1/d; a := a*d; b := b*d; c := c*d; Initialization: end; Object is represented by activation record with access link to “normalize” a,b,c end *** Line*** find global variables according to static scoping Derived classes in Simula Subtyping • A class decl may be prefixed by a class name • The type of an object is its class • The type associated with a subclass is treated as a class A subtype of the type assoc with superclass A class B • Example: A class C class A(… ); ... B class D A class B(…); ... ref (A) a :‐ new A(…) • An object of a “prefixed class” is the ref (B) b :‐ new B(…) concatenation of objects of eachA part class in prefix a := b /* legal since B is subclass of A */ – d :‐ new D(…) B part ... d D part b := a /* also legal, but run‐time test */ 2 Main object‐oriented features Features absent from Simula 67 • Classes • Encapsulation • Objects – All data and functions accessible; no private, protected • Inheritance (“class prefixing”) • Self/Super mechanism of Smalltalk • Subtyping – But has an expression this〈class〉 to refer to object itself, regarded as object of type 〈class〉. Not clear how • Virtual methods powerful this is… – A function can be redefined in subclass • Class variables • Inner – But can have global variables – Combines code of superclass with code of subclass • Exceptions • Inspect/Qua – Not fundamentally an OO feature ... – run‐time class/type tests Simula Summary Smalltalk • Class • Major language that popularized objects – ”procedure" that returns ptr to activation record • Developed at Xerox PARC – initialization code always run as procedure body – Smalltalk‐76, Smalltalk‐80 were important versions • Objects: closure created by a class • Object metaphor extended and refined – • Encapsulation UdUsed some ideas from Simu la, but very different lang – Everything is an object, even a class – protected and private not recognized in 1967 – All operations are “messages to objects” – added later and used as basis for C++ – Very flexible and powerful language • Subtyping: determined by class hierarchy • Similar to “everything is a list” in Lisp, but more so • Example: object can detect that it has received a message it • Inheritance: provided by class prefixing does not understand, can try to figure out how to respond. Motivating application: Dynabook Smalltalk language terminology • Concept developed by Alan Kay • Object Instance of some class • Small portable computer • Class Defines behavior of its objects – Revolutionary idea in early 1970’s • At the time, a minicomputer was shared by 10 people, • Selector Name of a message stored in a machine room. • Message SlSelec tor tthtogether with parameter values – What would you compute on an airplane? • Influence on Smalltalk • Method Code used by a class to respond to message – Language intended to be programming language and • Instance variable Data stored in object operating system interface – Intended for “non‐programmer” • Subclass Class defined by giving incremental – Syntax presented by language‐specific editor modifications to some superclass 3 Example: Point class Class messages and methods Three class methods • Class definition written in tabular form Explanation newX:xvalue Y:yvalue | | - selector is mix-fix newX:Y: ^ self new x: xvalue class name Point y: yvalue e.g, Point newX:3 Y:2 super class Object - symbol ^ marks return value class var pi newOrigin | | - new ithdilllis method in all classes, instance var x y ^ self new x: 0 inherited from Object class messages and methods y: 0 - | | marks scope for local decl 〈…names and code for methods...〉 initialize | | - initialize method sets pi, called instance messages and methods pi <‐ 3.14159 automatically 〈…names and code for methods...〉 - <- is syntax for assignment Instance messages and methods Run‐time representation of point Five instance methods Explanation to superclass Object x: xcoord y: ycoord | | set x,y coordinates, Point class x <‐ xcoord e.g, pt x:5 y:3 Template y <‐ ycoord Point object moveDx: dx Dy: dy | | x move poitbint by gi iven amoun t class x <‐ dx + x y y <‐ dy + y x 3 y 2 x | | ^x Method dictionary y | | ^y return hidden inst var x code draw | | return hidden inst var y newX:Y: ... 〈...code to draw point...〉 Detail: class method shown in ... draw point on screen dictionary, but lookup procedure move distinguishes class and instance code methods Inheritance Run‐time representation Point object Point class Template • Define colored points from points Method dictionary x newX:Y: class name ColorPoint 2 y draw ... super class Point 3 move class var new instance instance var color variable ColorPoint class ColorPoint object Template class messages and methods Method dictionary x newX:xv Y:yv C:cv 〈 … code … 〉 new method 4 y newX:Y:C: instance messages and methods color 5 color color | | ^color draw override Point red draw 〈 … code … 〉 method This is a schematic diagram meant to illustrate the main idea. Actual implementations may differ. 4 Encapsulation in Smalltalk Object types • Methods are public • Each object has interface • Instance variables are hidden – Set of instance methods declared in class – Not visible to other objects – Example: • pt x is not allowe d unless x is a metho d Point { x:y:, moveDx:Dy:, x, y, draw} – But may be manipulated by subclass methods ColorPoint { x:y:, moveDx:Dy:, x, y, color, draw} • This limits ability to establish invariants – This is a form of type • Example: Names of methods, does not include type/protocol of – Superclass maintains sorted list of messages with some arguments selector, say insert • Object expression and type – Subclass may access this list directly, rearrange order – Send message to object p draw p x:3 y:4 Subtyping Subtyping and Inheritance • Relation between interfaces • Subtyping is implicit – Suppose expression makes sense – Not a part of the programming language p msg:pars ‐‐ OK if msg is in interface of p – Important aspect of how systems are built – Replace p by q if interface of q contains interface of • IhInher itance is explic it p – Used to implement systems – No forced relationship to subtyping • Subtyping – If interface is superset, then a subtype – Example: ColorPoint subtype of Point – Sometimes called “conformance” Collection Hierarchy Smalltalk Flexibility • Measure of PL expressiveness: Collection isEmpty, size, includes: , … at: – Can constructs of the language be
Recommended publications
  • Typology of Programming Languages E Early Languages E
    Typology of programming languages e Early Languages E Typology of programming languages Early Languages 1 / 71 The Tower of Babel Typology of programming languages Early Languages 2 / 71 Table of Contents 1 Fortran 2 ALGOL 3 COBOL 4 The second wave 5 The finale Typology of programming languages Early Languages 3 / 71 IBM Mathematical Formula Translator system Fortran I, 1954-1956, IBM 704, a team led by John Backus. Typology of programming languages Early Languages 4 / 71 IBM 704 (1956) Typology of programming languages Early Languages 5 / 71 IBM Mathematical Formula Translator system The main goal is user satisfaction (economical interest) rather than academic. Compiled language. a single data structure : arrays comments arithmetics expressions DO loops subprograms and functions I/O machine independence Typology of programming languages Early Languages 6 / 71 FORTRAN’s success Because: programmers productivity easy to learn by IBM the audience was mainly scientific simplifications (e.g., I/O) Typology of programming languages Early Languages 7 / 71 FORTRAN I C FIND THE MEAN OF N NUMBERS AND THE NUMBER OF C VALUES GREATER THAN IT DIMENSION A(99) REAL MEAN READ(1,5)N 5 FORMAT(I2) READ(1,10)(A(I),I=1,N) 10 FORMAT(6F10.5) SUM=0.0 DO 15 I=1,N 15 SUM=SUM+A(I) MEAN=SUM/FLOAT(N) NUMBER=0 DO 20 I=1,N IF (A(I) .LE. MEAN) GOTO 20 NUMBER=NUMBER+1 20 CONTINUE WRITE (2,25) MEAN,NUMBER 25 FORMAT(11H MEAN = ,F10.5,5X,21H NUMBER SUP = ,I5) STOP TypologyEND of programming languages Early Languages 8 / 71 Fortran on Cards Typology of programming languages Early Languages 9 / 71 Fortrans Typology of programming languages Early Languages 10 / 71 Table of Contents 1 Fortran 2 ALGOL 3 COBOL 4 The second wave 5 The finale Typology of programming languages Early Languages 11 / 71 ALGOL, Demon Star, Beta Persei, 26 Persei Typology of programming languages Early Languages 12 / 71 ALGOL 58 Originally, IAL, International Algebraic Language.
    [Show full text]
  • A Politico-Social History of Algolt (With a Chronology in the Form of a Log Book)
    A Politico-Social History of Algolt (With a Chronology in the Form of a Log Book) R. w. BEMER Introduction This is an admittedly fragmentary chronicle of events in the develop­ ment of the algorithmic language ALGOL. Nevertheless, it seems perti­ nent, while we await the advent of a technical and conceptual history, to outline the matrix of forces which shaped that history in a political and social sense. Perhaps the author's role is only that of recorder of visible events, rather than the complex interplay of ideas which have made ALGOL the force it is in the computational world. It is true, as Professor Ershov stated in his review of a draft of the present work, that "the reading of this history, rich in curious details, nevertheless does not enable the beginner to understand why ALGOL, with a history that would seem more disappointing than triumphant, changed the face of current programming". I can only state that the time scale and my own lesser competence do not allow the tracing of conceptual development in requisite detail. Books are sure to follow in this area, particularly one by Knuth. A further defect in the present work is the relatively lesser availability of European input to the log, although I could claim better access than many in the U.S.A. This is regrettable in view of the relatively stronger support given to ALGOL in Europe. Perhaps this calmer acceptance had the effect of reducing the number of significant entries for a log such as this. Following a brief view of the pattern of events come the entries of the chronology, or log, numbered for reference in the text.
    [Show full text]
  • Verifiable Semantic Difference Languages
    Verifiable Semantic Difference Languages Thibaut Girka David Mentré Yann Régis-Gianas Mitsubishi Electric R&D Centre Mitsubishi Electric R&D Centre Univ Paris Diderot, Sorbonne Paris Europe Europe Cité, IRIF/PPS, UMR 8243 CNRS, PiR2, Rennes, France Rennes, France INRIA Paris-Rocquencourt Paris, France ABSTRACT 1 INTRODUCTION Program differences are usually represented as textual differences Let x be a strictly positive natural number. Consider the following on source code with no regard to its syntax or its semantics. In two (almost identical) imperative programs: this paper, we introduce semantic-aware difference languages. A difference denotes a relation between program reduction traces. A s = 0 ; 1 s = 0 ; 1 difference language for the toy imperative programming language d = x ; 2 d = x − 1 ; 2 while (d>0) { 3 while (d>0) { 3 Imp is given as an illustration. i f (x%d== 0) 4 i f (x%d== 0) 4 To certify software evolutions, we want to mechanically verify s = s + d ; 5 s = s + d ; 5 − − that a difference correctly relates two given programs. Product pro- d = d 1 ; 6 d = d 1 ; 6 } 7 } 7 grams and correlating programs are effective proof techniques for s = s − x 8 8 relational reasoning. A product program simulates, in the same programming language as the compared programs, a well-chosen The program P1 (on the left) stores in s the sum of the proper interleaving of their executions to highlight a specific relation be- divisors of the integer x. To that end, it iterates over the integers tween their reduction traces. While this approach enables the use from x to 1 using the variable d and accumulates in the variable s of readily-available static analysis tools on the product program, it the values of d that divide x.
    [Show full text]
  • Standards for Computer Aided Manufacturing
    //? VCr ~ / Ct & AFML-TR-77-145 )R^ yc ' )f f.3 Standards for Computer Aided Manufacturing Office of Developmental Automation and Control Technology Institute for Computer Sciences and Technology National Bureau of Standards Washington, D.C. 20234 January 1977 Final Technical Report, March— December 1977 Distribution limited to U.S. Government agencies only; Test and Evaluation Data; Statement applied November 1976. Other requests for this document must be referred to AFML/LTC, Wright-Patterson AFB, Ohio 45433 Manufacturing Technology Division Air Force Materials Laboratory Wright-Patterson Air Force Base, Ohio 45433 . NOTICES When Government drawings, specifications, or other data are used for any purpose other than in connection with a definitely related Government procurement opera- tion, the United States Government thereby incurs no responsibility nor any obligation whatsoever; and the fact that the Government may have formulated, furnished, or in any way supplied the said drawing, specification, or other data, is not to be regarded by implication or otherwise as in any manner licensing the holder or any person or corporation, or conveying any rights or permission to manufacture, use, or sell any patented invention that may in any way be related thereto Copies of this report should not be returned unless return is required by security considerations, contractual obligations, or notice on a specified document This final report was submitted by the National Bureau of Standards under military interdepartmental procurement request FY1457-76 -00369 , "Manufacturing Methods Project on Standards for Computer Aided Manufacturing." This technical report has been reviewed and is approved for publication. FOR THE COMMANDER: DtiWJNlb L.
    [Show full text]
  • The Future: the Story of Squeak, a Practical Smalltalk Written in Itself
    Back to the future: the story of Squeak, a practical Smalltalk written in itself Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay [Also published in OOPSLA ’97: Proc. of the 12th ACM SIGPLAN Conference on Object-oriented Programming, 1997, pp. 318-326.] VPRI Technical Report TR-1997-001 Viewpoints Research Institute, 1209 Grand Central Avenue, Glendale, CA 91201 t: (818) 332-3001 f: (818) 244-9761 Back to the Future The Story of Squeak, A Practical Smalltalk Written in Itself by Dan Ingalls Ted Kaehler John Maloney Scott Wallace Alan Kay at Apple Computer while doing this work, now at Walt Disney Imagineering 1401 Flower Street P.O. Box 25020 Glendale, CA 91221 [email protected] Abstract Squeak is an open, highly-portable Smalltalk implementation whose virtual machine is written entirely in Smalltalk, making it easy to debug, analyze, and change. To achieve practical performance, a translator produces an equivalent C program whose performance is comparable to commercial Smalltalks. Other noteworthy aspects of Squeak include: a compact object format that typically requires only a single word of overhead per object; a simple yet efficient incremental garbage collector for 32-bit direct pointers; efficient bulk- mutation of objects; extensions of BitBlt to handle color of any depth and anti-aliased image rotation and scaling; and real-time sound and music synthesis written entirely in Smalltalk. Overview Squeak is a modern implementation of Smalltalk-80 that is available for free via the Internet, at http://www.research.apple.com/research/proj/learning_concepts/squeak/ and other sites. It includes platform-independent support for color, sound, and image processing.
    [Show full text]
  • S-Algol Reference Manual Ron Morrison
    S-algol Reference Manual Ron Morrison University of St. Andrews, North Haugh, Fife, Scotland. KY16 9SS CS/79/1 1 Contents Chapter 1. Preface 2. Syntax Specification 3. Types and Type Rules 3.1 Universe of Discourse 3.2 Type Rules 4. Literals 4.1 Integer Literals 4.2 Real Literals 4.3 Boolean Literals 4.4 String Literals 4.5 Pixel Literals 4.6 File Literal 4.7 pntr Literal 5. Primitive Expressions and Operators 5.1 Boolean Expressions 5.2 Comparison Operators 5.3 Arithmetic Expressions 5.4 Arithmetic Precedence Rules 5.5 String Expressions 5.6 Picture Expressions 5.7 Pixel Expressions 5.8 Precedence Table 5.9 Other Expressions 6. Declarations 6.1 Identifiers 6.2 Variables, Constants and Declaration of Data Objects 6.3 Sequences 6.4 Brackets 6.5 Scope Rules 7. Clauses 7.1 Assignment Clause 7.2 if Clause 7.3 case Clause 7.4 repeat ... while ... do ... Clause 7.5 for Clause 7.6 abort Clause 8. Procedures 8.1 Declarations and Calls 8.2 Forward Declarations 2 9. Aggregates 9.1 Vectors 9.1.1 Creation of Vectors 9.1.2 upb and lwb 9.1.3 Indexing 9.1.4 Equality and Equivalence 9.2 Structures 9.2.1 Creation of Structures 9.2.2 Equality and Equivalence 9.2.3 Indexing 9.3 Images 9.3.1 Creation of Images 9.3.2 Indexing 9.3.3 Depth Selection 9.3.4 Equality and Equivalence 10. Input and Output 10.1 Input 10.2 Output 10.3 i.w, s.w and r.w 10.4 End of File 11.
    [Show full text]
  • An Introduction to Programming in Simula
    An Introduction to Programming in Simula Rob Pooley This document, including all parts below hyperlinked directly to it, is copyright Rob Pooley ([email protected]). You are free to use it for your own non-commercial purposes, but may not copy it or reproduce all or part of it without including this paragraph. If you wish to use it for gain in any manner, you should contact Rob Pooley for terms appropriate to that use. Teachers in publicly funded schools, universities and colleges are free to use it in their normal teaching. Anyone, including vendors of commercial products, may include links to it in any documentation they distribute, so long as the link is to this page, not any sub-part. This is an .pdf version of the book originally published by Blackwell Scientific Publications. The copyright of that book also belongs to Rob Pooley. REMARK: This document is reassembled from the HTML version found on the web: https://web.archive.org/web/20040919031218/http://www.macs.hw.ac.uk/~rjp/bookhtml/ Oslo 20. March 2018 Øystein Myhre Andersen Table of Contents Chapter 1 - Begin at the beginning Basics Chapter 2 - And end at the end Syntax and semantics of basic elements Chapter 3 - Type cast actors Basic arithmetic and other simple types Chapter 4 - If only Conditional statements Chapter 5 - Would you mind repeating that? Texts and while loops Chapter 6 - Correct Procedures Building blocks Chapter 7 - File FOR future reference Simple input and output using InFile, OutFile and PrintFile Chapter 8 - Item by Item Item oriented reading and writing and for loops Chapter 9 - Classes as Records Chapter 10 - Make me a list Lists 1 - Arrays and simple linked lists Reference comparison Chapter 11 - Like parent like child Sub-classes and complex Boolean expressions Chapter 12 - A Language with Character Character handling, switches and jumps Chapter 13 - Let Us See what We Can See Inspection and Remote Accessing Chapter 14 - Side by Side Coroutines Chapter 15 - File For Immediate Use Direct and Byte Files Chapter 16 - With All My Worldly Goods..
    [Show full text]
  • Smalltalk's Influence on Modern Programming
    1 Smalltalk’s Influence on Modern Programming Smalltalk’s Influence on Modern Programming Matt Savona. February 1 st , 2008. In September 1972 at Xerox PARC, Alan Kay, Ted Kaeher and Dan Ingalls were discussing programming languages in the hallway of their office building. Ted and Dan had begun to consider how large a language had to be to have “great power.” Alan took a different approach, and “asserted that you could define the "most powerful language in the world" in "a page of code."” Ted and Dan replied, “Put up or shut up” (Kay). And with that, the bet to develop the most powerful language was on. Alan arrived at PARC every morning at 4am for two weeks, and devoted his time from 4am to 8am to the development of the language. That language was Smalltalk. Kay had “originally made the boast because McCarthy's self-describing LISP interpreter was written in itself. It was about "a page", and as far as power goes, LISP was the whole nine- yards for functional languages.” He was sure that he could “do the same for object-oriented languages” and still have a reasonable syntax. By the eighth morning, Kay had a version of Smalltalk developed where “symbols were byte-coded and the receiving of return-values from a send was symmetric” (Kay). Several days later, Dan Ingalls had coded Kay’s scheme in BASIC, added a “token scanner”, “list maker” and many other features. “Over the next ten years he made at least 80 major releases of various flavors of Smalltalk” (Kay).
    [Show full text]
  • Cross-Language Interop Poster
    Low Cognitive Overhead Bridging "Interoperability isn't just a technical problem, it's also a user interface problem. We have to make it easy to call between languages, so that users can The demo shown at FOSDEM always pick the most appropriate tool for the job at hand." example [ this year showed fully dynamic "This shows how to call a C function from Smalltalk" development spanning C objc_setAssociatedObject: { Objective-C and Smalltalk. The self. 42. developer can inspect the ’fishes’. existing class hierarchy and C enumValue: OBJC_ASSOCIATION_ASSIGN }. the code for any methods "Note how C enumerations can be accessed. When encountering this construct, the Pragmatic Smalltalk compiler will generate exactly the same code as an implemented in Smalltalk. It Objective-C compiler would for this line: is also possible to add, modify, objc_setAssociatedObject(self, 42, @"fishes", OBJC_ASSOCIATION_ASSIGN); or replace methods, add It will get the types for the function by parsing the header and automatically map Smalltalk types to C and Objective-C types. The instance variables and classes Easy Development programmer doesn't need to write any bridging or foreign function interface at run time. Invoking a code." nonexistent class or method (C objc_getAssociatedObject: {self . 42 }) log. ] pops up a dialog asking the user to implement it, all from within a running app. The final version is statically compiled, with no explicit user Cross-Language Interoperability for intervention required. Fast, Easy, and Maintainable Code David Chisnall The World Today: But I wanted to use the But libfoo is C, libbar Frobnicator framework, and it's I have a great idea is C++, and I want to only for Java.
    [Show full text]
  • Smalltalk Language Mapping Specification
    Smalltalk Language Mapping Specification New Edition: June 1999 Copyright 1995, 1996 BNR Europe Ltd. Copyright 1998, Borland International Copyright 1991, 1992, 1995, 1996 Digital Equipment Corporation Copyright 1995, 1996 Expersoft Corporation Copyright 1996, 1997 FUJITSU LIMITED Copyright 1996 Genesis Development Corporation Copyright 1989, 1990, 1991, 1992, 1995, 1996 Hewlett-Packard Company Copyright 1991, 1992, 1995, 1996 HyperDesk Corporation Copyright 1998 Inprise Corporation Copyright 1996, 1997 International Business Machines Corporation Copyright 1995, 1996 ICL, plc Copyright 1995, 1996 IONA Technologies, Ltd. Copyright 1996, 1997 Micro Focus Limited Copyright 1991, 1992, 1995, 1996 NCR Corporation Copyright 1995, 1996 Novell USG Copyright 1991,1992, 1995, 1996 by Object Design, Inc. Copyright 1991, 1992, 1995, 1996 Object Management Group, Inc. Copyright 1996 Siemens Nixdorf Informationssysteme AG Copyright 1991, 1992, 1995, 1996 Sun Microsystems, Inc. Copyright 1995, 1996 SunSoft, Inc. Copyright 1996 Sybase, Inc. Copyright 1998 Telefónica Investigación y Desarrollo S.A. Unipersonal Copyright 1996 Visual Edge Software, Ltd. The companies listed above have granted to the Object Management Group, Inc. (OMG) a nonexclusive, royalty-free, paid up, worldwide license to copy and distribute this document and to modify this document and distribute copies of the modified ver- sion. Each of the copyright holders listed above has agreed that no person shall be deemed to have infringed the copyright in the included material of any such copyright holder by reason of having used the specification set forth herein or having con- formed any computer software to the specification. PATENT The attention of adopters is directed to the possibility that compliance with or adoption of OMG specifications may require use of an invention covered by patent rights.
    [Show full text]
  • BASIC Session
    BASIC Session Chairman: Thomas Cheatham Speaker: Thomas E. Kurtz PAPER: BASIC Thomas E. Kurtz Darthmouth College 1. Background 1.1. Dartmouth College Dartmouth College is a small university dating from 1769, and dedicated "for the educa- tion and instruction of Youth of the Indian Tribes in this Land in reading, writing and all parts of learning . and also of English Youth and any others" (Wheelock, 1769). The undergraduate student body (now nearly 4000) outnumbers all graduate students by more than 5 to 1, and majors predominantly in the Social Sciences and the Humanities (over 75%). In 1940 a milestone event, not well remembered until recently (Loveday, 1977), took place at Dartmouth. Dr. George Stibitz of the Bell Telephone Laboratories demonstrated publicly for the first time, at the annual meeting of the American Mathematical Society, the remote use of a computer over a communications line. The computer was a relay cal- culator designed to carry out arithmetic on complex numbers. The terminal was a Model 26 Teletype. Another milestone event occurred in the summer of 1956 when John McCarthy orga- nized at Dartmouth a summer research project on "artificial intelligence" (the first known use of this phrase). The computer scientists attending decided a new language was needed; thus was born LISP. [See the paper by McCarthy, pp. 173-185 in this volume. Ed.] 1.2. Dartmouth Comes to Computing After several brief encounters, Dartmouth's liaison with computing became permanent and continuing in 1956 through the New England Regional Computer Center at MIT, HISTORY OF PROGRAMMING LANGUAGES 515 Copyright © 1981 by the Association for Computing Machinery, Inc.
    [Show full text]
  • Dynamic Object-Oriented Programming with Smalltalk
    Dynamic Object-Oriented Programming with Smalltalk 1. Introduction Prof. O. Nierstrasz Autumn Semester 2009 LECTURE TITLE What is surprising about Smalltalk > Everything is an object > Everything happens by sending messages > All the source code is there all the time > You can't lose code > You can change everything > You can change things without restarting the system > The Debugger is your Friend © Oscar Nierstrasz 2 ST — Introduction Why Smalltalk? > Pure object-oriented language and environment — “Everything is an object” > Origin of many innovations in OO development — RDD, IDE, MVC, XUnit … > Improves on many of its successors — Fully interactive and dynamic © Oscar Nierstrasz 1.3 ST — Introduction What is Smalltalk? > Pure OO language — Single inheritance — Dynamically typed > Language and environment — Guiding principle: “Everything is an Object” — Class browser, debugger, inspector, … — Mature class library and tools > Virtual machine — Objects exist in a persistent image [+ changes] — Incremental compilation © Oscar Nierstrasz 1.4 ST — Introduction Smalltalk vs. C++ vs. Java Smalltalk C++ Java Object model Pure Hybrid Hybrid Garbage collection Automatic Manual Automatic Inheritance Single Multiple Single Types Dynamic Static Static Reflection Fully reflective Introspection Introspection Semaphores, Some libraries Monitors Concurrency Monitors Categories, Namespaces Packages Modules namespaces © Oscar Nierstrasz 1.5 ST — Introduction Smalltalk: a State of Mind > Small and uniform language — Syntax fits on one sheet of paper >
    [Show full text]