Aldor

Aldor

Aldor ist eine Programmiersprache, die hauptsächlich im Umfeld von Computeralgebrasystemen verwendet wird.

Inhaltsverzeichnis

Geschichte

Aldor wurde seit 1985 am Thomas J. Watson Research Center unter Leitung von Stephen M. Watt entwickelt, ab Anfang der 1990er-Jahre in Kooperation mit der Numerical Algorithms Group. Anfangs wurde die Sprache als A# bezeichnet, diente zur Erweiterung von Axiom und wurde ab 1994[1] auch gemeinsam mit Axiom vertrieben. Daraus leitete sich ein weiterer zwischenzeitlicher Name, Axiom XL (Axiom Extension Language), ab.

1994 wurde der A#-Compiler erstmals der Öffentlichkeit vorgestellt.[2] Dieser Compiler übersetzte Aldor-Programme in eine Zwischensprache namens Foam, für die bereits ein Compiler existierte. Damit konnten sowohl eigenständige Programme als auch Programmbibliotheken erstellt werden. Zusätzlich konnte auch C- und LISP-Code generiert werden. Der Compiler selbst war überwiegend in C, zu einem kleinen Teil auch in A# geschrieben und war unter DOS, UNIX, OS/2 und weiteren Betriebssystemen lauffähig.

Seit 1999 kann Aldor auch zusammen mit C++ verwendet werden. Aldor-Programme können in C++ geschriebenen Code nutzen, außerdem erzeugt der Compiler auf Wunsch die nötigen Schnittstellen, um in Aldor geschrieben Teilprogramme aus einem C++-Programm heraus aufzurufen.[3]

Seit 2001 wird Aldor unabhängig von Axiom über eine eigene Webseite vertrieben. 2004 wurde eine Schnittstelle veröffentlicht, die es ermöglicht, Aldor auch mit Maple einzusetzen.[4]

An der University of Kent wurde Aldor-- entwickelt, eine funktionale Sprache, die auf einer Teilmenge der Sprache Aldor basiert.[5]

Spracheigenschaften

Die Syntax von Aldor ist durch Pascal beeinflusst. Optional wird wie bei Python die Einrückung berücksichtigt.

Aldor besitzt Merkmale sowohl imperativer und objektorientierter als auch funktionaler Sprache. Das Überladen von Funktionen und Operatoren wird unterstützt.

Typsystem

Das Typsystem ist statisch, implizierend, nicht typsicher und erlaubt die Verwendung von Typen und Funktionen als First-Class-Objekt. Wie viele andere funktionale Sprachen verwendet auch Aldor starke Typisierung. Für Computeralgebrasysteme ist starke Typisierung hingegen ungewöhnlich. Aufgrund des Mathematikbezugs der Sprache ist das Typsystem von Aldor komplexer als die Typsysteme anderer Sprachen.[6]

Aldor unterstützt auch abhängige Typisierung. Dabei handelt es sich um eine Form der Polymorphie, bei der Typen auch von Werten abhängig sein können. Möglich sind damit zum Beispiel Funktionen vom Typ (n:Integer) -> Vector(n) -> Double. Eine solche Funktion könnte avg sein, die eine Zahl n und einen Vektor mit n Elementen erhält und daraus den Durchschnitt der Elemente des Vektors berechnet.

Die abhängige Typisierung ist dadurch eingeschränkt, dass eine Auswertung der Werte während der Typprüfung nicht stattfindet. Das führt dazu, dass etwa Vector (2) und Vector (1+1) unterschiedliche Typen sind.[7] Abhängige Typisierung gilt heute noch als schwierig und mit statischer Typprüfung nur mit Einschränkungen kombinierbar.[8]

Lizenz

Aldor ist unter der Aldor Public License veröffentlicht und damit eine Open-Source Freeware. Es handelt sich jedoch nicht um eine Freie Software, da der kommerzielle Vertrieb, Support und Weiterentwicklung verboten ist. Aufgrund dieses Umstandes wurde die Free Aldor Petition eingerichtet.

Beispiel

Hallo-Welt-Programm
#include "aldor"
print << "Hello world" << newline;
99 Bottles of Beer
#include "aldor"
import from Integer;
 
bob(n:Integer):(String) == {
   s:String << " bottle";
   if n != 1 then {
      s << "s"
   } 
   s << " of beer";
   return s;
}
 
otw():(String) == {
   return "on the wall";
}
 
bobotw(n:Integer):(String) == {
   return bob(n) << " " << otw();
}
 
