А точнее, зачем их вообще используют и зачем (в каких ситуациях) лучше их использовать?
Вот посудите сами.
Managed languages:
- Выполняются в виртуальной машине (соответственно, требуют больше инструкций для выполнения инструкций языка)
- Являются интерпретируемыми (выходит из первого пункта), соответственно, требуют больше памяти\ресурсов машины, а значит, программы написанные с их использованием работают медленнее, требуют больше ресурсов, вычислений, и т.п.
В то время как программы, написанные (скомпилированные прямо в машинный код) на "обычных" процедурных\объектно-ориентированных языках, вроде того же С или С++, обладают куда большей скоростью, производительностью, куда менее требовательны к памяти и ресурсам системы.
И почему, к примеру, если я хочу использовать в своей программе систему классов NET Framework, я обязан перейти на виртуальную машину? Что, если я хочу, чтобы мой код компилировался в машинный?
Например, мой одногрупник решил писать на Java, мотивируя свой переход с плюсов на яву тем, что в C++, якобы, нужно иметь дело со "всеми этими указателями" (и он даже ничего не слышал ни про RAII, ни про smart ptr'ы), а в Jave, вот, есть GarbageCollector, и ни о чем думать и заботиться не надо.
В чем же причина такого массового распространения managed языков, какую нишу они занимают, и какая судьба в будущем ждет языки вроде С,C++, Haskell, и т.д.?
Javascript
подV8
же выполняется на виртуальной машине, а я, скажем, хочу, чтобы мой сайт компилировался в машинный код. - Всеmanaged
языки решают определенный спектр задач. И разговор о выборе языка / платформы / компилятора / дополнительных тулз имеет смысл только тогда, когда точно сформулирована задача. А так разговор неконструктивен - ну да,IL, GC, JIT
. Ну да, вC++
не так. - Никто, кстати, не упомянул проNGEN
.