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

Lua как основной язык программирования

 , ,


1

3

Шалом, котята.

Интересует сабж и опыт с ним. Можно ли полноценно использовать Lua как не встраиваемый язык, а именно основной? Интересует сеть, графические интерфейсы etc.

★★★★★

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

Интересует сеть, графические интерфейсы etc.

для всего этого придётся писать биндинги на С, проще тогда сразу на С писать

Harald ★★★★★ ()

Всем спасибо за ответы.

IPR ★★★★★ ()

Под него есть разные библиотеки, даже Qt4. А вот 5 не видел. Многое протухло, многого нет или там нехватка функционала. Нет нормальных потоков, они ещё хуже процессов в Python. Нет нужного API для элементарных вещей, например, чтобы разбить строку на массив. Всё завязано на таблицы, работать с которыми не очень удобно. Отвратительная обработка исключений, требующая написания костылей.

Вердикт: этот язык задумывался как встраиваемый, поэтому он крайне прост, так как предполагается, что нужное API для дополнений будет реализовано в самом софте. Библиотеки в luarocks написаны фанатиками, которые желают всё и везде писать на Lua. Для прикладухи нужно использовать более подходящие языки, где базовые вещи из коробки и поддерживаемые библиотеки.

Lua может использоваться только для совсем простых вещей, когда надо перегнать один файлик в другой. И то с натяжкой, потому как если нужна хоть какая работа с фс, то потребуется сторонняя библиотека.

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

1. Не факт, что он не сдохнет по желанию левой пятки гугла завтра.
2. Я не умаю готовить смузи и не кручу спиннер.

IPR ★★★★★ ()

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

Lua, да, я серьезно хочу на нем писать (комментарий)
http://lua-users.org/wiki/LibrariesAndBindings
https://github.com/LewisJEllis/awesome-lua

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

Из универсальных - однозначно Python. Он тоже скриптовый, его синтаксис ещё проще и удобнее. Python - это всё: веб, прикладуха, андроиды, даже микроконтроллеры, кроссплатформа, огромная года библиотек и фреймворков. Как встраиваемый язык он тоже используется, но реже.

Из не скриптовых - Java. По схожим причинам: Java везде, с ней не пропадёшь.

Из системных - Rust, как наиболее удобный и перспективный. После его синтаксиса будешь понимать C/C++ и легко их выучишь, если потребуется.

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

1. От петона с его тормознутостью хочется блевать. И от обязательных отступов.
2. Джава ето джава.
3. А вот раст посмотрю.

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

1. Не факт, что он не сдохнет по желанию левой пятки гугла завтра.

О, ещё один чувак, которому кажется что гугл развивает гошу.

2. Я не умаю готовить смузи и не кручу спиннер.

Какой у тебя шнурок развяжется, если тебя ебануть палкой по голове?

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

О, ещё один чувак, которому кажется что гугл развивает гошу.

Драть тебя раскалённой кочергой. Первая строчка в педивикии:

Go (часто также Golang) — компилируемый многопоточный язык программирования, разработанный внутри компании Google.

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

Из системных - Rust, как наиболее удобный и перспективный. После его синтаксиса будешь понимать C/C++ и легко их выучишь, если потребуется.

4.2

Manhunt ★★★★★ ()

luajit и нет проблем приклеится к _любой_ сишной либе, нет нужды писать и компилировать обертку - уж очень мощная система FFI

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

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

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

Советуйте, господа отвергающие.

Crystal. Правда, биндинги самому придется писать. Но всяко лучше чем писать их для луа. А так, попса ждет тебя: недожс, пытон.

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

Тормознутость возникает от говнокода, яп не имеет к ней отношения. Производительности Python вполне хватает для своих задач, не следует забывать что это скриптовый язык и для некоторых вещей он не подходит. А если есть тяжёлая логика, её выносят в нативы. Для ленивых написали cython.

Для чего конкретно тебе нужно выучить яп? Глупо сравнивать скриптовые с системными, у них разное применение.

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

О, ещё один чувак, которому кажется что гугл развивает гошу.

Драть тебя раскалённой кочергой. Первая строчка в педивикии:

