Unter dem Titel „Why Coffee is good for Developers“ hielt Moritz Grauel einen Talk über CoffeeScript. Er brachte den Vortrag locker bis lustig rüber und scheint beispielsweise ein Fan von oatmeal.com zu sein.

CoffeeScript will „Javascript minus (einigen) WTFs“ sein, von denen Moritz einige präsentierte (via wtfjs.com). Genannt wurde z.B.

  • Operator „==“ mit type coercion, „===“ ohne (anscheinend haben sich bei der EcmaStandardisierung die Microsoft Jungs (und Mädels) gegen die Netscape Jungs (und Mädels) durchgesetzt)
  • Zahlen sind generell floats (einfache Genauigkeit)
  • automatische Typkonvertierung insbesondere Strings und Zahlen sind nicht immer Sinnvoll
  • der inkonsequente Array-Konstruktor (new Array(5) erstellt ein 5-elementiges Array, new Array(4,5) erstellt ein Array [4,5]), ich würde für gleichzeitige Deklaration

Als Metapher sehr schön ein Foto mit den Büchern „Javascript Definitive Guide“ und „Javascript the good parts“ nebeneinander – ersteres 5x so dick wie zweiteres.

Allerdings würde ich sagen, was auf der Folie for „Javascript sucks“ stand: learn your tools. Nur weil Javascript im Namen „java“ hat und die Syntax wie Java/C/C# you-name-it aussieht, ist sie doch vom Konzept her um einiges entfernt. Siehe auch JavaScriptRocks . Bei dieser Gelegenheit kann ich auch die Hintergrundartikel zum Thema „Closures in Javascript“ empfehlen, weil er auf das Innenleben von JS eingeht.

Wie auch immer, Moritz kündigt Coffeescript als „Javascript without the fail“ an. Coffeescript kompiliert zu lesbarem Javascript (es gibt also eine einfache Exit-Strategie, falls man Coffeescript wieder loswerden will: einfach javascript generieren und damit weiterarbeiten). Der Nachteil ist dabei, dass Debuging etc. nur anhand des generierten JS Codes geht.

Die CS Syntax hat significant whitespace, d.h. geschweifte Klammern und Semikolons fallen weg, runde Klammern bei Funktionsaufrufen sind optional, das function keyword wird durch „->“ ersetzt. Ein schöner Vergleich einer jquery-Konstruktes in JS und in CoffeeScript. Ich finde es zumindest gewöhnungsbedürftig, insbesondere wenn die runden Klammern bei Funktionsaufruf wegfallen, dann aber die Argumente der anonymen Funktion in Klammern stehen.

Für weitere Features siehe Vortrag. Bei meiner Recherche ist mir aufgefallen, dass es seit Javascript 1.7 auch list comprehension für Arrays gibt, lt. Wikipedia dies aber nur durch Mozilla unterstützt wird.

Insgesamt schreibe ich wahrscheinlich (noch) nicht genug JS, um von CS zu profitieren.

Interessant fand ich, dass Moritz weder PPT noch Keynote sondern ein HTML/CSS/JS basiertes Präsentationsprogramm namens impress.js benutzt, bzw. seines eigenen CS port. Er hat dazu ein paar Anmerkungen gemacht. Die Animationen fand ich beeindruckend. In der Präsentation sah das flüssig aus. Auf meinem Rechner ruckelt es allerdings. Er gab gleich den Hinweis, dass die Präsentation vollständig nur mit einem aktuellen Webkit-Browser funktioniert, aber auch mit anderen Browser anzusehen sei. Bei Chrome 17 meinte die Präsi, dass nicht alle Funktionen unterstützt werden, nach Upgrade auf Chrome 18 kam die Meldung nicht.

Alles in allem ein interessanter Vortrag.

Update: Moritz verweist auf/empfiehlt einen Google Tech Talk Javascript: The Good Parts von Douglas Crockford.