main(): () == {
   n := 99; 
   while n > 0 repeat {
      print << n << bobotw(n) << ", " << n << bob(n) << "." << newline; 
      print << "Take one down and pass it around, ";
      n := n-1;
      if n == 0 then {
         print << "no more";
      } else {
         print << n;
      }
      print << bobotw(n); 
   }
   print << "No more" << bobotw(n) << ", no more" << bob(n) << "." << newline;
   print << "Go to the store and buy some more, ";
   n := 99;
   print << n << bobotw(n) << ".";
}
 
main();

Literatur

Weblinks

Einzelnachweise

  1. Michael Kaplan: Computeralgebra. Springer, Berlin/Heidelberg 2005, Seite 329
  2. Stephen M. Watt, Peter A. Broadbery, Samuel S. Dooley, Pietro Iglio, Scott C. Morrison, Jonathan M. Steinbach und Robert S. Sutor: A First Report on the A# Compiler. International Symposium on Symbolic and Algebraic Computation 1994
  3. Yannis Chicha, Florence Defaix und Stephen Watt: Interoperability of Languages with Generics, using Aldor, C++ and Java. Frisco Workshop 1999
  4. Cosmin Oancea und Stephen M. Watt: A Framework for Using Aldor Libraries with Maple. Actas de los Encuentros de Algebra Computacional y Aplicaciones 2004
  5. Simon Thompson und Leonid Timochouk: The Aldor-- Language. Computing Laboratory, University of Kent at Canterbury
  6. Erik Poll und Simon Thompson: Integrating Computer Algebra and Reasoning through the Type System of Aldor. 3rd International Workshop on Frontiers of Combining Systems 2000
  7. Erik Poll und Simon Thompson: Adding the axioms to Axiom: Towards a system of automated reasoning in Aldor. Computing Laboratory, University of Kent 1998
  8. Peter Pepper und Petra Hofstedt: Funktionale Programmierung. Springer, Berlin/Heidelberg 2006, Seite 152

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Aldor — is a programming language. It is the successor of A# as the extension language of the Axiom computer algebra system.The Aldor language combines imperative, functional, and object oriented features. It has an elaborate dependent type… …   Wikipedia

  • Aldor — Personaje de El Señor de los Anillos Creador(es) J. R. R. Tolkien Capítulo(s) Apéndice A: II. «La casa de Eorl» Información …   Wikipedia Español

  • aldor — aldor, ur OE. forms of alder n.2, chief …   Useful english dictionary

  • Aldor —    Third King of Rohan, son of Brego son of Eorl the Young.        Rohan s longest reigning King.    The second son of King Brego of Rohan. His elder brother Baldor had been lost while attempting to pass the Paths of the Dead, and so Aldor… …   J.R.R. Tolkien's Middle-earth glossary

  • Aldor — Rois du Rohan Voici la liste des rois du Rohan, pays de la Terre du Milieu de J. R. R. Tolkien. Sauf autre indication, les dates données sont celles du Troisième Âge, et chaque roi est le fils de son prédécesseur. Sommaire 1 Première lignée 2… …   Wikipédia en Français

  • Aldor Ingebrigtsen — (16 February 1888 ndash; 14 November 1952) was a Norwegian politician for the Labour Party.He was born in Tromsøysund.He was elected to the Norwegian Parliament from Troms in 1922, and was re elected on seven occasions. During his eighth term, he …   Wikipedia

  • Bernd Aldor — um 1925 auf einer Fotografie von Alexander Binder Bernd Aldor (* 23. März 1881 in Konstantinopel; † ?) war ein deutscher Schauspieler. Leben Kurz vor der Jahrhundertwende nahm er in Wien Schauspielunterricht an der Meister …   Deutsch Wikipedia

  • List of Kings of Rohan — Middle earth portal This is a list of kings of Rohan from the fictional universe of Middle earth by J. R. R. Tolkien. All of the Kings were of the same dynasty, the House of Eorl, divided into separate Lines when a king was not succeeded by his… …   Wikipedia

  • Liste des Hommes de la Terre du Milieu — Voici une liste des Hommes apparaissant dans l œuvre fictionnelle de J. R. R. Tolkien, à l exception des Hobbits qui ont une liste spécifique. Sommaire : Haut A B C D E F G H I J K L M N O P Q R S T U V W X Y …   Wikipédia en Français

  • Ainur — Die von J. R. R. Tolkien in mehreren Romanen geschaffene Fantasy Welt Arda ist von einer Vielzahl von Menschen, Elben, Hobbits und anderen fiktiven Wesen bewohnt. Die folgende Aufzählung bezieht sich ausschließlich auf die Romane Tolkiens. Die… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”