Scala

Scala ist eine Programmiersprache, deren Entwicklung im Jahr 2001 an der Universität Lausanne begann, und die sowohl das Paradigma der funktionalen wie auch der objektorientierten Programmierung unterstützt. Wesentlich zur Entwicklung beigetragen hat Martin Odersky. Die Basis für die Ausführung von Scala-Code ist sowohl die Java Virtual Machine (JVM) als auch die .NET Plattform von Microsoft. Scala kann somit eine große Anzahl bereits bestehender Bibliotheken und Frameworks integrieren. Als Vorzüge von Scala werden neben der Skalierbarkeit der Sprache, deren kompakter Code im Vergleich zu Sprachen wie Java oder C-Sharp (C#) genannt. Daraus lässt sich in der Folge eine deutlich höhere Produktivität bei der Erstellung von Software ableiten. Scala ist eine plattformunabhängige Open-Source-Software, die aktuell in der Version 2 zur Verfügung steht, der dann im Jahr 2010 eine überarbeitete Version folgen soll. Als Entwicklungsumgebung sind Plug-Ins für Eclipse, Netbeans und IntelliJ IDEA vorhanden.


Aufgrund der Ausrichtung hinsichtlich funktionaler sowie objektorientierter Konzepte, unterliegt Scala dem Einfluss gleich mehrerer Programmiersprachen wie Java, Haskel, Smalltalk, Erlang und ML. Der Hauptunterschied zu diesen Sprachen ist, dass Scala eine erweiterbare, skalierbare Sprache ist. Der ursprünglich relativ schlanke Sprachkern kann um individuelle Bibliotheken ergänzt werden, die sich dann in das Sprachkonzept integrieren. Dafür stellt Scala entsprechend ausdrucksstarke Sprachmittel zur Verfügung.

Scala verbindet die funktionsorientierte Sicht der funktionalen Programmierung mit der datenorientierten Sicht in imperativen Programmiersprachen wie Java zu einem geschlossenen Konzept.

Funktionen sind in Scala vollwertige Sprachelemente. Hier ist neben Closures auch die teilweise Evaluierung von Funktionen vorgesehen. Wegen des funktionalen Ansatzes realisiert Scala die Erstellung von Software frei von Seiteneffekten. Dabei sind Variablen, Konstanten, Collection-Klassen und Pattern-Matching Teile der Umsetzung dieses Ansatzes in Scala. Ebenso optimiert Scala rekursive Funktionen.

Ein weiteres Ziel von Scala ist es, objektorientierte Konzepte möglichst kompakt, einfach verwendbar und konsequent darzustellen. Dabei ist alles - explizit auch Zahlen - ein Objekt. Bestandteile von Scala sind im Gegensatz zu Java Klassen, Module und sogenannte Traits. Während das Klassenkonzept bis auf die fehlenden statischen Methoden oder Variablen und dem vereinfachten Konzept der sogenannten "Case Class" dem von Java ähnelt, sind Scala-Module vergleichbar mit dem Entwurfsmuster Singleton, wonach das Modulkonzept auch als Singleton Object bezeichnet wird. Ein weiteres neues Feature von Scala im Vergleich zu Java sind Traits, womit ein integriertes Konstrukt von zusammengefassten Funktionalitäten (ähnlich mixins) beschrieben wird.

Scala sieht die explizite Festlegung von Typen für Variable, Parameter etc. vor, und ist damit eine stark typisierte - oder auch typsichere - Programmiersprache. Sofern der Typ einer Variablen nicht ausdrücklich angegeben ist, nimmt Scala den Typ des Wertes an, mit dem die Variable initialisiert wird, was man auch als Typfolgerung oder Typinferenz bezeichnet.

Bereits mit der Standardbibliothek von Scala wird ein interessantes Konzept zur parallelen Programmierung zur Verfügung gestellt. Dies ähnelt stark dem von der Programmiersprache Erlang getragenen Ansatz der Aktoren. Dabei werden zwischen verschiedenen Akteuren Nachrichten ausgetauscht, die diese dann in der Reihenfolge des Eintreffens parallel abarbeiten können. Dazu sieht das Konzept von Scala keinerlei weitere Aufwände zur Synchronisierung vor.

Die Scala-Distribution enthält bereits einen Interpreter, mit dem man interaktiv einzelne Sprachelemente kennenlernen kann. Es existieren jedoch auch Plug-Ins für bekannte Entwicklungsumgebungen wie Eclipse und NetBeans.

Die Java Virtual Machine (JVM) und die .NET-Plattform stellen die Mechanismen zur Ausführung von Java-Code zur Verfügung. Dabei setzt Java auf die Verwendung von etablierten Bibliotheken und Frameworks. Der Umfang von Scala-Code gegenüber entsprechendem Java-Code ist deutlich geringer; man spricht in diesem Zusammenhang von Faktoren um die Werte zwei bis drei. Das erspart nicht nur Aufwände sondern sorgt gleichzeitig für einen sicheren Code. Zudem ist in Scala jedoch die Möglichkeit vorgesehen, komplexere Programmteile zum besseren Verständnis auch in ausführlicherem Code zu schreiben.

Für die Erstellung von modernen Anwendungen für das Internet steht mit Lift ein Framework zur Verfügung.

http://www.scala-lang.org

Informationen zum Artikel
Deutsch: Scala
Englisch:
Veröffentlicht: 22.12.2009
Wörter: 649
Tags: #Sonstige Programmiersprachen
Links: .NET, Aktor, Auszeichnungssprache, Bibliothek, Code