Zadejte hledaný výraz...

Node.JS – pod kapotou

node
verified
rating uzivatele
(5 hodnocení)
15. 9. 2020 11:59:22
Node vyuziva syntax JavaScriptu ale len tak zo zvedavosti by ma zaujimalo ako kompiluje kod? Robi to ako PHP ze ho prelozi do C-cka alebo kompiluje nativne do asembleru, pripadne inak?
15. 9. 2020 11:59:22
https://webtrh.cz/diskuse/node-js-pod-kapotou#reply1463397
JavaScript — is it Compiled or Interpreted? | by Almog Adziashvili | Medium
15. 9. 2020 12:17:12
https://webtrh.cz/diskuse/node-js-pod-kapotou#reply1463396
TomasX
verified
rating uzivatele
(4 hodnocení)
15. 9. 2020 13:20:35
node.js se skládá z:
- spousty js kódu, který implementuje základní věci jako http, filesystem api, eventy a další core knihovny, viz přehled api https://nodejs.org/docs/latest/api/, drtivá většina je právě psaná v samotném js
- pro potřeby node.js poté vznikla v c implementované rozhranní pro async IO operace (https://github.com/libuv/libuv), tohle je hlavní grál node.js, poskytuje vnitřnosti pro obsluhu http, tcp, fs a spousty dalších IO operací
- poté je jádro pro vykonování js kódu v8 od Googlu (c++ v kombinaci s js), tady probíhá veškeré magie. JS kód se optimalizuje, inlinuje, slovníkuje, v reálném čase se přepisuje do ASM (JIT - just in time compiler), samotné generování asm máš třeba přímo tady https://github.com/v8/v8/tree/4d6c5d4c877d9b47587cd7e7fb9fdcffbafd45f8/src/compiler/x64
Node.js má gdb interface, pokud se o to chceš zajímat více, doporučuji moc pěkný rozbor na https://github.com/danbev/learning-v8
Do node.js a libuv jsem nějakou dobu pracoval a přispíval do něj.
PS: PHP negeneruje C kód, ale bytecode, který je v paměti a ten se spouští na procesoru, jako mezičlánek je naparsovaný php soubor přeložený do tzv. opcodes (viz https://www.php.net/manual/en/internals2.opcodes.list.php). Od php 8 už umí php také používat JIT. Rozdíl mezi generování bytecodu na začátku při parsování a JIT je v tom, že JIT umí reagovat na způsob používání jednotlivých metod a optimalizovat je.
15. 9. 2020 13:20:35
https://webtrh.cz/diskuse/node-js-pod-kapotou#reply1463395
exander
verified
rating uzivatele
(2 hodnocení)
15. 9. 2020 17:24:53
Node.js nepoužívá syntaxi JavaScriptu, je to JavaScript. Integruje V8 JS engine stejně jako Chrome/Chromium/Vivaldi atd.
PHP nepřekládá nic do Cčka. Jaký assembler?
Upřímně, proč se ptáte na něco čemu vůbec nerozumíte a ani detailní odpověď Vám k ničemu nebude?
15. 9. 2020 17:24:53
https://webtrh.cz/diskuse/node-js-pod-kapotou#reply1463394
node
verified
rating uzivatele
(5 hodnocení)
15. 9. 2020 19:53:00
Napsal exander;1597289
Node.js nepoužívá syntaxi JavaScriptu, je to JavaScript. Integruje V8 JS engine stejně jako Chrome/Chromium/Vivaldi atd.
PHP nepřekládá nic do Cčka. Jaký assembler?
Upřímně, proč se ptáte na něco čemu vůbec nerozumíte a ani detailní odpověď Vám k ničemu nebude?
Mas pravdu, dnes uz PHP do C-cka nekompiluje.
15. 9. 2020 19:53:00
https://webtrh.cz/diskuse/node-js-pod-kapotou#reply1463393
exander
verified
rating uzivatele
(2 hodnocení)
15. 9. 2020 19:55:27
PHP se do C normálně nekompilovalo nikdy, to zavedl akorát Facebook, protože jim netačila rychlost.
15. 9. 2020 19:55:27
https://webtrh.cz/diskuse/node-js-pod-kapotou#reply1463392
TomasX
verified
rating uzivatele
(4 hodnocení)
15. 9. 2020 19:58:05
jen doplnění o Facebooku a php, jmenovalo se to HHVM, což je dnes už také deprecated a vznikl z toho nový jazyk Hack s vlastním vm.
15. 9. 2020 19:58:05
https://webtrh.cz/diskuse/node-js-pod-kapotou#reply1463391
node
verified
rating uzivatele
(5 hodnocení)
15. 9. 2020 20:49:08
Napsal exander;1597313
PHP se do C normálně nekompilovalo nikdy, to zavedl akorát Facebook, protože jim netačila rychlost.
precitaj si historiu vzniku PHP...
15. 9. 2020 20:49:08
https://webtrh.cz/diskuse/node-js-pod-kapotou#reply1463390
exander
verified
rating uzivatele
(2 hodnocení)
15. 9. 2020 21:50:45
Napsal node;1597318
precitaj si historiu vzniku PHP...
PHP se nikdy nepřekládalo do C (mimo Facebook, viz výše), jinak jsem ho používal už okolo roku 2000. Ani první verze nic nepřekládala do C.
Edit: Tady máte historii: https://www.php.net/manual/en/history.php.php
15. 9. 2020 21:50:45
https://webtrh.cz/diskuse/node-js-pod-kapotou#reply1463389
node
verified
rating uzivatele
(5 hodnocení)
15. 9. 2020 22:08:46
PHP vznikol ako sablonovaci "jazyk" pre Ccko ale sak dobre. tomas to tu uz popisal takze nie je co dalej riesit.
15. 9. 2020 22:08:46
https://webtrh.cz/diskuse/node-js-pod-kapotou#reply1463388
exander
verified
rating uzivatele
(2 hodnocení)
15. 9. 2020 22:11:19
Napsal node;1597324
PHP vznikol ako sablonovaci "jazyk" pre Ccko ale sak dobre. tomas to tu uz popisal takze nie je co dalej riesit.
Ne, mluvíte nesmysly (podobně jako o koronaviru). PHP vzniklo jako jednoduchý nástroj pro tvorbu webu, jediné, co má s C společné je, že je v něm naprogramované.
15. 9. 2020 22:11:19
https://webtrh.cz/diskuse/node-js-pod-kapotou#reply1463387
TomasX
verified
rating uzivatele
(4 hodnocení)
15. 9. 2020 22:19:33
Napsal node;1597318
precitaj si historiu vzniku PHP...
tady je zdroják php 4.0 z roku 1999, jeho první verze (použil bych php3, ale to není na githubu).
Už tehdy se kompiloval do bytecodu a používal opcodes jako symbolické instrukce/funkce.
php-src/zend_compile.c at aceaabceffd537a0ed83fa25e189b08eae585f4a ·…
Do C se PHP opravdu nikdy nepřekládal.
15. 9. 2020 22:19:33
https://webtrh.cz/diskuse/node-js-pod-kapotou#reply1463386
exander
verified
rating uzivatele
(2 hodnocení)
15. 9. 2020 22:23:17
Napsal TomášX;1597328
tady je zdroják php 4.0 z roku 1999, jeho první verze (použil bych php3, ale to není na githubu).
Už tehdy se kompiloval do bytecodu a používal opcodes jako symbolické instrukce/funkce.
php-src/zend_compile.c at aceaabceffd537a0ed83fa25e189b08eae585f4a ·…
Do C se PHP opravdu nikdy nepřekládal.
PHP byl na začátku interpretovaný jazyk než se překládal do Bytecode, ale ani tehdy nemělo smysl ho překládat do C, to nemá žádný smysl, leda tím FaceBook stylem, kdy Vám JIT už nestačí.
15. 9. 2020 22:23:17
https://webtrh.cz/diskuse/node-js-pod-kapotou#reply1463385
Pro odpověď se přihlašte.
Přihlásit