Strumenti fantastici per la compilazione in JavaScript

Ogni programmatore ha una o due lingue preferite. Gli amanti di JavaScript sono i più fortunati in questi giorni perché la loro lingua sta prendendo il sopravvento su Internet e Internet sta conquistando il mondo. Coloro i cui cuori risiedono altrove nel mondo del linguaggio di programmazione, tuttavia, sono bloccati. Possono rimanere in disparte e maledire l'implacabile colosso di HTML, CSS, JavaScript e Node.js, oppure possono trovare un modo per amarlo.

Fortunatamente, esiste un terzo modo che ti consente di goderti i piaceri della tua lingua preferita mentre distribuisci il tuo codice nel mondo in continua espansione di JavaScript: converti semplicemente il tuo codice, che può essere sorprendentemente facile. Le prestazioni possono risentirne un po ', ma spesso molto meno di quanto potresti immaginare. Quindi puoi inviare il tuo codice ai browser e smettere di provare a convincere le persone a installare file eseguibili.

Il risoluto si sentirà come se questa fosse un'abietta capitolazione, un'amara ritirata dai principi che ti legano alla tua sintassi preferita. Alcuni potrebbero persino pensare che sia un tradimento, un atto così traditore che devi nasconderlo ai tuoi colleghi. Altri suggeriranno, abbastanza correttamente, che non è così semplice. Ottenere il codice da eseguire è una cosa. Incollare le parti insieme e creare un'interfaccia utente è molto lavoro aggiuntivo.

Sei libero di crogiolarti nella tua pietà, ma ci sono molte razionalizzazioni che rendono l'idea più appetibile. Innanzitutto, i motori JavaScript funzionano molto, molto più velocemente di quanto facessero in passato. In secondo luogo, creare un'interfaccia utente Web non è mai stato così facile, grazie ai framework e all'ampio talento di progettazione HTML / CSS. Terzo, JavaScript sta diventando un po 'una lingua franca. Se puoi convertire tutti questi linguaggi in JavaScript e l'elenco è sorprendentemente lungo, puoi anche collegarli tutti insieme.

Qui diamo uno sguardo alla ricchezza di piccoli linguaggi che consentono ad alcuni dei linguaggi di programmazione più popolari di compilarsi in JavaScript. Un prossimo articolo esplorerà come stanno rinascendo le lingue in dissolvenza portandole nel browser. Non c'è motivo di essere impantanati nella pietà o nell'odio. Queste tecniche ti consentono di goderti la tua lingua preferita ed eseguire ovunque JavaScript.

Rubino

Ci sono una serie di opzioni che ti permettono di pensare come un programmatore Ruby mentre corri in un ambiente JavaScript.

RubyJS, ad esempio, è una libreria JavaScript che aggiunge molte delle primitive di base in un oggetto JavaScript. Ciò che scrivi è tecnicamente JavaScript, ma lo speciale oggetto Ruby si comporta come il codice Ruby per la maggior parte del tempo. Stringhe, numeri, iteratori ed enumeratori ti stanno aspettando.

Se scrivere JavaScript che funziona come Ruby non è sufficiente, Opal tradurrà il codice sorgente di Ruby direttamente in JavaScript. Spesso si comporta come una VM Ruby, ma a volte no. Le stringhe mutabili di Ruby, ad esempio, vengono convertite direttamente in quelle immutabili di JavaScript, il che non dovrebbe essere un problema per alcune applicazioni ma potrebbe far impazzire alcune persone. Altri piccoli effetti come questo possono portare a brutte sorprese nei casi limite.

Per coloro che vogliono di più, HotRuby offre una soluzione più completa, una macchina virtuale JavaScript che agita i codici operativi Ruby. La base del codice sta diventando un po 'vecchia, ma offre ai veri credenti un'altra opzione.

Giava

È difficile sapere cosa ha ispirato Google a creare Google Web Toolkit, un preprocessore che converte Java in JavaScript. Forse il manager amava Java e non voleva che morisse. Forse avevano geni Java in più in giro, in attesa di eseguire il Web.

