Des outils sympas pour la compilation en JavaScript

Chaque programmeur a une ou deux langues préférées. Les amateurs de JavaScript sont les plus chanceux de nos jours car leur langage prend le dessus sur Internet et Internet envahit le monde. Cependant, ceux dont le cœur réside ailleurs dans le monde des langages de programmation sont coincés. Ils peuvent soit rester à l'écart et maudire le poids lourd implacable du HTML, CSS, JavaScript et Node.js, soit trouver un moyen de l'aimer.

Heureusement, il existe un troisième moyen qui vous permet de profiter des plaisirs de votre langage préféré tout en déployant votre code dans le monde en constante expansion de JavaScript: convertissez simplement votre code, ce qui peut être étonnamment facile. Les performances peuvent souffrir un peu, mais souvent beaucoup moins que vous ne l'imaginez. Ensuite, vous pouvez envoyer votre code aux navigateurs et arrêter d'essayer d'amener les gens à installer des fichiers exécutables.

Les inébranlables auront l'impression que c'est une capitulation abjecte, un retrait amer des principes qui vous lient à votre syntaxe préférée. Certains peuvent même penser que c'est un peu une trahison, un acte si traître que vous devez le cacher à vos collègues. D'autres suggéreront, à juste titre, que ce n'est pas si simple. Faire exécuter le code est une chose. Coller les pièces ensemble et créer une interface utilisateur représente beaucoup de travail supplémentaire.

Vous êtes invités à vous complaire dans votre pitié, mais il existe de nombreuses rationalisations qui rendent l'idée plus acceptable. Premièrement, les moteurs JavaScript fonctionnent beaucoup, beaucoup plus rapidement qu'ils ne le faisaient par le passé. Deuxièmement, créer une interface utilisateur Web n'a jamais été aussi simple, grâce aux frameworks et aux nombreux talents de conception HTML / CSS. Troisièmement, JavaScript devient un peu une lingua franca. Si vous pouvez convertir tous ces langages en JavaScript et que la liste est étonnamment longue, vous pouvez également les lier tous ensemble.

Nous examinons ici la richesse des petits langages qui permettent à certains des langages de programmation les plus populaires de se compiler en JavaScript. Un prochain article explorera comment les langues qui s'estompent renaissent en les apportant au navigateur. Il n'y a aucune raison de s'enliser dans la pitié ou la haine. Ces techniques vous permettent de profiter de votre langage préféré et d'exécuter partout où JavaScript le fait.

Rubis

Il existe un certain nombre d'options qui vous permettent de penser comme un programmeur Ruby lors de l'exécution dans un environnement JavaScript.

RubyJS, par exemple, est une bibliothèque JavaScript qui ajoute de nombreuses primitives de base dans un objet JavaScript. Ce que vous écrivez est techniquement du JavaScript, mais l'objet Ruby spécial se comporte comme du code Ruby la plupart du temps. Les chaînes, les nombres, les itérateurs et les énumérateurs vous attendent.

Si l'écriture de JavaScript qui fonctionne comme Ruby ne suffit pas, Opal traduira le code source de Ruby directement en JavaScript. Il se comporte souvent comme une machine virtuelle Ruby, mais parfois non. Les chaînes mutables de Ruby, par exemple, sont converties directement en chaînes immuables de JavaScript, ce qui ne devrait pas être un problème pour certaines applications mais pourrait rendre certaines personnes folles. D'autres petits effets comme celui-ci peuvent conduire à de grossières surprises dans les cas extrêmes.

Pour ceux qui en veulent plus, HotRuby propose une solution plus complète, une machine virtuelle JavaScript qui utilise des codes d'opération Ruby. La base de code est un peu vieille, mais elle offre aux vrais croyants une autre option.

Java

Il est difficile de savoir ce qui a inspiré Google à créer le Google Web Toolkit, un préprocesseur qui convertit Java en JavaScript. Peut-être que le manager aimait Java et ne voulait pas qu'il meure. Peut-être avaient-ils des génies Java supplémentaires assis, attendant de lancer le Web.

