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

25 комментариев
Почему я решил программировать на Lua?
Автор (разработчик одной из аутсорсинговых фирм) решил написать это эссе, когда просматривал почтовую рассылку по языку 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 – очень простой и в то же время мощный язык. Источник

Хотите сообщить важную новость?

Пишите в наш Телеграм

Читайте также

Вышел отчёт 2020 Developer Survey от Stack Oveflow
Вышел отчёт 2020 Developer Survey от Stack Oveflow

Вышел отчёт 2020 Developer Survey от Stack Oveflow

Microsoft открыла исходный код GW-BASIC
Microsoft открыла исходный код GW-BASIC

Microsoft открыла исходный код GW-BASIC

HackerEarth: Go снова назван самым востребованным языком среди программистов
HackerEarth: Go снова назван самым востребованным языком среди программистов

HackerEarth: Go снова назван самым востребованным языком среди программистов

Результаты опроса Python-разработчиков за 2019 год
Результаты опроса Python-разработчиков за 2019 год

Результаты опроса Python-разработчиков за 2019 год

Обсуждение

1

> мне доводилось работать со многими языками – в частности .... с SQL и пр. И ни один из них не работает в сочетании с языком C.

С SQL можно работать из C.

> в Lua применяется виртуальная машина, основанная на реестре, а не на хранилище (storehouse)

Виртуальные машины не основываются на реестре или хранилище.

Anonymous
Anonymous
0

а на чём основывают машины?

1

Например на COM-архитектуре, например на использовании байт-кода, например на внутреннем представлении в ней всего через юникод (в конечном итоге обращении к нативным вызовам ОС) и т.д. и т.п. Но только не на перечисленных в статье двух паттернах проектирования, которые могут использоваться в совершенно элементарнейших примерах в 10 строк кода. Код виртуальной машины - на 100 порядков больше по объему. Это все равно, что автор бы сказал - "автомобиль основан на клаксоне". Причина и следствие напрочь перепутаны.

Anonymous
Anonymous
0

ну если это паттерны проектирования, то моё вам уважение. ага.
>Like most CPUs, and unlike most virtual machines (which are stack-based), the Lua VM is register-based, and therefore more closely resembles an actual hardware design. The register architecture both avoids excessive copying of values and reduces the total number of instructions per function. The virtual machine of Lua 5 is one of the first register-based pure VMs to have a wide use.[6] Perl's Parrot and Android's Dalvik are two other well-known register-based VMs.
http://en.wikipedia.org/wiki/Lua_(programming_language)

0

Где в цитате из вики написано про "реестр или хранилище"?

Anonymous
Anonymous
0

ниже

1

Что "ниже"? Еще раз у вас спрашиваю - где в цитате из вики написано про "реестр или хранилище"? Процитируйте, на какую "ниже" или "выше" смотреть строчку.

0

Вот та же статья в Вики на русском:

http://ru.wikipedia.org/wiki/Lua

Откройте эту ссылку, нажмите в браузере "Ctrl"-"F" и введите в строку быстрого поиска сначала слово "реестр", потом замените это слово на слово "хранилище".

0 (ноль) совпадений. Про реестр и хранилище в статьи Вики про Lua не сказано ничего.

Разгадка в другом. Но вопрос точно не ко мне.

Anonymous
Anonymous
2

конечно в другом, там же нету этих слов, что вы этим хотите сказать?

1

Мои все утверждения в данном обсуждении верны.

А вы путаете слова "реестр" и "регистр".

Anonymous
Anonymous
0

нет, не путаю

alex-poklonsky
alex-poklonsky Director, Technology Solutions в EPAM
2

уважаемый автор. в таком случае, раскройте, пожалуйста, понятия "виртуальная машина основанная на реестре" и "виртуальная машина основанная на хранилище". спасибо

0

registry -> реестр
register -> регистр

Интересно, автор перевода вообще пишет на Lua?

Anonymous
Anonymous .NET Developer в Adform BY
1

бла-бла-бла Lua лучше всего и для всего, потому что я его знаю... статья ни о чём, на мой взгляд

1

> мне доводилось работать со многими языками – в частности, с Lisp, Scheme, Python, Perl, Bash, VBA, > SQL и пр. И ни один из них не работает в сочетании с языком C.

И Perl, и Python замечательно работают в сочетании с С.

Anonymous
Anonymous
-1

так же круто, как луа? конечно нет.
Автор имеет ввиду лёгкость, ведь луа можно сказать, это стандратная библиотека С.

amok
amok Team Lead в Ergalio
1

Угу... Почему он решил программировать на нём, понятно, только не ясно зачем.

Anonymous
Anonymous
0

ну были же приведены плюсы этого языка, этого достаточно, чтобы на нём программировать.

Хотя конечно динамическая типизация и скорость, как-то плохо смотрятся в одном предложении.

-1

Lua офигителен! Афтару респект и всяческая уважуха.. ;)

Anonymous
Anonymous
0

Все эти холивары какой язык программирования лучше бессмысленны.
Язык - это инструмент, который создавался для определенных целей и решения определенных задач. Соответственно у каждого языка есть своя ниша.
Lua, насколько я знаю юзается в геймдеве і как встроенный скриптовый язык в некоторых продуктах.
А забивать гвозди пинцетом, по-моему не логично

Anonymous
Anonymous
0

для чего сделали с++?

Алексей Данченко
Алексей Данченко Инженер-программист в ЛюксСофт
-1

На эту тему есть хорошая книжка одного известного автора :)

Anonymous
Anonymous
0

On Lisp Paul Graham?

1

Собственно тема для чего удобно использовать Луа вообще не раскрыта. Перечислены чуть ли не рекламные бенефиты, которые можно найти в любом языке. Интересно чем занимается аутсорсинговая фирма в которой пишут на Луа?

14

Я решил программировать на lua потому что он простой.Мне 13 лет и я всё понимаю.

Спасибо! 

Получать рассылки dev.by про белорусское ИТ

Что-то пошло не так. Попробуйте позже