Qualunque sia la ragione, lo hanno fatto e spesso lo usano per i loro prodotti Web più sofisticati. È un grande regalo per chiunque abbia un mucchio di Java e non abbia tempo per riscriverlo. Le viscere del linguaggio ci sono tutte, ma mancano alcune delle classi meno comuni come BigInteger; Detto questo, di solito puoi trovare un modo per aggiungerli. Il framework dell'interfaccia utente è in gran parte preso in prestito da Swing, quindi gli sviluppatori di Swing si sentiranno come a casa. Altri non lo troveranno troppo difficile da imparare.

Google Web Toolkit è lungi dall'essere l'unica scelta per i programmatori Java. Java2Script è completamente integrato con Eclipse e GrooScript converte il cugino baciante di Java, Groovy.

Esistono diversi strumenti che eseguono il codice byte JVM con JavaScript, un'idea intelligente che consente di distribuire file JAR anche se non si dispone dell'origine Java. Alcuni, come Doppio e Node-jvm, sono interpreti; altri, come TeaVM o Dragome, convertiranno il codice byte in JavaScript in modo permanente.

Erlang

Gli amanti di Erlang hanno diverse opzioni. Una soluzione è utilizzare Erjang, uno strumento che esegue Erlang sulla JVM, che viene quindi utilizzato per eseguire il codice byte Java con una delle opzioni Java sopra. Sembra semplice, vero?

Shen è un compilatore che converte Erlang e i suoi cugini, come Elixir, Joxa e Lol, in JavaScript. Se vuoi eseguire questo codice in Node.js, c'è anche un pacchetto erlang-shen-js.

Una terza opzione è usare LuvvieScript, un sottoinsieme rigoroso di Erlang a cui sono stati dati degli hook per accedere a tutti gli oggetti DOM. Usi la struttura Erlang che ami e traduce le tue istruzioni in qualcosa che il DOM comprende. Non è esattamente la stessa cosa, ma andrà bene.

C

Molte persone sono sorprese di scoprire di poter utilizzare linguaggi simili a C o C con JavaScript. Certo, la sintassi JavaScript di base è abbastanza simile a C, ma le viscere sono diverse. C ti consente di toccare direttamente la memoria, ma JavaScript nasconde tutti questi dettagli. C ti consente di manipolare i puntatori, ma JavaScript ti protegge dal loro potere pericoloso. Eppure queste differenze sono superabili con un po 'di hacking intelligente.

Potrebbe non essere giusto chiamare LLJS una versione di C, ma questa versione di JavaScript offre variabili tipizzate staticamente e il controllo programmatore della memoria - beh, non la memoria in sé, ma una versione JavaScript di essa. La documentazione ama promettere un'esecuzione senza pause perché non c'è garbage collection.

Se vuoi lavorare con lo standard C, Clue convertirà C in JavaScript e una varietà di altri linguaggi di scripting come Perl o Lua. Gli sviluppatori affermano addirittura che parte del codice verrà effettivamente eseguito più velocemente nel JIT per questi linguaggi dinamici rispetto a quando viene compilato in binari nativi. Il segreto è che i JIT possono notare cose durante il runtime che i compilatori di base non potevano perché possono guardare il programma in esecuzione.

Il nome più grande potrebbe essere Emscripten, una versione modificata di LLVM che viene ricablata per sputare le istruzioni per asm.js invece del codice macchina. Il segreto è che asm.js è un sottoinsieme ristretto di JavaScript progettato per essere facilmente ottimizzato dai più recenti motori JavaScript, come SpiderMonkey. I risultati sono impressionanti e alcune delle migliori prove provengono dalla comunità di gioco. Entrambi i motori Unity e Unreal possono eseguire giochi in browser compatibili con HTML5.

Pitone

Python è un altro popolare linguaggio dinamico che si associa facilmente a JavaScript. Molte delle caratteristiche interne sono simili e alcune delle maggiori differenze sono nella sintassi.

