[Edu-sig] Python & Smalltalk (was Re: OLPC related: pyGTK)

ajsiegel at optonline.net wrote: > Squeaks pretense issues, and its licensing issues, are - by the way - not unrelated > when you look at it. Sometimes I think something like that myself. :-) But, to elaborate on your point a little more (in a toned down way :-): Smalltalk came out of an industrial research lab (Xerox PARC). The people who invented and then built it and refined it were paid industrial employees working in the scope of their duties on company time (though very unusual ones, even by such R&D standards. :-) Its subsequent history for decades involved mainly development by commercial organizations (either as Smalltalk or also as the Macintosh OS which in some sense was a Smalltalk-derivative, but Steve Jobs just got the window system because he left too soon. :-). http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html "One of the best parts of the [1979] demo was when Steve Jobs said he didn't like the blt-style scrolling we were using and asked if we cold do it in a smooth continuous style. In less than a minute Dan found the methods involved, made the (relatively major) changes and scrolling was now continuous! This shocked the visitors, espeicially the programmers among them, as they had never seen a really powerful incremental system before." And: http://americanhistory.si.edu/collections/comphist/sj1.html "Steve Jobs: ... That's the real gem. I'll tell you an interesting story. When I was at Apple, a few of my acquaintances said "You really need to go over to Xerox PARC (which was Palo Alto Research Center) and see what they've got going over there." They didn't usually let too many people in but I was able to get in there and see what they were doing. I saw their early computer called the Alto which was a phenomenal computer and they actually showed me three things there that they had working in 1976. I saw them in 1979. Things that took really until a few years ago for us to fully recreate, for the industry to fully recreate in this case with NeXTStep. However, I didn't see all three of those things. I only saw the first one which was so incredible to me that it saturated me. It blinded me to see the other two. It took me years to recreate them and rediscover them and incorporate them back into the model but they were very far ahead in their thinking. They didn't have it totally right, but they had the germ of the idea of all three things. And the three things were graphical user interfaces, object oriented computing and networking. Let me go through those. Graphical interface: The Alto had the world's first graphical user interface. It had windows. It had a crude menu system. It had crude panels and stuff. It didn't work right but it basically was all there. Objects: They had Smalltalk running, which was really the first object-oriented language. Simula was really the first but Smalltalk was the first official object oriented language. Third, networking: They invented Ethernet there, as you know. And they had about two hundred Altos with servers hooked up in a local area network there doing e-mail and everything else over the network, all in 1979. I was so blown away with the potential of the germ of that graphical user interface that I saw that I didn't even assimilate or even stick around to investigate fully the other two." Essentially Xerox Parc in 1976 (thirty years ago!) invented the computing landscape most of us use now, and Alan Kay was part of that. What we have seen since is mainly just the dispersal and magnification of those ideas (often in a warped or dumbed down fashion, e.g. C++ instead of Smalltalk; XML instead of Lisp). Smalltalk's demise as a major player on the commercial scene in terms of VisualWorks and its predecessor ObjectWorks (*the* leading Smalltalk product, and still the most comprehensive and definitive and most cross-platform -- excepting perhaps Squeak is more cross-platform in theory) was mostly due to greed and mismanagement IMHO by a now defunct company (the current VisualWorks owners bought it cheaply from them). IBM's VisualAge Smalltalk's demise, on the other hand, was mostly due to IBM's decision to back Java (shortsighted and unfortunate I think as IBM had the clout to push Smalltalk syntax through to the masses IMHO). Smalltalk is still actively used by many, but is more of a niche player at the moment (like, say, OCaml or Haskell or Common Lisp), having been eclipsed by Java. The support community for Smalltalk was (at first) mostly commercially oriented, and remains so to some degree. While there were academic users, and in the past decade, especially with Squeak, the number of people using it for academic or free or open source type applications has grown, that has not been the bulk of the history. Even Squeak's most recent evolution was driven by work at Apple and then at Disney, with the Smalltalk principals reprising their roles as employees of large industrial research and development labs, with the licensing ambiguity that sometimes entails in navigating for-profit corporate waters in an emerging free-and-open-source way (i.e. Alan Kay claims Disney is OK with the Squeak changes done there being released, but there is no "peace of mind" letter from Disney signing off on them I am aware of, or related licensing statement in the code). Python on the other hand, was started as a hobby by one person who was based in an academic research lab. It was always given freely. Excepting one bobble with licensing issues (which was corrected and involved a not-for-profit), the licensing situation has always been pretty straightforward from a free software perspective (and is even now GPL compatible). For most of Guido's time with python (except the last few years) he was affiliated with one of two non-profits. Even now his job is at a pro-"open source" corporation which is also releasing several other free and open source projects. The community that grew around Python, while with many commercial users, had a very different emphasis to it. Part of that early community spirit was also from the "Monty Python" humorous yet playfully radical themes (although Guido has said by now he has heard enough Monty Python jokes. :-) Python also has one core definitive free code base as a reference standard implementation (even as there are spinoffs like Jython). Personally, I feel Smalltalk is the better syntax for kids to learn as that purpose was what it was supposedly designed for (if you ignore that most adult programmers come from Algol syntax and have trouble adapting to the syntax initially); Smalltalk keyword: syntax is certainly the easier syntax to use to maintain large bodies of code using powerful tools and is easily extendable by the end user programmer for many new uses including new control structures and iteration concepts; Smalltalk historically also has the better development tools (in part due to the syntax) and also has a better library architecture (e.g. Streams, Magnitude) and better VMs and garbage collection(especially in VisualWorks, and less so in Squeak), and also has benefited from a culture of Smalltalk all-the-way-down (as Squeak exemplifies); Smalltalk has a powerful notion of bracketed nameless code blocks and is a tour de force of one paradigm (objects and message passing). However, Python has the better community (from a free and open source perspective), better license and licensing history, and better breadth and modularity of libraries; Python also is more easily taken up by adult programmers who already know C or a similar Algol-style language because of its Algol-like syntax and also because you can use familiar text-oriented tools like emacs or vi or Scite with it (which makes it easier for it to gain commercial acceptance as a new thing); Python code is clear and concise and maintainable because of the decision to use significant indentation instead of braces or brackets (like Occam); Python also is a standard defined by a reference implementation, which is much better than a standard defined by an ambiguous or incomplete textual specification; Python is easier to do small projects in for people who only know a little of the language, so in that sense it has an easier learning curve as a system. I feel, especially with Ruby's increasing popularity [as effectively a Smalltalk with Algol syntax plus some other bells and whistles], that the *themes* in Smalltalk are the future of most programming. Even Python continues to get more Smalltalk-like, such as the "new classes" changes. Yet, I want to write some programs now, as part of a free and secure ecosystem of such programs. :-) Ironically, in my own case as a typical Smalltalk programmer, because of my own history as a Smalltalk developer working on commercial projects with commercial versions which nonetheless included source as most Smalltalks do, I am in some ways "contaminated" by that experience and the current overly broad reading of copyright and that puts into potential question anything I develop which is a Smalltalk-derivative (unless I do it very, very carefully, say by using mostly GNU Smalltalk sources); not to say I ever would use such commercial code, just that I might face the effectively impossible task of proving I had not if there was any coincidental similarity at all (which is a much smaller problem when I am working with something very different like Python). If I perhaps oversimplify, essentially the choice right now is between elegant syntax, uniform abstractions, and powerful tools, embodied in a system originally designed for kids by big corporate R&D (Smalltalk) versus practical syntax, uniform community history of freedom, and powerful economic forces, embodied in a system originally designed for adult programmers by an academic researcher as a hobby project which grew beyond initial expectations (Python). :-) Both languages along with their communities have different strengths and weaknesses, and also both have subcultures which are in opposition to the main (e.g. mostly commercial Smalltalk has several free versions, mostly free Python has heavy proprietary commercial usage where no doubt such users have large interesting and yet proprietary libraries). That the strengths and weaknesses are so different in different areas and that one must also assess where trends are heading when embarking on big projects is why I am in conflict about which to use (especially for writing educational simulations), and that is why I tried to mix the best features of the two in the PataPata experiment -- though perhaps ended up with the worst features of the two in some ways (Smalltalk's . :-). Barring moving that PataPata project forward somehow, I am left with a situation that I either have to put a lot of work into a free Smalltalk (Squeak, GNU, A Little Smalltalk, Bistro, Sharp Smalltalk, etc.) to make it more to my liking (e.g. mainstream widgets for Squeak, build tools for GST or Bistro, etc.) or I have can use Python + GTK or wxWidgets or Jython + Swing out of the box, and just accept greater maintenance issues down the road (e.g. debugging and modifying a running program is so easy in Smalltalk, in Python it doesn't quite work right, even with tools I have built to make it easier [posted to the Jython list]). While I haven't made a big point of it, in the past, my choice of Python in the past has also been motivated by the "contamination" issue I mentioned above as well. It may well be the deciding factor once again, sadly -- ironic to not be able to use and improve a wonderful thing you have experienced precisely because you have experienced it.(*) :-( Happy Solstice. --Paul Fernhout (*) Note: most people may not be as concerned about such a theoretical "contamination" issue as I am, since obviously this is a major problem for almost all Squeakers, and most likely for all the major developers on that project. And, on a practical point, I can Agree with Alan Kay who maintains that most copyright issues are not settled by any sort of logic (more by jury emotion in reaction to vague or inconsistent laws) and so there is at least some justification for ignoring *potential* problems related to the edge of copyright. Still, I feel better avoiding even the appearance of potential controversy of that sort (I navigate too many oceans of controversy of other sorts, e.g. unschooling, transcending war through sustainable development, designing self-replicating space habitats, returning to a a gift economy, etc.. :-)