SAIL (Programmiersprache)
SAIL (Stanford Artificial Intelligence Language) ist eine Programmiersprache, die in den 1970er Jahren von Dan Swinehart und Bob Sproull am Stanford AI Laboratory der Stanford University entwickelt wurde. Ursprünglich war SAIL eine umfangreiche Algol-60-ähnliche Sprache für PDP-10- und DECSYSTEM-20-Rechner der Digital Equipment Corporation.
Hauptcharakteristikum von SAIL war eine symbolische Datenspeicherung, die auf einem assoziativen Speicher beruhte. Dieses System war eine Weiterentwicklung der Programmiersprache LEAP von Jerry Feldman und Paul Rovner. Daten konnten darin als ungeordnete Mengen oder als Assoziationen (Tripletts) gespeichert werden. Andere Merkmale waren die Möglichkeit der Prozesssteuerung mit Ereignissen und Interrupts, die Verwaltung von Kontexten, Backtracking und eine Speicherverwaltung (Garbage Collection). SAIL enthielt block-strukturierte Makros, eine Möglichkeit, Coroutinen zu schreiben und eine ganze Reihe von neuen Datentypen, mit denen man Suchbäume und assoziative Listen gestalten konnte.
Eine Reihe von interessanten Softwaresystemen wurde in SAIL programmiert, so zum Beispiel frühe Versionen von FTP und TeX, ein Dokumentenformatierungssystem namens PUB und das erste interaktive Tabellenkalkulationsprogramm BRIGHT.
1978 gab es ein halbes Dutzend verschiedener Betriebssysteme für die PDP-10: ITS (MIT), WAITS (Stanford), TOPS-10 (DEC), CMU TOPS-10 (Carnegie Mellon), TENEX (BBN) und TOPS-20 (von DEC, auf TENEX basierend). SAIL wurde von WAITS nach ITS portiert, so dass die Forscher am MIT die an der Stanford University entwickelte Software nutzen konnten. Die Portierung erforderte normalerweise ein komplettes Neuschreiben des E/A-Codes jeder betroffenen Anwendung.
Eine maschinenunabhängige Version von SAIL namens MAINSAIL wurde Ende der 1970er entwickelt und bei der Entwicklung vieler ECAD-Programme in den 1980ern verwendet. MAINSAIL war einfach auf neue Prozessoren und Betriebssysteme portierbar und wird auch nach der Jahrtausendwende immer noch gelegentlich eingesetzt.