Programovanie

Skvelé nástroje na kompiláciu do JavaScriptu

Každý programátor má obľúbený jazyk alebo dva. Milovníci skriptov JavaScript majú v dnešnej dobe šťastie, pretože ich jazyk ovláda internet a internet ovláda svet. Tí, ktorých srdcia prebývajú inde vo svete programovacích jazykov, sú však uviaznutí. Môžu buď zostať bokom a preklínať neúnavné juggernauty HTML, CSS, JavaScript a Node.js, alebo môžu nájsť spôsob, ako to milovať.

Našťastie existuje tretí spôsob, ktorý vám umožní vychutnať si potešenie z vášho obľúbeného jazyka a zároveň nasadiť váš kód do stále sa rozširujúceho sveta JavaScriptu: Jednoducho svoj kód preveďte, čo môže byť prekvapivo ľahké. Výkon môže trochu trpieť, ale často oveľa menej, ako by ste si predstavovali. Potom môžete svoj kód odoslať do prehľadávačov a ukončiť pokus o prinútenie ľudí inštalovať spustiteľné súbory.

Neustále sa budete cítiť, akoby išlo o úplnú kapituláciu, čo je trpký ústup od princípov, ktoré vás viažu k vašej obľúbenej syntaxi. Niektorí dokonca môžu mať pocit, že je to trochu zrada, čin tak zradný, že to musíte pred kolegami tajiť. Iní celkom správne navrhnú, že to nie je také jednoduché. Spustenie kódu je jedna vec. Zlepenie častí a vytvorenie používateľského rozhrania je veľa ďalšej práce.

Ste vítaní, aby ste sa utápali vo svojej ľútosti, ale existuje veľa racionalizácií, ktoré robia tento nápad chutnejším. Po prvé, motory JavaScriptu fungujú oveľa, oveľa rýchlejšie ako v minulosti. Po druhé, tvorba webového používateľského rozhrania nikdy nebola ľahšia, a to vďaka rámcom a dostatočnému talentu na dizajn HTML / CSS. Po tretie, JavaScript sa stáva trochu lingua franca. Ak môžete previesť všetky tieto jazyky na jazyk JavaScript a zoznam je prekvapivo dlhý, môžete ich tiež všetky prepojiť.

Tu sa pozrieme na množstvo malých jazykov, ktoré umožňujú kompiláciu niektorých z najpopulárnejších programovacích jazykov do JavaScriptu. Budúci článok bude skúmať, ako sa slabnúce jazyky znovu rodia ich zavedením do prehliadača. Nie je dôvod, aby ste sa ponorili do súcitu alebo nenávisti. Tieto techniky vám umožňujú vychutnať si obľúbený jazyk a bežať všade, kde funguje JavaScript.

Ruby

Existuje množstvo možností, vďaka ktorým môžete behom v prostredí JavaScriptu myslieť ako programátor Ruby.

Napríklad RubyJS je knižnica JavaScriptu, ktorá pridáva mnoho základných primitívov do jedného objektu JavaScriptu. To, čo napíšete, je technicky JavaScript, ale špeciálny Ruby objekt sa väčšinu času chová ako Ruby kód. Čakajú na vás reťazce, čísla, iterátory a sčítače.

Ak písanie JavaScriptu, ktorý funguje ako Ruby, nestačí, Opal preloží zdrojový kód Ruby priamo do JavaScriptu. Často sa chová ako Ruby VM, ale niekedy nie. Napríklad Ruby’s mutable Strings sú prevádzané priamo do nemenných kódov JavaScriptu, čo by pre niektoré aplikácie nemalo robiť problém, ale mohlo by pár ľudí priviesť do nepríčetnosti. Ďalšie malé efekty, ako je tento, môžu v krajných prípadoch viesť k hrubým prekvapeniam.

Pre tých, ktorí chcú viac, ponúka HotRuby komplexnejšie riešenie, virtuálny stroj v JavaScripte, ktorý prechádza kódmi Ruby op. Kódová základňa trochu starne, ale ponúka skutočným veriacim ďalšiu možnosť.

Java

Je ťažké vedieť, čo inšpirovalo Google k vytvoreniu Google Web Toolkit, predprocesora, ktorý prevádza Javu na JavaScript. Možno manažér miloval Javu a nechcel, aby zomrela. Možno tu sedeli ďalší géniovia z Javy, ktorí čakali na spustenie webu.

