Куча говна / Говнокод #27507 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 j123123, (Updated )

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

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

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

      Там ещё и отсутствующие методы можно генерить по имени в момент их использования.
      Ответить
              • define "генерация"

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

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

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

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

                    воу, круто

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


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

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

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

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

            Платформа и набор разработаны и сделаны в России.
            Ответить
            • А с чего, кстати, в стандартном ардуинобилдере кресты, а не няшная никто не знает?

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

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

                В макоси тоже есть, например XCTAssert
                Ответить
              • Видимо, контроллер в смысле ПЛК (законченная плата с разными интерфейсами) а не в смысле MCU (только сам чип).

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




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


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

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

                            Интересно, кто-нибудь проверял.
                            Ответить
                            • Наверняка там трехфазный двигатель, реверс осуществляется переменой фаз. В нормально действующем переключателе при нажатии на одну кнопку, цепь другой полностью размыкается, чтобы оба пускателя одновременно не запускались. Здесь скорее всего местный электрик не вдуплил, как эту систему сделать, или именно она и сгорела когда-нибудь и её выкинули. В результате, при нажатии кнопок одновременно, замыкаются две фазы напрямую. Скорее всего вырубит автоматы в цеху.
                              Ответить
  • 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
    Ответить
    • Интересно, кто-нибудь сможет продолжить эту цепочку?
      Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8