Ian Bicking: the old part of his blog


Ian: sorry, but no, I haven't chosen "the other world". Actually I am still working with many different systems. That I choose Python for most of my work isn't because I want to ditch Smalltalk or Lisp, it's because Python is one of the few languages that give me reasonable language features and runs on many different systems. I do have to work for a living and prefer to use stuff that will solve my problems. Since most projects at work include Zope, Python is the language of choice currently.

Language decisions change over time for me quite often. For example I already feel the itch to rewrite PyDS with Common Lisp, as there are several very cool libraries and tools available now. Older stuff I wrote was in Perl (several years my main language) and Java, even older ones in OCaml, Ada, Oberon-2, Modula-2, Assembler, Cobol (don't ask, took 10 of my best years), PL/I (don't ask), Lisp, Smalltalk (mostly Digitalk, but some ObjectWorks too) and whatever happened to cross my way (yes, I even used C++ to quite a large extent before deciding on disliking it). So the fact that I _now_ program Python doesn't say anything about Python or other languages, but says a lot about _me_.

And I still don't accept the "Smalltalk vs. the rest of the world" stuff. Sorry, but that's quite wrong. Smalltalk systems integrate nicely into operating systems and system libraries nowadays. There is no "other world" - every language and language environment have their pros and cons and it's weird to devide the language space of round about 1500 programming languages into two areas where Smalltalk is on one side and supposedly everything else on the other side. Actually even if you narrow your view on languages with batch compilers and standard linking/loading mechanisms, you will find many highly different concepts. Even if you go down to procedural languages in that area it's not a simple homogenous field. Take for example the library concepts of Modula-2, Ada and C++. Highly different, even though the languages share many similar concepts. Add Eiffel or Sather to that bunch and you will get even more differences. Or look at the Smalltalk side: you need at least take Smalltalk 80 descendants and Self as two languages from that camp. Maybe you need to add Objective-C - it borrows many concepts from Smalltalk, although it's mixed into C. How can you make statements about such a divergent field of languages?

The main problem with your statements is that for every point you list where Smalltalk supposedly failed, people will be able to show you implementations and implementation details that will set a counterpoint. Even the "Smalltalk is an integrated environment" isn't correct any more, as both GNU Smalltalk and Smalltalk/X both sport a much more standard file interface. So it's quite understandable that people tell you that you didn't live in Smalltalk or didn't understand it, as the arguments you list are just plain and simple wrong.

That's no big deal, as _any_ "this language failes because of these reasons I give" posting I ever read was plain wrong and didn't say so much about the language but much more about the programmer. Usually it boils down to the fact that people should put the title up as "why this language failed _for_ _me_" and everything is fine. C++ failed for me because I think it's plain ugly and I can't stand the syntax and semantics. Other people are happy with C++. That doesn't tell you much about C++. It tells you a lot about me (a snob) and others (the mob) ;-)
Comment on Where Smalltalk Went Wrong 2
by Georg Bauer