Nech už bol dôvod akýkoľvek, urobili to a často ho používajú pre svoje najsofistikovanejšie webové produkty. Je to skvelý darček pre každého, kto má hromadu Javy a nemá čas ju prepisovať. Vnútornosť jazyka je tu, ale chýbajú niektoré menej bežné triedy ako BigInteger; to znamená, že zvyčajne môžete nájsť spôsob, ako ich pridať. Rámec používateľského rozhrania je z veľkej časti požičaný od spoločnosti Swing, takže vývojári spoločnosti Swing sa budú cítiť ako doma. Ostatným sa nebude učiť príliš ťažko.

Google Web Toolkit nie je zďaleka jedinou voľbou pre programátorov Java. Java2Script je plne integrovaný do Eclipse a GrooScript prevádza bozkávajúceho sa bratranca Javy, Groovyho.

Existuje niekoľko nástrojov, ktoré spúšťajú bajtový kód JVM s JavaScriptom, čo je šikovný nápad, ktorý vám umožní nasadiť súbory JAR, aj keď nemáte zdroj Java. Niektorí, napríklad Doppio a Node-jvm, sú tlmočníci; iné, napríklad TeaVM alebo Dragome, prevedú bajtový kód natrvalo na JavaScript.

Erlang

Milovníci erlangu majú niekoľko možností. Jedným z riešení je použitie Erjang, nástroja, ktorý spúšťa Erlang na JVM a ktorý sa potom používa na spustenie bajtového kódu Java s jednou z vyššie uvedených možností Java. Znie to jednoducho, však?

Shen je kompilátor, ktorý prevádza Erlang a jeho bratrancov, ako sú Elixir, Joxa a Lol, na JavaScript. Ak chcete tento kód spustiť v Node.js, existuje aj balíček erlang-shen-js.

Treťou možnosťou je použiť LuvvieScript, prísnu podmnožinu Erlangu, ktorá dostala háčiky na prístup ku všetkým objektom DOM. Používate štruktúru Erlang, ktorú máte radi, a prekladá vaše pokyny do niečoho, čomu DOM rozumie. Nie je to úplne to isté, ale bude to tak.

C.

Mnoho ľudí s prekvapením zistí, že s jazykom JavaScript môžu používať jazyky C alebo C. Iste, základná syntax jazyka JavaScript je dosť podobná ako v jazyku C, ale vnútornosť je iná. C umožňuje priamo sa dotknúť pamäte, ale JavaScript všetky tieto podrobnosti skrýva. C umožňuje manipulovať s ukazovateľmi, ale JavaScript vás chráni pred ich nebezpečnou silou. Napriek tomu sú tieto rozdiely pri troche chytrého hackovania prekonateľné.

Nemusí byť spravodlivé nazývať LLJS verziou C, ale táto verzia JavaScriptu ponúka staticky zadané premenné a programátorské riadenie pamäte - teda, nie pamäte ako takej, ale verzie JavaScriptu. Dokumentácia rada sľubuje vykonávanie bez pauzy, pretože tu nie je zber odpadu.

Ak chcete pracovať so štandardným C, prevedie Clue C na JavaScript a na množstvo ďalších skriptovacích jazykov ako Perl alebo Lua. Vývojári dokonca tvrdia, že niektorý kód bude pre tieto dynamické jazyky v JIT skutočne bežať rýchlejšie, ako keď bude skompilovaný do natívnych binárnych súborov. Tajomstvo spočíva v tom, že SVT si môžu za behu všimnúť veci, ktoré základné kompilátory nedokázali, pretože môžu sledovať beh programu.

Najväčším menom môže byť Emscripten, upravená verzia LLVM, ktorá je prepájaná tak, aby namiesto strojového kódu vypľula pokyny pre asm.js. Tajomstvo spočíva v tom, že asm.js je úzka podmnožina JavaScriptu navrhnutá na ľahkú optimalizáciu pomocou najnovších nástrojov JavaScriptu, ako je napríklad SpiderMonkey. Výsledky sú pôsobivé a jedny z najlepších dôkazov pochádzajú od hráčskej komunity. Unity aj Unreal engine môžu spúšťať hry v prehliadačoch kompatibilných s HTML5.

Python

Python je ďalší populárny dynamický jazyk, ktorý sa ľahko mapuje na JavaScript. Mnoho vnútorných funkcií je podobných a niektoré z najväčších rozdielov sú v syntaxi.

