ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Воскресенье
27 ноября
1242159 Топик полностью
lloyd (23.09.2022 08:33, просмотров: 131) ответил Kceния на Я не рассуждала, а задала корректный вопрос: "Чем этот Lua хорош?". А то, что при первом знакомстве этот язык мне не понравился (после С++ постоянно синтаксические ошибки на нем сажаю), то это информация обо мне. Скажем, javascript и php реакции отторжения меня не вызывают, хотя они тоже интерпретаторы. А по поводу вашего ответа хочу попросить вас уточнить, что именно делает его быстрым? И если всё дело в компиляции в байткод, то на каком этапе это происходит? Скажем, я
> после С++ постоянно синтаксические ошибки на нем сажаю 

Это просто вопрос привычки, язык тут ни при чем. Добавьте к списку bash и Tcl, и переключайтесь между ними каждые 10 минут


> javascript и php реакции отторжения меня не вызывают

А зря, это примеры просто невыносимо-отвратительных языков программирования. Говорят сейчас пых немного исправляется, но 10 лет назад это было позорище


> что именно делает его быстрым

Если про ванильный lua - то очень легкий рантайм. Интерпретатор lua весит около мегабайта, рантайм никакущий, там просто нечего инициализировать. Если про luajit (а часто пользуются именно им) - то это сильно оптимизированная виртуальная машина, написанная на асме, которая является трассирующим jit-компилятором (то есть оптимизация идёт на основании реальной загрузки программы и самым неожиданным образом). Luajit не скован бинарной совместимостью C/C++ программ, поэтому легко может инлайнить методы из разных библиотек, оптимизировать их по самое не хочу, а то и вовсе вызов до константы схлопнуть.


> всё дело в компиляции в байткод, то на каком этапе это происходит?

Компиляция в байткод происходит на этапе парсинга файла исходника. Более того, её можно пропустить см. luac