Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: Notesfiles; site ea.UUCP Path: utzoo!watmath!clyde!burl!mgnetp!ihnp4!inuxc!pur-ee!uiucdcs!ea!mwm From: mwm@ea.UUCP Newsgroups: net.lang Subject: Re: Gotos in programming languages - (nf) Message-ID: <5400005@ea.UUCP> Date: Fri, 1-Jun-84 16:42:00 EDT Article-I.D.: ea.5400005 Posted: Fri Jun 1 16:42:00 1984 Date-Received: Wed, 6-Jun-84 05:41:40 EDT References: <1979@mit-eddi.UUCP> Lines: 50 Nf-ID: #R:mit-eddi:-197900:ea:5400005:000:2033 Nf-From: ea!mwm Jun 1 15:42:00 1984 #R:mit-eddi:-197900:ea:5400005:000:2033 ea!mwm Jun 1 15:42:00 1984 /***** ea:net.lang / mit-eddi!nessus / 8:29 am May 30, 1984 */ And for a final brash statement: If in an introductory programming course, you teach anything other than an object oriented programming language, such as Lisp, CLU, or Smalltalk (sorry folks, Pascal does not count), you are brain-damaging your students almost as much as if you taught them Basic. -- -Doug Alan /* ---------- */ Depends on what you mean by "object-oriented" (aren't buzz words wonderful?). I intend to use the terminology laid down in a SNot paper (I don't have it handy - I'll post the reference later (I promise!)), like so: Data Encapsulation: Programming constructs that allow you to hide the insides of data structures and user routines from the outside world. Example: Modula II. Data Abstraction: Data encapsulation with the added ability to use the encapsulated object with different types. Example: CLU. Object-oriented Language: A language where all functions and structures have to be encapsulated. Example: Smalltalk is to strong. Concurrent Euclid is about right. [Disclaimer: The above are being quoted from memory, and any errors or deficiencies are solely my fault.] By these definitions, LISP isn't object-oriented, and CLU allows you to write as if it were object-oriented. LISP is a problem because it isn't a single language. What variant were you refering to in the above? Surely not LISP 1.5? To comment on the statement: If you meant that teaching languages that don't support data abstraction (such as C), then I agree. Data encapsulation just isn't sufficient. If you mean truly object-oriented, then I disagree. Having free-standing (non-encapsulated) functions is like goto's: If the language has all the right constructs, then you don't need them; if it doesn't, then there are occasionally times when you do. Since I don't know what "all the right constructs" are in this case, I still want free-standing functions. If you know what the right constructs are, please let the rest of us in on it!