LINUX.ORG.RU
решено ФорумTalks

Lua, да, я серьезно хочу на нем писать

 , , ,


0

3

Привет лор. Как-то давным давно, я увидел этот язык и он показался мне достаточно интересным.

Посоветуйте литературу/курсы/видеокурсы по сабжу. Есть ли какой-то пруфит в свяске с Bash'ем?

Спасибо

Deleted
Ответ на: комментарий от DELIRIUM

Когда ты встраиваешь язык в сишку, логично, чтобы базовые вещи были похожи на сишку.

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

ananas ★★★★★
()
Ответ на: комментарий от robby

Вот: тыц

Особой документации я к этой штуке не делал, т.к делаю в первую очередь для себя. Пример использования присутствует (запустите example.bash).

Из вещей, которые не указаны в примере - кроме основного ассоциативного массива с конфигурацией (cfg), в баш импортируется также вспомогательный (cfg_meta) с такими-же именами ключей как и основной. Вспомогательный массив хранит в себе информацию о типах элементов и размерах индексированных таблиц - может быть полезно для организации цикла в баше по элементам таблицы, например.

DawnCaster ★★
()
Последнее исправление: DawnCaster (всего исправлений: 1)
Ответ на: комментарий от DawnCaster

Немного информации по поводу -pre и -post скриптов (выполняются опционально, если указаны). -pre скрипт предназначен для указания каких-нибудь сервисных функций или констант для использования в основном lua-конфиге. -post скрипт предназначен для организации проверок значений (я использую assert) и, возможно, их преобразований. Предполагается, что конечный пользователь правит только основной конфиг, а -pre и -post скрипты идут вместе с вашим проектом.

Основной конфиг может использовать весь функционал интерпретатора lua, кроме зарезервированной таблицы «loader» и некоторых функций начинающихся с префикса «loader_» (в будущем перенесу всё в одну таблицу, если найду время), которая содержит в себе функционал используемый данной системой. Cмотрите loader.lua - там есть также несколько сервисных функций (loader.path.trim_lead_slashes, loader.path.trim_trail_slashes, loader.path.append_slash, loader.path.combine) и таблиц которые можно использовать уже в вашем конфиге.

DawnCaster ★★
()
Последнее исправление: DawnCaster (всего исправлений: 2)
Ответ на: комментарий от DawnCaster

Также в баш импортируется парочка сервисных функций, check_lua_export (есть в примере) и функции для работы с индексированными таблицами get_lua_table_start и get_lua_table_end.

DawnCaster ★★
()
Ответ на: комментарий от kirk_johnson

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

в /sys/module/чтототам/enabled либо 1 либо 0.

1 Включает вибрацию при DT2W 0 Наоборот

Deleted
()
Ответ на: комментарий от HeipaVai1o

ОП, ты не будь таким мудаком.

А я и не собирался, всегда все сорцы публикую под свободными лицензиями.

Deleted
()
Ответ на: комментарий от DELIRIUM

Ну, ты можешь засунуть стейт в монаду.

А монаду себе в жёппу! Аминь.

Говорят, что молодой человек с киркиной аватарки именно так и поступил.

Manhunt ★★★★★
()
Ответ на: комментарий от bread

(Трижды ненужно по одному на каждую актуальную версию этого дерьма, где авторы-дебилы ломают совместимость по желанию левой пятки в стиле гвидона, только еще более упорото).

bread
()
Ответ на: комментарий от Virtuos86

За месяц ни строчки не написал. Было много дел IRL. Я не программист, а иксперд же. Пишу на чем придется, лишь бы был интерфейс к БД. Больше всего на SQL получается, если это можно назвать кодом. Любимый ЯП - руби! Почему бы и нет. Недавно раскурил жс, тоже недурственный недоязычок. Шелл-скрипты еще люблю ваять на тыщи строк (и чтобы никаких башизмов). Скриптопараша рулез!

bread
()
Ответ на: комментарий от Virtuos86

Оффтопик: хорошо подкармливаешь царя, хвалю. Про звезды на гитхабе было ржачно.

bread
()
Ответ на: комментарий от Ceiling_QB

Немного сумбурного описания личных впечатлений от использования Lua в качестве основного языка.

Гибкий язык, позволяющий при необходимости, например, заманкипатчить своё собственное подключение библиотек, сделать себе в несколько строк якобы «ключевое слово class», а ещё в несколько строк добавить туда и наследование (впрочем, лучше воспользоваться одной из готовых библиотек). «Таблицы для всего» удобны для описания данных. Немного мешает отсутствие какого-нибудь короткого объявления функций, но если очень хочется, можно соорудить себе псевдосахар в духе:

l"x, y -> x^2 + y^2"
Если уж совсем хочется сахара, есть Moonscript (который «тот же Lua, но с другим синтаксисом»), если хочется типов, есть Typed Lua. Ещё есть такая вещь, как Metalua, всё никак руки не дойдут попробовать.

Желательно использовать какой-нибудь линтер (например, luacheck), который будет бить по рукам за использование необъявленных переменных и некоторые другие способы поиметь проблем.

Насчёт библиотек: попадаются очень крутые вещи, например, LPeg, облегчающий создание своих собственных наколенных DSL-ей (и не только). А вообще, тут можно найти много интересного: https://github.com/LewisJEllis/awesome-lua

Есть достаточно неплохие инструменты для разработки: ZeroBrane, EmmyLua, Atom (разработчики Defold Engine завезли туда довольно умное автодополнение, которое заглядывает в таблицы и другие модули).

Сообщество не сильно большое, но активное: регулярно появляются какие-то новые проекты на Lua и с поддержкой Lua в качестве встроенного языка, устраиваются мероприятия. Что касается «авторы забили»: в марте на Lua in Moscow Роберто сказал, что работает над следующей версией языка, да и вокруг luajit какое-то движение пошло. В общем, пока живы и умирать не собираемся.

И да, Lua — один из тех языков, в которых не страшно изобретать велосипеды, потому что это интересно. :p

Ceiling_QB ★★★★
()
Последнее исправление: Ceiling_QB (всего исправлений: 1)
Ответ на: комментарий от Ceiling_QB

Спасибо за luacheck! Как то пропустил. Прогнал на INSTEAD и нашел пару бажков. :) К lpeg тоже присматриваюсь, но пока не освоил.

gloomy ★★
()

Я видел как то книгу по lua на русском.

u0atgKIRznY5
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.