Montag, Mai 12, 2008

Forth gedacht: JavaScript 2

Forth ist eine der Programmiersprachen aus der Frühzeit der Informatik. Die Sprache entstand Anfang der 70er Jahre und wurde von Charles H. Moore erschaffen -- und sie hat bis heute überlebt. Sie ist stack-basiert, äußerst einfach aufgebaut, sie kann mühelos ohne Betriebssystem auskommen und ist beliebig erweiterbar. Die Programme sind schnell und äußerst kompakt, weshalb Forth gerade im Bereich der eingebetteten Systeme noch immer gerne genutzt wird. Und man kann mit Forth Programme interaktiv entwickeln; ein Vorteil, den man von interaktiven, dynamisch-typisierten Sprachen kennt. Was das spannende ist: Forth ist ein entscheidender Baustein im neuesten JavaScript 2 (ECMAScript 4) für den Mozilla-Browser Firefox 4.0.

In der zukünftigen Generation des Firefox-Browsers 4.0 (ich spreche nicht von Firefox 3.0, der bald fertig gestellt sein wird) wollen die Mozilla-Entwickler das dann aktuelle JavaScript 2.0 auf einer Virtuellen Maschine (VM) mit JIT-Kompilierung (just in time compilation) ausführen lassen. Im November 2006 erhielt die Mozilla-Organisation die dafür notwendige Technologie von Adobe Systems. Adobe spendete das etwa 135.000 Zeilen Code umfassende Tamarin an Mozilla. Tamarin ist der Name der VM, die Adobe seit Flash 9 für die Ausführung von ActionScript einsetzt. Derzeit läuft ein Projekt namens ActionMonkey bei Mozilla, das die aktuelle JavaScript-Implementierung für Firefox (SpiderMonkey) und das Tamarin-Projekt zusammenbringt.

Der ByteCode von Tamarin wird in Files mit der Endung .abc abgelegt; sie sind das Analogon zu .class-Files für die Java VM. Der abc-ByteCode wird in Forth als Zwischensprache (Intermediate Language, IL) übersetzt. Für Forth gibt es dann einen C-Interpreter. Wer hier generell einen Einstieg finden möchte, dem sei der Blog "Hacking with Caffein" von Mason Chang empfohlen, insbesondere der Beitrag "Getting started with Tamarin and Forth" (27. März 2008). Man darf gespannt sein, wie sich das ActionMonkey-Projekt machen wird und ob sich Forth als IL in der Virtuellen Maschine halten wird!

Wer sich für ein modernes "Forth" interessiert, der sei auf Factor verwiesen. Siehe dazu auch "Factor: In der Kürze liegt die Würze".

Kommentare:

mephi hat gesagt…

Ich hoffe dass der IE und die anderen Browser da nachziehen. Mittlerweile mag ich JS richtig, man kann damit richtig tolle Dinge anstellen, aber ich ärgere mich immer wieder dass es zwischen Browsern so große Unterschiede gibt.

Mat hat gesagt…

Forth als Metacode einzusetzen macht Sinn, allerdings frage ich mich ob der mehrstufige Übersetzungsprozess in Tamarin nicht eigentlich überflüssig ist zumal die universelle Erweiterbarkeit von Forth flexibel genug wäre um Javascript in irgend einer Weise direkt umzusetzen ?!??