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

    +131

    1. 1
    o?o.f():{};

    Мне было стыдно постить это в С++.

    http://www.gamedev.ru/flame/forum/?id=167142&page=2#m25

    Запостил: LispGovno, 20 Сентября 2012

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

    • Название темы звучит как:
      >Придумал новый оператор .? (null-coalescing call)
      Ответить
      • Нигде такого нет
        http://tinyurl.com/8ga7nen
        http://confluence.jetbrains.net/display/Kotlin/Null-safety
        Ответить
    • C++2050
      ?:{}\\[=]^[&]::[]...::-%@$

      Ой бля, это ж перл

      Ещё тупая шутка про слишком закорючечный синтаксис:
      БНФ-грамматика для перла:
      symbol -> #0..#255
      code -> code+symbol | empty
      Ответить
    • Кстати, типичный JavaScript код, минифицированный.
      Ответить
      • Тогда уж так:
        o?o.f():0;
        Ответить
        • И вообще, типичный вот такой:
          o&&o.f();
          Ответить
          • В крестах делается так:
            o&&o->f(),1;
            А если o.f() возвращает правильный курсор, то
            o&&o->f()&&o->f()->g();
            Последнее конечно, если f() чиста и особенно приятно, если она маленькая и компилятор её элиминирует.
            Вот только это все не красиво. Лучше монада MayBe)
            Ответить
            • > o&&o->f(),1;
              скобки не забыл?
              кому вообще нужна короткая запись такой неординарной в с++ операции?
              обвязка вокруг weak_ptr? - так там многовато логики, что делать, если объект еще жив, и что делать, если уже нет - однострочник только ухудшит положение
              это же не java, где надо постоянно уточнять, не null ли объект
              Ответить
              • > это же не java, где надо постоянно уточнять, не null ли объект

                XD
                Ещё один камень в сторону модненьких парадигом.
                Ответить
                • Кто-то из знаменитых сказал, что разрешение использовать нулевые указатели - самая дорогая и большая ошибка в истории программирования.
                  Ответить
                  • Хоар
                    "моя ошибка на миллиард"
                    Ответить
                    • Это он придумал? Теперь он мой враг. Ждите новый ник. А что он ещё придумал, чтобы окончательно утвердится в необходимости кары?
                      Ответить
                      • Вообще, чего это его ошибка? Ассемблерщики и перфокартисты вроде уже давно этот метод применяют. Взять некое значение из диапазона допустимых или недопустимых значений результата и считать его не валидным. Фактически тоже самое и проблема NULL. Мне кажется он просто решил присвоить себе чужие лавры. Не достоин моей кары.
                        Ответить
                        • I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language (ALGOL W). My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn't resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years.
                          Ответить
                          • А как указать на дно памяти если бы NULL было нельзя?
                            Ответить
                            • а зачем указывать дно памяти? разве это safe ссылка?
                              Ответить
                              • Как вообще указывать на "плохое значение"?
                                Ответить
                                • http://govnokod.ru/11811#comment154460
                                  Ответить
                                  • Ещё вопрос: два объекта указывают друг на друга, один из них сдох, на что после этого должен указывать второй?
                                    Ответить
                                • плохие значения не нужны никому
                                  даже плохому заказчику нужны хорошие значения
                                  Ответить
                              • >а зачем указывать дно памяти?
                                Таблица векторов прерываний в реальном режиме х86, например. То есть в ассемблерных языках, типа крестов или няшки - нужно
                                Ответить
                                • т.е. никакого отношения к null это не имеет
                                  Ответить
                                  • ну да. если в языке есть арифметика с указателями, то null очевидно нужен.
                                    Ответить
                  • А чем инициализировать структуру с указателями, если ещё не известно, на что нам придётся указывать?
                    Ответить
                    • Гугли алгебраические типы, Optional, MayBe, ValueContainer, Nullable. NullObject.
                      Ответить

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