Автор (разработчик одной из аутсорсинговых фирм) решил написать это эссе, когда просматривал почтовую рассылку по языку Lua и наткнулся на бесхитростный вопрос: «А почему язык Lua не слишком распространен?» На этот вопрос существует несколько ответов. Кто-то скажет, что в Lua недостает библиотек классов, но автору ближе другая точка зрения. Возможно, дело в том, что не все любят решать возникающие проблемы самостоятельно. Зачастую Lua сравнивают с Arch Linux – имея при этом в виду, что Lua изначально была уготована судьба быть «языком для меньшинства». И вот несколько причин, по которым кто-то предпочитает работать именно с Lua. Lua можно интегрировать с C/C++
Не могу сказать, что у меня большой опыт программирования, но мне доводилось работать со многими языками – в частности, с Lisp, Scheme, Python, Perl, Bash, VBA, SQL и пр. И ни один из них не работает в сочетании с языком C. Кстати, API C вполне ясен, с ним можно разобраться всего за вечер.
Почему это важно? Во-первых, если у вас есть готовая библиотека классов C/C++, то работать с этим API вам не составит труда. Кроме того, можно написать специальный скрипт, который позволит выполнять функции Lua на языке C – а это значит, что у Lua не будет проблем со скоростью. Если вам покажется, что для решения стоящей перед вами задачи язык Lua недостаточно быстрый – можно просто переписать тот или иной код на C. Конечно, существует далеко не один язык, код которого можно переписать на C, но проще всего такие манипуляции мне удавались именно с Lua.
Lua – быстрый и четкий язык
По сравнению с другими языками Lua значительно эффективнее. Возможно, это объясняется тем, что в Lua применяется виртуальная машина, основанная на регистре, а не на хранилище (storehouse). А может быть, программисты, умеющие обращаться с Lua, просто чертовски профессионально работают. Так или иначе, еще никому не приходится жаловаться на производительность кода, написанного на Lua.
Но если вы всё равно считаете, что код выполняется недостаточно быстро – можете попробовать поработать с LuaJIT. LuaJIT широко известен как динамический язык программирования, код на котором выполняется исключительно быстро. Он потребляет мало оперативной памяти: виртуальная машина требует 125 килобайт, а оперативный компилятор – всего 85 килобайт (в среде с x86-процессором).
Можно многому научиться
Несмотря на то, что язык программирования – не средство обучения как таковое, я думаю, что, поработав с Lua, я действительно многому научился. Например, я прочел статью о том, как работает Lua 5.0 – и наконец разобрался в принципах работы виртуальной машины.
Функциональное программирование
В Lua предоставляется фреймворк для функционального программирования, благодаря которому сам процесс программирования становится гораздо интереснее. В отличие от некоторых других языков, такие элементы, как анонимные функции, функции высшего порядка, лексические замыкания и хорошо организованные хвостовые вызовы (они же – завершающие вызовы, tail calls) – это не просто попытка «подсластить» синтаксис. Правда, в Lua эти компоненты имеют низкоуровневую реализацию. Например, каждый метод в языке Lua представляет собой значение (например, число 2 или последовательность символов «ktr») – это означает, что все методы являются анонимными. Чтобы использовать эти методы, их нужно просто поименовать.
Допустим, можно переприсвоить print:
print = math.sin
Эту функцию можно использовать как «sandboxie» – средство для изоляции других функций. Например, если print – опасный процесс, его можно заменить собственным print или отменить.
Все переменные – табличные
В языке Lua все типы переменных являются табличными. Это касается массивов, хэшей, «модульных» или глобальных переменных и т.д. Это означает, что можно «потребовать» определенные модули, а их результаты интерпретировать как таблицы (ситуация напоминает работу с операторами импорта в языке Python). В Python вы можете «can___import___(‘…’)» некоторые модули, а переменные с возвращаемым значением могут быть просмотрены методом, напоминающим var(module. В Lua можно просмотреть переменные модулей при помощи module[var]. Кроме того, зная Python, вы сможете быстрее изучить грамматику Lua. Даже не придется серьезно задумываться над тем, в чем заключается разница между списком и словарем или пакетом.
Последовательность
Возможно, вы и сами заметили: в Lua, как говорится, все сразу было сделано именно так, как надо. Например, в Lua не было цикла FOR до версии Lua 4.0, которая вышла уже через 7 лет после появления самого языка Lua. Просто в этом языке более популярен цикл WHILE, а грамматика более лаконична. Правда, команда разработчиков Lua сравнительно консервативна, эти люди не любят писать патчи, поэтому Lua развивается не так быстро, как хотелось бы, – но зато верным путем.
Транспортируемость
Я не буду подробно останавливаться на этом аспекте. Скажу только, что Lua можно использовать практически в любых средах. Код Lua компилируется в соответствии со стандартом «Clean ANSI C». Итак, если ваша операционная среда предназначена для работы с языком C, то вы можете здесь же использовать и Lua.
Итак, Lua – очень простой и в то же время мощный язык.
Источник
Читайте также
10 курсов по SQL для лучшего понимания работы с большими данными (май, 2023)
10 курсов по SQL для лучшего понимания работы с большими данными (май, 2023)
Собрали 10 платных и бесплатных онлайн-курсов для изучения SQL. Программы рассчитаны на слушателей, которые только начинают или продолжают знакомство с языком.
10 способов научиться программировать самостоятельно
10 способов научиться программировать самостоятельно
Хотите научиться кодить и освоить алгоритмы? Собрали десять советов с чего начать изучение программирования для тех, кто только начинает своё путешествие в мир программирования и снабдили все это полезными ссылками на курсы для начинающих программистов.
Топ языков программирования по версии IEEE в 2022 году
Топ языков программирования по версии IEEE в 2022 году
Обсуждение
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.