af83

Javascript Nowhere

This only thing that matches the Run Javascript Everywhere frenzy is the Run Javascript Nowhere response, with the release of Dart YAL/CJS (Yet another language that compiles to Javascript) it is time to have a quick rambling, unstructured panorama of what is happening in the arena.

dart

So first of all Dart, because it is news, done by Google and such! Dart is a class-based, single-inheritance, pure object-oriented programming language. Dart is optionally typed and supports reified generics and interfaces. Dart programs may be statically checked. The static checker will report some violations of the type rules, but such violations do not abort compilation or preclude execution. (see : http://www.dartlang.org/docs/spec/dartLangSpec.pdf). It allows you with some hacking to run Dart scripts directly in the browser. It is not like coffee script a cleaner version of the language but adds its own artifacts. From very preliminary examination, looks much, much uglier than CoffeeScript. http://www.dartlang.org

CATERWAUL

Next my personal favorite CATERWAUL! http://caterwauljs.org/ the Javascript to Javascript Compiler by Spencer Tipping. So this is not really about not writing Javascript in Javascript … but allowing you to modify the semantics of the language ! From the site: "Caterwaul is a Javascript recompiler that lets you change the semantics of functions. To do this it implements a modular decompiler, macroexpander, and compiler that allow you to manipulate code in a first-class way. It also comes with several macro (Lisp-style, not C-style) libraries to make Javascript more fun (though you can easily disable them and/or write your own)." You can find the source on https://github.com/spencertipping/caterwaul you can find many other caterwaul projects on this very prolific github account. And most importantly Figment!! the coolest of All.

https://github.com/spencertipping/figment you MUST visit this. I will cite the README in its entirety.

    Figment - a dynamically typed programming language with no defined semantics

    Figment is a programming language unburdened with preconceived notions about
    purpose and operational semantics. Its purpose is to be anything and everything 
    to anyone and everyone who uses it in any capacity. The core design principles are:

    1. Expressiveness - because programmers never write clever, indecipherable code
    2. Terseness - because programmers never write clever, indecipherable code
    3. Ergonomics over aesthetics - easier to write, harder to read
    4. Customizability - every construct can be reinterpreted
    5. Perl - Perl is awesome, so use (steal) features from it

    I'm not even going to try to describe how to use this language.

M. Spencer Tipping you are cool as hell!

tame.js

Next tame.js got recently some coverage. Basically this one does not rewrite the whole shebang, just adds an aspect to javascript. It allows you to write a nice clean syntax for asynchronous calls, that look like procedural programming (with defer() and wait()). Very close to the C# syntax of the same effect. You basically write your JS code normally and add the .tjs extension, you can use it normally in node like this: require ("mylib.tjs"); http://tamejs.org/

CoffeeScript

CoffeeScript needs no introduction (being default in rails 3.1 and all). Still, it is the current frontrunner in the "I want to execute javascript but do not want to see the ugliness approach". You can look at it here: http://jashkenas.github.com/coffee-script/ . Soon to be supported inline in browsers so debugging client side code won't be horrible (you can already use it with https://github.com/jashkenas/coffee-script/tree/master/extras).

EspressoScript

EspressoScript would have been cool http://www.pmade.com/static/presentations/espresso.pdf (Espresso Script Because CoffeeScript is Too Verbose) EspressoScript compiles down to CoffeeScript.. this is a joke, but I am not sure for long… will there be for example a tamejs to coffescript compiler? or the other way around? sounds plausible :)

Two last mentions : OPA, from the French MLstate is written in OCaml and compiles programs written in their Language into client side Javascript. I can't say I am sold on this. But have a look http://opalang.org

Dart comes from Google, and they made the big daddy of all stuff that compiles down to JS http://code.google.com/webtoolkit/ GWT. Never wanted to touch this one. But also remember they did another Javascript to Javascript compiler… http://code.google.com/p/google-caja/ Caja (A source-to-source translator for securing Javascript-based web content which basically allows you to sandbbox in browser javascript).

And if you want a list of several dozens of other stuff that compiles to Javascript (Pyjamas from Python HotRuby ..the Closure Compiler.. ) look no further then the CoffeScript Wiki https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS

blog comments powered by Disqus