Open Source im professionellen Einsatz
Linux-Magazin 09/2010

Alternativen zu den populären Programmiersprachen

Code-Vehikel

Alternativen zum Programmieren mit C++ gibt es viele. Doch welche davon eignen sich für mehr als eine Spielerei? Dieser Artikel nennt einige praxistaugliche Programmiersprachen und stellt das zu Unrecht wenig bekannte Ocaml näher vor.

 

843

Wenige Diskussionen werden mit mehr Leidenschaft geführt als der ewige Streit um die bessere Programmiersprache. Doch allen Skript- und Lisp-Moden zum Trotz ist C++ in den meisten Zählungen der Spitzenreiter, gefolgt von Java. Die Anhänger der Mauerblümchen wissen meist viel an den Stars auszusetzen, für sie sind beide aufgeblähte Monstren, mit denen sich ein stilbewusster und auf Effizienz bedachter Programmierer nicht abgeben sollte.

Freie Auswahl

Alternativen gibt es viele. Doch wie soll man sich zwischen mehreren Tausend Programmiersprachen entscheiden? Viel von sich reden machen in den letzten zwei Jahren so genannte funktionale Programmiersprachen, die vor allem die Entwicklung fehlerfreier und effizienter parallel arbeitender Software für Multicore-Prozessoren unterstützen sollen.

Ein Beispiel dafür ist Erlang, die wie Java auf einer virtuellen Maschine basiert, aber in vielen Fällen bei der Geschwindigkeit mit C-Programmen mithalten kann. Ihr leichtgewichtiges Prozessmodell unterstützt gleichzeitig eine wenig fehleranfällige Programmierung auf Multicore-Maschinen wie auch über vernetzte Rechner hinweg.

In die gleiche Richtung geht Scala, eine Entwicklung für die Java-JVM-Plattform, die eine Programmierung im alten Java-Stil genauso erlaubt wie die Verwendung vieler funktionaler Konstrukte. Viele Entwickler sehen Scala schon als Nachfolger von Java, aber die Komplexität der Syntax erschwert den Einstieg.

Eine wenig spektakuläre, aber dafür erprobte Alternative ist zum Beispiel die Skriptsprache Python. Viele Programme auf dem Linux-Desktop sind heute in Python geschrieben, so dient sie Distributoren wie Ubuntu als zweite offizielle Entwicklungssprache neben C. Python erfüllt einige Kriterien, die sie als Alternative für die Praxis tauglich machen:

  • Eine nicht zu komplizierte und gut lesbare Syntax
  • Ausgereifte Bibliotheken für jeden Anwendungsbereich, von
    der GUI- bis zur Netzwerkprogrammierung
  • Konstrukte für strukturiertes Programmieren wie
    beispielsweise Objektorientierung, Exceptions, Module und so
    weiter

Geheimtipp

Neben den erwähnten Kandidaten hat es eine Sprache ganz heimlich zu einiger Reife gebracht, die sie zu einer vollwertigen Alternative macht. Objective Caml, kurz Ocaml [1], hatte ihren Frühling vor einigen Jahren und findet im Schatten der Erlang-, Haskell- und Scala-Moden meist wenig Beachtung. Wie bei diesen handelt es sich um eine Sprache mit funktionalen Konstrukten, die aber gleichermaßen objektorientierte Features bietet, wie der Namen bereits andeutet. Gleichzeitig erlaubt sie wie Scala auch eine Reihe imperativer Konstrukte, sodass der Umstieg von anderen Sprachen schrittweise geschehen kann.

Man kann Ocaml als statisch typisierte Sprache mit Typinferenz charakterisieren. Variablen weisen also immer einen bestimmten Typ (Integer, String, ...) auf, der Programmierer muss ihn aber nicht in jedem Fall angeben, wenn der Compiler ihn selbst erschließen kann. Die Tatsache, dass Ocaml-Programme mit einem Compiler übersetzt werden, führt zu Programmen, die meist so schnell sind wie ihre C++-Pendants oder sogar schneller, was viele Benchmarks belegen.

Ein ebenfalls verfügbarer Interpreter erlaubt es aber auch, schnell mal Dinge auszuprobieren oder Programme einfacher zu entwickeln. Das ausgefeilte Typensystem ist mitverantwortlich dafür, dass Ocaml-Programme schnell laufen, denn es erlaubt dem Compiler einige Optimierungen.

