© saicle/Shutterstock.com
Kolumne: The Good Parts

Kolumne: The Good Parts


JavaScript besitzt in der Webentwicklung einen hohen Stellenwert. Doch nicht nur dort fühlt sich diese Sprache zu Hause. Mit Node.js ist sie ebenso auf Servern vertreten, und IDEs erlauben mit ihr die Erstellung eigener Module. Auch auf Fernsehern, Spielekonsolen und Embedded-Systemen ist sie anzutreffen. Kurzum: Die Verbreitung von JavaScript scheint unaufhaltsam. Doch was bedeutet das konkret für die Entwicklung der Sprache? Ist JavaScript mittlerweile vielleicht mehr geworden, als eine reine Programmiersprache?

JavaScripts mannigfaltige Sprachfeatures lassen extrem elegante und mächtige Problemlösungen entstehen, führen jedoch gleichzeitig häufig zu unleserlichem und extrem schwer wartbarem Code. Viele sind der Meinung, dies sei ein sprachinhärentes Problem, das sich mit JavaScript nicht lösen lasse. Die Konsequenz: Eine alternative Sprache muss her! Doch wie? Browser, die zu den Haupteinsatzgebieten von JavaScript zählen, können mit keiner anderen Sprache umgehen. Natürlich könnten neue Sprachen erfunden werden. Doch aus Erfahrung vergehen etliche Jahre, bis sich diese soweit etabliert haben, dass sie produktiven Einsatz finden – falls dies überhaupt gelingt.

Die Entstehung von Transpilern

Eine einfache, wenn auch geniale Lösung des Ein-Sprachen-Problems ist die Verwendung sog. Transpiler, auch Transcompiler oder Source-to-Source-Compiler genannt. Transpiler sind Compiler, die eine Eingabesprache nicht in Bytecode für eine spezielle Plattform oder VM übersetzen, sondern in eine andere Hochsprache überführen. In Zeiten von interpretierten und mit Just-in-Time-Compilern optimierten Sprachen kann diese Technik eine Möglichkeit bedeuten, alternative Sprachen auch in scheinbar isolierten Systemen wie JavaScript zum Einsatz zu bringen.

CoffeeScript – Ein bekannter Transpiler

Ein Vertreter dieser Sprachen ist CoffeeScript [1]. Wenig überraschend ist die Zielsprache dieses Compilers JavaScript. Applikationen können demnach in CoffeeScript geschrieben und anschließend in JavaScript übersetzt werden. Hierbei muss die Ausgangssprache keine Ähnlichkeit mit JavaScript besitzen.

Eine Klassendefinition in CoffeeScript demonstriert recht eindrucksvoll, dass die Ausgangssprache nicht zwangsläufig Ähnlichkeit mit der Zielsprache besitzen muss (Listing 1).

Listing 1

class Shape draw: -> throw new Error("Abstract method.") class Circle extends Shape draw: -> # Draw the Circle 

CoffeeScript besitzt Klassen, JavaScript lediglich Prototypen. CoffeeScript verwendet Einrücku...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang