Programování

Skvělé nástroje pro kompilaci do JavaScriptu

Každý programátor má oblíbený jazyk nebo dva. Milovníci JavaScriptu mají dnes největší štěstí, protože jejich jazyk ovládá internet a internet ovládá svět. Ti, jejichž srdce bydlí jinde ve světě programovacích jazyků, však uvízli. Mohou buď zůstat na vedlejší koleji a proklínat neúnavnou juggernaut HTML, CSS, JavaScript a Node.js, nebo mohou najít způsob, jak to milovat.

Naštěstí existuje třetí způsob, který vám umožní užít si potěšení z vašeho oblíbeného jazyka a zároveň nasadit váš kód do stále se rozšiřujícího světa JavaScriptu: Jednoduše převeďte svůj kód, což může být překvapivě snadné. Výkon může trochu trpět, ale často mnohem méně, než si dokážete představit. Poté můžete svůj kód odeslat do prohlížečů a ukončit pokus o přimění lidí k instalaci spustitelných souborů.

Neustálý bude mít pocit, že se jedná o naprostou kapitulaci, hořký ústup od principů, které vás váží k vaší oblíbené syntaxi. Někteří dokonce mohou cítit trochu zradu, čin tak zrádný, že to musíte před svými kolegy skrývat. Jiní docela správně navrhnou, že to není tak jednoduché. Spuštění kódu je jedna věc. Lepení částí dohromady a vytvoření uživatelského rozhraní je spousta další práce.

Neváhejte se utápět ve své lítosti, ale existuje spousta racionalizací, díky nimž je nápad chutnější. Za prvé, motory JavaScriptu běží mnohem, mnohem rychleji, než tomu bylo v minulosti. Zadruhé, vytváření webového uživatelského rozhraní nebylo nikdy jednodušší, a to díky rámcům a velkému talentu na design HTML / CSS. Za třetí, JavaScript se stává trochu lingua franca. Pokud můžete převést všechny tyto jazyky na JavaScript a seznam je překvapivě dlouhý, můžete je také všechny propojit.

Zde se podíváme na bohatství malých jazyků, které umožňují kompilaci nejpopulárnějších programovacích jazyků do JavaScriptu. Budoucí článek prozkoumá, jak se blednoucí jazyky znovu rodí jejich přenesením do prohlížeče. Neexistuje žádný důvod, proč byste se měli ponořit do lítosti nebo nenávisti. Tyto techniky vám umožní vychutnat si svůj oblíbený jazyk a běžet všude tam, kde funguje JavaScript.

Rubín

Existuje řada možností, díky nimž můžete při běhu v prostředí JavaScriptu myslet jako programátor Ruby.

Například RubyJS je knihovna JavaScriptu, která přidává mnoho základních primitiv do jednoho objektu JavaScriptu. To, co píšete, je technicky JavaScript, ale speciální Ruby objekt se většinu času chová jako Ruby kód. Řetězce, čísla, iterátory a enumerátory na vás čekají.

Pokud psaní JavaScriptu, který funguje jako Ruby, nestačí, Opal přeloží zdrojový kód Ruby přímo do JavaScriptu. Často se chová jako virtuální počítač Ruby, ale někdy se tak nestane. Například Ruby's mutable Strings jsou převedeny přímo na neměnné JavaScript, což by pro některé aplikace nemělo být problémem, ale mohlo by to vést k šílenství několika lidí. Další takové malé efekty mohou v okrajových případech vést k hrubým překvapením.

Pro ty, kteří chtějí více, HotRuby nabízí komplexnější řešení, virtuální stroj JavaScriptu, který chrlí kódy Ruby op. Kódová základna trochu zestárne, ale nabízí věřícím další možnost.

Jáva

Je těžké vědět, co inspirovalo Google k vytvoření Google Web Toolkit, preprocesoru, který převádí Javu na JavaScript. Možná, že manažer miloval Javu a nechtěl, aby zemřela. Možná tam seděli další géniové z Javy, kteří čekali na spuštění webu.

Ať už byl důvod jakýkoli, udělali to a často to používají pro své nejsofistikovanější webové produkty. Je to skvělý dárek pro každého, kdo má hromadu Javy a nemá čas ji přepsat. Vnitřnosti jazyka jsou všude, ale chybí některé méně obvyklé třídy jako BigInteger; to znamená, že obvykle můžete najít způsob, jak je přidat. Rámec uživatelského rozhraní je z velké části vypůjčen od společnosti Swing, takže vývojáři Swing se budou cítit jako doma. Jiným to nebude příliš těžké se naučit.

Google Web Toolkit není zdaleka jedinou volbou pro programátory Java. Java2Script je plně integrován do Eclipse a GrooScript převádí líbajícího se bratrance Java, Groovyho.

Existuje několik nástrojů, které spouští bajtový kód JVM s JavaScriptem, chytrý nápad, který vám umožní nasadit soubory JAR, i když nemáte zdroj Java. Někteří, jako Doppio a Node-jvm, jsou tlumočníci; jiní, jako TeaVM nebo Dragome, trvale převedou bajtový kód na JavaScript.

Erlang

Milovníci erlangu mají několik možností. Jedním z řešení je použít Erjang, nástroj, který spouští Erlang na JVM, který se pak používá ke spuštění bajtového kódu Java s jednou z výše uvedených možností Java. Zní to jednoduše, že?

Shen je kompilátor, který převádí Erlang a jeho bratrance, jako je Elixir, Joxa a Lol, na JavaScript. Pokud chcete tento kód spustit v Node.js, existuje také balíček erlang-shen-js.

Třetí možností je použít LuvvieScript, přísnou podmnožinu Erlangu, která dostala háčky pro přístup ke všem objektům DOM. Používáte strukturu Erlang, kterou máte rádi, a překládá vaše pokyny do něčeho, čemu DOM rozumí. Není to úplně stejné, ale bude to fungovat.

C

Mnoho lidí je překvapeno, když zjistí, že s jazykem JavaScript mohou používat jazyky C nebo C. Jistě, základní syntaxe JavaScriptu je docela podobná C, ale vnitřnosti jsou jiné. C vám umožní přímo se dotknout paměti, ale JavaScript skrývá všechny tyto podrobnosti. C umožňuje manipulovat s ukazateli, ale JavaScript vás chrání před jejich nebezpečnou silou. Přesto jsou tyto rozdíly s trochou chytrého hackování překonatelné.

Nemusí být fér nazývat LLJS verzí C, ale tato verze JavaScriptu nabízí staticky zadané proměnné a programátorské ovládání paměti - tedy ne paměť sama o sobě, ale její JavaScriptová verze. Dokumentace ráda slibuje provádění bez pauzy, protože zde není sběr odpadků.

Pokud chcete pracovat se standardním C, Clue převede C na JavaScript a řadu dalších skriptovacích jazyků, jako je Perl nebo Lua. Vývojáři dokonce tvrdí, že některý kód bude v JIT pro tyto dynamické jazyky skutečně běžet rychleji, než když bude zkompilován do nativních binárních souborů. Tajemství spočívá v tom, že si JIT mohou během běhu všimnout věcí, které základní kompilátoři nemohli, protože mohou sledovat běh programu.

Největším jménem může být Emscripten, upravená verze LLVM, která je přepojena tak, aby místo strojového kódu vyplivla pokyny pro asm.js. Tajemství spočívá v tom, že asm.js je úzká podmnožina JavaScriptu navržená tak, aby byla snadno optimalizována nejnovějšími motory JavaScriptu, jako je SpiderMonkey. Výsledky jsou působivé a některé z nejlepších důkazů pocházejí od hráčské komunity. Unity i Unreal engine mohou spouštět hry v prohlížečích kompatibilních s HTML5.

Krajta

Python je další populární dynamický jazyk, který se snadno mapuje na JavaScript. Mnoho interních funkcí je podobných a některé z největších rozdílů jsou v syntaxi.

