johnson@uiucdcsp.cs.uiuc.edu (01/08/88)
I think that the main reason that Smalltalk lost its cute characters was for compatibility with printers, since most printers only spoke ASCII in 1978. In hindsight, that was probably a pointless decision, since most 1988 printers handle some sort of graphics. Using cute characters would require some sort of special encoding of program sources so that they could be transmitted through normal networks, placed on shared disks, etc, but this is not really a problem. The only remaining character is the assignment arrow, and I would assume that any small set of cute characters could be handled similarly. A more important difference between Smalltalk 72 and Smalltalk 80 is that each Smalltalk 72 object was a process with a message queue from which it would receive messages. Thus, Smalltalk 72 was a lot closer to Actor systems then Smalltalk 80 is. The Actor features made Smalltalk slow, were not used very often, and were usually confusing when they were used. (I got this from reading between the lines of Goldberg's article in the August 81 issue of Byte.) Most class definitions consisted of a single loop that read a message from the queue and did a case analysis of it. Smalltalk 76 formalized this by having a class define only the cases, i.e. the methods. This allowed inheritance, which I don't think was allowed in Smalltalk 72. Of course, many things were lost in the transition, but the Smalltalk designers seemed to think that it was worth it. Now that lots of people are trying to put parallelism into Smalltalk by making it more Actor-like, it is important to know that some of these features were taken out of the language, and there might have been a good reason for it.