Direkt zum Hauptbereich

Posts

Es werden Posts vom 2008 angezeigt.

Denken unter 150

184 Puls. Die Zone, in der ich nur noch renne. Kein Gedanke, kein denken -- nur kämpfen. Ich laufe gegen meinen Körper an. Längst bin ich im anaeroben Bereich. Ich kann nicht mehr soviel Sauerstoff in meine Lungen pumpen, wie ihn mein Körper benötigt. Ich spüre regelrecht, wie meine Zellen auf Hochtouren laufend die letzten Energien mobilisieren. Alles schmerzt. Warum tue ich mir diesen Berg eigentlich an? Gleich ist Schluss. Noch 23 Sekunden, die muss ich noch durchhalten, irgendwie. "Wie lautet die Binärzahl von 197?" Wie bitte? Die Aufgabe hämmert in meinem Kopf. Noch 18 Sekunden. Ich kann jetzt nicht rechnen. Ich schaue auf die Uhr. Noch 16 Sekunden den Körper durch die Qual treiben. Mein Puls fällt ab. Ich kann das Tempo nicht mehr halten. 197 ist kleiner als 256 und größer als 128. Mehr bekomme ich reflexartig nicht hin. Kämpfen steht im Vordergrund. Bei dem Puls kann ich keinen klaren Gedanken fassen. Wie auch? Ich versuche gerade meinen Körper zu bezwingen, das Limit

Syntax und Semantik

