1. C++ / Говнокод #13897

    +4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    int eval (const Expr& e)
    {
        Match(e)
        Case(const Value& x) return x.value;
        Case(const Plus& x) return eval (x.e1)+eval(x.e2);
        Case(const Minus& x) return eval(x.e1)−eval(x.e2);
        Case(const Times& x) return eval(x.e1)∗eval(x.e2);
        Case(const Divide& x) return eval(x.e1)/eval (x.e2);
        EndMatch
    }

    Бьёрн Страуструп выбирает борщ.
    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3449.pdf
    http://www.linux.org.ru/forum/development/9525806

    Заметим, что не только Страуструп раскаялся в прошлом. Кармак с энтузиазмом рассказывает, как с головой погрузился в Haskell и Scheme, объясняет, почему хаскель невероятно крут и почему сегодня он бы, вероятно, сделал QuakeScheme вместо QuakeC. Он пишет на хаскеле порт wolf3D.

    Запостил: LispGovno, 05 Октября 2013

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

    • Я борщ.
      Ответить
      • Первый коммент на хабре всегда получает больше плюсов, чем статья.
        Ответить
    • http://rghost.ru/49173814.view совсем ебанулся.
      Ответить
      • тред не читал, но осуждаю
        гифка заебись
        Ответить
      • А чем тебе не понравилась идея страуструпа? Красиво же...
        Ответить
        • {
              Match(e)
              Case(const Value& x) return x.value;
              Case(const Plus& x) return eval (x.e1)+eval(x.e2);
              Case(const Minus& x) return eval(x.e1)−eval(x.e2);
              Case(const Times& x) return eval(x.e1)∗eval(x.e2);
              Case(const Divide& x) return eval(x.e1)/eval (x.e2);
              EndMatch // А вы уверены, что c++ написал именно Страуструп?? Какие-то паскально-бейсиковые замашки.
          }
          Ответить
          • причём тут блять паскаль и бейсик, это чисто фяшный стиль
            Ответить
            • >причём тут блять паскаль и бейсик
              Очевидно намекает что труЪ сишкобляди пишут так:
              Match(e){
                  Case(const Value& x) return x.value;
                  Case(const Plus& x) return eval (x.e1)+eval(x.e2);
                  Case(const Minus& x) return eval(x.e1)−eval(x.e2);
                  Case(const Times& x) return eval(x.e1)∗eval(x.e2);
                  Case(const Divide& x) return eval(x.e1)/eval (x.e2);
              }
              Ответить
            • Виноват, а что есьм "фя" ?
              F#?
              Ответить
              • ML
                Ответить
                • показать все, что скрыто>ML
                  (Meta Language) — семейство строгих языков функциАнального программирования с развитой полиморфной системой типов и параметризуемыми модулями. ML преподаётся во многих западных университетах (в некоторых даже как первый язык программирования).

                  Бля, да после такого жить не захочется, не то что программировать.
                  Ответить
                  • показать все, что скрытоЕсли минусование не прекратится, я буду вынужден принять меры.
                    Ответить
                    • Сделаешь бочку?
                      Ответить
                      • Нет, просто заблокирую адблоком все плюсы и минусы, словно их и нет вообще.
                        Ответить
                        • Гы, ну давай. Покажи, как ты это сделаешь.
                          Ответить
                          • https://addons.mozilla.org/ru/firefox/addon/adblock-plus/?src=search
                            Ответить
                            • Просто я думал, что это идеальный сайт, а если что-то понадобилось блокировать, вроде рекламы, надоедающих окошек или прочей js-рулонной мишуры,
                              значит, что не такой уж идеальный.

                              (
                              Ответить
                            • Ух ты, у меня даже оно стоит, прикинь? А теперь покажи, как ты их будешь блокировать.
                              Ответить
                              • Для этого нужно еще 1 дополнение - "element hiding for adblock + ". После установки нужно включить отображение панели дополненией, найти там значок адблока и выбрать пункт "заблокировать элемент"
                                Ответить
                                • А у рейтинга есть свой класс? Да, есть. Беру свои слова обратно. Кстати, а почему они hiding helper в адблок не встроят?

                                  Меня амазон своей внутренней рекламой так задолбал, что я ее заблочил (!)
                                  Ответить
                        • максимум че ты сможешь - впихивать свой goatse
                          Ответить
                          • Я тоже рад тебя видеть.
                            Ответить
                            • шутка за 100
                              Ответить
                              • Поставь уже teamviewer. Хочу покодить с тобой.

                                Ну и чего молчишь? Или ты только непотребности пиздеть горазд?
                                Ответить
                                • смешно слышать от тебя про непотребства других) и что ты со мной кодить собрался? хочешь что бы я тебя нормальному языку научил?
                                  Ответить
                                  • У нас много общего. Но об этом мы поговорим при других обстоятельствах. А насчет "научил" - хочу, сочту за честь.
                                    Ответить
                                    • нет, ты ошибаешься, я не гей
                                      Ответить
                                      • Допустим, что нет.
                                        Ответить
                                        • заметь, я не сказал, что я гей
                                          Ответить
                                          • кодить будем или нет, мой голубоглазый друг?

                                            >>заметь, я не сказал, что я гей

                                            Только что сам сказал.
                                            Ответить
                                            • шутки за 50.

                                              и глаза у меня зеленые.

                                              что кодить то будем?
                                              Ответить
                                              • Извини

                                                Серьезно? Спасибо за инфу!..

                                                Будем кодить экспромтом.
                                                Ответить
                                                • прям экспромтом?
                                                  напишем классы, а потом свяжем как попало и посмотрим что получится?
                                                  ты всегда так кодишь?
                                                  Ответить
                                                  • Он кодит с вдохновением, когда программа пишется как поэма и неизвестно, что в конце получится, может быть и новый шедевр.
                                                    Кто не понимает радости спонтанного програмирования может идти вон в бухгалтеры и считать по строго определённым формулам.
                                                    Ответить
                                                    • - ну что, готовы мои часы с кукушкой?
                                                      - нет, но получился охуенный стол!
                                                      Ответить
                                                      • Ну, ну :) Творческая личность может сочетать создание шедевров в свободное время и исполнение заказов ради хлеба и воды.
                                                        Ответить
                                                        • вы тут мне не путайте старпера и творческую личность
                                                          Ответить
                                                      • Красная шапочка идет по лесу, вдруг навстречу волк:
                                                        -А ну, отойдем в кусты...
                                                        (заходят в кусты)
                                                        -Ну что, снимать трусики?
                                                        -Какие еще ,нахуй, трусики, ты что, сюда в туалет пришла? ПИРОЖКИ ДАВАЙ!
                                                        Ответить
                                                      • В XXI веке какой то ебень с какого-то перепугу заказал программисту часы с кукушкой: это что, шутка, типа? Хх-иха-хах-ахихи ((
                                                        -1000
                                                        Ответить
                    • мамке пожалуешься?
                      Ответить
                  • ооо, вижу у нас тут классическое - не понимаю - значит ненавижу.
                    Ответить
      • Это ж Тревор из ГТА5!
        Ответить
    • Поветкин проиграл.
      Ответить
    • Могли бы это кстати в switch/case засунуть. Парсер по идее отличит `case' без `:', или немного по-другому изменённую обычную конструкцию.
      Ответить
      • <Могли бы это кстати в switch/case засунуть. Парсер по идее отличит `case' без `:', >
        О, как тонко, месье! Какой такт! );
        Плюсанул;
        Ответить
      • Судя по доке они не хотели ничего менять в компиляторе, а сделали просто либу. Поэтому и такой странный бейсикоподобный синтаксис.
        Ответить
    • "Бьёрн Страуструп выбирает борщ."

      Начал читать. По сырцам и прочему, писал все Yuriy Solodkyy (Юрий Солодкий). Имя Страуструпа там только для рекламы, что бы бумажку больше людей прочитало.

      Первое впечатление: к бусту подойдет идеально.

      И если уж постить на ГК, то вот этот фрагмент из той же бумажки подходит лучше. Страница 9, цитирую:
      The following decision-tree-based memoization device will execute the statement si associated with the most-specific predicate Pi (i.e. the predicate that implies all other predicates true on x) that evaluates to true or will skip the entire statement if none of the predicates is true on x.
      switch (size t& jump_to = jump_targets[x]) {
      default:
          if (P1(x)) {
              if (P2(x)) {
                  if (P4(x)) { jump_to = 4; case 4: s4;} else
                  if (P5(x)) { jump_to = 5; case 5: s5;}
                  jump_to = 2; case 2: s2;
              } else
              if (P3(x)) {
                  if (P6(x)) { jump_to = 6; case 6: s6;} else
                  if (P7(x)) { jump_to = 7; case 7: s7;}
                  jump_to = 3; case 3: s3;
              }
              jump_to = 1; case 1: s1;
          } else { jump_to = 0; case 0: ; }
      }
      Ответить
      • вообщем, computer science в надежных руках.

        работы нормальным программистам, разгребать завалы созданые гениями еще на века хватит.
        Ответить
      • Использование switch ради скопа? Круто, чо...
        Ответить
        • ага. ты тоже не увидел с первого раза стратегически разбросаные по коду case'ы! я ж по этому и включил цытату, ключевое слово: memoization device.
          Ответить
          • Да, проглядел я их ;) Прикольная конструкция.
            Ответить
      • Кейс внутри дефолт... :'(

        Sunk deep in the night
        I sink in the night
        Standing alone underneath the sky
        I feel the chill of ice
        On my face
        I watch the hours go by
        The hours go by
        Ответить
      • а чё, нормально не пишется? нечитаемая параша же
        да, s7 и s3 придётся продублировать
        Ответить
    • Хаскел наше все. Может кто знает вменяемый учебник на русском?)
      Ответить

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