www.wikidata.de-de.nina.az
CLU ist eine Programmiersprache die zwischen 1974 und 1975 am Massachusetts Institute of Technology von Barbara Liskov und ihren Studenten entwickelt wurde CLU war laut Liskov die erste implementierte Programmiersprache die eine direkte sprachliche Unterstutzung fur Datenabstraktion bot welches ein Schlusselelement in der Entwicklung der objektorientierten Programmiersprachen war Die Idee zur Datenabstraktion kam im Zuge von Arbeiten zur Programmiermethodologie auf Das primare Ziel des Projekts welches zur Entwicklung von CLU fuhrte war die Forschung zur Programmiermethodologie voranzutreiben Gemass eigenen Angaben sahen die Entwickler der Sprache ihr Ziel nicht in der Verbreitung derselben sondern eher in der Verbreitung der Konzepte zur Softwareentwicklung die in CLU umgesetzt wurden Ihren Erfolg bemassen sie im Einfluss den ihre Publikationen auf der Entwicklung zukunftiger Programmiersprachen und ihrer Anwendung in der Praxis haben sollten CLU erhielt somit einen symbolischen Charakter Die Entwicklung von CLU wurde von der DARPA und der National Science Foundation unterstutzt CLU ist nicht auf sogenannte low level Programmierung ausgelegt die man z B bei der Entwicklung von Betriebssystemen und ihren Komponenten anwendet Die Sprache sollte erfahrene Programmierer ansprechen Obwohl sie nicht als Lernsprache zu akademischen Zwecken wie Pascal gedacht ist lasst sie sich auch als solche nutzen CLU favorisiert die Lesbarkeit und Verstandlichkeit von Softwaresystemen gegenuber der Einfachheit funktionierenden Kode schreiben zu konnen Es ist technisch gesehen als Werkzeug zur Entwicklung im grossen Stil gedacht Dabei wurde der Schwerpunkt auf der Entwicklung von grossen Softwaresystemen gelegt die mehrere Entwickler benotigen und deren Umfang mehrere tausend bis hunderttausend Zeilen Kode beinhaltet Inhaltsverzeichnis 1 Entwicklung der Sprache 2 Sprachelemente 2 1 Cluster 2 2 Weitere Sprachelemente 2 3 Ausnahmebehandlung Exception Handling 2 4 Iteratoren 2 5 Mehrfache Zuweisung 3 Einfluss auf andere Programmiersprachen 4 Literatur 5 WeblinksEntwicklung der Sprache BearbeitenCLU wurde ursprunglich von vier Personen entwickelt Barbara Liskov sowie die Studenten Russ Atkinson Craig Schaffert und Alan Snyder Steve Zilles war stark in den ersten Arbeiten zu CLU involviert Ab 1974 verstarkte er aber seine Aktivitaten auf die Spezifikationen von abstrakten Typen und fungierte zum Schluss mehr und mehr als interessierter Schaulustiger und Kritiker des Entwurfprozesses Mit der Zeit kamen weitere Studenten hinzu unter anderem Bob Scheifler und Eliot Moss Die Entwicklung war stark auf Teamarbeit ausgerichtet Es ist somit nicht moglich einzelne Sprachelemente einzelnen Entwicklern zuzuordnen Die Implementation erfolgte parallel zum Sprachentwurf Es wurde nie zugelassen dass die Implementation den Entwurf der Sprachelemente bestimmte Die Fertigstellung von Sprachelementen wurde solange verzogert bis der Entwurf derjenigen fertiggestellt war Es wurden verschiedene Programmiersprachen studiert um abzuklaren welche von ihnen eventuell als Basis fur CLU in Frage kame Die Entwickler kamen zum Schluss dass keine der Sprachen geeignet ware da keine von ihnen Datenabstraktion unterstutzt Die Entwickler wollten wissen wohin diese Idee sie bringen wurde ohne sich daruber sorgen zu mussen wie es mit vorher existierenden Eigenschaften aufeinander wirken konnte Dennoch wurden verschiedene Sprachelemente von vorhandenen Programmiersprachen ubernommen Das semantische Modell lehnt sich grosstenteils an Lisp an die Syntax wurde von ALGOL ubernommen Sprachelemente BearbeitenCluster Bearbeiten Eines der wichtigsten Elemente von CLU ist das Konzept des Clusters Dieses entspricht einem Objekt in einer objektorientierten Sprache wie C und weist ungefahr dieselbe Syntax auf Als Beispiel sei hier eine Implementierung fur komplexe Zahlen angefuhrt complex number cluster is add subtract multiply rep record real part real imag part real add proc end add subtract proc end subtract multiply proc end multiply end complex number Obwohl das Konzept der Clusters ein dazumals fortschrittliches Werkzeug zur Strukturierung von Programmkode darstellte existiert keinerlei Mechanismus um die Cluster selbst zu strukturieren Das bedeutet dass Clusternamen global sind und keine Gruppierungen sowie Verschachtelungen von Cluster moglich sind CLU unterstutzt keine implizite Typkonvertierung in einem Cluster wechseln die expliziten Konvertierungen mit den Befehlen up und down zwischen dem abstrakten Typ und der Representation Des Weiteren wird ein universeller Datentyp any sowie eine Prozedur force zur Verfugung gestellt Die Prozedur uberpruft ob ein Objekt einen bestimmten Typ besitzt Objekte konnen die Eigenschaften mutable und immutable aufweisen Letztere werden als sogenannte native Datentypen wie z B Integer definiert Weitere Sprachelemente Bearbeiten Viele Funktionen von objektorientierten Sprachen wie z B die Vererbung wurden aus Entwurfsgrunden absichtlich nicht implementiert andererseits unterstutzt CLU Sprachelemente wie die Ausnahmebehandlung Iteratoren und parametrisierte Typen Ausnahmebehandlung Exception Handling Bearbeiten CLU unterstutzt ebenfalls die Ausnahmebehandlung Es bietet ein Mechanismus an welcher auf dem Terminierungsmodell von Ausnahmen basiert Ein Funktionsaufruf kann sich selbst unter verschiedenen Bedingungen beenden eine der Bedingungen ist die Terminierung der Funktion mit einem definierten normalen Ruckgabewert Jeder andere Wert stellt eine Ausnahme dar Der Mechanismus von CLU ist in seiner Behandlung von unbehandelten Ausnahmen ungewohnlich Die meisten Mechanismen zur Ausnahmebehandlung reichen diese durch den Baum an Funktionsaufrufen in einem Programmkode weiter Wenn die Funktion in der die Ausnahme ausgelost wurde diese nicht behandelt wird sie der im Baum vorhergehenden Funktion weitergereicht In CLU hingegen werden alle unbehandelten Ausnahmen in sogenannte Failures umgewandelt und als solche weitergereicht Auf vielen Versuchen in anderen Programmiersprachen basierend werden Ausnahmen mit signal aufgeworfen und mit except abgefangen Da der Fokus auf den Typentwurf gelegt wurde existiert auch keine Moglichkeit Aufzahlungstypen zu erstellen Iteratoren Bearbeiten Ein weiteres wichtiges Element von CLU sind die Iteratoren Diese bezeichnen einen Zeiger mit dem uber die Elemente einer Liste bzw durch die Elemente einer Menge iteriert werden kann Iteratoren waren an ein Konstrukt namens Generator angelehnt welches in der Programmiersprache Alphard angewendet wurde Die Entwickler von CLU lernten die Idee der Generatoren im Rahmen einer Konferenz mit der Alphard Group kennen Das Konzept interessierte die CLU Entwickler da es verschiedene Probleme bezuglich der Datenabstraktion loste Allerdings befurchteten sie auch dass dieses Konstrukt zu Komplex ware Trotzdem entwarf Russ Atkinson von den Generatoren inspiriert das Konzept der Iteratoren in CLU wahrend eines Ruckfluges von der Konferenz nach Boston Er beschrieb diese in einer sogenannten Design note im September 1975 Ein Iterator in CLU stelle eine Black Box dar die unabhangig von den Daten auf denen sie angewendet wird eine Programmierschnittstelle zur Verfugung stellt Somit wurden z B die Iteratoren fur komplexe Zahlen und diejenigen fur integer Datenfelder identisch sein Iteratoren sind mittlerweile ein weit verbreitetes Sprachelement in vielen modernen Programmiersprachen Mehrfache Zuweisung Bearbeiten CLU unterstutzt des Weiteren die mehrfache Zuweisung mit welcher mehr als eine Variable auf der linken Seite des Zuweisungsoperators stehen kann Beispielsweise wurde x y y x Werte zwischen den Variablen x und y austauschen In derselben Art und Weise konnen Funktionen mehrere Werte wie z B x y z f t zuruckliefern Einfluss auf andere Programmiersprachen BearbeitenPython und Ruby ubernahmen verschiedene Konzepte von CLU wie z B die yield Anweisung und die mehrfache Zuweisung CLU und Ada waren die massgeblichen Vorbilder fur Vorlagen in C Die Mechanismen der Ausnahmebehandlung von CLU beeinflusste modernere Programmiersprachen wie C und Java Alle Objekte von CLU existieren im Heap und die Speicherverwaltung lauft automatisch ab Dies beeinflusste Java in direkter Form Python und C bieten das Konzept der Generatoren an welche zuerst als Iteratoren in CLU auftauchten Lua ubernahm die Mehrfachzuweisung sowie das mehrfache Zuruckgeben von Funktionswerten von CLU Literatur BearbeitenBarbara Liskov A History of CLU PostScript 150 kB 1992 englisch Weblinks Bearbeitenclu2c ein Programm um CLU Kode in C zu ubersetzen englisch CLU Vergleich mit 99 bottles of beer Demo Demo Algorithmusseite zu verschiedenen Programmiersprachen CLU Website der Programming Methodology Group am MIT englisch Dictionary of Programming Languages CLU im Worterbuch der Programmiersprachen englisch Abgerufen von https de wikipedia org w index php title CLU Programmiersprache amp oldid 212097047