venerdì 22 novembre 2013

Linguaggi che compilano in JavaScript: Dart, Ceylon, Kotlin, TypeScript ed Haxe

Probabilmente ispirati dal successo di CoffeeScript, recentemente sono stati creati dei nuovi linguaggi che compilano verso JavaScript. Questi sono Dart, presentato da poco da Google, Ceylon sviluppato da Red Hat, Kotlin di JetBrains (la società che creato IntelliJ IDEA), TypeScript di Microsoft ed Haxe.

Dart

Le caratteristiche principali di Dart sono il fatto di poter fare programmazione ad oggetti, la tipizzazione dinamica, cioè non c'è bisogno di specificare il tipo di una variabile, ed il package manager denominato "pub" che permette di gestire le dipendenze di un progetto in modo molto comodo.

Un enorme difetto di Dart è che la quantità di JavaScript che viene prodotta è sproporzionata rispetto al codice di partenza. Una decina di righe di Dart si trasformano in 40 Kilobyte di codice JavaScript, che è un po' troppo.

Per una introduzione a Dart, guardare qui:
http://www.engeene.it/introduzione-a-dart-prima-parte/

C'è anche il video di presentazione alla Google Developers Conference di Milano:

Ceylon

Ceylon è un linguaggio sviluppato da Red Hat che è anch'esso ad oggetti e modulare. Da Ceylon è possibile utilizzare sia le librerie di Java che di JavaScript. Supporta gli import con i numeri di versione, il polimorfismo degli operatori e le funzioni di ordine superiore.
Il confronto tra Dart è Ceylon pè riassunto qui da Gavin King, colui che ha creato Ceylon:
«Hi, well, there's lots of differences, but I suppose the broad differences are:
- Ceylon compiles to the JVM and JS virtual machines, Dart has its own virtual machine, and also compiles to JS.
- Ceylon has a very powerful, very strict static type system, Dart is more of a halfway point between a dynamic language and a language like Java.
If Dart starts to take off, I think that we'll certainly build an additional compiler backend for the Dart VM, including interop with the Dart language. It was nice to see one of the developers of Dart already reach out to me on the reddit thread.»
http://ceylon-lang.org/blog/2013/11/12/ceylon-1/#comment-1124817759

Per una introduzione a Ceylon:


Kotlin

A differenza degli altri due linguaggi, Kotlin ha dei tipi statici, cioè il tipo di una variabile deve essere specificato dal programmatore e noto al tempo della compilazione.
Anche da Kotlin è possibile usare classi Java e ci sono funzioni di ordine superiore e funzioni anonime.
Per una introduzione a Kotlin:



TypeScript

Anche TypeScript è un linguaggio open source che compila in JavaScript. Ha il grande vantaggio di essere una estensione di JavaScript e quindi automaticamente qualsiasi codice JavaScript può essere aggiunto a sorgente TypeScript e possono essere utilizzati tutti i framework JavaScript già esistenti. Esiste anche un plugin per Eclipse.
Per una introduzione:

Haxe

Haxe è un linguaggio che può essere compilato in tantissimi linguaggi di programmazione, tra cui JavaScript, Java, C#, C++ e PHP.
Per una introduzione ad Haxe:


Altri linguaggi
Ai linguaggi citati sopra si aggiungono:

Per approfindire

L'elenco completo dei compilatori che producono codice sorgente in un altro linguaggio è qui:

7 commenti:

  1. Il vantaggio principale di TypeScript è che è un superset di Javascript, caratteristica che gli altri linguaggi non hanno.

    RispondiElimina
  2. Manca coffeescript che, probabilmente, è anche il più diffuso

    RispondiElimina
    Risposte
    1. Hai ragione, ho inserito il riferimento a CoffeeScript proprio all'inizio del post.

      Elimina