Jednoduchšie možnosti, ako napríklad RapydScript a PyvaScript, ponúkajú iba syntax podobnú Pythonu, ktorá je preložená pomerne priamo do JavaScriptu. Urobia niekoľko transformácií, napríklad vložia zložené zátvorky, aby sa zhodovali s blokmi odsadenými na medzery, a voilà - beží v prehliadači. Tieto programy sú určené skôr pre programátorov, ktorí myslia na jazyk JavaScript, ale chcú písať Pythonicky, ako hovoria milovníci jazykov.

Zložitejšie verzie, ako napríklad PYXC-PJ a Pyjs, aktívne prevedú Python na JavaScript, pričom často vytvárajú niečo, čo je celkom dobre čitateľné - alebo aspoň tak dobre čitateľné ako pôvodný kód. Pyjs tiež prichádza s widgetovou sadou nástrojov, ktorá je veľmi podobná s Google Web Toolkit.

Najzábavnejšia však môže byť PyPy, neuveriteľný počin softvérového inžinierstva s proporciami takmer Rube Goldbergian. Python vstupuje a pracuje na tlmočníkovi Pythonu napísanom v RPython, podmnožine Pythonu, ktorá sa dá ľahko kompilovať. Tento RPython sa potom skompiluje na niečo, čo vyzerá ako C, čo sa dá vložiť do Emscriptenu. Vývojári tvrdia, že môžu ukázať, že niektoré benchmarky Pythonu bežia rýchlejšie v SpiderMonkey ako CPython.

Ak to dokážu s Pythonom a C, môžete tiež.

JavaScript, v inom kostýme

Samozrejme, aj keď ide o JavaScript, máte alternatívy. Niektorí ľudia majú koniec koncov interpunkčné znamienka a iní nie. CoffeeScript je pre ľudí, ktorí to nerobia. Ak potrebujete programovať v JavaScripte, ale nechcete, aby ste napísali toľko bodkočiarok alebo zložených zátvoriek, je tu CoffeeScript.

Vnútornosť CoffeeScript je rovnaká ako JavaScript, pretože to nie je skutočný jazyk. Je to preprocesor, ktorý pridáva bodkočiarky a zložené zátvorky, takže nemusíte. Napíšete svoj program jednoduchým spôsobom ako v Ruby a program CoffeeScript ho prevedie do zmenšenej verzie JavaScriptu.

Toto nie je to isté ako programovanie v inom jazyku, pretože vami definované premenné a funkcie sa budú správať ako premenné a funkcie JavaScriptu. Premenné budú stále písané dynamicky a všetky malé zhoršenia sa budú stále vyskytovať. Matematika a veveričie preťažené správanie operátora plus vás stále bude unavovať, ale ušetríte si čas pri písaní.

Svet CoffeeScript je pozoruhodne rozmanitý. Len čo si svet uvedomil, že dokáže svoj kód predspracovať, dostali sa do hry mnohí. Napríklad Iced CoffeeScript je ako bežný CoffeeScript, ale má niekoľko ďalších konštruktov, vďaka ktorým sú asynchrónne volania trochu čistejšie a ľahšie sa dajú písať a čítať. Môže existovať najmenej tucet bratrancov, ktorí ponúkajú váš konkrétny štýl programovania.

Súvisiace články

  • Sedem dôvodov, prečo sú rámce novými programovacími jazykmi
  • 7 nadčasových lekcií programovania „šedých fúzov“
  • 9 špičkových jazykov, ktoré sa teraz oplatí naučiť
  • Stiahnuť ▼: Sprievodca prežitím podnikania profesionálneho programátora
  • Stiahnuť ▼: Ocenenie Technológia roka 2015
  • Stiahnuť ▼: 29 tipov na úspech ako nezávislý vývojár
  • Preskúmanie: Porovnávali sa veľké štyri IDE Java
  • Stiahnuť ▼: Hands-on s 10 editormi JavaScriptu a IDE
  • 10 bitiek zúriacich pre srdcia a mysle vývojárov
  • Útok na jednopísmenové programovacie jazyky
  • PHP vs Node.js: Epická bitka o zdieľanie mysle vývojárov
  • 15 technológií meniacich spôsob práce vývojárov
  • 12 predpovedí pre budúcnosť programovania
  • 15 horúcich programovacích trendov - a 15 chladných
  • Vývoj: Zdravíme 19 generácií počítačových programátorov
  • 10 funkcií, ktoré chceme vidieť v HTML6
$config[zx-auto] not found$config[zx-overlay] not found