Каким образом JS и Node.js в одной колее с .net и Java? Вроде как JS и node.js однопоточный, и суть работы Event Loop'a используется только в JS. И Java, и .net же многопоточны, а JS - нет. Или я не прав?
Да, плохое сравнение. JIT-компиляторы .NET и java эмитят очень даже производительный код, и в многих задачах оптимизация сравнима с нативным кодом от С++. Хромовский V8 для JS тоже использует JIT, но из-за специфики самого языка (т к динамической типизации) JS заметно позади, потому что под капотом нужно сделать много работы, следовательно машинного кода генерируется больше (для наглядности - можно глянуть через ILDASM сколько груза генерирует dynamic в C#, это - цена удобства). И да, ванильный JS - однопоточный, с глобальным синхро-мутексом.
@@felixfelicis5818 Кстати говоря об производительности, минус JS еще в том, что нет доступа к памяти, как Heap в .net'e. Думаю это тоже сказывается достаточно сильно
@@oliverreviews8496 Это не особо большой минус. Среда выделит тебе память когда надо и сама почистит. А чтобы я лично каждый день вызывал Marshal.AllocHGlobal - то нет, иногда для специфичных задач.
@@felixfelicis5818 Ну сборка мусора есть и в .net'e и в JS. Ну ладно, это все частности. Но в одном мы сошлись, что JS не должен сравниваться с Java и .NET'ом)
(весьма оперативный ответ) Я не думал тут утверждать, что они похоже во всем. Тут шла речь только лишь о том, что и .NET, и Java, и JS не компилируются в нативный код и, обычно, в промежуточном представлении кода не выполняется глубоких оптимизаций того уровня, который, к примеру, делает gcc или Intel C++ Compiler.
Каким образом JS и Node.js в одной колее с .net и Java?
Вроде как JS и node.js однопоточный, и суть работы Event Loop'a используется только в JS. И Java, и .net же многопоточны, а JS - нет. Или я не прав?
Да, плохое сравнение. JIT-компиляторы .NET и java эмитят очень даже производительный код, и в многих задачах оптимизация сравнима с нативным кодом от С++. Хромовский V8 для JS тоже использует JIT, но из-за специфики самого языка (т к динамической типизации) JS заметно позади, потому что под капотом нужно сделать много работы, следовательно машинного кода генерируется больше (для наглядности - можно глянуть через ILDASM сколько груза генерирует dynamic в C#, это - цена удобства).
И да, ванильный JS - однопоточный, с глобальным синхро-мутексом.
@@felixfelicis5818 Кстати говоря об производительности, минус JS еще в том, что нет доступа к памяти, как Heap в .net'e. Думаю это тоже сказывается достаточно сильно
@@oliverreviews8496 Это не особо большой минус. Среда выделит тебе память когда надо и сама почистит. А чтобы я лично каждый день вызывал Marshal.AllocHGlobal - то нет, иногда для специфичных задач.
@@felixfelicis5818 Ну сборка мусора есть и в .net'e и в JS. Ну ладно, это все частности. Но в одном мы сошлись, что JS не должен сравниваться с Java и .NET'ом)
(весьма оперативный ответ)
Я не думал тут утверждать, что они похоже во всем. Тут шла речь только лишь о том, что и .NET, и Java, и JS не компилируются в нативный код и, обычно, в промежуточном представлении кода не выполняется глубоких оптимизаций того уровня, который, к примеру, делает gcc или Intel C++ Compiler.