Help - Background - Remarks - Talking of objects

Previous - Remarks - Next

There is (or was?) a deplorable tendency in Smalltalk to explain and comment code as if it consists of living animated beings. Smalltalk-80 was composed in this style, and many code comments in Squeak still have at some place a comment where some programmer sat down and informed the world that he is a foo bar who knows how to fee if fussed and desires to frew if fumbled. Personally, I am qualified as a psychologist (by some sort of strange academic accident), and this kind of kiddie-talk easily inspires visions of my psychiatric brethren's reactions - who tend to be wholly innocent of programming knowledge - to this mode of expression. Here is a short example

" (Dr. Fraud, in a kindly commisserating tone of voice:)

Ahh, so you zeenk you are a foo bar. I mean: You wrote so, remember? "I am a foo bar" ... tut, tut. Yiss, I deeply soompathize. Now please do not get dee excitement. Rite now you are not so very soowicidal, no? Koot, koot. I advice you scienteefeecally to do dee relax. Sank you. Now... venn did you first get dees strange soobersteetioon? Koot eet bee det your ghost ees deregulatiert von der SchmalztalkProgrammierungsMetaSpracheUnrechtSchreibung?! "

Well, and so on.

Apart from much mangled English in the Standard Received Version a major irritant - to my type of mind, that has read lots of philosophical, logical, psychological and even theological texts with lots of talk about "objects" outside Smalltalk, and who therefore has fairly extended and precise semantical notions about what a term like "object" might be used to mean - the problem with the term "object" and the slogan "Everything is an object" (in Smalltalk - which is, in Smalltalk tutorials, rarely added) is that in actual fact when one programs the term "object" fairly refers to distinct items on at least five distinct levels:

When the term "object" as used in Smalltalk and OOP occurs, it may refer to each, any or all of:

" Objects "

as: ................ say: ..................... located:

imagined .......
imagined object ....... in one's mind as experience
described ...... commented object ... in one's editor as English
coded ........... coded object ........... in one's editor as programming code
working ......... virtual object .......... in one's computer, run by executing code
represented ... model object ........... in some world outside the computer

where the last may be absent (as in programming fantasy games) and each may be subdivided.

In any case, and apart from any real entities, events, processes or things one may seek to model by one's programs, there are at least four levels about - let's say - the virtual object one is trying to write the code for:

One's ideas about it; one's talk and writing about it; one's code for it; and what's produced by the code and working in the computer, IF all goes well enough (that may or may not adequately represent something one seeks to model and that may or may not do work one intends it to work).

Also, it ought to be intuitively obvious that the "object" on each level is quite different, and indeed made of different things related in different ways even if all are called - very confusingly: four- or five-fold ambiguity! - by the very same name: Ideas are not prose; code is not prose; running code on a computer is something else again; and what happens inside a computer may be independent of most that happens outside it, intended or not by its human users.

Indeed, a considerable part of the difficulty of programming is that so many different levels of being human in a rational and creative way are involved, since in fact to write a program is to make a machine do certain kinds of things in a language that is simple enough to be processed by it, yet clear enough, with or without comments, to be also interpreted and understood by humans.

This takes a lot of rational thinking and planning and acting by a human being on many levels, from choosing apt terms to knowing the subject one seeks to model by programs and many related things, precisely because computing machines, while being capable of much, at least sofar are no way capable of understanding English, and must therefore be addressed in a formal language that differs considerably from English, and that indeed serves a different end: It must be both processed by a computer and be understandable by a human being, and indeed it should be as easy as is possible to write and understand for a human being, while still being fit and simple enough to make a computer do things.

Previous - Remarks - Next