Kul alati za kompajliranje na JavaScript

Svaki programer ima omiljeni jezik ili dva. Ljubitelji JavaScripta najsretniji su ovih dana jer njihov jezik preuzima Internet, a Internet preuzima svijet. Oni čija srca žive negdje drugdje u svijetu programskog jezika, međutim, zaglavili su. Oni mogu ili ostati po strani i proklinjati neumoljivi skakač HTML-a, CSS-a, JavaScript-a i Node.js-a ili mogu pronaći način da to zavole.

Srećom, postoji treći način koji vam omogućuje uživanje u užicima vašeg omiljenog jezika, a istovremeno postavljanje koda u sve širi svijet JavaScript-a: Jednostavno pretvorite svoj kôd, što može biti iznenađujuće lako. Izvedba može malo patiti, ali često puno manje nego što biste mogli zamisliti. Tada svoj kôd možete poslati u preglednike i prestati pokušavati natjerati ljude da instaliraju izvršne datoteke.

Nepokolebljivi će se osjećati kao da je to grozna kapitulacija, ogorčeno povlačenje od načela koja vas vežu uz vašu omiljenu sintaksu. Neki čak mogu osjećati da je to malo izdaja, čin toliko izdajnički da to morate sakriti od svojih kolega. Drugi će, sasvim ispravno, sugerirati da to nije tako jednostavno. Dobivanje koda za pokretanje je jedno. Lijepljenje dijelova i stvaranje korisničkog sučelja puno je dodatnog posla.

Možete se valjati u svom sažaljenju, ali postoji mnoštvo racionalizacija koje ovu ideju čine ukusnijom. Prvo, JavaScript motori rade puno, puno brže nego što su to radili u prošlosti. Drugo, izrada web korisničkog sučelja nikada nije bila jednostavnija, zahvaljujući okvirima i bogatom HTML / CSS talentu za dizajn. Treće, JavaScript postaje pomalo lingua franca. Ako sve ove jezike možete pretvoriti u JavaScript, a popis je iznenađujuće dugačak, možete ih sve povezati i zajedno.

Ovdje ćemo pogledati bogatstvo malih jezika koji omogućavaju kompilaciju nekih od najpopularnijih programskih jezika u JavaScript. Budući će članak istražiti kako se jezici koji nestaju ponovno rađaju dovodeći ih u preglednik. Nema razloga da budete utonuli u sažaljenje ili mržnju. Ove tehnike omogućuju vam uživanje u vašem omiljenom jeziku i pokretanje gdje god to čini JavaScript.

Rubin

Postoji niz opcija koje vam omogućuju razmišljanje poput Ruby programera dok radite u JavaScript okruženju.

Na primjer, RubyJS je JavaScript knjižnica koja dodaje mnoge osnovne primitive u jedan JavaScript objekt. Ono što napišete tehnički je JavaScript, ali poseban se objekt Ruby većinu vremena ponaša poput Ruby koda. Strings, Numbers, Iterators i Enumerators čekaju na vas.

Ako pisanje JavaScript-a koji funkcionira kao Ruby nije dovoljno, Opal će prevesti izvorni kôd Ruby-a izravno u JavaScript. Često se ponaša poput Ruby VM-a, ali ponekad se i ne ponaša. Primjerice, Rubyine promjenjive žice pretvaraju se izravno u JavaScript nepromjenjive, što nekim aplikacijama ne bi trebao predstavljati problem, ali bi nekoliko ljudi moglo poludjeti. Drugi mali efekti poput ovog mogu dovesti do grubih iznenađenja u rubnim slučajevima.

Za one koji žele više, HotRuby nudi cjelovitije rješenje, JavaScript virtualni stroj koji se prebacuje kroz Ruby operativne kodove. Baza koda pomalo stari, ali istinskim vjernicima nudi drugu mogućnost.

Java

Teško je znati što je nadahnulo Google za stvaranje Google Web Toolkita, pretprocesora koji Java pretvara u JavaScript. Možda je upravitelj volio Javu i nije želio da ona umre. Možda su oko njih sjedili dodatni Java geniji koji su čekali da pokrenu Web.

