Светомеч
Но Scala и есть производная от Java
Светомеч
Scala и Kotlin скорее как соперники
Светомеч
Т.к. человек если уж и бросает старенькую джаву, но ему до сих пор нужно поддерживать JVM, то выбирает либо скалу, либо котлин
Светомеч
Сильное утверждение
Светомеч
Проверять я его, конечно, не буду
Snusmumriken
Ура! Языкосрач! : )
Светомеч
Нет
Светомеч
Я тоже за котлин
Светомеч
Но скалу со счетов рано убирать, имхо
Snusmumriken
Ну, луа вон тоже очень узко применяется, и её всякие хипсторы типа меня используют, и говорят как это круто. Но мейнстримом, увы, не станет.
Snusmumriken
Я в общем-то постил с мыслью "а не намутить ли свой мунскрипт-typescript, с нормальным лоадером скриптов и парсером ошибок, шоб точно указывал строку и стактрейс", как расширение синтаксиса, ибо меня напрягают некоторые длинные вещи в lua.
Snusmumriken
Во, посоны, важно ваще мнение! Статическая или динамическая типизация, и почему?
Светомеч
А зачем свой мунскрипт
Светомеч
Если есть мунскрипт
Tverd
статика для компиляторов, динамика для интерпретаторов )
Snusmumriken
Хех, близко. Моё мнение - динамическая, но иногда - статическая. Особенно когда лень проверять типы кучи аргументов, или нужны нормальные перегруженные функции.
Светомеч
Но джаваскрипту я однозначно предпочту тайпскрипт
Tverd
Хотя ничего не мешает намутить и то и то... когда надо - указывать тип
Roman
Самый лучший вариант - динамическая с возможностью статические вещи на сишечке писать
Snusmumriken
Вот, что-то типа этого я и хотел в луях: function foo(num: x, str?: y, z) ... end
Snusmumriken
И мне нехватает в луях котлинового data = foo?.bar?.value or 'default_value'
🦥Alex Fails
напиши свой
Snusmumriken
Кстати, в процессе изготовления - путевая библиотека. Шоб в любом скрипте можно было написать: p = path.getCurrentFolder() или lib = path.require('script') Или даже: lib = path.require('c:/bin/script') И `data = path.readfile('file.txt')'
Snusmumriken
Ну, я городю такое: cap_url = type(r) == 'table' and r.data and r.data.captcha and r.data.captcha.url, и меня это слегка напрягает.
Tverd
ну понятно, это уже обсуждали...
Tverd
тут либо расчехлять luamacro, либо допиливать мун, ну или для особых - писать свое )
Snusmumriken
Ну, карочи можно намутить функцию типа: value = table.extract(t, 'key1', 'key2', 'key3') И огромный скрипт как сборник тулзов, для стрелочных функций: func = f'x, y => x + y' Для массиво-функциональщины: arr = map({10, 20, 30}, f'x => x + 10') Для проверки типов: function foo(x, y, z) checkType('n', x, 's', y, 't?', z) end И всего такого.
Tverd
ну кстати не самое плохое решение. ты про x,y,z = table.extract(t, ...)
Tverd
Хотя это есть в мунскрипте
Alejandro Jeditobe
Совсем страх потеряли)
Snusmumriken
Где?
Alejandro Jeditobe
Вы тут )
Alejandro Jeditobe
Размножились )
Snusmumriken
у тебя кэшируется эта функция после парсинга?
Ясное дело. Пока сборщик мусора не соберёт, или можно на постоянку.
Tverd
гуд
Tverd
а типа в глобале _G['x, y => ...'] = <function>
Snusmumriken
local template = 'return function(%s) return %s end' local buffer = setmetatable({}, {__mode = 'kv'}) local function arrow(expression) expression = expression:gsub(' ', '') if buffer[expression] then return buffer[expression] end buffer[expression] = loadstring(template:format(expression:match('(.-)=>(.*)')))() return buffer[expression] end foo = arrow'x, y => x + y' print(foo(10, 20)) --> 30 Вариант с кешированием.
Tverd
ну вот не у всех луаджит с 5.3 поддержкой... и не луа 5.3
Snusmumriken
Ты про что?
Tverd
про {__mode = 'kv'}
Tverd
но идея хорошая
Snusmumriken
Tverd
да ладно
Snusmumriken
В 5.1 отсутствует __gc, но впиливается хаком с newproxy, и __pairs/__ipairs.
Tverd
это понятно, но вялые таблицы...
Snusmumriken
Я люблю вялые таблицы! Когда они перестают быть нужными, они очищаются! А сборщик мусора раз в несколько минут/часов очищает мусор. Согласись, генерировать маленькую функцию раз в несколько минут/часов - это не напрягает пеку.
Tverd
не, эта штука полезная, не спорю, но я где-то вычитал и вбил себе в голову, что они мне на 5.1 не доступны...
Snusmumriken
У меня обратная проблема: после love2d, я почему-то думаю что мне в обычной lua доступно значительно больше, чем в действительности.
Tverd
это бывает )
Snusmumriken
У меня такое ощущение, что от обилия синтаксического сахара я скоро получу синтаксический диабет. И мне понадобится синтаксический инсулин вида "десять лет программирования на брейнфаке".
Roman
брейнфак это синтакцический перец для сишки
Snusmumriken
Она лезет в ядро, ты в курсе? То есть надо полностью переписывать либы, на луёвые вызовы вместо питоновых.
Snusmumriken
LuaState и аналог у питона.
Snusmumriken
Дык разное всё, и модель стека разная. Переписывать дофига.
Snusmumriken
А иногда - либа дёргает lua-функции из сишки, для каких-то целей. А если эта функция работает через сишное ядро луа, то и результат должен быть соответствующим. Такое тоже бывает. В обратную сторону аналогично.
Snusmumriken
io, table, string? Или модульной - вызываемой через require (сидящей в package.preload)?
Snusmumriken
Дистрибутив станет весить 100500 мегабайт, а для твоих целей всегда есть luarocks/luapower/luaforwindows.
Snusmumriken
luasocket - практически стандарт. Бери и ставь.
Snusmumriken
Ставишь либы через luarocks. Там приличная база, и оно почти так же как pip, сразу компилит тебе всё.
Snusmumriken
Спроси у Роберто Иерузалимски, почему он не делает большую стандартную либу.
Snusmumriken
У них политика супер-лёгкости языка, он не воспринимается как самостоятельный.
Tverd
вот! не делайте из луа язык общего назначения )
Snusmumriken
Хех, а я - самый главный вытаскиватель.
Snusmumriken
Так и происходит, только либы делает комьюнити.
Snusmumriken
В общем, считай луа - домашним проектом. Там нет тех мощностей разработчиков языка и спонсоров как у питона, потому что пиара особо нема. У питона такая огромная стандартная либа потому, что Гвидо был много кем спонсирован, раскручивался в своё время до опупения и всё такое.
Roman
Не надо его недооценивать, пожалуйста, есть все необходимое и намного больше, намного больше, много чего есть. Один минус - часто написано коряво и с ошибками, но это детали.
Roman
лол так а чего не хватает?
Roman
честно, не замечал особой нехватки какой-то библиотеки
Snusmumriken
"Его" - кого? Луа? > и намного больше, намного больше, много чего есть. То самое забавное построение. То есть, более-менее понятно, но блин : )
Roman
может это все мой дух велосипедиста, не нужны микролибы для чесания левой пятки
Roman
Я не знаю, какого рода Луа, склоняюсь, что женского, но использую любые роды)
Roman
а знаешь ли ты, какие в португальском роды?
Snusmumriken
Во французском - la lune, сомневаюсь что в других латинских языках она ещё мужского.
Snusmumriken
a lua - женский. o lua - был бы мужской > o estudante, a estudante студент, студентка, а гугл-транслейт предлагает a lua к луне.
Roman
pa'QIS на клингонском, это важно