idhopper (12/14/82)
I agree that Smalltalk does not provide facilities that are significantly different from other languages, *but* it does provide a very simple and consistently applied metaphor for using some very sophisticated facilities. The syntax and semantics of the heart of the language can be summarized in a couple of pages, at most -- try that with Ada or Alphard. This may seem somewhat irrelevant, but it has one very important result: conceptual simplicity. When writing a Smalltalk method, you have to remember very little other than what pertains directly to the task at hand -- you can concentrate on the software tools you are using to solve the problem, *not* on the syntax of the language you are using (even in Pascal, a relatively simple conventional language, it takes quite a while to learn where to put the damn semicolons). Furthermore, the statement that this metaphor is easy to learn *is not* simply an unfounded religious conviction: LRG has done many experiments with teaching children how to use Smalltalk, and they were very successful. If you check you back issues of Creative (WAY back, around 75-77?) you will find articles about 8th and 9th graders who wrote things like interactive drawing programs and flight simulators. These involve complex concepts like concurrency, which are normally saved for second or third year university programming courses. If you want scientific verification, try the following experiment: take 20 grade eight kids, spend a month teaching them how to program, 10 in Ada (or CLU or Alphard), and 10 in Smalltalk. If you're lucky, the Ada group will have some interest in computers left by the time you're through. Regarding machine efficiency: so what? Smalltalk does take more horsepower than your average compiled program, but answer me this: what is the primary cost in software development, machine time or person time? Smalltalk uses that additional machine time to provide the programmer with a unified, consistent, conceptual framework in which to develop his programs, and it is worth it. Furthermore, machine time is getting cheaper, human time is getting more valuable; undue concern for machines means that a lot of people will be wasting their time. To conclude with a quote from Alan Kay: Though Smalltalk's structure allows the techniques now known as data abstraction to be easily (and more generally) employed, the entire thrust of its design has been to supercede the concept of data and procedures entirely; to replace these with the more generally useful notions of activity, communication, and inheritance. --ravi