1. Куча / Говнокод #27507

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    import std.stdio;
    
    template GenMix()
    {
      const char[] GenMix = 
        "template GenMix2()" ~
        "{" ~
        "  const char[] GenMix2 = \"writeln(\\\"Hello, Wandbox!\\\");\";" ~
        "};";
    }
    
    template MixMix(string Name)
    {
      const char[] MixMix = "mixin(" ~ Name ~ "!());";
    }
    
    mixin(GenMix!());
    
    
    void main()
    {
      mixin(GenMix2!());
      mixin(MixMix!("GenMix2"));
    }

    https://wandbox.org/permlink/1HpjfgrgVLyBSrXG

    ГОМОИКОННОСТЬ в D

    Запостил: j123123, 10 Июля 2021

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

    • Крестошаблонами нельзя вот так насрать в код новый шаблон, и констэкспрами крестов нельзя насрать новый констэкспр или шаблон. Шаблонами можно как-то насрать констэкспр, это да, но это все через жопу. То ли дело миксины в D!
      Ответить
      • Ты всё-таки нашёл свой язык?
        Ответить
        • Скорее я нашел язык, на котором напишу свой язык (если соберусь писать). Но потом я свой язык перепишу на самом себе.
          Ответить
          • > свой язык перепишу на самом себе

            А потом перепишешь сам себя на свой язык.
            Ответить
      • > То ли дело миксины в D

        Там ещё и отсутствующие методы можно генерить по имени в момент их использования.
        Ответить
        • в OBJc можно, но конечно код надо писать заранее
          Ответить
          • што )))
            Ответить
            • ``class_addMethod`` знаеш?
              Ответить
              • где тут генерация?
                Ответить
                • define "генерация"

                  Я говорил про макнипатчинг, и специально оговорился, что "код надо писать заранее".

                  Если под генерацией мы имеем ввиду генерацию кода, то да, так делать нельзя
                  Ответить
                  • > генерацию кода

                    Да, в D это именно генерация. Ты обращаешься к несуществующему свойству foo.bar, обработчик несуществующих членов класса Foo триггерится в компайлтайме и генерит код.

                    Прям как магические методы в PHP, но в компайлтайме.
                    Ответить
                    • >в компайлтайме и генерит код.

                      воу, круто

                      ну собссно как инстанциация шоблоёбл
                      Ответить
                      • а зачем это может быть нужно? сериализация и десериализация?
                        Ответить
                      • Ну шоблоёблы всё-таки с несуществующими вещами не работают.
                        Ответить
                        • они создают сущности в случае обращения к ним, просто по шаблону
                          Ответить
                        • Крестопарашная шаблонохуйня не может породить шаблонохуйни, которая потом еще в какую-то хуйню раскроется где-то.
                          Ответить
                      • генерировать код в рантайме охуенно, особенно когда у тебя W^X

                        (I-кешу тоже нравится)
                        Ответить
                        • g: GNU lightning
                          Ответить
                        • Вспомнилось: в новых Интелах появился режим, запрещающий кобенации CALL+POP и PUSH+RET, мумулирующие JMP (первая узнаёт адрес инструкции CALL, вторая — переход по переменному адресу).

                          Сначала они смешивают стек для данных и стек для разврата, появляется куча программ, которые абьюзят CALL и RET ради динамического программирования, потом они хватаются за голову и пытаются это запретить.
                          Ответить
      • Хуексины.
        Ответить
    • попробуй скриптушню с eval
      или tcl, там это прямо фёрст класс ситизн
      Ответить
      • Скриптушня это не то, ее в контроллер не засунуть нормально, и рантайм жирный.
        Ответить
        • эйфория содержит в комплекте
          ~$ euc
          Euphoria to C Translator v4.1.0 development
             64-bit Linux, Using System Memory


          но разумеется рантайм там всё равно есть
          Ответить
        • Тогда попробуй Nim, он компилируется в JS.
          Ответить
          • Зачем мне что-то компилить в JS?
            Ответить
            • Чтобы запускать на контроллере.
              Ответить
              • JS без GC не запускается, а GC - говно. Да и не во все контроллеры он влезет.
                Ответить
                • > GC - говно.
                  золотые слова.

                  j123 представляется мне сидящим на горе, и смотрящим сверху на всяких жабьих и скриптовых бандерлогов, которые то двойные ковычки заменяют на одинарные, то дописывают __all__ что бы быстрее работало, то тюнят миллион ключей GC "чтобы не тормозило", то рассказывают как правильно приручить новый JIT.

                  А j123 просто пишет оптимальные программы на том же самом языке, на котором их в 99-м году писали, и течёт
                  Ответить
                  • На Биврёсте я сидел,
                    Ногти стриг копьём судьбы
                    И на ваш мейнстрим крошил
                    Ногтевую шелуху.
                    Ответить
            • как? в твоей ардуине разве нельзя писать на JS? на чем же ты тогда пишешь?
              Ответить
            • https://robotbaza.ru/product/yodo

              Ты разве не что-то типа этого программируешь?

              До появления Arduino создание электронных устройств было сложным процессом, требующим серьезной подготовки. Платформа открыла дверь в мир электроники новичкам и облегчила жизнь опытным разработчикам.

              Мы сделали следующий шаг. Iskra JS — это Arduino-подобный контроллер, понимающий язык JavaScript. Для сборки устройств теперь не нужно осваивать громоздкий С++. Вы будете писать код на JavaScript и управлять электронными модулями: считывать значения с сенсоров, а не ввод пользователя из форм; управлять сервоприводами, а не элементами веб-страницы.

              Платформа и набор разработаны и сделаны в России.
              Ответить
              • https://pbs.twimg.com/media/CqApLcjWcAAXUKu.jpg
                Ответить
              • А с чего, кстати, в стандартном ардуинобилдере кресты, а не няшная никто не знает?

                И отдельные лучи ненависти за то, что узнать, что в стандартной ардуинолибе некая хуйня — это макрос, можно только ВНИМАТЕЛЬНО почитав референс. Ну или когда всё сломается. Naming Conventions для слабаков, да.
                Ответить
                • > можно только ВНИМАТЕЛЬНО почитав референс

                  ну знаете, в никсаъ тоже часто пишут "may be implemented as macros" в доке

                  В макоси тоже есть, например XCTAssert
                  Ответить
                • А что, ваша ide не подсвечивает?
                  Ответить
                  • Notepad++ ?
                    Ответить
                    • Какая ide )))
                      Ответить
                      • Notepad++ 8.7.2: in a world of Elon, be a Zelensky
                        Notepad++ v8.6.9: Support Taiwan's Independence
                        Notepad++ v8.6.8: Support Taiwan's Sovereignty
                        Notepad++ 7.9.2: Stand with Hong Kong
                        Notepad++ 7.9.1: pour Samuel Paty
                        Download Notepad++ v8.8: We are with Ukraine
                        Notepad++ 7.8.3: Free Uyghur
                        Notepad++ 7.8.2: Free Uyghur
                        Notepad++ 7.8.1: Free Uyghur
                        Ответить
              • > Arduino-подобный контроллер

                С каких пор "Arduino" стал контроллером? Это видимо из той же серии, когда системный блок называют процессором.
                https://vchemraznica.ru/wp-content/uploads/2017/02/siirs566.jpg
                Ответить
                • Видимо, контроллер в смысле ПЛК (законченная плата с разными интерфейсами) а не в смысле MCU (только сам чип).

                  Хотя на ПЛК ардуинка конечно не тянет.
                  Ответить
                  • Готовый ПЛК и плата ардуино это тоже разные сущности. Какой-нибудь STM32 Discovery кит это ж не ПЛК, верно?
                    Ответить
                    • Да, я согласна. Ардуинка и дискавери -- это просто макетки для удобства разработки. Никто не будет пихать их в продакшен... oh shi...
                      Ответить
                      • Была на хабре статья, про лифт с ардуиной, да
                        https://habr.com/ru/post/221663/
                        Ответить
                        • Интересно, тому челу, который 17 часов просидел, тоже такой лифт достался?
                          Ответить
                        • Да, я прекрасно понимаю, что 220В не самый лучший выбор для цепей управления.




                          После долгих мытарств, в итоге, я отгородил магнитные пускатели от контроллера подключенной к нейтрали стальной пластиной (заземления к сожалению на момент установки еще не было)


                          а проблему дисплея решил программно с использованием функции delay();. Как только программа выполняла пуск двигателя или его остановку, включался секундный delay()

                          какой пиздец
                          Ответить
                          • В следующей версии подумают, что получилось достаточно надёжно и перенесут цепи безопасности в прошивку.
                            Ответить
                            • Недавно видел фотку. Цеховой кран-балка, на пульте шильдик с предупреждением: «Кнопки ВВЕРХ и ВНИЗ одновременно не нажимать!»

                              Интересно, кто-нибудь проверял.
                              Ответить
                              • Наверняка там трехфазный двигатель, реверс осуществляется переменой фаз. В нормально действующем переключателе при нажатии на одну кнопку, цепь другой полностью размыкается, чтобы оба пускателя одновременно не запускались. Здесь скорее всего местный электрик не вдуплил, как эту систему сделать, или именно она и сгорела когда-нибудь и её выкинули. В результате, при нажатии кнопок одновременно, замыкаются две фазы напрямую. Скорее всего вырубит автоматы в цеху.
                                Ответить
        • Скриптухи уже нашли твой город, теперь они ищут твою улицу!
          https://github.com/grisp/grisp
          Ответить
    • https://wandbox.org/permlink/5G8MycVSx6ArjkMv
      import std.stdio;
      
      template GenMix()
      {
        const char[] GenMix = 
          "template GenMix2()" ~
          "{" ~
          "  const char[] GenMix2 = \"writeln(\\\"Hello, Wandbox!\\\");\";" ~
          "};";
      }
      
      template MixMix(string Name)
      {
        const char[] MixMix = "mixin(" ~ Name ~ "!());";
      }
      
      template MixMix2(string Name, string Args)
      {
        const char[] MixMix2 = "mixin(" ~ Name ~ "!(" ~ Args ~ "));";
      }
      
      
      
      
      mixin(GenMix!());
      
      
      void main()
      {
        mixin(GenMix2!());
        mixin(MixMix!("GenMix2"));
        mixin(MixMix2!("GenMix2", ""));
        mixin(MixMix2!("MixMix2", "\"GenMix2\", \"\" "));
        mixin(MixMix2!("MixMix2", "\"MixMix2\",\"\\\"GenMix2\\\",\\\"\\\"\" "));
      }

      https://wiki.rtzra.ru/_media/qigong/we_need_to_go_deeper.jpg
      https://imgs.xkcd.com/comics/backslashes.png
      Ответить
      • Интересно, кто-нибудь сможет продолжить эту цепочку?
        Ответить
    • Кунчтюк!


      Ultibo: Bare-Metal Embedded Development

      For true embedded systems without an operating system, Ultibo is a specialized framework built on Free Pascal and Lazarus. It enables bare-metal programming on the Raspberry Pi, allowing direct hardware access without Linux:

      Full hardware control: GPIO, USB, serial communication, framebuffer graphics (via OpenVG), and file system support.

      No OS required: Boots directly from an SD card, creating a minimal, self-contained system.

      Cross-platform development: Code is written in Lazarus IDE on Windows, macOS, or Linux, then compiled for the Raspberry Pi.

      Supported models: All Raspberry Pi boards (including Pi 4, Pi 400, and CM4) and QEMU emulation.
      Ответить
      • Из всего этого малость удивляет USB: у xhci довольно заёбный API, это, в общем, не GPIO программировать. Даже для прыщей драйвер USB 3.0 писал специальный трап из интела.

        Неужели сами всё написали? Хотя наверное если не ебаться с usb 2.0, компаунд адаптерами и что там блядь еще было (у нас тредик был большйо на ГК про это) то может и не так страшно.

        > file system support.
        FAT поди?
        Ответить

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