
Yuriy
28.04.2017
20:45:15
вообще не напрягают do end then и тд
удобнее чем скобки кстати

Snusmumriken
28.04.2017
20:45:34
Ну, тебя не напрягают, а у меня есть множество знакомых, которых напрягает.

Vadim
28.04.2017
20:45:50
это их личные половые трудности

Google

grinchfox
28.04.2017
20:46:06

Yuriy
28.04.2017
20:46:22
по началу тоже не нравиось.
Ну в общем то да. Дело вкуса
Но от них по крайней мере не рябит в глазах
все как то лаконично получается и однотипно

Snusmumriken
28.04.2017
20:46:31
Во, а ещё у луа кошмарный и очень глупый сборщик мусора, потому что полирует кучу элементов в которых ничего не удаляли. Это медленно.
Во, а ещё - кошмарное хеширование строк.
Если наплодить кучу почти одинаковых строк - скорость работы с ними замедлится раз в пятьдесят или больше: больше строк - медленнее.
Потому что в хешировании участвует всего несколько символов, из начала, конца, и двух точек в середине строки.

grinchfox
28.04.2017
20:48:11
При этом всем Garry's Mod отлично живёт на луа с огромным количеством всего внутри одного луастейта
Там luajit

Snusmumriken
28.04.2017
20:48:37
Ну, кого волнует гмод: это же просто игрушка, которая не волнует никого на реальном производстве.
Ща ещё кучу недостатков у луа найду.

grinchfox
28.04.2017
20:49:15
Да, но это живой пример производительности и удобства

Snusmumriken
28.04.2017
20:50:32
Во, а локальные рекурсивные функции?
local function foo() return foo() end
выдаст ошибку, ибо "foo не найдено". Это приходится обходить через:
local foo
foo = function() return foo() end

Рома
28.04.2017
20:51:14
это и все?
если хоть чутка напрячься, он окажется самым тупым языком!

Snusmumriken
28.04.2017
20:51:50
Вот я как раз ищу способы доказать, что луа - довольно стрёмный язык :3

Google

Snusmumriken
28.04.2017
20:52:11

Yuriy
28.04.2017
20:52:41
мне достаточно его гибкости

Vadim
28.04.2017
20:53:03
производительность игрушки против производительности нефтеустановки?
(для которых Lua и писалсяизначально)

Yuriy
28.04.2017
20:53:26
а он гораздо гибче чем те же Js, php и иже с ними

Snusmumriken
28.04.2017
20:53:30
На самом деле, нет плохих и хороших языков. Кроме эзотерических, типа petooh/whitespace/Malbolge/ALPACA.
Разные цели.

Yuriy
28.04.2017
20:53:33
мне этого достаточно
Ну я не утверждал что он лучший))
Я просто сказал что он мне нраваится)

Рома
28.04.2017
20:54:02
где диапазоны, почему нельзя str[1] вместо str:sub(1, 1), что за язык без поддержки юникода искаропки, как тут адекватно вообще со временем работать, почему везде строка массив, а тут ссылка, что приводит к тормозам

Vadim
28.04.2017
20:54:32

Рома
28.04.2017
20:54:33
а ещё, как можно было так сделать, что только у всех строк есть глобальная метатаблица, но не у таблиц, не у чисел

Vladislav
28.04.2017
20:55:01
if 0 then print('WTF??') end

Рома
28.04.2017
20:55:12
это правильно!

Vadim
28.04.2017
20:55:39

Snusmumriken
28.04.2017
20:55:58
Во-во, доступ к строкам как к элементам таблиц, кстати, делается так:
getmetatable(string).__index = function(self, key)
if type(key) == 'number' then
return self:sub(key, key)
end
return rawget(self, key)
end
('string')[2] —> t

Рома
28.04.2017
20:56:23
а если я захочу доступ к элементам чисел или тру фолса?
во
а могли бы

Vadim
28.04.2017
20:56:43
"элементам тру фолса"?

Google

Vadim
28.04.2017
20:56:47
ШТА?
1) это называется "булевы значения"
2) какие там, нафиг, элементы?

Рома
28.04.2017
20:57:34
можно было бы и придумать, клевая идея

Vladislav
28.04.2017
20:58:04
а можно не стрелять себе в ноги ^^

Плюшка
28.04.2017
20:58:09
Это можно в ruby и crystal

Рома
28.04.2017
20:58:50
больше всего в луа скучаешь по выражениям, они всегда возвращают, а в луа лишь пустота в ответ
массивы поленились отдельно от хешей, но толку, ни у тех, ни у тех нет своих методов
все вроде?

Vadim
28.04.2017
21:01:51
всё есть
просто это как Gentoo. Или git.
тебе дано ровно то, что тебе нужно чтобы сделать то, что тебе нужно

Vadim
28.04.2017
21:03:09
т.е. от тебя нужно лишь немного усилий чтобы собрать себе ровно то, что ты хочешь
без лишних тысячетонных комбайнов

