Anonymous
они отлажены и протестированы в боевых условиях
Snusmumriken
Редиски и мемкешды уже тоже отлажены и протестированы в боевых условиях : )
Snusmumriken
Как будто только я их на бой выкатываю )))
Anonymous
ну, не знаю та же монго была бажная до последнего
Anonymous
мол ее проекты использовали такие же как редис и мемкашед
Anonymous
а потом срочно платили саппорту монги за багфиксы
Snusmumriken
Монга сложная и поэтому бажная, чем сложнее инструмент тем более бажен он, пока всё не отловили.
Anonymous
нет, она изначально говном была
Anonymous
это как попил бюджета
Snusmumriken
Раз она есть и используется - значит есть ниша : )
Anonymous
просто на хайпе хотели срубить бабла
ShadoWalkeR
Самые боевые - когда базы данных отношения на серваке начинают выяснять? 😃
Snusmumriken
"- Это моя память, я первый её зарезервировал!" "- Memory exception, сучки!" "- Сук, сервер упал!"
ShadoWalkeR
"Остаться должен только один!"
ShadoWalkeR
Нууууу... у кого пурген для сахара и ключи от туалета, тот и прав😈
Snusmumriken
Нууууу... у кого пурген для сахара и ключи от туалета, тот и прав😈
Если невтерпёж - можно и в кухонную раковину, главное - запереться и проветрить. И никому не говорить. Секретики : )
ShadoWalkeR
Ну пока остальные админы отсутствуют, правый накатывает те решения в прод, которые он видит как художник😂
mva
😢
> JavaScript's ecosystem is awesome. ну-ну. Как там та хренота называлась когда все дружно соснули? leftpad?
Snusmumriken
это фиаско https://realmensch.org/2016/05/28/goodbye-lua/
Я читал эту фиговину в свой день рождения два года назад. Ну сбежал один чел потому что ему что-то не понравилось, ну что поделать. Сколько было статей по поводу "JS/Python/C/C++/Java/C#/Obj-C/[any_lang] - это фиаско, не таким я его хотел видеть!", что пересчитать не выйдет.
ShadoWalkeR
В прямых руках любой инструмент хорош
ShadoWalkeR
Но все же нельзя отрицать что у lua есть недостатки
Anonymous
Дело не в недостатках луа, ьут просто человек пишет жаваскрипт экосистем из авесоме + агитирует за ссаный обрубок под названием тайпскрипт
Anonymous
Это как бы диаггноз уже, вот эти две фразы
Snusmumriken
Но все же нельзя отрицать что у lua есть недостатки
Если бы у нас был язык без недостатков, мы все бы писали бы на нем, и остальные ЯП были бы не нужны.
Co(n)stantine👨‍🔬
это точно)
Snusmumriken
Вы оскорбляете чувства нонкомформистов
а) Чем? б) Если нонкомформисты всё таки от этого оскорбляются - так им и надо.
ShadoWalkeR
Если бы у нас был язык без недостатков, мы все бы писали бы на нем, и остальные ЯП были бы не нужны.
Если бы у бабушки... ))) Моя ремарка была скорей к тому, что в статье помимо топления за *script, есть обоснованная критика луа.
ShadoWalkeR
luarocks, упоротая конкатенация строк, и хтонические таблицы - которые в себя поглотили почти все классы
ShadoWalkeR
А еще неявная типизация и слабая стандартная билиотека)
ShadoWalkeR
Я как то попробовал через нее с файловой системой поработать
ShadoWalkeR
ShadoWalkeR
Упоротая в том смысле, что синтаксис выбрали две точки)
ShadoWalkeR
Все же таблицы оказались сильно переусложнены за счет того что они и массивы и словари и типаооп
ShadoWalkeR
В squirrel это разбили на отдельные сущности)
Snusmumriken
1. Бедная стандартная библиотека - это хорошо, но могли бы заняться официальными подключаемыми модулями, крутыми и отлаженными, как LPEG, только в большем количестве областей. Они "не стандартные" но "от разрабов языка", типа появляется хоть какой-то стандарт. 2. Сборка мусора - довольно упоротая, слишком много елозенья сборщика мусора без необходимости, особенно когда у нас уже есть тонна объектов. 3. Мало современных-молодёжных синтаксических фич (особенно всяких стрелочных лямбд `a, b => a + b') и мелкой функциональщины. 4. Отсутствие аналога PEP8, в результате народ калякает кто во что горазд, а чем меньше мозгов тем сложнее и упоротее это получается. Ну, или сишники лезут в луа и делают миллиард глобальных функций в разных модулях, и тонну констант. > синтаксис выбрали две точки Это осознанный ход. В lua, '8' + '5' == 13. Если строка приводится к числу, она работает как число при арифметике. Иначе получишь мясо как в JS.
Snusmumriken
Snusmumriken
> таблицы оказались сильно переусложнены Ну такое. Я бы не трогал таблички, потому что они ШИКАРНЫ. Единственное неприятное - в ООП тип остаётся табличкой, поэтому приходится заводить поля класса типа __type. Таблички, имхо, это неплохой пример не плодения сущностей без необходимости, очень не хватает подобной штуки в нормальных языках. Швабодка! Переусложнённость только в метатаблицах. В остальном - отлично.
ShadoWalkeR
JS: 1 + 1 = 11 11 - 1 = 10 )))))
ShadoWalkeR
На неподготовленного человека они сваливаются как кирпич на голову 😃
Snusmumriken
Ну и пущай использует как знает, пока учится. Как словарик или массивчик. Я так и делал!
ShadoWalkeR
А пример выше с '5' + '8' = 13 как раз изза нестрогой типизации и неявного приведения
Snusmumriken
Я сам это выяснил сравнительно недавно, всю жизнь явно приводил и буду продолжать приводить : )
Snusmumriken
Но две точки конкатенации - это пример ХОРОШЕГО дизайна чётко определённого поведения, пусть и непривычно.
Snusmumriken
Ну, знаешь? Когда результат твоих действий очевиден - это хорошо, разве не так?
ShadoWalkeR
Неявное приведение как раз хуже - везде приходится проверки и приведения типов делать, чтобы быть уверенным в коде
Snusmumriken
Где-то валялась функция проверки типов: function foo(a, b, c) check(a, 'n', b, 's', c, 't?') end
ShadoWalkeR
Еще один пример бедности стандартной библиотеки)
ShadoWalkeR
Хотя там вроде было чтото для проверки типов
Snusmumriken
Конечно же есть type(5) ==> 'number'.
ShadoWalkeR
)
Snusmumriken
Но опять таки, при нормальной грамотности разраба - он будет чисто и нормально (и с комфортом) калякать на луях всё что хочешь. Остальное - рассуждения на тему "почему на луа нельзя биться головой о клавиатуру и получать поддерживаемый продукт?(((".
ShadoWalkeR
Ну для меня это дико слегка после языков с нормальной типизацией
Snusmumriken
Ну для меня это дико слегка после языков с нормальной типизацией
Ты имел ввиду, со строгой статической, да? : ) Я всё ещё могу тебе рассказать мильён причин, почему статическая не нужна.
Dika
var x * 3; невалидно
Snusmumriken
Но на самом деле, статическая таки нужна, но только в некоторых условиях, поэтому я предпочёл бы опционально статическую.
ShadoWalkeR
Ну в том же С++ и ruby не совсем строгая - они float и int позволяют друг к другу приводить. А вот преобразования строка<->число уже нужно явно делать
ShadoWalkeR
А и жутко бесит глобальность переменных по умолчанию
Snusmumriken
А и жутко бесит глобальность переменных по умолчанию
Ой, вот тут можешь научиться в setfenv, и следить за локалами только внутри функций.
Snusmumriken
Но если ты пилишь библиотеку или модуль, следить за локалами почти не надо: local lib = {} function lib.foo(a, b) return a + b end return lib Ну, типа функции присобаченные к lib имеют ту же область видимости что и lib. Не надо лишний раз писать local и следить за этим.
Nikolay
А и жутко бесит глобальность переменных по умолчанию
для конфигов и коротких скриптов, задающих логику взаимодействия компонентов - как раз норм.
ShadoWalkeR
У меня в астериске на нем логика. В неумелых руках это один файл на пару тысяч строк 😃
Nikolay
конкатенация двумя точками - везде бы так. мне как раз не нравится плюс в питоне и JS.
Snusmumriken
У меня в астериске на нем логика. В неумелых руках это один файл на пару тысяч строк 😃
С питоном, сишкой, шарпом и чем угодно ещё - было бы абсолютно то же самое. Это уже человеческий фактор.
Nikolay
таблицы 👍
mva
и никто не озвучит маленький футпринт рантайма :(
ShadoWalkeR
Да я знаю - я тут в руби гем для общения с AMI интерфейсом астериска переписываю, потому что там такой лютый трэш в чужих поделиях
Snusmumriken
Говнокод, говнокод никогда не меняется.
ShadoWalkeR
https://www.rubydoc.info/gems/asterisk-ami/0.0.4/Asterisk/Connection#events-instance_method Метод events советую заглянуть
bebebe
https://www.rubydoc.info/gems/asterisk-ami/0.0.4/Asterisk/Connection#events-instance_method Метод events советую заглянуть
а вы не могли бы на пальцах рассказать что в нем не так?
ShadoWalkeR
Там еще в функции парсинга того что этот метод возвращает не меньшее говно
ShadoWalkeR
Оно за пару часов выжирает весь лимит памяти в 512 мегабайт и падает
ShadoWalkeR
Ну и вложенные циклы)))
Snusmumriken
Красиво. Такую вложенность я обычно убираю через досрочный return. Ну, типа function foo() if not (good_condition) then return nil, 'bad condition!' end if (something_bad) then return nil, 'something is bad!' end do something nice end return nice end Типа точно проверяем что всё ок, и делаем чистый код в конце, который делается "как на лучший вариант стечения событий". Но мы уже как бы всё проверили.
mva
я, кстати, никогда не использовал парадигму do ... return за пределами циклов
mva
ибо не очень понимаю профита её использования по сравнению с неиспользованием :D