www.wikidata.de-de.nina.az
Dylan Dynamic Language ist eine Programmiersprache die Anfang der 1990er Jahre von einer Gruppe unter der Fuhrung von Apple initiiert und spezifiziert wurde DylanParadigmen objektorientiertErscheinungsjahr 1992Entwickler Apple Carnegie Mellon UniversityAktuelle Version 2020 1 10 10 2020 Typisierung stark dynamischWichtige Implementierungen Gwydion Dylan Open DylanBeeinflusst von CLOS LISP EuLisp ALGOL SchemeBeeinflusste Goo Lasso Python RubyBetriebssystem plattformubergreifendopendylan orgZiel war es die besten Aspekte von Lisp und Smalltalk zu kombinieren den Benutzern statischer Programmiersprachen eine attraktive dynamische Alternative zu bieten auf kleinen Maschinen nutzbar zu sein hohe Dynamik wahrend des Prototypings und bei der Entwicklung zu bieten Werkzeuge anzubieten die kommerzielle Performance in Produktionscode bieten Dylan war ursprunglich zum Einsatz auf Apples Newton PDAs vorgesehen wurde dort aber aus Termin und vermutlich auch Prestigegrunden durch NewtonScript ersetzt eine auf der Programmiersprache Self basierende Eigenentwicklung Apples Inhaltsverzeichnis 1 Abgrenzung von anderen Programmiersprachen 1 1 Multiple Dispatch 2 Implementierungen 2 1 Apple Dylan Harlequin Dylan Functional Developer Open Dylan 2 2 Gwydion Dylan 2 3 Mindy 3 WeblinksAbgrenzung von anderen Programmiersprachen BearbeitenDylans objektorientiertes Paradigma steht in der Tradition von Common Lisp und unterscheidet sich von den meisten objektorientierten Programmiersprachen wie C Java Python Ruby im Abstraktionsprinzip des Polymorphismus das in beiden Fallen unterschiedlich umgesetzt wird Programmiersprachen wie Java kapseln Daten in Objekte etwa eine Klasse Bruch die Zahler und Nenner enthalt Operationen die mit diesen Objekten arbeiten etwa die Addition werden ebenfalls als Eigenschaft des Objekts der Klasse gesehen und in der Klasse selbst verwaltet Wie der Folgende Pseudocode Abschnitt zeigt sind sowohl Daten als auch Methoden Operationen Teil des Objekts Bruch a a nenner 10 a zaehler 1 Bruch b b nenner 1 b zaehler 5 a addiere b Mit virtuellen Methoden ermoglicht dieser Ansatz Polymorphismus Das bedeutet dass ein Objekt seine Operationen selbst mitbringt und der Programmierer zur Laufzeit nicht festlegen muss wie z B eine Addition fur verschiedene Objekte ausgefuhrt werden soll Hat man zum Beispiel zwei Klassen Bruch und KomplexeZahl welche beide die Elternklasse Zahl haben die eine Methode betrag definiert so kann der Betrag einer komplexen Zahl oder eines Bruches mit a betrag berechnet werden ohne im Quelltext unterscheiden zu mussen ob es sich bei a um einen Bruch oder eine komplexe Zahl handelt Dieser Ansatz verspricht einen Abstraktionsgrad weil eine gut implementierte Klasse dem Programmierer wesentlich Arbeit abnimmt Ein Objekt weiss selbst am besten wie man seinen Betrag berechnet Der Nachteil dieses Ansatzes ist dass man Operationen welche man nicht genau einem Objekt zuordnen kann nun in eine Klasse stecken muss Die Addition zweier Zahlen A und B ist so ein Fall Entspricht A B nun A addiere B oder B addiere A Multiple Dispatch Bearbeiten Dylan setzt den Polymorphismus auf eine andere Weise um Operationen und Methoden werden ausserhalb der Klasse definiert an die Stelle von A addiere B tritt nun addiere A B Innerhalb der Klasse werden lediglich Datenfelder beschrieben und Zugriffsrechte verteilt Mit geringen Abweichungen in der Berechnung der Class Precedence List ist Dylans Multiple Dispatch eine exakte Ubernahme der Multimethoden von Common Lisp define class lt Bruch gt lt object gt slot nenner slot zaehler end define method addiere a lt Bruch gt b lt Bruch gt gt ergebnis Implementierung end Wird eine Klasse fur komplexe Zahlen implementiert so lasst sich die Methode addiere einfach fur weitere Datentypen erweitern define method addiere a lt KomplexeZahl gt b lt KomplexeZahl gt gt ergebnis Implementierung end define method addiere a lt Bruch gt b lt KomplexeZahl gt gt ergebnis Implementierung end define method addiere a lt KomplexeZahl gt b lt Bruch gt gt ergebnis Implementierung end Eine weitere Methode kann nun unabhangig von Klassen mit Zahlen arbeiten und rechnen define method rechteck umfang laenge breite gt umfang 2 addiere laenge breite end Anzumerken ist dass die Klassen fur die Parameter laenge breite nicht festgelegt sind Bei Ausfuhrung der Berechnung wird automatisch die richtige Implementierung von addiere herausgesucht Dies nennt sich Multiple Dispatch und entspricht der Tradition objektorientierter Programmierung in Sprachen der Lisp Familie wie etwa in Common Lisp mit dem Common Lisp Object System CLOS Implementierungen BearbeitenApple Dylan Harlequin Dylan Functional Developer Open Dylan Bearbeiten Nachdem Apple 1998 die Entwicklung von Dylan endgultig einstellte ging der Quellcode an die englische Firma Harlequin uber Harlequin wurde kurz darauf von Global Graphics ubernommen und die Entwicklung von Harlequin Dylan in eine eigenstandige Firma Functional Objects auch FunO ausgegliedert Die Dylan Implementierung mit IDE wurde fortan unter dem Namen Functional Developer verkauft 2004 wurde Functional Developer schliesslich an die Gwydion Dylan Maintainer als Open Source Projekt ubergeben FunO stellte seine Geschaftstatigkeit Anfang 2006 vollstandig ein Die Software heisst seitdem Open Dylan Neben einer interaktiven Shell ahnlich Rubys IRB oder BeanShell bietet die IDE einen Object Browser mit dem sich der Zustand laufender Programme analysieren lasst Beide Tools konnen sowohl auf lokale als auch auf anderen Rechnern laufende Dylan Programme angewendet werden Die IDE ist momentan nur unter Windows verfugbar der Compiler lauft mittlerweile jedoch auch unter Mac OS X und Linux Gwydion Dylan Bearbeiten Gwydion Dylan benannt nach einem Zauberer aus einer walisischen Sage wurde ursprunglich an der Carnegie Mellon University entwickelt Es handelt sich dabei um einen Compiler der C Code erzeugt Dieser Code muss mittels eines C Compilers in Maschinencode ubersetzt werden Dadurch konnen Gwydion Dylan Programme auf vielen Plattformen laufen Die Implementierung ist jedoch weniger vollstandig als Open Dylan Mindy Bearbeiten Mindy ist ein Dylan Interpreter dessen Entwicklung mittlerweile eingestellt wurde Er wurde benutzt um die erste Version des Gwydion Compilers zu kompilieren Die Bezeichnung ist ein rekursives Akronym von MINDY Is Not Dylan Yet Weblinks BearbeitenOpen Dylan Website CRE Programmiersprachen und Dylan Abgerufen von https de wikipedia org w index php title Dylan Programmiersprache amp oldid 208622558