ISWIM
ISWIM ist eine von Peter J. Landin konzipierte Programmiersprache und eine Abkürzung von »If you See What I Mean«.
Landin stellte seine Ideen auf einer Konferenz im August 1965 vor. Dieser Vortrag wurde unter dem Titel The Next 700 Programming Languages in den Communications of the ACM veröffentlicht und übte unterschwellig einen großen Einfluss auf spätere Entwicklungen aus. Der US-amerikanische Informatiker John Charles Reynolds behauptete, der Einfluss ISWIM hätte den von Algol 60 übertroffen. Tatsächlich wurde nie ein ISWIM-Compiler implementiert, während es bei Algol 60 eine Reihe von Implementierungen und Nachfolgesprachen (darunter JOVIAL, Coral 66, Simula, Algol 68, Pascal) gab.
Der Titel spielt auf die damals gezählten 700 Anwendungsfelder an, für die bereits 1700 Programmiersprachen existierten. Alle diese Sprachen unterschieden sich in vielen Details – auch in den Teilen, die nicht mit ihrem Anwendungsgebiet zu tun hatten. Nun hatte man durch Algol 60 gerade die Nützlichkeit einer klaren Struktur kennengelernt und verwandte es deshalb gerne auch für Anwendungen, für die es nicht entworfen worden war.
Landin (1965) hatte den applikativen Kern in Algol 60 beschrieben. Nun ging er umgekehrt von diesem Kern, also einem ungetypten λ-Kalkül aus. Das Ziel ist es, diesen Kern so weit wie möglich anwendbar zu machen. Eine Konsequenz ist die Freigabe der Auswertungsreihenfolge, die bei der imperativen Programmierung bekanntlich mehr als logisch nötig festgelegt wird.
Nicht angesprochen in Landins Vortrag wurde die Frage, wie ISWIM hätte erweitert werden können; er spricht allerdings von 700 Programmiersprachen und nicht von einer Programmiersprache mit 700 Erweiterungsmodulen. Tatsächlich scheint diese Frage auch erst später intensiver untersucht worden zu sein.
Ebenfalls vorausgesetzt und nicht näher diskutiert wurden die imperativen Ergänzungen.
Die Darstellung der Quelltext-Blockstruktur mittels Einrückung (Offside-Rule, Abseitsregel) in ISWIM wurde von einigen später entwickelten Programmiersprachen übernommen. Beispielsweise implementieren Haskell, Occam und Python die Abseitsregel.
Literatur
Peter J. Landin:
- A correspondance between ALGOL 60 and Church's Lambda-notation. Communication of the ACM 8, 89–101; 158–165 (1965)
- The Next 700 Programming Languages (PDF; 1,2 MB) Communications of the ACM, 9, 157–166 (1966). — enthält auch Diskussion Ersatzlink (PDF; 1,15 MB)
Sekundärliteratur:
- Matthias Felleisen, Matthew Flatt: Programming languages and lambda calculi (draft). (PDF) The University of Utah – School of Computing, 12. Juli 2006, S. Kapitel 4: ISWIM, pp. 37–48, archiviert vom am 5. Februar 2009; abgerufen am 10. August 2014 (englisch).