Jednodušší možnosti, jako je RapydScript a PyvaScript, nabízejí pouze syntaxi podobnou Pythonu, která je přeložena poměrně přímo do JavaScriptu. Provedou několik transformací, například vloží složené závorky, aby odpovídaly mezerám odsazeným blokům, a voilà - běží v prohlížeči. Jedná se spíše o programátory, kteří uvažují v JavaScriptu, ale chtějí psát Pythonicky, jak říkají milovníci jazyků.

Složitější verze, jako PYXC-PJ a Pyjs, budou aktivně převádět Python na JavaScript, což často vytvoří něco, co je docela dobře čitelné - nebo alespoň tak čitelné jako původní kód. Pyjs také přichází s widgetovou sadou nástrojů, díky čemuž je docela podobná sadě Google Web Toolkit.

Nejzábavnější však může být PyPy, neuvěřitelný počin softwarového inženýrství s proporcemi téměř Rube Goldbergian. Python jde dovnitř a běží na tlumočníkovi Pythonu napsaném v RPythonu, podmnožině Pythonu navržené tak, aby se dalo snadno kompilovat. Tento RPython je poté sestaven do něčeho, co vypadá jako C, které lze přenést do Emscriptenu. Vývojáři tvrdí, že mohou ukázat některé měřítka Pythonu běžící rychleji ve SpiderMonkey než CPython.

Pokud to dokážou s Pythonem a C, můžete také vy.

JavaScript, v jiném kostýmu

Samozřejmě, i když jde o JavaScript, máte alternativy. Koneckonců, někteří lidé mají rádi interpunkční znaménka a jiní ne. CoffeeScript je pro lidi, kteří ne. Pokud potřebujete programovat v JavaScriptu, ale nechcete znovu psát tolik středníků nebo složených závorek, pak je pro vás CoffeeScript.

Střeva CoffeeScript jsou stejná jako JavaScript, protože to není opravdu jazyk. Je to preprocesor, který přidává středníky a složené závorky, takže nemusíte. Napíšete svůj program v jednoduchosti podobné Ruby a CoffeeScript jej převede na minifikovanou verzi JavaScriptu.

To není totéž jako programování v jiném jazyce, protože definované proměnné a funkce se budou i nadále chovat jako proměnné a funkce JavaScriptu. Proměnné budou stále dynamicky zadávány a všechna malá zhoršení budou stále tam. Matematika a veverkovitě přetížené chování operátora plus vás stále budou unavovat, ale ušetříte si čas při psaní.

Svět CoffeeScript je pozoruhodně rozmanitý. Jakmile si svět uvědomil, že může svůj kód předzpracovat, mnoho se do hry dostalo. Například Iced CoffeeScript je jako běžný CoffeeScript, ale má několik dalších konstrukcí, díky nimž jsou asynchronní volání o něco čistší a jednodušší při psaní a čtení. Může existovat alespoň tucet bratranců, kteří vám zjednoduší váš konkrétní styl programování.

Související články

  • Sedm důvodů, proč jsou rámce novými programovacími jazyky
  • 7 nadčasových lekcí programování 'Graybeards'
  • 9 špičkových jazyků, které se nyní vyplatí naučit
  • Stažení: Průvodce profesionálním přežitím profesionálního programátora
  • Stažení: Ocenění Technologie roku 2015
  • Stažení: 29 tipů, jak uspět jako nezávislý vývojář
  • Posouzení: Porovnávány velké čtyři Java IDE
  • Stažení: Praktické cvičení s 10 editory JavaScriptu a IDE
  • 10 bitev zuřících pro srdce a mysl vývojářů
  • Útok na jednopísmenné programovací jazyky
  • PHP vs Node.js: Epická bitva o sdílení mysli vývojářů
  • 15 technologií měnících způsob práce vývojářů
  • 12 předpovědí pro budoucnost programování
  • 15 horkých trendů v programování - a 15 chladných
  • Vývoj: Zdravíme 19 generací počítačových programátorů
  • 10 funkcí, které chceme v HTML6 vidět
$config[zx-auto] not found$config[zx-overlay] not found