Bez obzira na razlog, učinili su to i često ga koriste za svoje najsofisticiranije web proizvode. To je izvrstan poklon za svakoga tko ima hrpu Jave i nema vremena da je prepiše. Crijeva jezika su tu, ali nedostaju neke rjeđe klase poput BigInteger; to možete reći, obično možete pronaći način da ih dodate. Okvir korisničkog sučelja uglavnom je posuđen od Swinga, pa će se programeri Swinga osjećati kao kod kuće. Drugima neće biti previše teško naučiti.

Google Web Toolkit nije daleko od jedinog izbora za Java programere. Java2Script je u potpunosti integriran s Eclipseom, a GrooScript pretvara Javinog rođaka koji se ljubi, Groovyja.

Postoji nekoliko alata koji pokreću JVM byte kôd s JavaScriptom, pametna ideja koja vam omogućuje raspoređivanje JAR datoteka čak i ako nemate Java izvor. Neki su, poput Doppija i Node-jvm, tumači; drugi, poput TeaVM ili Dragome, trajno će pretvoriti bajt kôd u JavaScript.

Erlang

Ljubitelji Erlanga imaju nekoliko mogućnosti. Jedno od rješenja je korištenje Erjanga, alata koji pokreće Erlang na JVM-u, koji se zatim koristi za pokretanje Java bajt koda s jednom od gore navedenih Java opcija. Zvuči jednostavno, zar ne?

Shen je prevodilac koji pretvara Erlang i njegove rođake, poput Eliksira, Joxe i Lola, u JavaScript. Ako želite pokrenuti ovaj kod u Node.js, tu je i paket erlang-shen-js.

Treća opcija je uporaba LuvvieScript-a, strogog podskupina Erlanga kojem su dodijeljene kuke za pristup svim DOM objektima. Koristite strukturu Erlang koju volite, a ona pretvara vaše upute u nešto što DOM razumije. Nije potpuno isto, ali hoće.

C

Mnogi su ljudi iznenađeni kad otkriju da mogu koristiti jezike nalik C ili C s JavaScriptom. Svakako, osnovna sintaksa JavaScript-a prilično je slična C-u, ali crijeva su različita. C omogućuje izravno dodirivanje memorije, ali JavaScript skriva sve ove detalje. C omogućuje manipulaciju pokazivačima, ali JavaScript vas štiti od njihove opasne moći. Ipak, te su razlike svladane s malo pametnog hakiranja.

Možda ne bi bilo pošteno nazvati LLJS verzijom C, ali ova inačica JavaScript-a nudi statički upisane varijable i programsku kontrolu memorije - dobro, ne memoriju samo po sebi, već njezinu JavaScript verziju. Dokumentacija voli obećavati izvršenje bez pauze jer nema odvoza smeća.

Ako želite raditi sa standardnim C, Clue će pretvoriti C u JavaScript i razne druge skriptne jezike poput Perla ili Lua. Programeri čak tvrde da će se neki kod zapravo pokretati brže u JIT-u za ove dinamičke jezike nego što će biti kad se prevede u izvorne binarne datoteke. Tajna je u tome što JIT-ovi tijekom primjene mogu primijetiti stvari koje osnovni kompajleri nisu mogli jer mogu gledati kako se program izvodi.

Najveće ime može biti Emscripten, modificirana verzija LLVM-a koja je preinačena da bi ispljuvala upute za asm.js umjesto strojnog koda. Tajna je u tome što je asm.js uska podskupina JavaScripta dizajnirana za jednostavnu optimizaciju najnovijim JavaScript motorima, poput SpiderMonkey Rezultati su impresivni, a neki od najboljih dokaza dolaze iz zajednice igara. I Unity i Unreal motori mogu pokretati igre u preglednicima kompatibilnim s HTML5.

Piton

Python je još jedan popularni dinamični jezik koji se lako preslikava na JavaScript. Mnoge su unutarnje značajke slične, a neke od najvećih razlika su u sintaksi.

Jednostavnije opcije, poput RapydScript i PyvaScript, nude samo sintaksu nalik Pythonu koja se prilično izravno prevodi u JavaScript. Izvršit će nekoliko transformacija, poput umetanja kovrčavih zagrada kako bi se podudarali s blokovima uvučenim u razmake i voilà - on se pokreće u pregledniku. To su više za programere koji razmišljaju na JavaScriptu, ali žele tipkati pitonski, kako kažu ljubitelji jezika.

Složenije verzije, poput PYXC-PJ i Pyjs, aktivno će pretvoriti Python u JavaScript, često stvarajući nešto što je prilično čitljivo - ili barem jednako čitljivo kao izvorni kôd. Pyjs također dolazi s widget alatima što ga čini prilično sličnim Google Web Toolkitu.

Ipak, najzabavniji može biti PyPy, nevjerojatan podvig softverskog inženjerstva s gotovo Rube Goldbergian proporcijama. Python ulazi i radi na Python tumaču napisanom u RPythonu, podskupu Pythona dizajniranom za lako kompajliranje. Ovaj se RPython zatim kompajlira do nečega što izgleda kao C i što se može unijeti u Emscripten. Programeri tvrde da mogu prikazati neka Python mjerila koja rade brže u SpiderMonkeyu od CPythona.

Ako to mogu učiniti s Pythonom i C, možete i vi.

JavaScript, u ​​drugom kostimu

Naravno, čak i kada je JavaScript u pitanju, imate alternative. Napokon, neki ljudi vole interpunkcijske znakove, a drugi ne. CoffeeScript je za ljude koji to ne čine. Ako trebate programirati na JavaScript-u, ali zamjerate što unosite toliko zareza ili kovrčavih zagrada, onda je CoffeeScript za vas.

Crijeva CoffeeScripta ista su kao i JavaScript jer to zapravo nije jezik. To je pretprocesor koji dodaje točke sa zarezom i kovrčave zagrade, tako da ne morate. Svoj program upišete u jednostavnosti nalik na Ruby, a CoffeeScript ga pretvara u umanjenu verziju JavaScript-a.

To nije isto kao programiranje na drugom jeziku jer će se varijable i funkcije koje definirate i dalje ponašati kao JavaScript varijable i funkcije. Varijable će se i dalje dinamički tipkati, a sva mala pogoršanja i dalje će biti tu. Matematika i vjeverica, preopterećeno ponašanje plus operatora i dalje će vas iscrpljivati, ali uštedjet ćete malo vremena za tipkanje.

Svijet CoffeeScript-a izuzetno je raznolik. Jednom kada je svijet shvatio da može pretprogramirati svoj kod, mnogi su ušli u igru. Na primjer, Iced CoffeeScript sličan je uobičajenom CoffeeScriptu, ali s nekoliko dodatnih konstrukcija koje čine asinkrone pozive malo čišćim i jednostavnijim za tipkanje i čitanje. Možda vam se ponudi najmanje desetak rođaka koji će vam pojednostaviti pojedini stil programiranja.

Povezani članci

  • 7 razloga zašto su okviri novi programski jezici
  • 7 vječnih lekcija programiranja 'sijedih brada'
  • 9 najmodernijih jezika koje vrijedi naučiti sada
  • Preuzimanje: Vodič za poslovno preživljavanje profesionalnog programera
  • Preuzmi: Nagrade za tehnologiju godine za 2015. godinu
  • Preuzimanje: 29 savjeta za uspjeh kao neovisni programer
  • Pregled: Uspoređena su velika četiri Java IDE-a
  • Preuzimanje: Praktično s 10 JavaScript uređivača i IDE-a
  • 10 bitaka koje bjesne za srca i umove programera
  • Napad jednoslovnih programskih jezika
  • PHP vs Node.js: Epska bitka za udio programera
  • 15 tehnologija koje mijenjaju način rada programera
  • 12 predviđanja za budućnost programiranja
  • 15 vrućih trendova programiranja - i 15 hladnih
  • Razvoj: pozdravljajući 19 generacija računalnih programera
  • 10 mogućnosti koje želimo vidjeti u HTML6