Quelle que soit la raison, ils l'ont fait et ils l'utilisent souvent pour leurs produits Web les plus sophistiqués. C'est un excellent cadeau pour tous ceux qui ont un tas de Java et n'ont pas le temps de le réécrire. Les tripes du langage sont toutes là, mais certaines des classes les moins courantes comme BigInteger sont absentes; Cela dit, vous pouvez généralement trouver un moyen de les ajouter. Le cadre de l'interface utilisateur est largement emprunté à Swing, les développeurs Swing se sentiront donc comme chez eux. D'autres n'auront pas trop de mal à apprendre.

Google Web Toolkit est loin d'être le seul choix pour les programmeurs Java. Java2Script est entièrement intégré à Eclipse et GrooScript convertit Groovy, le cousin embrassant de Java.

Il existe plusieurs outils qui exécutent du code d'octet JVM avec JavaScript, une idée intelligente qui vous permet de déployer des fichiers JAR même si vous n'avez pas la source Java. Certains, comme Doppio et Node-jvm, sont des interprètes; d'autres, comme TeaVM ou Dragome, convertiront définitivement l'octet code en JavaScript.

Erlang

Les amateurs d'Erlang ont plusieurs options. Une solution consiste à utiliser Erjang, un outil qui exécute Erlang sur la JVM, qui est ensuite utilisé pour exécuter du code d'octet Java avec l'une des options Java ci-dessus. Cela semble simple, non?

Shen est un compilateur qui convertit Erlang et ses cousins, comme Elixir, Joxa et Lol, en JavaScript. Si vous souhaitez exécuter ce code dans Node.js, il existe également un package erlang-shen-js.

Une troisième option consiste à utiliser LuvvieScript, un sous-ensemble strict d'Erlang qui a reçu des hooks pour accéder à tous les objets DOM. Vous utilisez la structure Erlang que vous aimez et elle traduit vos instructions en quelque chose que le DOM comprend. Ce n'est pas exactement la même chose, mais ça ira.

C

Beaucoup de gens sont surpris de constater qu'ils peuvent utiliser des langages de type C ou C avec JavaScript. Bien sûr, la syntaxe JavaScript de base est assez similaire à C, mais les tripes sont différentes. C vous permet de toucher directement la mémoire, mais JavaScript cache tous ces détails. C vous permet de manipuler les pointeurs, mais JavaScript vous protège de leur puissance dangereuse. Pourtant, ces différences sont surmontables avec un peu de piratage intelligent.

Il n'est peut-être pas juste d'appeler LLJS une version de C, mais cette version de JavaScript offre des variables typées statiquement et un contrôle programmeur de la mémoire - enfin, pas la mémoire en soi, mais une version JavaScript de celle-ci. La documentation aime promettre une exécution sans pause car il n'y a pas de garbage collection.

Si vous souhaitez travailler avec le C standard, Clue convertira le C en JavaScript et une variété d'autres langages de script comme Perl ou Lua. Les développeurs affirment même que certains codes s'exécuteront plus rapidement dans le JIT pour ces langages dynamiques que lorsqu'ils seront compilés dans des binaires natifs. Le secret est que les JIT peuvent remarquer des choses pendant l'exécution que les compilateurs de base ne peuvent pas parce qu'ils peuvent regarder le programme s'exécuter.

Le plus grand nom peut être Emscripten, une version modifiée de LLVM qui est recâblée pour cracher des instructions pour asm.js au lieu du code machine. Le secret est que asm.js est un sous-ensemble restreint de JavaScript conçu pour être facilement optimisé par les derniers moteurs JavaScript, comme SpiderMonkey. Les résultats sont impressionnants, et certaines des meilleures preuves viennent de la communauté des joueurs. Les moteurs Unity et Unreal peuvent exécuter des jeux dans des navigateurs compatibles HTML5.

Python

Python est un autre langage dynamique populaire qui se mappe facilement à JavaScript. La plupart des fonctionnalités internes sont similaires, et certaines des plus grandes différences résident dans la syntaxe.

