1. C# / Говнокод #9231

    +135

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    class Program
    {
        static void Main(String[] args)
        {
            for (int i = 0; i < 10; i++)
            {
                Main();
            }
        }
    }

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

    Запостил: vistefan, 26 Января 2012

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

    • не скомпилиццо. метод требует массив стрингов как параметр
      Ответить
      • показать все, что скрытоа тут что передается?
        Ответить
      • Верно, я просто не его код кинул, а наговнокодил по памяти, в оригинале Main ничего не просил в арги...
        Ответить
        • MSDN не согласен с вами
          http://msdn.microsoft.com/en-us/library/0fwzzxz2.aspx
          Ответить
          • что вы этим хотели сказать?
            Ответить
          • как MSDN может быть со мной не согласен, если я признал факт опечатки? Вы не верите что этот говнокод НЕ компилируется? Лучший способ проверить - попробовать скомпилить... не вижу смысла лезть в мсдн...
            Ответить
    • нельзя начинать обучать студентов программированию с шарпов.
      Ответить
      • Никто и не начинает, они все паскалИ-дельфятники... хотя будь моя воля, я бы начинал с додиезов, а почему нет?
        Ответить
        • пораженчество
          Ответить
          • в каком смысле?
            Ответить
            • это будет обучение не программированию, а лок-ину на майкрософтовской платформе
              Ответить
        • а что в дельфопаскале про выход из рекурсии не слышали?
          Ответить
        • >хотя будь моя воля, я бы начинал с додиезов, а почему нет?
          1. Не надо перегружать мозг ООП, начните со структурного программирования;
          2. C# очень сильно завязан на MS, а это сильно сужает область его применимости;
          3. Наличие всевозможных готовых библиотек угнетает процесс обучения будущего программиста.
          Ответить
          • Ну, наверное потому что я начинал со структурного, на меня уже рамки диеза не так сильно влияют, и я замечаю только сахар... согласен.
            Ответить
          • 1. обучение программированию с ООП конечно начинать нельзя
            2. можно преподавать на Моно
            3. в мире программирование в основном преподают на Яве. и это отлично у них получается
            Ответить
            • Но ява это же ООП ))
              А на яве преподают из-за прекрасной кроссплатформенности, но если вы знаете и C# и Java, то понимаете, насколько они похожи...
              Ответить
              • да, конечно
                я хочу сказать что преподавание программирования на управляемом ООП языке - ок
                и неважно какой это язык (скорее несет маркетинговое значение)
                Ответить
                • То есть вы противоречите сами себе?
                  >1. обучение программированию с ООП конечно начинать нельзя
                  >я хочу сказать что преподавание программирования на управляемом ООП языке - ок

                  Или во втором случае это уже не начало обучения? )
                  Ответить
                  • не начало.
                    мой первый язык - VB5. В институте - Pascal, но я попросил разрешение писать курсовую уже на Си, чему очень рад.
                    Ответить
                    • >В институте - Pascal, но я попросил разрешение писать курсовую уже на Си
                      Тарас бы не разрешил.
                      Ответить
                      • тарасомерзко
                        Ответить
                      • Ээээ... я извиняюсь, кто такой тарас?...
                        Ответить
                        • зайди в раздел pascal и в любую тему напиши "заставляю переходить студентов с паскаля на нормальные языки, вижу их одобрение и замечаю серьезный прогресс в уровне программирования даже бывших двоешников" - не пожалеешь
                          Ответить
                        • главный говнопаскалист сайта http://govnokod.ru/user/721
                          Ответить
                        • Это я
                          Ответить
                    • > мой первый язык - VB5
                      Q.E.D.
                      Ответить
                      • и что? это было в 1999 году
                        Ответить
                        • It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration. 1999 - 1975 = ?

                          И ведь добрые преподаватели пытались помочь слезть с него, но безуспешно.
                          Ответить
                          • "<...> Резиг программировал на QBasic ... <...> ... только начал программировать на Visual Basic. <...>" из статьи в википедии (http://ru.wikipedia.org/wiki/Jquery) об создателе JQuery. Он по вашему тоже никто?
                            Ответить
                            • Да что там резиг...
                              Бог Торвальдс начинал с бейсика.
                              Ответить
                              • Скандинавский бог Тор[вальдс] запрограммировал в свою кувалду режим бумеранга ... привет из Голливуда :)
                                Ответить
                                • А Торвальдс финн али швед? Потому как финнам не досталось ничего тороидального.
                                  Ответить
                            • Действительно, кто такой Дейкстра по сравнению с виликим саздателем jQuery? :-D

                              > Он по вашему тоже никто?
                              Скажем так, МакДональдс потерял способного переворачивальщика гамбургеров, когда юный Джонни заработал себе на PC и MS-(DOS|Windows).

                              А с чего это диезники начали петь дифирамбы Резигу? Мне шаблон порвало.
                              Ответить
                              • Я вообще себя не причисляю ни к "диезникам", ни к кому другому. Программист я.
                                Ответить
                              • И Джонни заслуживает ровно таких же деферамбов как какой либо другой достойный программист, ни больше, ни меньше.
                                Ответить
                                • > Программист я
                                  Хорошо, что прояснили, а то я уже начал сомневаться, почитав ваши письмена ;-)

                                  > деферамбов
                                  Ответить
                          • Любезный, ви серьёзно не видите разницы между VBS и Basic?..
                            Ответить
                  • Сочувствую тем, у кого
                    >программирование на управляемом ООП языке
                    было в начале обучения
                    Ответить
                    • Подкорректирую: не на управляемом, а на языке со сборщиком мусора.
                      Ответить
                      • хорошую вещь манажем не назовут
                        Ответить
                      • В Лиспе тоже есть сборщик мусора. // К.О.
                        Ответить
                        • и у нас во дворе тоже
                          Ответить
                        • Знаю народ, что начали свой программистский путь с языков с GC, теперь так пишут как-будто GC есть во всех языках. Профессиональная деформация. Начали бы с чего-нибудь другого, окрепли, а там уж можно и на язык с GC пересесть.
                          Ответить
              • > C# и Java, то понимаете, насколько они похожи...
                Как раз последнее он пытается яростно отрицать :-)
                Ответить
                • нет
                  Ответить
                  • Не надо тут ля-ля.
                    У нас все ходы записаны :)
                    Ответить
                  • all your proofs are belong to us
                    http://govnokod.ru/9201#comment127860
                    Ответить
                    • похожи всем, кроме ушей :)
                      Ответить
                    • портирование явы - это реально бред
                      поставило бы крест на .NET'е ещё в 2001 году

                      а то что они местами похожи - ну это факт, который отрицать глупо. сколько в мире управляемых платформ?
                      Ответить
      • Ключевая часть "нельзя начинать обучать студентов программированию", пока не изучили "теорию программирования" кто получил неуд, исключать без пересдачи.
        Ответить
    • Всё компилится и выполняется так:
      http://ideone.com/ynzxz
      using System;
      class Program
      {
          static void Main(params String[] args)
          {
              for (int i = 0; i < 10; i++)
              {
                  Main();
              }
          }
      }
      Ответить
      • парамс-памс-памс
        Ответить
      • static void Main(), же.
        Ответить
      • params же
        Ответить
      • Правильнее сказать, не исполняется, а запускается, но с той же ошибкой. Компилится - это да, но того же резалта можно добиться без парамса если убрать String[] args вовсе...
        Ответить
        • >не исполняется
          Вы хотите сказать, что программа не исполняется, после того как она запустилась? Ну то что программа говно то ясно, но она исполняется VM CLR.
          Ответить
          • С вашей точки зрения - да, исполняется. Но я вкладывал в слово исполняться немного другой смысл, не процесс работы - то есть выполнения программы, а процесс её успешного завершения - то есть момента, когда мы можем сказать: "эта программа исполнилась/выполнилась". А в нашем случае этот момент наступает по возвращении errorlevel = 0, и этот момент при данном коде никогда не наступит, т.к. мы получаем при попытке исполнить (именно в моём понимании слова) программу, нас посылает всё та же CLR на три буквы слова: Stack Overflow Exception
            Ответить
        • я бы сказал "завершается некорректно". это корректное высказывание?
          Ответить
    • штэк машт оверфлоу
      Ответить
    • Аргументы коммандной строки не являются обязательнымы
      с++
      An implementation shall not predefine the main function. This function shall not be overloaded. It shall
      have a return type of type int, but otherwise its type is implementation-defined. All implementations
      shall allow both of the following definitions of main:
      int main() { /* ... */ }
      and
      int main(int argc, char* argv[]) { /* ... */ }
      c#
      using System;
      class Hello
      {
      static void Main() {
      Console.WriteLine("hello, world");
      }
      }
      The entry point for an application—the method that is called to begin execution—is always a static
      method named Main.
      так что все коспилится
      Ответить

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