In der Praxis ist jede Programmiersprache nur so gut wie die für sie verfügbaren Bibliotheken. Wer zum Beispiel GUI-Programme für Linux entwickeln will, braucht ausgereifte Frameworks wie GTK, Qt oder Wxwidgets. Für viele Anwendungen sind Bibliotheken praktisch, die XML-Daten verarbeiten, mit Datenbanken sprechen, Lokalisierung unterstützen oder das HTTP-Protokoll beherrschen. Für Ocaml gibt es alle diese Funktionen und noch viele mehr.

Ein einfaches Ocaml-Programm sieht zum Beispiel so aus:

let mittelwert a b =
  let summe = a +. b in
  summe /. 2.0;;

Um das Programm auszuführen, startet man den Interpreter mit »ocaml« und tippt den Code ein. Der Interpreter reagiert darauf mit der Ausgabe der von ihm erschlossenen Typen der Funktion und der Eingabeparameter:

val mittelwert : float -> float -> float = 
<fun>

Ab jetzt kann die Funktion im Ocaml-Programm verwendet werden:

# mittelwert 1.0 2.0;;
- : float = 1.5

Wie man sieht, fehlen bei einem Funktionsaufruf im Gegensatz zu C,C++ oderJava die Klammern, die Argumente folgen einfach nach dem Funktionsnamen. Ein doppeltes Semikolon schließt die Anweisung ab. Wer die Funktion mit zwei Integerwerten aufruft, bekommt eine Fehlermeldung präsentiert, denn - wie oben zu sehen - Ocaml erwartet zwei Fließkommazahlen. Das zeigt sich auch in den verwendeten Operatoren »+.« und »/.«, deren Punkte bedeuten, dass es sich um die Floating-Point-Versionen handelt.

Weil Ocaml definierte Funktionen auch anhand der Typen unterscheidet, ist es kein Problem, eine Funktion gleichen Namens für Integerwerte zu schreiben:

let mittelwert a b =
let summe = a + b in
summe / 2;;

Wie man sich leicht vorstellen kann, erfordert diese Striktheit bei der Typenbehandlung etwas mehr Genauigkeit beim Entwurf und die explizite Umwandlung von Typen durch den Programmierer. Sie ist auch der größte Kritikpunkt an Ocaml. Auf der anderen Seite ist es gerade dieser Aspekt, der dazu führt, dass Ocaml-Programme weniger fehlerhaft sind und schnell laufen.

Wer partout nicht auf die von vielen Skriptsprachen gewohnte Polymorphie verzichten mag, kann die Bibliothek Deriving [2] verwenden, die viele Typumwandlungen selbst übernimmt - was natürlich wiederum etwas Rechenaufwand kostet. Abbildung 1 zeigt an einem klassischen Unix-Fork-Beispiel, dass Ocaml-Code nicht schwer zu lesen ist.

Abbildung 1: Neben dem alten Emacs-Modus bietet der Tuareg-Mode gute Unterstützung für Ocaml.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 2 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Ocaml

    Die Programmiersprache Ocaml gilt als exotisch. Dabei bietet sie neben manchen Eigenheiten insbesondere für Python-, Java- und C-Programmierer Vertrautes. Der Verfasser des Artikels hat den Code seines Open-Source-Projekts auf Ocaml umgestellt und es nicht bereut.

  • Ocaml-Vortragsfolien online

    Die Vortragsfolien des Ocaml Users Meeting, das Mitte April in Paris stattfand, sind nun online verfügbar.

  • Zero Install Injector 2.6 ganz in OCaml

    Mit Version 2.6 komplettiert das dezentrale Installationssystem Zero Install Injector den Umstieg von Python auf OCaml und bringt weitere Neuerungen.

  • Machtspiele

    Was macht Macht aus? Die Berechnungskraft aller Programmiersprachen ist gleich, sagt Logik-Veteran Church. Andere Kriterien müssen her, um Einfluss bei Entwicklern geltend zu machen.

  • Schätze heben

    Wer bei jeder Softwaregattung auf das jeweils bekannteste Programm setzt, macht vielleicht nichts falsch, bringt sich aber um das Erlebnis, einen wertvollen Schatz gehoben zu haben. Jeder der folgenden Artikel verspricht reiche Beute.

comments powered by Disqus

Ausgabe 11/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.