Was ist Syntax, was ist Semantik? Diese zwei Begriffe beschäftigen mich immer wieder, siehe zum Beispiel auch " Uniform Syntax " (23. Feb. 2007). Beide Begriffe spielen eine entscheidende Rolle bei jeder Art von maschinell-verarbeitbarer Sprache. Vom Dritten im Bunde, der Pragmatik, will ich an dieser Stelle ganz absehen. Die Syntax bezieht sich auf die Form und die Struktur von Zeichen in einer Sprache, ohne auf die Bedeutung der verwendeten Zeichen in den Formen und Strukturen einzugehen. Syntaktisch korrekte Ausdrücke werden auch als "wohlgeformt" ( well-formed ) bezeichnet. Die Semantik befasst sich mit der Bedeutung syntaktisch korrekter Zeichenfolgen einer Sprache. Im Zusammenhang mit Programmiersprachen bedeutet Semantik die Beschreibung des Verhaltens, das mit einer Interpretation (Auslegung) eines syntaktisch korrekten Ausdrucks verbunden ist. [Die obigen Begriffserläuterungen sind angelehnt an das Buch von Kenneth Slonneger und Barry L. Kurtz: Formal Syn

Studieren mit der PS3

Ungefähr 1000 PS3-Spielkonsolen dürften in etwa der Rechenleistung unseres Gehirns gleichkommen. Vielleicht ist das eine gewagte Schätzung, so ganz seriös sind solche Computer/Hirn-Vergleiche nie. Aber wer als "Niko" Bellic in die Welt von GTA IV eintaucht, dem wird diese Zahl vermutlich gar nicht so abwegig vorkommen. Es ist unglaublich, wieviel Welt so eine Spielkonsole simulieren kann. In der PS3 leistet ein Spezialprozessor, der Cell-Chip, diese beachtliche Arbeit. Ein etwa 10 Jahre altes Rechenzentrum im Schachtelformat. Mehrere Einheiten arbeiten parallel und fressen Zahlen, was das Zeug hält. Es hat eine ganz eigene Faszination, wenn man Linux auf die PS3 installiert und sich die Konsole zum ersten Mal meldet. Man hat Kontakt mit dieser geballten Rechenkraft aufgenommen. Plötzlich gehorcht sie einem aufs Wort. Und irgendwie hört man die Maschine nach Arbeit rufen. Das bisschen Linux, die paar Befehle, die über die Konsole reinwandern, die machen so ein Maschinchen nich

Einladung in die Schreibbar

Daran kommt keine Studentin und kein Student vorbei: am Verfassen einer wissenschaftlichen Arbeit. Früher gab es (in den technisch orientierten Fächern) die Studien- und die Diplomarbeit, jetzt ist eine Bachelor oder Master Thesis zu schreiben. Seinerzeit hatte man die Chance, sich mit der Studienarbeit auf die Diplomarbeit vorzubereiten. Die Studienarbeit war so etwas wie eine Fahrschule zum wissenschaftliche Arbeiten und Schreiben. Jetzt geht es mit der Bachelor oder Master Thesis relativ unvorbereitet auf die Wissenschaftspiste. Plötzlich muss man alles beherrschen: das Zitieren, das Referenzieren, das Gliedern, Schreiben, Bewerten, Recherchieren etc. Es macht es nicht einfacher, dass man für eine Bachelor Thesis nicht gerade viel Zeit hat. In der Schreibbar , "da werden Sie geholfen"! Die Schreibbar möchte das erste deutschsprachige Blog sein, das das wissenschaftliche Arbeiten zum Thema hat und Studierenden dabei Hilfestellung und Anleitung bietet. Die Schreibbar hat e

Reguläre Ausdrücke

Eine typische Aufgabenstellung, mit der sich ein Software-Entwickler bzw. eine Software-Entwicklerin immer wieder konfrontiert sieht, ist die Verarbeitung von Textdateien. In der Regel interessiert die Verarbeitung von Textdateien oder Zeichenströmen, die von Maschinen für Maschinen gedacht sind. Solche Textdateien folgen klaren, eindeutigen Regeln des Aufbaus. Sonst ist die maschinelle Verarbeitung eher schwierig bis unmöglich. Bei der Verarbeitung von Textdateien bzw. Zeichenströmen kommt man an regulären Ausdrücken ( regular expressions ) nicht vorbei. Mit ihnen kann man Zeichenfolgen in einem Text suchen und weiter verarbeiten. Reguläre Ausdrücke stehen in praktisch jeder Programmiersprache als nachladbare Bibliothek zur Verfügung (so z.B. in Java) oder sie sind bereits fester Bestandteil der Sprache (wie z.B. in Perl oder JavaScript). Jeder moderne Texteditor erlaubt die Suche nach Zeichenketten mit Hilfe von regulären Ausdrücken. Reguläre Ausdrücke selbst sind Zeichenketten ( str

Zuweisung, Verzögerung, Rekursion - alles Lambda, oder was?!

Es mag Spaß machen, einigermaßen komplexe Programme in eine einzige, unleserliche Zeile zu stopfen. In der Programmiersprache Perl sind die "one-liners" ja beinahe Kult. Von geradezu didaktischem Wert ist die Konstruktion von Einzeilern für Python von Dan Piponi. Bei ihm lernt man, was die Mächtigkeit von Lambda-Ausdrücken ausmacht. Zuweisung, Verzögerung, Rekursion -- das alles kann man leicht mit Lambdas ausdrücken. Mit ihrer Hilfe kann man sich beliebige Einzeiler basteln, siehe " On writing Python one-liners ". Nicht, dass ich Sie zu Einzeilern ermutigen möchte. Aber Lambda-Ausdrücke sollte jeder Programmierer kennen. Sie sind die Wunderwaffe der funktionalen Programmierer!

Objekt-orientierte Parser-Kombinatoren in Python

Ich möchte Ihnen eine Technik zur Syntaxanalyse vorstellen, die zwar gar nicht so neu ist, aber immer wieder Aufmerksamkeit erregt. Zum Beispiel in der Smalltalk-Gemeinde durch einen Beitrag von Gilad Bracha zu Newspeak (" Executable Grammars in Newspeak "). In der Haskell-Welt machen Parser-Kombinatoren und die Forschung zu ihnen immer wieder von sich reden, siehe z.B. aktuell " Parser Combinators for Ambiguous Left-Recursive Grammars " von R.A. Frost, R. Hafiz und P. Callaghan, PADL 2008 . Im Folgenden setze ich voraus, dass Sie wissen, was ein Parser ist und Ihnen auch die EBNF zur Darstellung von Grammatiken bekannt ist. Wenn wir weiter unten von einer Parser-Funktion reden, dann meinen wir eine Funktion, die einen String entgegennimmt, diesen parst und ein geeignetes Ergebnis der Parse-Analyse zurückgibt. Der Begriff des Kombinators kommt aus der Ecke der funktionalen Programmiersprachen. Ein Kombinator ist eine Funktion höherer Ordnung, eine Higher-Order F

Eine einfache Grammatik für LaTeX

Informatiker schreiben ihre Artikel, Berichte und Arbeiten natürlich mit TeX bzw. mit LaTeX -- sonst gehört man einfach irgendwie nicht dazu ;-) Es gibt unzählige Erweiterungen (im LaTeX-Slang "packages" genannt), die ebenso unzählige Features und Gimmicks nachrüsten für so ziemlich jedes Problem, das man sich vorstellen kann. Für die Überarbeitung eines Artikels hatte mir der Verlag die Auflage gemacht, alle Änderungen zur vorigen Version hervorzuheben. In Microsoft Word ein Klacks, in LaTeX zugegebenermaßen ein Umstand. Aber mit \usepackage{changes} steht einem glücklicherweise ein Paket zur Verfügung, das an dieser Stelle aushilft. So übersäte ich mein LaTeX-Dokument mit \added{...} , \deleted{...} und \replaced{...}{...} . Für eine erneute Überarbeitung wollte ich nun die vielen Änderungsauszeichnungen aus dem LaTeX-Dokument entfernen und zwar so, dass die Änderungen selbst im Text zurückbleiben. Natürlich automatisch und nicht per Hand. Das heißt, etwas vereinfacht g

Add-ons for Chrome - or - A new architecture for browsers

On September 2nd, on Tuesday, Google released Chrome -- their own web browser. Chrome has a simple, unobtrusive user interface, it's based on WebKit, it's powered by a new JavaScript implementation, it runs a process for each new tab, and it promises a new approach to safe browsing. On this one, Chrome failed. Chrome has some severe security holes Google needs to fix. Nonetheless, I like the new browser. Some hours after Google had released Chrome, I read a lot of comments about the Chrome experience. Most users seemed to be quite enthusiastic, some few were not. But one sort of comments caught my attention: Some folks argued that Firefox users will stay with Firefox. Why? Because of all these nice add-ons you can extend Firefox with. My spontaneous reaction was: Who needs add-ons? Before you laugh at me. I run Firefox with extensions like Firebug, Web Developer, ScrapBook and others. I use them extensively and like them a lot. Who wants to miss Firebug, for instance? Nobody, r

Multi-Stage Programming in Scheme

Vor nicht allzu langer Zeit habe ich mich in einem Beitrag mit " Multi-Stage Programming " (MSP) beschäftigt. Ich warf in dem Blog-Posting die Frage auf, ob MSP im Grunde nicht mit der Makroprogrammierung wie z.B. in Scheme oder Lisp vergleichbar sei. In der Tat kann das MetaOCaml-Beispiel, die Auflösung der Power-Funktion, sehr leicht mit defmacro , dem Urmakro aus Lisp, in Scheme nachgebildet werden. Hier kommt PLT-Scheme zum Einsatz -- mit Dank an Tim für den Code: (require (lib "defmacro.ss")) ; POWER MACRO (define-macro power (lambda (n x) (if (= n 0) '1 `(* ,x (power ,(- n 1) ,x))))) (power 2 4) Stellt man dem Code in PLT-Scheme noch ein (require (lib "../macro-debugger/expand.ss")) voran und gibt dann interaktiv ein (expand/step '(power 2 2)) ein, dann öffnet sich ein Fenster zum schrittweisen Makroauflösen. Ich habe ein wenig mit den Check-Boxen experimentiert: Mit "Enable macro hiding?" und "Hide mzsc

Browsing aufpoliert: Google Chrome

Firefox, Opera, Safari, Internet Explorer -- die großen "Player" im Browser-Markt versuchen sich immer wieder an neuen, oft kleinen Features, die das Surfen im Internet angenehmer, komfortabler, sicherer und vielleicht auch ein wenig spaßiger gestalten sollen. Jüngst stellte Microsoft seinen neuen Internet Explorer 8 in der Beta-Version vor. Seit gestern ist es semi-offiziell. Google möchte heute der Welt einen eigenen und etwas anderen Browser bescheren: Google Chrome (" A fresh take on the browser ", 1. Sep. 2008). Man scheint es sehr ernst zu nehmen. Ein unterhaltsames Comic soll den Anwender bzw. die Anwenderin vom Vorteil und Nutzen des aufpolierten Browser-Modells überzeugen: " Google Chrome: Behind the Open Source Browser Project ". Technisch hat man das Browser-Modell auf neue Beine gestellt. Mehrere Webseiten lassen sich, wie gehabt, über Tabs gleichzeitig öffnen und organisieren. Doch nun stellt jeder Tab einen eigenen Prozess dar, was echte Para

Zu den Ursprüngen: Das Internet

Ich weiß nicht, ob Sie auch zu den Freaks gehören, die gerne technische Standards lesen und sich immer mal wieder auf den RFC-Seiten der IETF , der Internet Engineering Task Force, wiederfinden. Manche mögen die technischen Sachverhalte, die in den "Request for Comments" (RFCs) dargelegt sind, für langweilig halten. Ich finde sie spannend. Man lernt eine Menge über das Internet. Wie es funktioniert, welche Ideen es angeleitet und getrieben haben und welche Konzepte und Ideen den einzelnen Netzschichten und Protokollen zugrunde liegen. Eine Unmenge an interessanten Informationen findet sich da, frei verfügbar und für jeden zugreifbar. Ein Wissen, das nicht unbedingt in den Lehrbüchern zu den "Rechnernetzen" oder "Web-Technologien" zu finden ist. Via Ehrensenf ( Sendung vom 26. August ) bin ich auf eine wunderbare Webseite der National Science Foundation (NSF) gestoßen. Auf der Seite " NSF and the Birth of the Internet " setzen sich die Amerikane

Multi-Stage Programming

Neben den Programmiersprachen gibt es eine Vielzahl von verschiedenen Techniken und Ansätzen des Gebrauchs, des Einsatzes, der Verwendung und der Erweiterung von Programmiersprachen. Alle diese Techniken bzw. Ansätze enden auf "Programming": Generative Programming, Aspect-Oriented Programming, Object-Oriented Programming, Context-Oriented Programming, Subject-Oriented Programming -- es gibt unzählige solcher Bezeichnungen. Hinter den meisten dieser Namen stecken interessante Ansätze, die auf nur wenigen Konzepten oder Ideen beruhen. In den vergangenen Tagen habe ich mich mit "Multi-Stage Programming" (MSP) beschäftigt. Dieser Blog-Beitrag ist eine Aufbereitung des Papers " A Gentle Introduction to Multi-Stage Programming " von Walid Taha . Das Paper ist auf seiner Publikationsseite zu finden. Alle Zitate und Code-Beispiele stammen aus dem Paper. Ich bitte um Nachsicht und um Korrekturen, sollten sich in der folgenden Darstellung des Papers von Taha Fehler

Der Computer als "verlängertes" Hirn

Schließen Sie die Augen! Konzentrieren Sie sich! Gehen Sie in Gedanken durch das Zimmer oder den Raum, in dem Sie sich gerade befinden. Beginnen Sie, vor Ihrem geistigen Auge die Möbel umzuräumen. Wie wäre es mit ein paar Pflanzen in der Ecke? Bekommen sie dort genug Licht? Lassen Sie die Morgensonne durch das Fenster scheinen. Dann die Mittags- und zu guter letzt die Abendsonne. Gefällt Ihnen, wie sich die Lichtverhältnisse ändern? Geht es der Pflanze an ihrem Standort gut? Streichen Sie die Tapeten in Gedanken einmal rot, blau oder gelb. Wie wäre es mit grün? Mehr hellgrün oder dunkelgrün? Ihnen geht es sicher wie mir. Ich bin mit meiner Vorstellungskraft überfordert. Ich kann mein Arbeitszimmer gedanklich zwar irgendwie einfärben, aber willentlich klare Farben aussuchen und diese Szenerie vor dem geistigen Auge so zu betrachten als sei es real -- unmöglich. Wie ich mir Lichteindrücke vorstellen soll, ich habe keine Ahnung. Prof. Dr. Temple Grandin kann sowas. Sie beschreibt es in i

Im Kampf gegen Monstersysteme

Im Urlaub war es wieder soweit: Das, was wir Informatiker den Menschen um uns herum so zumuten, das machte mir ein fürchterlich schlechtes Gewissen. Was war geschehen? Eigentlich nichts spektakuläres. Die Vermieterin unserer Ferienwohnung brauchte Hilfe bei der Einrichtung ihres neu erworbenen Laptops. In drei Stunden war der Rechner mit Windows Vista hergerichtet, die neuesten Updates installiert, Flash Player, Adobe Reader, OpenOffice nachgerüstet -- das Übliche halt. Schon dabei wurde mir ganz mulmig. Und dann, am nächsten Abend, begann ich der guten Frau eine Einführung in Vista zu geben. "Hier klicken, da klicken, gucken Sie mal, alles ganz einfach, dann hier klicken, da klicken. Huch, die Firewall meldet sich. Wissen Sie, was das ist? Nein? Egal, hier klicken, da klicken, dann geht's weiter. Lassen sie sich von sowas nicht irritieren." Was fühlte ich mich elend. "Wenn Sie Ihre Kochrezepte anschauen wollen, hier klicken, da klicken, sehen Sie, OpenOffice startet

Typen in Wandlung: Das Paar, die Liste und der Stack

Ich habe meinen lieben HardCore-Informatik-Leser(inne)n schon lange keinen Programmcode mehr als Denkspur hinterlassen. Heute ist es mal wieder soweit. Zwei Punkte haben mich umgetrieben: (1) Die Fähigkeit von Objekten, ihren Typ zu verändern. (2) Der Vergleich von Liste und Stack. Es wird ein langes Posting werden, aber vielleicht haben Sie Lust auf diese kleine Denk-Reise. Ein wenig setze ich voraus, dass Sie sich mit Scheme/Lisp und dort mit den Datentypen der Liste und des Paars auskennen. Und was ein Stack ist, wissen Sie als Informatiker sowieso. Einleitung Ein einfaches Beispiel mag die Idee von einem Objekt veranschaulichen, das seinen Typ ändern kann: Eine Ellipse ist beispielsweise über die Größe der Hauptachse und die Größe der Nebenachse eindeutig definiert. Sind Haupt- und Nebenachse gleich groß, dann haben wir einen Kreis, und die Unterscheidung in Haupt- und Nebenachse wird hinfällig; es genügt die Angabe eines Wertes, des Radius'. So kann ein sich veränderndes Ellip

17 Fragen

Marc Scheloske, der Betreiber des Wissenschafts-Cafes, hat mit mir ein Interview geführt. Marc macht diese Interviews seit einiger Zeit mit den unterschiedlichsten Bloggern und stellt seinen Interview-Partnern 17 Fragen. Viel Spaß beim Lesen! Und halten Sie sich mal eine Weile im Wissenschafts-Cafe auf, ich könnte mir vorstellen, dass es Ihnen dort gefällt!

Komponenten-Orientierung: Service vs. Funktionsbaustein

Wenn man sich mit Komponenten-Orientierung befasst, wird man feststellen, dass es zwei "Schulen" gibt, die etwas unterschiedliche Sichten auf den Komponenten-Begriff haben. Die eine Denkschule hat die Enterprise Applications vor Augen. Bei den Unternehmensanwendungen stehen Themen wie Persistenz, Transaktionen, Verteilung, Webservices etc. im Vordergrund. Im Systems Engieering dominieren hingegen Gesichtspunkte der Modularisierung und Komposition. Für einen Systems Engieer kann jede Software-Komponente grundsätzlich auch durch einen funktionsgleichen Baustein aus Hardware ersetzt werden -- und umgekehrt. Für Enterprise-Entwickler wird eine Komponente als Software-Einheit gesehen, die vielmehr einen Service realisiert, der zur Erfüllung definierter Aufgaben herangezogen werden kann. Der Systems Engineer baut Systeme, die er aus Komponenten und Subsystemen zusammensetzt. Der Enterprise-Entwickler baut Netze von Mehrwertdiensten, die aus der Kollaboration (möglicherweise transpa

Alles ist ein Eingabegerät

Ich weiß, ich bin spät dran, wenn schon Spiegel-Online darüber berichtet in " Massenmordversuch an der Maus " (Christian Stöcker, 18. Juni 2008). Aber diese Idee ist so schön und abgefahren, das muss man sich ansehen -- ich habe ein Faible für solche Ideen (siehe auch " Sichtweisen in 3D: Balance halten "). Genug der Worte. Nehmen Sie eine Flasche, einen Tacker, einen Stift, Ihren Fingerverband, was auch immer ... oder eine Maus, und legen Sie los: Ärgern Sie sich auch darüber, weder selbst darauf gekommen zu sein, noch -- falls Sie die Idee hatten -- es umgesetzt zu haben? Was könnte man damit alles machen? Haben Sie Ideen?

Von der falschen Rede

Eine kleine Anekdote: In der Vorlesung zu den Grundlagen der Informatik sprach ich heute von Rekursion und Iteration. Ich erklärte, was Rekursion ist. Die Studierenden merkten auf und unterbrachen mich: "Sie meinen Rekursion!". "Wie bitte? Habe ich etwas anderes gesagt?" "Ja, sie sagten Iteration." "Oh sorry, ich meinte Rekursion." Da hatte mir mein Hirn einen Streich gespielt, der mir vollkommen unbemerkt blieb. Ich glaubte mich etwas sagen zu hören, was ich nicht gesagt hatte. Kennen Sie das? Haben Sie bestimmt auch schon einmal erlebt. Also startete ich einen neuen Versuch "Rekursion ist, wenn sich die Funktion selber wieder aufruft." Und schoss die Frage hinterher: "Habe ich Rekursion gesagt?" "Ja", lautete die Antwort unisono. Während ich weiter sprach, blieben meine Gedanken an der letzten Frage hängen: Irgendwie war die Frage dumm gewesen. Stellen Sie sich einmal vor, das wäre nur mein Gedanke, meine Sprachabs

Tipps zur Teamarbeit

Ein (Projekt-)Team ist ein Gruppe von Menschen, an die eine Herausforderung oder eine Aufgabe herangetragen wird und von der man die zielgerichtete Bewältigung der Herausforderung erwartet. Oft geschieht das unter Randbedingung wie begrenzten Geldmitteln und Zeitbeschränkungen. Die Teammitglieder sind außerdem gegenseitig voneinander abhängig, um die Herausforderung bewältigen zu können. Arbeitsteilung und Spezialisierung sind die Wunderwaffen der Teamarbeit. Ein gutes Team bewältigt eine Herausforderung schneller als ein schlechtes Team. Ein gutes Team teilt die Arbeit besser auf und bildet bessere Experten aus als ein schlechtes Team. Ein gutes Team schafft schneller oder mehr. Nachfolgend ein paar Tipps, die Ihnen helfen sollen, gute und effektive Teamarbeit zu leisten. Definieren Sie eine Teamleitung. Machen Sie eine Person zu Ihrer Teamleitung und übertragen Sie ihr die Verantwortung zur Koordination des Teams. Im Zweifel hat die Teamleitung das Recht Entscheidungen zu treffen, d

Informatik als angewandte Philosophie

Was war zuerst: Die Henne oder das Ei? Oder setzen wir noch früher an: Was bitte ist ein Ei, was genau ein Huhn? Informatiker setzen sich auf ihre eigene Art und Weise mit solchen Fragen auseinander -- eigentlich sogar tagtäglich. Zwar sprechen sie selten von Hühnern oder Eiern, aber sie haben Antworten zu bieten. Wollen Sie auch erfahren, was Informatiker so gedankenverloren in den Kaffee schauen lässt und warum Milchtüten eine echte Herausforderung sind? Dann möchte ich Sie herzlich einladen zu meinem Vortrag "Informatik als Angewandte Philosophie: Gedanken über Bits und Bytes" am Dienstag, 3. Juni 2008, um 17:30 Uhr bis 19 Uhr. Der Vortrag findet statt im Rahmen der Ringvorlesung "Mensch-Umwelt-Zukunft" an der Hochschule Heilbronn (Max-Planck-Str. 39) im Raum E010. Ich freue mich auf Ihren Besuch. Und wenn Sie Wünsche, Anregungen, Gedanken haben, zu denen Sie gerne etwas hören möchten, dann lassen Sie es mich wissen.

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 compilati