Smalltalk
From TunesWiki
Smalltalk is a class-based OO programming language with reflective capabilities.
Smalltalk can be viewed as an OS of sorts, more so if it is not running on another OS. It is fine grained, having 30,000-60,000 objects, rooted in some 200 classes; some big Smalltalk systems have over 1 million objects. No differentiation-separation is made between System and Application software: it's all one big sea of objects. It has no-kernel properties; but the VM serves a similar purpose. It has extensive, relentless boundary checking.
It is the most consistent OO language. Everything is an object, no exception: every number, letter. No object can directly affect the state of another object, only indirectly, by messages. No pointer arithmetic can occur.
Smalltalk was inspired by Simula. Smalltalk was developed under Alan Kay's team, at Xerox PARC in the 1970s and early 1980s. Xerox famously sat on some amazing technologies, throwing away many great opportunities, later developed instead by other companies: Ethernetworking (3com), Postscript (Adobe), laser printers (Apple), windowing graphic user interfaces (Apple, Microsoft), and Smalltalk (ParcPlace-Digitalk may have invited trouble by overpricing Smalltalk). Visual Smalltalk was absorbed by Cincom who now support VisualWorks and ObjectStudio (former Enfin).
Then Apple Computer's Steve Jobs got Kay and many of the PARC team to move to Apple. Some of the Smalltalk team moved to Digitalk. Then some Digitalkers moved to Apple. Sometime during all this, Apple licensed Smalltalk-80.
As corporate America often did and does, Apple sat on advanced stuff it had, and did nothing with it. In the meantime, IBM developed Visual Age, and at one time had 20,000-30,000 Smalltalk programmers. VA Smalltalk is now supported by Instantiations.
New Smalltalk implementations have emerged as Dolphin, Squeak, Smalltalk/MT, GNU and Ambrai Mac Smalltalk. Other recent important developments are Smalltalk on the web, such as Seaside and Vista Smalltalk. Smalltalk has further evolved as Strongtalk and now as Slate and Croquet. A web browser plugin for Squeak Smalltalk is also available.
Other developments of interest include SmallInterfaces and SOUL.
Major contributions to programming practice which arose in the context of Smalltalk development include the Integrated Development Environment (IDE), programming frameworks (exemplified by HotDraw) the SUnit testing framework (widely used as JUnit), refactoring browsers, peer-programming (pair programming) and XP (eXtreme programming). Recent languages such as Ruby appear to be inspired by Smalltalk. Wiki's such as this were invented by Smalltalker Ward Cunningham as a wiki-wiki.
Sheer programmer productivity has often been demonstrated by Smalltalk developers in coding contests, most recently using Seaside for web applications.
The prototype-based programming Self language has been credited with inspiring Javascript which is playing an important role in the AJAX movement in web development.
- "Draft ANSI Smalltalk" (".html").
- "Simula and Smalltalk: A Social and Political History"
- "Ted Kaehler's WWW Site"
- Reflective frameworks for Smalltalk:
- MetaClassTalk
- SOUL: Logic metaprogramming as the Smalltalk Open Unification Language.
- AspectS: aspect-oriented programming in Smalltalk.
- "SmallTalk Chronicles".
- Squeak
- GNU Smalltalk
- Little Smalltalk
- Strongtalk, an optionally strongly-typed Smalltalk dialect with a fast and light optimizing implementation.
- "Smalltalk/X"
- (MIA) Smalltickle is a Smalltalk-like programming language.
- Actalk for smalltalkagents.
- Actalk is a Smalltalk framework for concurrent programming.
- Apostle is an Smalltalk AOP extension.
- Bistro is a Java based Smalltalk variation.
- Bluebook is Smalltalk-80: The Language and Its Implementation.
- Coda is a meta-level architecture. Implemented in Smalltalk.
- Cvst is CVS for Smalltalk projects.
- DPBS is "Design Principles Behind Smalltalk".
- Delitalk is Delicate Smalltalk, a truly object-oriented OS, based on the Smalltalk concept.
- Deltatalk is "Deltatalk: An Empirically and Aesthetically Motivated Simplification of the Smalltalk-80 Language".
- ELST is Embedded Lisps in SmallTalk-80.
- FSB is Free Smalltalk Books.
- Flow is a streaming framework for Smalltalk.
- Gnu SmallTalk.
- HHGTTSP is "the Hitch Hiker's Guide to the Smalltalk Compiler".
- HLPS is HyperLiterate Programming in Smalltalk
- HMM is Hans-Martin Mosner.
- Hush is an object-oriented programming language, based loosely on Smalltalk.
- Jist is Java In Smalltalk.
- Littlesmalltalk is an open tiny version of Smalltalk.
- Metaclasstalk is a reflective extension for Smalltalk.
- Neoclasstalk is a Smalltalk with explicit metaclasses.
- PortedObjects.
- Prototalk is a SmallTalk-based platform for prototype-based programming language simulation.
- PocketSmalltalk is a Windows-based SmallTalk cross development environment for the Palm platform (and others?)
- Satori is a SmallTalk-80 superset.
- Sic is Smalltalk-based Interactive Compiler-compiler.
- SmallJava - Using Language Transformation to Show Language Differences.
- Smallscript is a Smalltalk superset.
- Smalltalk online.
- Smalltick is a Smalltalk-like object system in Tcl.
- Soul/aop is aspect-oriented logic meta programming in Smalltalk.
- Soul is Smalltalk Open Unification Language, an open reflective logic meta programming language, aka Prolog in Smalltalk.
- Srnc-st is Signature Revealing Naming Convention for Smalltalk.
- St cookbook is the Smalltalk cookbook
- Swazoo is Smalltalk Web Application ZOO.
- Tj is a distributed object system.
- Vibes is a data analysis and visualization toolkit based on PortedObjects.
- Wysitex is a WYSIWYG editor for TeX written in Smalltalk.