1. Lua / Говнокод #28273

    −3

    1. 1
    Блять, какое же lua говно блять...

    Запостил: kcalbCube, 06 Июля 2022

    Комментарии (82) RSS

    • В своей сфере вполне себе. Ну, то есть там даже конкурентов и нет. Я вот на неё перешёл для конфигурации неовима, вполне себе.
      Ответить
      • какого хуя вместо for v in list мне нужно использовать for i, #list do local v = list[i] ?
        Ответить
        • Lua - это нереально ебанутая смесь Go и Паскаля.
          Ответить
          • От паскаля там только begin и end.
            На самом деле, вполне годный язык, если бы не регистрочувствительность. На нем написан чуть больше, чем весь игровой движек "Сталкера".
            Ответить
        • никакого
          local languages = {'lua', 'ruby', 'perl', 'c', 'c++', 'awk', 'c#'}
          for _, value in ipairs(languages) do
            print(value)
          end


          Это идеоматичкский обход массива в луа. Можно конечно и ручной фор делать, но зачем?

          Кстати, кто сходу вспомниит отлоичие pairs и ipairs, тому билет в каталический университет Сан Пауло, в Бразилию, где много диких донов Педру
          Ответить
          • ЕМНИП ipairs обходит только числовые значения ключей, а pairs — все.
            (ЛУА — совершенно нецарский язык, потому что в нём нет традиционных массивов, только ассоциативные, называемые таблицами)
            Ответить
            • Верно, причем pairs не гарантирует порядок.

              В lua вообще есть только один нескалярный тип: таблица. Она может быть неймспейсом, объектом, структурой, ассоциативным массивом, или массивом обычным.

              Там даже есть понятие "таблица с дрыкам", когда ты в массивную таблицу напхал ключей.

              Но мы прощаем это Луа (а ПХП не прощаем) потому что луа -- няшечка
              Ответить
              • с пхп мы не прощаемся потому что он никак не может блядь сгинуть
                Ответить
                • Через годы
                  Через рассстояния
                  На любой планете, в стороне любой
                  Пыху не скажешь "досвиданья"
                  Смега не прощается с тобой
                  Ответить
              • Я уже когда-то упоминал, что если в языке нет статической типизации, то в принципе, всё, что ему нужно — словарь и возможность класть функции в него. Всё остальное ООП банально строится на этой основе. Что ЛУА и подтверждает.
                Ответить
                • Ну тоже самое делали Perl (точнее там в хеше хранишлись поля, а функции блессались с пакетом), или preES6 JS.

                  Свинтаксис правда не очень приятный, но и само по себе ООП тоже так себе.

                  Кстати, в каком языке самый всратый ООП?
                  Ответить
                  • в 1С
                    Ответить
                  • >Кстати, в каком языке самый всратый ООП?

                    ECMA-262 5.1, если брать из жопулярных.
                    Ответить
                    • Этоправда. Но должен признать, что и перл тоже не баран чихнул в этом вопросе
                      https://www.perltutorial.org/perl-oop/
                      Ответить
              • > Но мы прощаем это Луа (а ПХП не прощаем) потому что луа -- няшечка

                Biased.
                Ответить
      • tcl еще можно встроить, но от него у хипстоты крыша поедет куда больше
        Ответить
    • Подтверждаю.
      Ответить
    • В любом языке (кроме ПХП) есть что-то хорошее. В lua это:

      * легкость встройки в си
      * минимальное количество типов
      * почти декларативный синтаксис таблиц
      * корутины
      * возможность обращаться foo.bur.baz вместо ["foo"]["bur"]["baz"]
      * годная книжка от создателя
      * неебически маленький размер
      Ответить
      • > * легкость встройки в си
        > * минимальное количество типов
        > * неебически маленький размер

        Это делало его очень популярным встраиваемым скриптовым языком для игр. Особенно интероперабельность с С (а, соответственно, и с С++) на которых написаны чуть более чем все адекватные движки для игр.
        Ответить
        • Причем он еще и компилируется любым компилятором начиная чуть ли не с C89.
          Я как-то с ним игрался, и там чуть ли не файлик ``lua.c`` надо было подсунуть, вызвать три функции, передать туда текст модуля, и потом забрать результат.
          Ответить
    • lua забкесь
      local width = love.graphics.getWidth()
      local height = love.graphics.getHeight()
      local function loveupdate()
        local angle = 45
        local speed = 90
        points = calcTrajectoryPoints(speed, angle, 0.4)
        position = (position or 0) + 2
        if position > width-25 then position = 0 end
      end
      
      local start = {x = 20, y = height-25}
      function lovedraw()
        love.graphics.setColor(0,255,0,255)
        love.graphics.rectangle("fill", position, start.y+-15, 30, 15)
        love.graphics.print("FPS: "..love.timer.getFPS(), 50, height-25)
        love.graphics.setColor(0,0,255,255)
        for i=1, #points do
          local radius = (points[i].vx + points[i].vy) * 0.1
          if (radius < 3) then radius = 3 end
          love.graphics.circle("fill", start.x + points[i].x, start.y - points[i].y, radius)
        end
      end
      
      function love.update() pcall(loveupdate) end
      function love.draw() pcall(lovedraw) end
      Ответить
      • function love.update() pcall(loveupdate) end
        local height = love.graphics.getHeight()


        механическая любовь
        Ответить
    • -
      Ответить
    • Согласен.

      Луа нетипизированное говно - очепятолся - получи новую глобальную переменную, записал не тот тип в переменную - приятной отладки.
      Инструменты для Луа Говно - изучать код на луа та еще жопа. Немного скрашивают IDE JetBrains с плагином EmmyLua.
      Сишное АПИ луа говно - без либ вроде sol2 нихуя путного не сделать.
      Ответить
      • Это ты пишешь из нашего мира, где миллоны хомячков продвигают python, javascript и json с еще более хуёвыми ТТХ?
        Ответить
        • я пишу по своему опыту работы с Луа.
          Спасибо, я наелся этого дерьма на работе.
          Больше не хочу.
          Ответить
          • Просто твои аргументы (вполне валидные) относятся к любому скриптоговну, которым забито сейчас 80% разработки.

            А куда ты перешел с Lua? на чем пишешь?
            Ответить
            • основной язык лет 10-25 как - C++

              Но по работе приходится погружаться с головой в виде Луа скриптов
              Ответить
              • ну окей, вот мы написали движок на С++, а на чем писать логику игрушек гейм дизайнеру?
                Ответить
                • > а на чем писать логику игрушек гейм дизайнеру?
                  Сделай визуальный редактор. Нарисовал плоскость-триггер, протянул стрелочку к спавнеру, кликнул на него, выбрал из выпадающих списков параметры — бах, готовая логика.
                  На подобной хуйне строился Дум и игры на его движке, игры на Build, SeriousEngine так работал...
                  В 4 героях такая хуйня в редакторе, В варкрафте 3/старкрафте 1/2 подобная поебень с триггерами. Age of Empires 1/2...


                  Напиши свою скриптушню, ёба! Следуй примеру Близзард.


                  Вкрути питухон, как в Цивилизации.
                  Ответить
                  • в говномирование мышкой я не верю, питухон точно не решает описанных Дарком проблем, насрать свой SCUMM я конечно могу, но зачем?
                    Ответить
              • > Но по работе приходится погружаться с головой в виде Луа скриптов

                то есть ты пришел сюда гугля рабочие вопросы?

                > основной язык лет 10-25 как - C++

                неплохой разброс!
                Ответить
                • И правда

                  Я чото как-то даже не подумал, что С++ в 2012 (C++11 под 32битную а то и 64битную ОС, и стат анализатор) и в 1997 (достандартовые темные времена без юников и шариков, зато может быть с ближними и дальними указателями под дос и без всякого анализа) это совсем разные языки и совсем разный экспериенс

                  Разница примерно как между собрать ядро в 1997 и поставить убунту в 2022
                  Ответить
                  • А помните, STL не было, а была куча разношёрстных библиотек?
                    Ответить
                    • я бомню, что в пормант си были стримы и были какие-то коллекции.. че-то list, btree, какие-то очереди. Называлось вроде BIDS, но я тогда не понимал почему это отдельно, и думал, что это часть языка
                      Ответить
                    • зы:
                      нашел

                      во-первых багор переезда с BIDS на STL
                      https://community.embarcadero.com/article/technical-articles/162-programming/14598-moving-from-bids-to-stl

                      во-вторых сам бидс
                      http://www.bitsavers.org/pdf/borland/borland_C++/Borland_C++_Version_3.1_Programmers_Guide_1992.pdf


                      блядь как я теку от таких мануалов

                      почему блядь теперь таких не пишут?
                      Ответить
              • Ебать ты олд
                Ответить
            • Присматриваюсь к AngelScript
              Ответить
              • хм

                а вы там реально игры на плюсах девелопите?

                >All methods (including constructors and destructors) are virtual.
                фу (говорю как джавист)

                остальное ок для скриптушни, даже холрошо
                Ответить
                • У нас не игровой проект.
                  Скорее всего его можно описать как сервис приложений, которые пишутся на скриптах.
                  Основной софт и скрипты крутятся на железе заказчика.
                  Ответить
                • На С++ разрабатывается низкоуровневая логика.
                  Дальше на основе предоставленного АПИ скриптовики реализуют нужную логику.
                  Ответить
                  • а там прямо суперважен перформанс?
                    Нельзя логику вынести в отдельный процесс, и пусть хоть на VBS пишут, а интегрироваться через протобуф?
                    Ответить
                    • Я не являюсь архитектором в проекте - я рядовой кодер.
                      Архитектор хочет Луа и ничего другого не признает =\
                      Ответить
                    • protobuf/grpc - говно. (личное мнение) - сложно интегрировать в систему сборки да и реализация нужного функционала на них совсем не тривиальна.
                      Ответить
                      • все то у вас там говно, на чем же интероп делать?

                        не понял про систему сборки, что сложного?
                        Ответить
                      • Опровергаю. Очень удобная питушня. Описал спеку, нахуевертил приложение на го, клиент на плюсах и интеграционные тесты на питоне. Помимо этого есть ещё другие клиенты (написанные не мной).

                        А вы ебитесь дальше со своими JSON/XML.
                        Ответить
                        • что мешает сделать ровно это на json/xml?
                          Ответить
                          • Стат типизация удобнее.
                            Автоматически сгенерированные классы для всех языков.
                            Удобная схема.
                            Автоматически сгенерированные клиент и сервер со всеми методами API.
                            Ответить
                            • все это есть в soap
                              Ответить
                              • А в туалете вечно нет мыла.
                                Ответить
                              • верно. Но SOAP хипстеры отменили соап

                                Теперь у них ошибки типа "я неправильно назвал поле, и получил вместо данных undefined"
                                Ответить
                                • Посмеялся, спасиббо ))))))))))
                                  Ответить
                                • Все это есть в openapi
                                  Ответить
                                  • Верно. Но кто в него умеет?

                                    Тут получилось как с ПХП: __теоретически__ на ПХП можно писать нормальный код, модульный, версионируесый, с юнит тестами, с разделением представления и модели, использовать пакетный менеджер , и не использовать SQL инъекции

                                    А на самом деле 101% пхп программистов так не делает


                                    С JSON примерно тоже самое

                                    Я недавно опять видел как жаваушок писал на коко
                                    json.getString("foo")?.getInt("bar")

                                    и ничего блядь у него не дрогнуло
                                    Ответить
                                    • >json.getString("foo")?.getInt("bar")

                                      Всегда так делаю.
                                      Ответить
                                      • У меня знакомые тоже так делают.

                                        Я однажды хотел сказать "SOAP", успел только сказать "SO", как меня обложили хуями: медленно, устарело, был бэд экспириенс, не нужно, только не SOAP, SOAP is so 2005 и пр

                                        Ощущение было, словно я про С++ сказал джавушку
                                        Ответить
                                        • Wow
                                          So app
                                          Very software
                                          Much program
                                          Ответить
                                        • > SOAP

                                          Я только что покушал. Зачем ты заставил меня это гуглить?
                                          Ответить
                                          • ну вот видите, пожалуйста, о чем я говорил?

                                            Как говорят современные программисты: "зачем делать что-то автоматически, если это можно сделать вручную?"
                                            Ответить
                                          • Что выберешь: SOAP from table или...
                                            Ответить
    • Хипстокал продолжает захватывать мир

      1. IT использует слак робота чтобы узнавать об ошибках, и так читает логи
      2. В ошибке есть скажкем ":abc:"
      3. Один из тысяч питухов в слаке делает эмодзи "abc" и рисует там хуйню (скажем рикроллинг)
      4. Все. Теперь в логах у IT сплошной never ever let you go или что там

      И это блядь не анедкот, это IT-2022
      Ответить
      • Ничего не понимаю. Юникод дал создателям мессенджеров сотни эмодзи разных форм и расцветок. Используй, используй Юникод — не хочу, хочу жрать говно, хочу заменять сочетания буков картинкой.

        Это мессенджеры? Это мессенджеры? Пидоры, блядь, говно жрут.
        Ответить
        • там можно кастомного говна нарегистрироватть


          короче, нихуя не изменилось со времен обрезания восьмого бита в SMTP и "белосежка и семь гомов" сами знаете где
          Ответить
          • Помню «Н» заглавную в «ФИДО»; помню картавую клавиатуру, на которой «р» не вводится; читал также про платформы, на которых есть проблемы с «щ» и «ъ». До стандартизации cp 866 последние 16 кодпоинтов были забиты всякой фигнёй, поэтому в некоторых русификаторах нельзя было ввести «Ё» и «ё». Да и после появления cp 866 ещё десятилетия эти кривые русификаторы гуляли.
            Ответить
        • Как мне сделать смайлик рик роллера, если его нет в юникоде?
          Ответить
          • Использовать PUA — private unicode area — кастомный шрифт со своими смайликами.

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

            А вообще я не против гипертекста (HTML, BBCode, мрак-даун, вики и т. п.), но должно быть явное переключение между WYSIWYG и между режимом правки исходного кода. В любом случае должен быть способ ввода текста, совпадающего с кодами разметки (вроде :abc: из примера), но пусть его мессенджер эскейпит.
            Ответить
            • а вообще сосуществование анимированных смайликов и логов серверов в одной системе вам ок?

              Это всё часть общей проблемы обсмегмивания мозгов и захипстятчивания мира.
              Когда тебе всместо мануала дают видео это та же самая проблема
              Или когда на "JavaScript" пишут...
              Ответить
            • Тормозиты почти нигде не работают, а Potentially Unwanted Application не пропустит антивирус - пораженчество и возврат к wingdings.
              Ответить

    Добавить комментарий