Des options plus simples, comme RapydScript et PyvaScript, offrent simplement une syntaxe de type Python qui est traduite assez directement en JavaScript. Ils feront quelques transformations, comme insérer des accolades pour correspondre aux blocs en retrait d'espaces blancs, et voilà - cela s'exécute dans un navigateur. Ce sont davantage pour les programmeurs qui pensent en JavaScript mais qui veulent taper en Python, comme le disent les amateurs de langage.

Des versions plus complexes, comme PYXC-PJ et Pyjs, convertiront activement Python en JavaScript, créant souvent quelque chose de tout à fait lisible - ou du moins aussi lisible que le code d'origine. Pyjs est également livré avec une boîte à outils de widgets, ce qui le rend assez similaire à Google Web Toolkit.

Le plus amusant, cependant, est peut-être PyPy, un exploit incroyable de génie logiciel aux proportions presque Rube Goldbergian. Python entre et s'exécute sur un interpréteur Python écrit en RPython, un sous-ensemble de Python conçu pour être facilement compilé. Ce RPython est ensuite compilé en quelque chose qui ressemble à C qui peut être introduit dans Emscripten. Les développeurs affirment qu'ils peuvent montrer certains benchmarks Python plus rapides dans SpiderMonkey que CPython.

S'ils peuvent le faire avec Python et C, vous le pouvez aussi.

JavaScript, dans un autre costume

Bien sûr, même en ce qui concerne JavaScript, vous avez des alternatives. Après tout, certaines personnes aiment les signes de ponctuation et d'autres non. CoffeeScript est pour les personnes qui ne le font pas. Si vous avez besoin de programmer en JavaScript mais que vous ne parvenez pas à taper autant de points-virgules ou d'accolades, alors CoffeeScript est fait pour vous.

Les tripes de CoffeeScript sont les mêmes que JavaScript car ce n'est pas vraiment un langage. C'est un préprocesseur qui ajoute entre les points-virgules et les accolades, vous n'avez donc pas à le faire. Vous tapez votre programme avec une simplicité semblable à Ruby et CoffeeScript le convertit en une version minifiée de JavaScript.

Ce n'est pas la même chose que la programmation dans un autre langage car les variables et les fonctions que vous définissez se comportent toujours comme des variables et des fonctions JavaScript. Les variables seront toujours typées dynamiquement, et toutes les petites aggravations seront toujours là. Les maths et le comportement surchargé et insipide de l'opérateur plus vous épuiseront toujours, mais vous gagnerez du temps à taper.

Le monde CoffeeScript est remarquablement diversifié. Une fois que le monde a réalisé qu'il pouvait prétraiter son code, beaucoup sont entrés dans le jeu. Iced CoffeeScript, par exemple, est comme CoffeeScript classique mais avec quelques constructions supplémentaires qui rendent les appels asynchrones un peu plus propres et plus simples à taper et à lire. Il peut y avoir au moins une douzaine de cousins ​​proposant de simplifier votre style particulier de programmation.

Articles Liés

  • 7 raisons pour lesquelles les frameworks sont les nouveaux langages de programmation
  • 7 leçons intemporelles de programmation 'Graybeards'
  • 9 langues de pointe à apprendre maintenant
  • Télécharger: Le guide de survie en entreprise du programmeur professionnel
  • Télécharger: Prix de la technologie de l'année 2015
  • Téléchargement: 29 conseils pour réussir en tant que développeur indépendant
  • Bilan: les quatre grands IDE Java comparés
  • Téléchargement: pratique avec 10 éditeurs JavaScript et IDE
  • 10 batailles qui font rage pour le cœur et l'esprit des développeurs
  • Attaque des langages de programmation à une lettre
  • PHP vs Node.js: une bataille épique pour le partage de l'esprit des développeurs
  • 15 technologies qui changent la façon dont les développeurs travaillent
  • 12 prédictions pour l'avenir de la programmation
  • 15 tendances de programmation à chaud - et 15 à froid
  • Dév-olution: saluant 19 générations de programmeurs informatiques
  • 10 fonctionnalités que nous voulons voir dans HTML6