Почему я решил программировать на Lua?

29 июня 2012, 13:51
Автор (разработчик одной из аутсорсинговых фирм) решил написать это эссе, когда просматривал почтовую рассылку по языку 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 – очень простой и в то же время мощный язык. Источник
подписка на главные новости 
недели != спам
# ит-новости
# анонсы событий
# вакансии
Обсуждение