Go (часто также Golang) — компилируемый многопоточный язык программирования, разработанный внутри компании Google.

КО подсказывает, что форма определения указывает на прошедшее время.

Virtuos86 ★★★★★ ()

Луа мощна лишь с luajit. Но у luajit на данный момент есть ограничения на память, которые обходятся лишь костылями.

int64 ()
Ответ на: комментарий от InterVi

Тормознутость возникает от говнокода, яп не имеет к ней отношения

Динамические языки с экстремально поздним связыванием и диспетчеризацией всего и вся, с тобой не согласны.

int64 ()

Ну так весь прикол Луа в том, что он хорошо присасывается к С и из-за этого быстрый как понос.

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

А правильный ассемблерный код ещё быстрее. И зачем вообще все эти питоны, пыхыпы, джаваскрипты? Их наверно дураки какие-то написали. Вот ты то умный, ты точно знаешь, что однокнопочный интерфейс надо писать ну как максимум на C. И парсер логов тоже на C. Прямо в консоли, когда срочно надо. А то эти удавы на 1 наносекунду медленнее, ими только идиоты пользуются. В энтерпрайзе вообще одни идиоты, ворочают свои миллиарды на всяких Java, когда им бог дал низкоуровневые языки и ЛуаДжит.

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

Ты уже побежал с корабля?

Наоборот, жду когда хорошенько подсохнет. Хотя на руби что писать то? Веб-бэкенд на шаблонах? Смишно. Для замеса текста оно годно, но как то избыточно. Часто проще перловку взять.

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

Нужно язык под задачу выбирать, а не наоборот. Вон сайчас в джобсах работа по переписыванию пистон проекта на С++. С чего бы это, хмм?!

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

А почему же ты тогда сравниваешь производительность без контекста задач?

Скриптовые применяются там, где наносекунды не решают. Даже если нажатие кнопочки отработает на катастрофические 100ms дольше, большинство юзеров этого не почувствуют. Исключения в виде Lua нельзя ставить в пример хотя бы потому, что там Qt5 нет.

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

Ну, прототип решили прокачать до полноценной проги. Что тебя смущает?

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

Даже если нажатие кнопочки отработает на катастрофические 100ms дольше, большинство юзеров этого не почувствуют

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

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

Даже если нажатие кнопочки отработает на катастрофические 100ms дольше

100ms — это очень много.

BceM_IIpuBeT ★★★☆☆ ()
Ответ на: комментарий от InterVi

Твоя цитата:

Как встраиваемый язык он тоже используется, но реже.

Сейчас:

А почему же ты тогда сравниваешь производительность без контекста задач?

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

Не в производительности дело. Python для таких задач избыточен и потенциально опасен. Lua кастрированный, для модов с хорошим API - в самый раз. В случае Lua юзер сам дурак, если поставил 100500 зависимостей и не проверил исходники.

И это не конкретная задача. Какие возможности должны быть у дополнений, что они должны делать?

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

Пролагивания от работы GC можно получить разве что собственноручным шаманством. Не знаю как с удавом, на джаве такое случалось при использовании устаревшего GC, указанного в аргументе запуска. Ты написал бред.

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

Нет нормальных потоков, они ещё хуже процессов в Python.

Corutines не потоки, они для несколько иных задач. А так да, потоков «из коробки» нет, Никаких. Ни нормальных ни ненормальных

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

На lua-users wiki написано как это легко сделать штатными средствами.

Всё завязано на таблицы, работать с которыми не очень удобно.

А вот это чисто субъективное мнение, как и последующий вывод.

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

Я про те, что не из коробки. Хотя хорошо что хоть это есть.

На lua-users wiki написано как это легко сделать штатными средствами.

П - пердолинг с велосипедами

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

Нужно язык под задачу выбирать, а не наоборот. Вон сайчас в джобсах работа по переписыванию пистон проекта на С++. С чего бы это, хмм?!

Там не пистон и даже не Piston, а PyPy был. Хотя зря они взялись за C++, лучше бы на Раст посмотрели. Чем тратиться на гуру-плюсовика, стимулировали бы текущих работников за пару недель поднатаскаться в Расте, и переписывали постепенно проект.

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