donald (02/03/83)
Once more into the fray... Re: "RICHARD HPS (on ERCC DEC-10) <okeefe.r.a.@edxa>" and his article "It's only Smalltalk, don't sacrifice me to Moloch" I must admit I didn't expect quite so much vehemence in his belated reply to my reply to his article of December 9 (1982). I thought I used a jocular (if slightly sarcastic) tone in my article. While I admit to attacking his article, I certainly didn't intend for my reply to be construed as a personal attack on him and it mystifies me that he took it that way. In fact, I was under the impression that I was addressing a group, since he stated that "this a collation of some local messages" in his first article. I am sorry for any personal distress I may have caused him, but I honestly don't think that I mounted a "violent verbal attack" on him. I attacked his arguments, yes, but I thought that was fair enough. I never called him a liar (as he implied) and I didn't suggest that he had any personal faults. An article questioning MY opinions in a tone similar to the one I used wouldn't greatly upset me, but then maybe I'm thick-skinned. "A bon chat, bon rat" is my motto. Can't we be friends? (By the way, you can call me just plain "Don"; "Dr Chan" is pompous and inapplicable, and plain "Chan" sounds Victorian) Now on to the real stuff. Look, we can go on forever dissecting each other's quotes, so I'll try to strip away the peripheral issues and get to the point. Otherwise this rebuttal would be ridiculously long (it already is!) 1) The term "object orientation" has been thrown around in these discussions again and again. What does it mean? I've read several articles praising OOP, but they never do get right down to defining OOP. It's not "data abstraction". It's not "encapsulation". It's not programming using "modules". Tell me, what do YOU mean when you say OOP? I have my opinion of what it means; I doubt if it means the same thing to you. 2) Richard refers me to the Smalltalk manual several times in his diatribe (implying I can't read, I suppose). I and several of my colleagues would be delighted to get a real specification. All we have is that stupid BYTE issue and rumours that the Adele Goldberg book on Smalltalk is going to be published soon. There are no widely accessible papers known to us that describe ST in any more formal terms than the BYTE propaganda. 3) Given what I think OOP means, it is obvious that Smalltalk is not THE OOP language, though many previous submitters strongly implied this. Smalltalk is one of a number of languages which supports data abstraction/modular programming/whatever you want to call it. Whether ST is "better" at it than the rest remains to be seen. ST certainly didn't originate OOP, at least OOP as I understand it. ST certainly encouraged OOP as a buzzword. Is ST a "good" language? I never said anything either way. I merely criticized some aspects of the language design (lack of clearly defined scoping, emphasis on dynamic binding, potential inefficiency, etc.) I NOT attacking ST as a language; it looks interesting to me. I AM attacking the conceptual folderol and fog that surround ST, the OOP cult, and the ST for children cult. The objects/messages doubletalk in ST is unnecessary. ST "messages" are absolutely equivalent to routine calls. A message in ST is a synchronous transfer of control with the caller halting until the callee returns. A routine call by another name. The terminology initially confused me because I thought of Hoare's CSP, but once you penetrate the jargon things become mundane. You say in Logo that you send messages to the turtle; well I'll call the turtle procedure. As for the claims that objects/message is easier for novices and children to grasp, I'll wait for some hard evidence from cognitive psychologists. 4) Re: efficiency. Obviously any language can be made as efficient as you want, given enough architectural support. This includes LISP, APL, ST, what-have-you. All your arguments boil down to this. But there will always be hierarchies of architectures, and the simpler ones will multiply and inherit the earth. You have the attitude of "I can microcode ST on a VAX and get good performance". Well, I can get the C compiler to emit VAX micro- code and get even better performance. You say ST is compiled. In what sense do you mean this? It cer- tainly isn't compiled in the same sense as, say, C. ST is pre- processed (compiled if you wish) into intermediate code which is interpreted. I think ST is far too dynamic and "type-loose" to be compiled in the traditional sense (I may be wrong?) I am puzzled as to what you consider "efficient". You praise the efficiency of Algol 68C and you think ThingLab was fast. I put up the Cambridge 68C on an IBM 370 some years back and ran some programs. The compiler was slower than the PL/I optimizer. Moreover, my graphics colleagues saw the ThingLab film and thought it was SLOW. 5) I see confusing a programmming language with its environment as dangerous. A PL is a notation for expressing an algorithm. A programming environment aids in entering this notation, main- taining, and debugging it. Both are important, but quite distinct. A great support environment doesn't make FORTRAN a good PL. Conversely, APL is a neat PL with a horrible built-in line editor and terrible tools for workspace manipulation. The ST environment may be great, but it has nothing per se to do with ST the PL. Your implication that the ST environment could not have been programmed in FORTRAN or that the Lisp Machine could not have been built without the flavours is false-- remember Turing Machines. Of course it'd be more difficult in FORTRAN... Confusing the syntax and semantics of a PL is inexcusable. It is a sign of poor faculties for abstraction. Most people hate COBOL for its wordiness, but COBOL isn't really THAT bad. It's actually quite livable if you have a macro preprocessor. If you can penetrate the cloak of oddness surrounding ST it would probably seem quite mundane. END OF LINE (as MCP said). Don Chan