Top-Fragen
Zeitleiste
Chat
Kontext

Aldor

Programmiersprache Aus Wikipedia, der freien Enzyklopädie

Remove ads

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

Geschichte

Zusammenfassung
Kontext

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 geschriebene 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]

Remove ads

Spracheigenschaften

Zusammenfassung
Kontext

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]

Remove ads

Lizenz

Aldor ist unter der Apache-Lizenz veröffentlicht und damit freie Software.

Beispiel

Hallo-Welt-Programm
#include "aldor"
#include "aldorio"

stdout << "Hello, world!" << newline;
99 Bottles of Beer
#include "aldor"
#include "aldorio"

import from Integer, String;

bob(n: Integer): String == {
    b: String := " bottle";

    if n ~= 1 then b := b + "s";
    b + " of beer";
}

main(): () == {
    n: Integer := 99;
    otw: String := " on the wall";

    -- refrain
    while n > 0 repeat {
        stdout << n << bob(n) << otw << ", " << n << bob(n) << "." << newline;
        stdout << "Take one down and pass it around, ";
        n := n - 1;
        if n > 0 then stdout << n;
        else stdout << "no more";
        stdout << bob(n) << otw << "." << newline;
        stdout << newline;
    }

    -- last verse
    stdout << "No more" << bob(n) << otw << ", no more" << bob(n) << "." << newline;
    stdout << "Go to the store and buy some more, ";
    n: Integer := 99;
    stdout << n << bob(n) << otw << "." << newline;
}

main();
Remove ads

Literatur

Einzelnachweise

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads