Je Python vhodný na transpilování do JavaScriptu? rubrika: Programování: JavaScript

1 jobada
položil/-a 22.2.2017

Zdravím. Chtěl bych se od PHP posunout dál a rád bych poprosil zkušenější programátory o vizi do budoucna. Né z křišťálové koule, ale na základě hlubších znalostí než mám já. Tak trochu navazuji na tuto diskusi https://devel.cz/otazka/node-js-a-desktopove-aplikace , která mě zaujala.

Jak tak pročítám nové trendy v programování, tak začínám mít dojem, že Node.js je celkem slibný. Líbí se mi, že je na serveru rychlý s malými nároky na hardware a představa stejného jazyka (JS) na clientovi i serveru se mi líbí, ale psát přímo v JS se mi moc nechce. Sice mi JS není úplně cizí, ale jak jsem se díval na nějaké příklady pro Node.js, tak bych se toho musel hodně učit. Z těch všech projektů (https://www.typescriptlang.org/ , http://www.brython.info , http://www.transcrypt.org/ http://www.jsweet.org/ a dalších) , které vznikají v souvislosti s transkompilováním do JS začínám mít pocit, že nebude potřeba psát v čistém JS (což by bylo možná naškodu kvůli lidským chybám), ale že JS bude jen cílovým jazykem do kterého se bude kompilovat z jiných jazyků.
Chtěl bych svůj čas věnovat spíše Pythonu, který mi připadá použitelnější na více věcí (mohu v něm napsat script pro linux nebo doplněk pro Kodi stejně jako udělat apku na webserveru). Zároveň bych chtěl třeba i menší věci dělat na cloudu od Amazonu nebo Googlu.

Takže teď znáte moje myšlenkové pochody :-) a nyní otázka. Je správná cesta spoléhat na to, že valnou většinu aplikací určených pro web (ať už pro server nebo pro klienta) budu psát v Pythonu a pomocí nějakého transkompilátoru (nebo frameworku) kompilovat do JS? A zároveň, aby takto vykompilovaný JS byl stále velmi rychlý (hlavně na serveru) - to je vlastně hlavní důvod proč to chci převádět do JS. Pokud ano, tak jaká je nejlepší cesta na převod z Pythonu do JS (a obráceně) v dnešní době?

V tomto článku http://vizteck.com/blog/node-js-vs-python-best-option-startup/ se v jednom odstavci píše o míchání Pythonu a Node.js, ale chtěl bych znát váš názor. Děkuji.

Komentáře

odkaz
3 pedrito
odpověděl/-a 23.2.2017

Mám pocit, že se zde prolíná několik otázek. Výhoda node.js je, že kód aplikace běží v jednom vlákně (nebo poolu podle počtu jader CPU) a IO se řeší pomocí asynchronních služeb (NIO) jádra (epoll na Linuxu, kqueue na BSD apod.), v případě IO se totiž většinu času čeká, protože latence sítě atd. Nicméně kód v JS per se nijak extra rychlý není a i když V8 je obdivuhodně svižná VM pro JS, v C(++) nebo nějakém jiném kompilovaném jazyce (včetně Javy a .NETu) bude aplikace obecně rychlejší nebo šetrnější ke zdrojům.

"[...] chtěl začít používat cloudy AWS nebo GCP u kterých se platí za spotřebovávané HW prostředky"

Tady se právě vyplatí C(++), Java nebo Go, které také mají NIO a navíc jiné výhody jako statickou typovanost a hlavně nižší nároky na CPU a paměť.

"[...] bych mohl nějak jednoduše přesunout nějakou JS funkci z frontendu do backendu"

Tohle je jediná hmatatelná výhoda, která mě u tohoto řešení napadá. Jen je třeba zvážit, zda vyváží zmíněné nevýhody.

A přímo k otázce: Do JS se dá přeložit prakticky cokoliv a v případě Pythonu to jde celkem přímočaře, takže toho bych se nebál. Nejlepší by asi bylo udělat si jednoduchý benchmark v různých jazycích a změřit, kolik požadavků se obslouží, kolik paměti aplikace celkově zabere při větší zátěži a nakolik zatíží CPU.

Komentáře

  • harrison314 : Je az taka strasna vyhoda prenasat niektore funkcie z backendu do fronendu? 23.2.2017
  • pedrito : @harrison314 Asi moc ne, ale někdy se to nabízí, třeba v GWT. 23.2.2017
  • jobada : Souhlas, že C(++), Java a asi i Go jsou rychlejší než Node.js, ale na první dva si netroufám a o Go jsem uvažoval, ale mám dojem, že ho používá málo lidí/firem, takže by tam mohl být problém s podporou nebo s nedostatkem hotových knihoven a musel bych často znovu vynalézat kolo. Takže ten Node.js mně z toho vyšel jako rozumná kombinace rychlosti a univerálnosti. 23.2.2017
  • Anonym : @jobada Proč si netroufáte na Javu? Vždyť PHP k němu skoro konvergovalo. Já bych se naopak bál JS. Neřešte rychlost, ale jak se vám s nástrojem pracuje. 23.2.2017
  • jobada : @uetoyo: Moje odmítání Javy je spíše pocitové než logické. Trauma z dětství :-) - první Javová aplikace, kterou jsem před mnoha a mnoha lety spustil na desktopu byla ta nejhnusnější a nejneohrabanější, kterou jsem do té doby viděl. Nedávno jsem na serveru zažil Java apku (komerční produkt), která (neznámo proč) někdy vytížila procesor serveru na 100% a nezbylo než server resetovat. Samozřejmě nemohu podle toho soudit Javu jako celek, ale tak nějak mám Javu zaškatulkovanou jako velký složitý programovací jazyk, který bych se musel dlouho učit a který se musí před spuštěním vždy kompilovat. Ale je pravda, že v dneším Androidím světě by se mohla hodit. 24.2.2017
  • Anonym : Jdi do Railsu. Naucis se je rychle, Ruby je krasny, vyvoj superrychly... A praci sezenes snadno a nesmrdi to tolik :) railstutorial.org 3.3.2017

Pro zobrazení všech 10 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.