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

    +58.5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    template <int n>
    struct fibonacci
    {
    	static int result()
    	{
    		return fibonacci<n-2>::result() + fibonacci<n-1>::result();
    	}
    };
    
    ........... и где-нибудь в коде:
    
    fibonacci<7>::result();

    Работает в msvc 2008 sp1 и более ранних. g++ и некоторые другие отваливаются с ругательствами на урезмерную рекурсию. Особо злостным маньякам можно рекомендовать понаслаждаться просмотром поля "memory usage" процесса cl.exe :)

    Также можно (но не нужно) устроить ddos подвесив халявный компилятор здесь:

    http://www.dinkumware.com/exam/default.aspx

    Запостил: Гвозди Заржавелли, 26 Января 2010

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

    • мудак который постит про с++
      можешь убиццо - это цэ плюсовый говнокод
      Ответить
    • Ептать, это же учебный пример, демонстрирующий возможности использования шаблонов в с++, нахер его сюда постить? Тут нет ничего говнокодового и смешного, также как и в высерах школоты и студентов состоящих из говна в мэйне на 30 строк. А вот когда какой-нибудь хуила накодит в реальном проекте такого говнища -- это стоит постить. Бля буду, эту мысль тут многие поддержат.
      Ответить
      • Ну по этой логике в качестве учебного примера можно давать сование пальцев в мясорубку: демонрируются возможности мясорубки, ведь никто в реальном проекте такое делать не будет? Но ведь делают.
        Ответить
        • Сравнил жопу с пальцем. Тебе на физике действие электричества объясняли, но пальцы ты в розетку не совал. Зато после этого ты знаешь, что это не магия. Че в крайности бросаться? Делают это те, кто из внятного объяснения поняли всё, кроме КОГДА и КАК.
          Ответить
          • Да проблема в том, что внятное объяснение редкость, когда преподают бабушки и дедушки за 70, которые изучали программирование еще в те далекие времена, когда им было по 30, так чего ожидать, сами преподаватели не знают, ЧТО, КОГДА и КАК.
            Ответить
            • Точно! Я понял! Наши преподы 20-30-тиление на самом деле из 30-х или 40-х годов.
              Предыдущего века.
              Машина времени тогда была! Я же говорил! Её прячут уже 83 года! Она под лениным! Полюбому! Он её охраняет!
              КОПАТЬ!!11
              Ответить
    • Если кто не понял - этот пример демонстрирует глюкавость компилятора msvc
      Ответить
      • И чем он глюковатый?
        Ответить
      • Внатуре -- чем же?
        Ответить
      • ну попробуйте откомпилить, что-ли :)))
        Ответить
        • Не имею возможности, скажите кто-нить че там.
          Ответить
      • Неужели MSVC делает какие-то предположения о крестошаблонах с отрицательным номером?
        Ответить
      • > Если кто не понял - этот пример демонстрирует глюкавость компилятора msvc
        Этот пример демонстрирует, что автор писал код под мухой.
        Компилятор имеет право считать бесконечную рекурсию. А вот те компили, что вводят ограничение на глубину рекурсии - говно, я щитаю.
        Ответить
    • Коряво использовать в таком виде, если уж хочется, так надо делать compiletime, а не корявым runtime
      Ответить
    • Кстати, нужно было сделать возврат результата через enum, а не через функцию. Тогда число фибоначи за компилетайм посчиталось бы. Зачем писать так извращенно, что-бы потом получить подсчеты в реалтайме? Так, что говнокод.
      Ответить
    • Код нерабочий
      перед вызовом надо добавить:
      template<> struct fibonacci<1> { static int result() {return 1;} };
      template<> struct fibonacci<0> { static int result() {return 0;} };
      иначе не сконпелирует, по крайней мере гцц4
      Ответить
    • хах, сколько же тупой школоты, ачюметь xD
      причём там, блядь, скомпилится или нет?
      и так кроме comeau-компилятора никто полностью стандарт не поддерживает
      гцц, блин

      читайте и ума набирайтесь http://stackoverflow.com/questions/189172/c-templates-turing-complete

      автору - жирный минус, поскольку нихрена разницы не понимает между:
      а) языком
      б) возможностями языка
      в) его реализациями, а также спецификой таковых реализаций

      >> такие все умные, а я об этом сразу написал :)
      пиздец, это не говнокод, а говноцсс тогда уж, сталобыть. иди делай уроки
      Ответить
      • ах да, простите, гцц, конечно же
        Ответить
      • > причём там, блядь, скомпилится или нет?

        Так говорят для краткости. Иди ко своим первокурам.
        Ответить
      • Каммент много места занимает. Я детсадовский эстет. Ставлю тоненький, но ничем не хуже твоего жирного, минус. Вот какой я молодец.
        Ответить

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