Help - Background - Remarks - Advantages and disadvantages
On the advantages and disadvantages of Squeak and Smalltalk
Here is a commented list of advantages and disadvantages of Smalltalk+Squeak I wrote not long after discovering Squeak, that may be of some use to newbies:
Advantages
1+: full source
2+: much source
3+: many capacities
4+: written in itself
5+: great environment
6+: for academics
7+: non-commercial
8+: open source
9+: being developedDisadvantages
1-: interpreted
2-: no good introductions or documentation
3-: few practicians
4-: ideological
5-: for academics: too difficult
6-: non-commercial
7-: open source
8-: being developed
Advantages
1+: full source: This is a very great advantage: For everything the system can do, you have the code. You can view it, understand it, change it. By contrast, other programming languages are secretive about their hidden source, and about what makes them in fact work, which makes you depend on what the developers tell you about it and do with it, without you having much relevant knowledge or influence.
2+: much source: There is a lot of Smalltalk available for very many ends and subjects. So this too is a very great advantage: Very much one should like to see programmed has been programmed in some form - and one can get the code.
3+: many capacities: Especially Squeak has very many capacities, including open source code, for very many diverse ends. Hence: another great advantage.
4+: written in itself: This makes Squeak especially clear and complete in itself, thus very much differing from commercial C-environments or Delphi-environments, which may be written in themselves, but in hidden source (including bugs you can't see the source of and only complain politely about in the faint hope some future version - hopefully not too expensive - will have a patch).
5+: great environment: Squeak is a nicer environment to program in and with than any other I know. This is very important, for programming ought to be fun, and not a pain and a hassle.
6+: for academics: The actual fact is that Smalltalk is an academic language, in the sense that it is developed by academics, and that most of its users are academics - or else children supposedly learning it experimentally, coached by academics. Also, it is academic in the sense that its great amount of available code requires a lot of time to read and think through. (See also 5-)
7+: non-commercial: Another great advantage in many ways: Your programming efforts and time are not in fact dependent on the continued success of a commercial firm, and the rareness of bugs and infelicities in its hidden source.
8+: open source: open source is an important idea, and is in most ways a great advantage: all source is public, and everybody is free to develop it, or use it in his own way on his own systems. This is such a great advantage because the only way to know what one's computer is up to is to know and understand the source code it uses, and the only way to control is requires the same. Hidden source - compiled commercial code one does not get the source of and must license and pay to use - always contains the possibility of hidden bugs, hidden Trojan horses, hidden ports for commercial or secret organizations, and anyway have the decisive disadvantage of being commercially owned secrets lording over one's own information and computing in secret ways. (There is a negative side to open source: See 7- below).
9+: being developed: This is mostly and advantage, at least combined with its fully public, transparent open source character: One can really see what's happening and why, and contribute if one has the time and the ability. For the negative side, see 8- below.
Disadvantages
1-: interpreted: I list this as a disadvantage, because interpreted languages work slower than compiled ones. This is true, but less and less of a problem as processors get faster and working memories larger, and besides its' being interpreted is what enables its' easy programming and debugging, which is very important. So while there is a loss of speed because Smalltalk is interpreted, I think this disadvantage is weighed away by what it enables (easy and fast programming and debugging) and also gets less and less of a disadvantage with improving hardware.
Also it should be remarked that Smalltalk and Squeak do compile their code into bytecode, which is optimized to be run fast by the Virtual Machine.
2-: no good introductions or documentation: This is in fact an important disadvantage. All introductions I have read sofar were very metaphorical and animistic, which is confusing, nonsense, and besides not necessary. Also, it is difficult to find books or on-line documentation that is adequate, up to date, and clear, and about the dialect of Smalltalk one uses.
3-: few practicians: There are in fact many more programmers in C or Java than in Smalltalk, both commercially and non-commercially. This is a disadavantage, but on the other hand, compared to most other programming languages, Smalltalk has a very lively and extended user community, also and especially thanks to the internet. Hence I think this is not much of a disadvantage. But more Smalltalkers would be better, of course.
4-: ideological: There is a considerable amount of ideology involved in Smalltalk, also about diverse subjects. Some are: the language itself; the animistic way of explaining and documenting it ("objects" that "understand" and "know" and "want" things); the presumption that Smalltalk is fit for children to program in; the dynabook ideas. Not all of this is negative per se, but it seems mostly a disadvantage. (I, for one, dislike the abundant animistic prose in much Smalltalk literature, and find the idea of children programming in it nonsense, some extremely talented children excepted, possibly. A programming language, after all, is an attempt to try to tame a massive amount of complexity in an essentially formal and mathematical way, and rather than that any children could learn to program with any degree of usefulness and facility, it seems that even most normal adults find this too difficult to learn.)
5-: for academics: too difficult: This balances the same point on the positive side, and continues my previous remark. In fact, I think it should be admitted that proficient programming in any universal programming language is not easy to learn, and takes a considerable amount of time anyway, and is not something for each and anyone. If this is admitted, most of this disadvantage dissolves - and indeed it is similar with playing the violin: It takes some talent and a lot of time and effort (pure geniuses possibly excepted).
6-: non-commercial: This also has a positive side. The disadvantage of being non-commercial is that in this brave new world we live in things prosper only if funded, mostly and generally. And it does take a lot of time and effort to develop a good programming language. See open source.
7-: open source: There are major advantages to open source, commented on above, but there also are several disadvantages. One is related to the previous point: Hidden source is much easier to develop commercially, and in general much better fit for making financial profits (for some, at the cost of most). Another is that if the development of the source is "up to the public", the development may be interfered with by all manner of social processes having little to do with developing source. And the basic problem for open source in the societies we live is that it is essentially non-commercial to be open and honest about one's ideas.
8-: being developed: I listed this also as a considerable advantage. The disadvantage is mainly that there is little that is stable and reliable, and that Squeak may in fact follow a road one doesn't like. (Speaking for myself: Many Etoys and lots of educational vagueries and promises about "programming for children" ; little serious mathematics or science).
In sum to me the disadvantages seem far smaller than the advantages - but I am also well aware that in actual fact the serious learning of a programming language takes a considerable amount of effort and time, for which reason I listed these points for others to make up their own minds.
The major disadvantage of Squeak I have found sofar is the state of its documentation, including the documentation of Smalltalk. This could be and should be much improved, and seems to me to be necessary if either is to find a large following. This was an important reason to write Squeak Help.