Euphoria (Programmiersprache)

Euphoria ist eine Programmiersprache und ein Interpreter, der von Robert Craig für Rapid Deployment Software entwickelt wurde. Die erste Version von Euphoria erschien 1993 für den Atari ST, die aktuelle Version 4.0.5 (Stand 25. Januar 2013) gibt es für Windows, Linux, FreeBSD und MS-DOS. Ab der Version 3.0.0 steht Euphoria unter einer Open-Source-Lizenz.

Das Ziel bei der Entwicklung von Euphoria war es, eine besonders einfach zu erlernende, aber doch mächtige Programmiersprache zu entwickeln, die auch in der Geschwindigkeit mit kompilierten Sprachen mithalten sollte. Dieses Ziel wurde mittlerweile erreicht.[1] Außerdem bietet der Hersteller ein Tool an, mit dem sich Euphoria-Code in die Programmiersprache C übersetzen und anschließend kompilieren lässt. Euphoria wird mit einer einfachen Datenbank geliefert.

Auf der Website befindet sich auch eine von vielen Benutzern beigesteuerte Sammlung von mehr als 1600 Programmen im Quellcode für die verschiedensten Anwendungsbereiche.[2]

Beispiel

Hier ein Code-Beispiel aus dem Handbuch:

 sequence list, sorted_list
 function merge_sort(sequence x)
     integer n, mid
     sequence merged, a, b
     n = length(x)
     if n = 0 or n = 1 then
         return x -- trivial case
     end if
     mid = floor(n/2)
     a = merge_sort(x[1..mid])    -- sortiert die erste Hälfte von x
     b = merge_sort(x[mid+1..n])   -- sortiert die zweite Hälfte von x
     merged = {}
     while length(a) > 0 and length(b) > 0 do
         if compare(a[1], b[1]) < 0 then
             merged = append(merged, a[1])
             a = a[2..length(a)]
         else
             merged = append(merged, b[1])
             b = b[2..length(b)]
         end if
     end while
     return merged & a & b
 end function
 procedure print_sorted_list()
     list = {9, 10, 3, 1, 4, 5, 8, 7, 6, 2}
     sorted_list = merge_sort(list)
     ? sorted_list
 end procedure
 print_sorted_list()

Das Programm gibt daraufhin

 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

aus.

Zentraler Datentyp von Euphoria sind sogenannte Sequenzen (sequences). Hier ein Beispiel:

{2, 3, 5, 7, 11, 13, 17, 19}
{1, 2, {3, 3, 3}, 4, {5, {6}}}
{{"jon", "smith"}, 52389, 97.25}
{}
{x+6, 9, y*w+2, sin(0.5)}

Sequenzen lassen sich beliebig ineinander verschachteln. Dadurch lassen sich beispielsweise Bäume sehr einfach darstellen.

Einzelnachweise

  1. Euphoria-Benchmark
  2. Euphoria-Quellcode-Archiv

Weblinks