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

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

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

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

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

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

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

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

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

                      воу, круто

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


          но разумеется рантайм там всё равно есть
          Ответить
        • Тогда попробуй Nim, он компилируется в JS.
          Ответить
          • Зачем мне что-то компилить в JS?
            Ответить
            • Чтобы запускать на контроллере.
              Ответить
              • JS без GC не запускается, а GC - говно. Да и не во все контроллеры он влезет.
                Ответить
            • как? в твоей ардуине разве нельзя писать на 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
                  Ответить
              • > 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
      Ответить
      • Интересно, кто-нибудь сможет продолжить эту цепочку?
        Ответить

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