Snusmumriken
28.04.2017
21:07:16
Комбайны уже есть.
OpenResty поставляется с комбайном, есть penlight с расширениями синтаксиса и массивами-объектами и типами данных типа очередей.
Во, даже так:
getmetatable('').__index = function(self, key)
if type(key) == 'number' then
return self:sub(key, key)
end
return string[key]
end
s = '12345'
print(s[2])

Рома
28.04.2017
21:08:11
какой в опенрести комбайн?

Vadim
28.04.2017
21:08:34

Snusmumriken
28.04.2017
21:08:36
В опенрести - там всякие тонны шаблонизаторов/либ для json/xml/DOM и ещё кучи фигни.
Ну, луа-коробка мало чем отличается от js-коробки.
js тоже беден без либ.

Google

Vadim
28.04.2017
21:09:02

Snusmumriken
28.04.2017
21:10:02
Фреймворки для js - тоже продукты третьих лиц.
Это у питона приличная стандартная либа, и она, кстати, хороша отсутствием велосипедов.
http-сервер? Отлично, с тебя три строчки!
Асинхронный http-сервер? Целых тридцать строчек.
Асинхронный с препроцессором? Ну тут уже пятьдесят!

Vadim
28.04.2017
21:10:12
...и?
(это не мешает js даже из коробки быть большим комбайном, чем Lua, кстати)

Рома
28.04.2017
21:12:24
всмысле что там целый дом из коробки в браузере или что там куча нодовых функций в ноде?

Snusmumriken
28.04.2017
21:13:03
Нода - это отдельный разговор.
js искаропки не умеет практически ни во что.
Попробуй почитать про js-api в windows. Да, тут встроен препроцессор Windows Based Script Host.

Yuriy
28.04.2017
21:14:16
Астанавитись! Я всего лишь сказал что хороший язык)))

Admin
ERROR: S client not available

Vadim
28.04.2017
21:14:40
да хороший-то хороший
но у всего есть свои недостатки и своя область применения :)

Snusmumriken
28.04.2017
21:14:59
Во-во.

Рома
28.04.2017
21:15:12
Да враки все это, на годном языке можно во что угодно

Vadim
28.04.2017
21:15:24
да

Snusmumriken
28.04.2017
21:15:25
Попробуй на хаскеле написать драйвер.
Язык - офигенно годный.

Vadim
28.04.2017
21:15:36
можно и в Paint'e Мону-лизу нарисовать

Snusmumriken
28.04.2017
21:15:38
На луа - тоже можете попробовать.

Vadim
28.04.2017
21:15:39
но зачем?

Рома
28.04.2017
21:15:50
Есть языки общего назначения, хаскелл для выворота мозгов

Snusmumriken
28.04.2017
21:15:52
Не а, тут просто не получится.
Скрипты не могут быть драйверами, службами и прочей системной фигнёй.

Google

Yuriy
28.04.2017
21:16:07
Это всего лишь инструмент

Vadim
28.04.2017
21:16:13
линуксовый драйвер вполне можно

Плюшка
28.04.2017
21:16:28
1. Пихаешь интерпретатор в драйвер
2.???
3. Профит

Vadim
28.04.2017
21:16:34
более того, есть пара fuse-драйверов на хачкеле

Snusmumriken
28.04.2017
21:16:47
Вот, разве что так. Но на ванильном интерпретаторе не выйдет (((

Vadim
28.04.2017
21:17:18
вот тебе драйвер на lua ;)

Snusmumriken
28.04.2017
21:17:36
Что это?

Рома
28.04.2017
21:18:05
Интересно, вроде бы у джулии фич больше, и она быстрее, может просто луа устарела и хватит с неё

Vadim
28.04.2017
21:18:06
фиговина, которая склеивает lua-софт с liblua в готовый бинарник :)
и не умеет в llvm4 ;)

Snusmumriken
28.04.2017
21:18:40
А. Не, это будет просто виртуалка с приклеенным кодом. Права те же что у бинарника (юзермод).
Тут нужна оболочка-драйвер над интерпретатором, которая вывешивает в виртуальную машину свою апишку.

Vadim
28.04.2017
21:19:08
ок, luajit -bc
или как там :)

Snusmumriken
28.04.2017
21:20:53
Хм.
Не так всё просто, но да, похоже. Хе-хе.
#include <stdlib.h>
#include <stdio.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
int main(int argc, char *argv[]) {
int i;
lua_State *L = luaL_newstate();
luaL_openlibs(L);
lua_newtable(L);
for (i = 0; i < argc; i++) {
lua_pushnumber(L, i);
lua_pushstring(L, argv[i]);
lua_rawset(L, -3);
}
lua_setglobal(L, "arg");
#include "driverstuff.c"
lua_setglobal(L, "driverstuff");
lua_close(L);
return 0;
}

Group Butler [beta]
28.04.2017
21:51:13
Добро пожаловать в чат pro.lua, Mons! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.
Добро пожаловать в чат pro.lua, Igor! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.