Opzioni più semplici, come RapydScript e PyvaScript, offrono semplicemente una sintassi simile a Python che viene tradotta abbastanza direttamente in JavaScript. Faranno alcune trasformazioni, come l'inserimento di parentesi graffe per abbinare i blocchi con rientri di spazi bianchi, e voilà: viene eseguito in un browser. Questi sono più per i programmatori che pensano in JavaScript ma vogliono digitare in modo Python, come dicono gli amanti del linguaggio.

Versioni più complesse, come PYXC-PJ e Pyjs, convertiranno attivamente Python in JavaScript, spesso creando qualcosa di abbastanza leggibile, o almeno leggibile come il codice originale. Pyjs viene fornito con un toolkit widget che lo rende abbastanza simile a Google Web Toolkit.

Il più divertente, tuttavia, potrebbe essere PyPy, un'incredibile impresa di ingegneria del software con proporzioni quasi Rube Goldbergiane. Python entra e gira su un interprete Python scritto in RPython, un sottoinsieme di Python progettato per essere facilmente compilato. Questo RPython viene quindi compilato in qualcosa che assomiglia a C che può essere inserito in Emscripten. Gli sviluppatori affermano di poter mostrare alcuni benchmark Python in esecuzione più velocemente in SpiderMonkey rispetto a CPython.

Se possono farlo con Python e C, puoi farlo anche tu.

JavaScript, in un altro costume

Ovviamente, anche quando si tratta di JavaScript, hai delle alternative. Dopo tutto, ad alcune persone piacciono i segni di punteggiatura e ad altri no. CoffeeScript è per le persone che non lo fanno. Se hai bisogno di programmare in JavaScript ma risentiti di digitare così tanti punti e virgola o parentesi graffe, allora CoffeeScript è per te.

Il coraggio di CoffeeScript è lo stesso di JavaScript perché non è davvero un linguaggio. È un preprocessore che aggiunge i punti e virgola e le parentesi graffe, quindi non è necessario. Digiti il ​​tuo programma con la semplicità simile a Ruby e CoffeeScript lo converte in una versione ridotta di JavaScript.

Non è la stessa cosa della programmazione in un altro linguaggio perché le variabili e le funzioni che definisci continueranno a comportarsi come variabili e funzioni JavaScript. Le variabili saranno ancora digitate dinamicamente e tutti i piccoli inconvenienti saranno ancora lì. La matematica e il comportamento scoppiettante e sovraccarico dell'operatore plus ti logoreranno ancora, ma risparmierai un po 'di tempo a digitare.

Il mondo di CoffeeScript è notevolmente diversificato. Una volta che il mondo si è reso conto che poteva preelaborare il suo codice, molti sono entrati nel gioco. Iced CoffeeScript, ad esempio, è come il normale CoffeeScript ma con alcuni costrutti extra che rendono le chiamate asincrone un po 'più pulite e semplici da digitare e leggere. Potrebbero esserci almeno una dozzina di cugini che si offrono di semplificare il tuo particolare stile di programmazione.

Articoli Correlati

  • 7 motivi per cui i framework sono i nuovi linguaggi di programmazione
  • 7 lezioni senza tempo di programmazione 'graybeards'
  • 9 lingue all'avanguardia che vale la pena imparare ora
  • Download: guida alla sopravvivenza aziendale per programmatori professionisti
  • Scarica: 2015 Technology of the Year Awards
  • Download: 29 suggerimenti per avere successo come sviluppatore indipendente
  • Recensione: i quattro grandi IDE Java a confronto
  • Download: pratico con 10 editor JavaScript e IDE
  • 10 battaglie che infuriano per i cuori e le menti degli sviluppatori
  • Attacco ai linguaggi di programmazione di una lettera
  • PHP vs Node.js: una battaglia epica per la condivisione della mente degli sviluppatori
  • 15 tecnologie che cambiano il modo in cui lavorano gli sviluppatori
  • 12 previsioni per il futuro della programmazione
  • 15 tendenze di programmazione calde e 15 fredde
  • Sviluppo: saluti a 19 generazioni di programmatori di computer
  • 10 funzionalità che vogliamo vedere in HTML6