# Squeak

Squeak ist ein Dialekt der Programmiersprache Smalltalk und eine Entwicklungsumgebung. Sie wurde von einer Arbeitsgruppe bei Apple Computer entwickelt, zu der auch einige der ursprünglichen Smalltalk-80-Entwickler wie Alan Kay und Dan Ingalls gehörten. Diese Gruppe setzte diese Entwicklung bei Walt Disney Imagineering fort, wo Squeak für interne Projekte eingesetzt werden sollte. Squeak wird heute von einer weltweiten freien Gemeinschaft weiterentwickelt, wobei die auf Squeak aufbauende 3-dimensionale-Multinutzerumgebung Croquet ein wichtiger Zweig dieser Weiterentwicklung ist, der von ursprünglichen Smalltalk-80-Entwicklern, namhaften wissenschaftlichen Instituten und IT-Unternehmen unterstützt wird. Seit 2009 wird die Weiterentwicklung nunmehr im Open-Cobalt-Projekt fortgeführt.
Squeak ermöglicht Kindern Computer-Simulationen zu entwickeln und durchzuführen. Gefördert wurde die Entwicklung von Squeak zeitweise durch das Unternehmen „Walt Disney Imageneering“, da Squeak unter anderem ein Hilfsmittel sein sollte, Vorschulkindern beim Lernen zu helfen. Dabei ging es ausdrücklich nicht darum, Kinder früh mit Technik in Berührung zu bringen.
Vorteilhaft ist die schnelle und jederzeitige Neuprogrammierung und Verbesserung des Vorhandenen. Zudem erfordert Squeak keine abstrakte Programmiersprache, sondern lässt sich durch einfache Optionen grafisch steuern. Die grafische Benutzeroberfläche heißt in Squeak Morphic.

## Etoys

Squeak wurde vor allem von Alan Kay erweitert, um von Kindern benutzbar zu sein. Dieser Teil von Squeak heißt Etoys.
Am Beispiel einer Autosimulation soll nachfolgend die Eingabe in Etoys verdeutlicht werden: Zunächst erstellt das Kind ein grafisches Objekt, z. B. ein Auto. Danach zeichnet es ein weiteres Objekt, z. B. eine farbige Straße. Schließlich müssen nur noch die entsprechenden logischen Bedingung gesetzt werden, damit das Auto auf dieser farbigen Straße selbständig fährt. Nach Eingabe der Bedingungen kann das Kind dann die Simulation starten und beobachten, welche Resultate seine logischen Anweisungen hervorbringen. Durch das Versuch-und-Irrtum-Verfahren werden Kinder befähigt, logische Zusammenhänge zwischen Anweisung und Reaktion bildlich und somit unmittelbar wahrzunehmen.
Die erstellte Simulation kann dann ebenfalls in der Sprache Smalltalk gespeichert werden. Dabei werden die geschriebenen Programme übersichtlich in Ordner zusammengefasst (das sogenannte Changeset), um einen leichten Austausch der von den Kindern entwickelten Simulationen untereinander zu ermöglichen.

## 100-Dollar-Laptop

Squeak ist im Rahmen des One-Laptop-Per-Child-Projekts („100-Dollar-Laptop“) auf den Schülerlaptops verfügbar. Die Schülerlaptops sollen dabei mit einer Grundausstattung von sog. EToys versehen werden, um den Schülern von Anfang an den altersgerechten Einstieg in logischem Denken und Programmierung geben zu können. Für den Schülerlaptop wurde Squeak unter der freien Apache-Lizenz relizenziert.

## Geschichte

Der Entwurf von Squeak folgt in weiten Teilen den Büchern von Adele Goldberg und David Robson (bekannt als Blue Book) sowie von Glen Krasner (Green Book). Dort wird die Smalltalk-Programmierumgebung definiert, die Squeak mit einigen Variationen, etwa einer zusätzlichen anderen Syntax, bietet.
Der Plan, Squeak zu entwickeln, entstand im Dezember 1995. Dabei sollte eine Software entwickelt werden, die Benutzer lehren kann, ohne viel Vorwissen zu fordern.
Squeak wurde erstmals im September 1996 als erstes freies Smalltalk veröffentlicht. Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace und Alan Kay schreiben in "The Story of Squeak", dass sie fühlten, dass hier glückte, was 1980 fehlschlug. Drei Wochen später wurde die erste Unix-Portierung von Ian Piumerta veröffentlicht. Bis heute (Stand März 2010) wird es kontinuierlich weiterentwickelt. Die wichtigste Entwicklung in dieser Zeit ist die Modularisierung der Code-Teile gewesen, die einige Probleme löst, die durch den Austausch von Programmen durch Changesets entstehen.
Mit der zur Version 3.10.2 funktional äquivalenten Version 4.0 wurde, lange Zeit vorbereitet, der Schritt zur Lizenzierung unter der MIT-Lizenz vollzogen, wobei Teile unter der Apache-Lizenz 2.0 verblieben. Zuvor wurde eine eigene von Apple stammende Lizenz verwendet. Während des Relizenzierungsprozesses vorgenommene Weiterentwicklungen der Software wurden in Version 4.1 integriert.
2008 wurde Pharo als Fork von Squeak veröffentlicht.

## Aufbau

Als Grundlage diente die Apple-Smalltalk-80-Implementierung, die allerdings über weite Strecken aus 68020-Assembler bestand, der nicht portierbar war. Um Portierbarkeit zu erreichen, verwendete man die Programmiersprache C, die bei den Autoren zwar wegen der Portierbarkeit geschätzt war, die man aber trotzdem nicht gern mochte. Darum baute man zuerst einen Übersetzer, der SmaCC genannt wurde, der eine Untermenge von Smalltalk-Code in C-Code übersetzen konnte, sodass man die Portierbarkeit von C-Code genießen konnte, ohne die Sprache schreiben zu müssen.
Dieser Aufbau erlaubt dem einmal mit einem C-Compiler übersetzten und ausgeführten Code, sich selbst zu interpretieren, was das Suchen nach Fehlern im Interpreter erleichtert.
Das Speichermanagement ist zugunsten der Effektivität sehr komplex, da Wert darauf gelegt wurde, dass eine Integervariable nur 32 Bit im Speicher belegen solle. Auch für weitere Objektklassen wurden Sonderregeln eingeführt, um den Speicherverbrauch zu verringern. Daher muss für jedes Objekt erst einmal geprüft werden, ob es ein Integer ist oder irgendein anderes Objekt ist, wofür ein Bit jeder Referenz benutzt wird. Daher kann Squeak nur Ganzzahlen bis 31 Bit als echte Ganzzahlen vom Prozessor berechnen lassen.