1. Лучший говнокод

    В номинации:
    За время:
  2. Pascal / Говнокод #7101

    +110

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    unit HRTimer;
     
    interface
     
    uses Windows;
     
    type
      // --------------------- Класс - высокоточный таймер -------------------------
      THRTimer = class(TObject)
        constructor Create;
        function StartTimer: Boolean; // Обнуление таймера
        function ReadTimer: Double;   // Чтение значения таймера в миллисекундах
      private
        StartTime: Double;
        ClockRate: Double;
      public
        Exists: Boolean;    // Флаг успешного создания таймера
      end;
     
    var
      Timer: THRTimer; // Глобальая переменная. Создаётся при запуске программы
     
    { Фукнция высокоточной задержки.
     Delphi:
       Синтаксис: function HRDelay(const Milliseconds: Double): Double;
       Milliseconds: Double - задержка в миллисекундах (может быть дробной)
       Результат функции - фактически произошедшая задержка с погрешностью.
       Пример вызова функции: X:= HRDelay(100.0); или HRDelay(100.0);
     
     C++Builder:
       Синтаксис: double HRDelay(const double Milliseconds);
       Double Milliseconds - задержка в миллисекундах (может быть дробной)
       Результат функции - фактически произошедшая задержка с погрешностью.
       Пример вызова функции: double X = HRDelay(100.0); или HRDelay(100.0);}
    function HRDelay(const Milliseconds: Double): Double;
     
    implementation
     
    function HRDelay(const Milliseconds: Double): Double;
    begin
      Timer.StartTimer();
      repeat
        Result:= Timer.ReadTimer();
      until Result >= Milliseconds;
    end;
     
    { THRTimer }
     
    constructor THRTimer.Create;
    var
      QW: LARGE_INTEGER;
    begin
      inherited Create;
      Exists := QueryPerformanceFrequency(Int64(QW));
      ClockRate := QW.QuadPart;
    end;
     
    function THRTimer.StartTimer: Boolean;
    var
      QW: LARGE_INTEGER;
    begin
      Result := QueryPerformanceCounter(Int64(QW));
      StartTime := QW.QuadPart;
    end;
     
    function THRTimer.ReadTimer: Double;
    var
      ET: LARGE_INTEGER;
    begin
      QueryPerformanceCounter(Int64(ET));
      Result := 1000.0 * (ET.QuadPart - StartTime) / ClockRate;
    end;
     
    initialization
      Timer:= THRTimer.Create();
     
    finalization
      Timer.Free();
     
    end.

    классический шайзберг посреди майских роз (ну почти розы)

    bugmenot, 29 Июня 2011

    Комментарии (91)
  3. Java / Говнокод #5280

    +78

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    public Miner(String s) {	    
            super(s);
            MenuBar mb = new MenuBar();
            setMenuBar(mb);
            Menu mFile = new Menu("Файл");
            Menu mHelp = new Menu("Справка");
            mb.add(mFile);
            mb.setHelpMenu(mHelp);
            MenuItem create = new MenuItem("Новая игра",new MenuShortcut(KeyEvent.VK_N));
            Menu mColor = new Menu("Цвет");
            MenuItem mGreen = new MenuItem("Зелёный");
            MenuItem mRed = new MenuItem("Красный");
            MenuItem mBlue = new MenuItem("Синий");
            MenuItem mGray = new MenuItem("Серый");
            mColor.add(mGreen);
            mColor.add(mRed);
            mColor.add(mBlue);
            mColor.addSeparator();
            mColor.add(mGray);
            Menu mHard = new Menu("Сложность");
            MenuItem mDummy = new MenuItem("Новичок");
            MenuItem mUser = new MenuItem("Среднячок");
         	MenuItem mHaker = new MenuItem("Проффи");
         	mHard.add(mDummy);
         	mHard.add(mUser);
         	mHard.add(mHaker);
         	MenuItem mSound = new MenuItem("Звук");
         	mSound.setEnabled(false);
         	MenuItem exit = new MenuItem("Выход",new MenuShortcut(KeyEvent.VK_X));
            mFile.add(create);
            mFile.add(mColor);
            mFile.add(mHard);
            mFile.add(mSound);
            mFile.addSeparator();      
            mFile.add(exit);
            Scribble scr = new Scribble(this,480,480);
            mGreen.addActionListener(scr);
            mRed.addActionListener(scr);
            mBlue.addActionListener(scr);
            mGray.addActionListener(scr);
            add(scr);
            Difficult diff = new Difficult(this,480,480);
            mDummy.addActionListener(diff);
            mUser.addActionListener(diff);
            mHaker.addActionListener(diff);
            add(diff);
            create.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    status = 0;
                    repaint();
                    RandomArray();
                }
            });
            exit.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    System.exit(0);
                }
            });
            MenuItem mInfo = new MenuItem("О программе",new MenuShortcut(KeyEvent.VK_H));
            mHelp.add(mInfo);
            mInfo.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    new AboutProgram("О программе");
                }
            });
            setBounds(0,0,480,480); // setSize(480,480); 
            setVisible(true);
            setLayout(null);
            addMouseListener(this);
            addWindowListener(new WinClose());
    }

    Всё, что можно и что нельзя я запихнул в конструктор

    dwinner, 14 Января 2011

    Комментарии (91)
  4. Perl / Говнокод #28535

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    #!/usr/bin/guile -s
    !#
    
    (define (square x)
      (* x x))
    
    (define (square_sum x y)
      (+ (square x) (square y)))
    
    (define (tmax x y z)
      (cond ((and (>= x y) (>= x z)) x)
            ((and (>= y x) (>= y z)) y)
            (else z)))
    
    (define (tms x y z)
      ((cond ((= (tmax x y z) x)
              (if (> y z)
                  (square_sum x y)
                  (square_sum x z)))
             ((= (tmax x y z) y)
              (if (> x z)
                  (square_sum x y)
                  (square_sum y z)))
             ((= (tmax x y z) z)
              (if (> x y)
                  (square_sum x z)
                  (square_sum y z)))
             (else 0))))
    
    (display "Ans: ")
    (display (tms 6 5 4))
    (newline)

    Почему не работает?

    JloJle4Ka, 02 Января 2023

    Комментарии (90)
  5. C++ / Говнокод #27678

    +1

    1. 1
    for (double x = xn, p = 1, n = 0, y = 0; x > xk ? cout<<p<<' '<<n, false : true; x += dx, y = cos(x) + x*5. / 2, y > 0 ? p *= y : y < 0 ? n++ : n );

    Попросили помочь с задачей:
    > Определить произведение негативных и количество позитивных значений функции y=cos(x)+x*5./2, если значение x изменяется от xn до xk с шагом dx.
    Я постарался, как мог, всё-таки язык мне не очень близок (немного помогли). Возможно, ещё есть, куда "улучшить".

    MetallDoctor, 23 Сентября 2021

    Комментарии (90)
  6. JavaScript / Говнокод #27452

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    function main() {
        for (const q of [1, 12]) {
            print(q);
        }
    
        for (const l of "HW") {
            print(l);
        }
    
        print("done.");
    }

    продолжаем говнокодить компилятор для TypeScript (типа новый сабсет для native-ого кода)

    ASD_77, 02 Июня 2021

    Комментарии (90)
  7. Си / Говнокод #26273

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    From : Dmitry Pomogaev, 2:5079/12 (19 Feb 96 12:30)
     To   : Alexey Gorobinsky
    
    Dear Alexey,
    
    Once upon a time Alexey Gorobinsky wrote to Alexander Lapaev as it follows:
    
    AG> C - сукс по опpеделению
    AG> спотыкаешся на мелочах. И если ты каждую мелочь не пpопишешь
    [...skipped by DVP...]
    AG> Хpеновейшая пеpеносимость
    [...skipped by DVP...]
    AG> пять минут шаpить глазами по одной-единственной стpочке, тщетно
    AG> пытаясь понять: как же она pаботает? Вообще, Си - лидеp по количеству
    AG> неявных ошибок.
    [...skipped by DVP...]
    AG> Я все это испытал на себе. До сих поp помню...
    [...skipped by DVP...]
    ----------------------------------------------------------------------------
    
              Доpогая pедакция жуpнала "MelcoHard Kitchen", пишет Вам Петя
         Иванов. Hедавно мне попалась в pуки книга "О вкусной и здоpовой
         пище и как вести себя за столом".
              Так они pекомендуют пользоваться ножом и вилкой. Я купил и то
         и дpугое, но pезультат оказался не таким, как я ожидал. Сначала я
         никак не мог удеpжать их в одной pуке, пока мне не посоветовали
         внимательнее почитать документацию. Там я нашел место(гады! они
         хотя бы в ФАК вынесли!!), что деpжать их нужно pазными pуками.
              Пpимеpно чеpез четыpе дня я научился это делать, но все стало
         совсем плохо. Вилкой я сильно поpезал себе пальца на ноге, а ножом
         пpоткнул ухо. Может быть мне попались непофиксенные столовые
         пpибоpы, или у них пpосто отвpатительная межплатфоpменная
         пеpеносимость?
              Доpогой Петя! Скоpее всего, столовые пpибоpы здесь не пpи
         чем. Тpудно давать ответы на такие вопpосы в печатном издании, но
         если у Вас все же не получается - попpобуйте пользоваться ложкой.
    
              Доpогая pедакция, это опять Петя. Как Вы и советовали, я
         попpобовал. У меня получилось лучше, но не все. Вначале я выяснил,
         что удобнее всего и безопаснее ей есть сыпучие пpодукты.
              К несчастью, мне попался пеpец, и хоть в этом есть и доля
         моей вины, мне непонятно, почему Вы не пpедупpедили меня о том,
         что нужно очень хоpошо пpедставлять себе все возможности
         оказавшейся у меня в pуках системы. После того, как я опять стал
         видеть, я попpобовал пpименить полученные навыки pаботы на пеpвом
         блюде.
         Рецепт был взят из Вашего последнего номеpа и, веpоятно, это была
         бета-веpсия, т.к. я уpонил ложку в гоpячий суп, и pазлетевшиеся
         бpызги оставили у моей малолетней сестpенки только один глаз.
         Согласитесь, что в ее 34 года это почти гоpе. После того, как я
         попытался достать ложку из супа, я обваpил себе пальцы и тепеpь
         пишу вам письмо последней здоpовой ногой, так как пеpвая еще не
         выздоpовела после экспеpиментов с ножом и вилкой. Скажите мне, что
         я делал не так.
              Доpогой Петя! Редакция пpиносит Вам свои извинения за данный
         Вам непpодуманный совет. Веpоятно Вы пока еще не вполне освоились
         с теpминологией и не до конца пpедставляете себе конечную цель.
         Фактически, задача не является столь сложной. В то же вpемя, мы не
         возьмем на себя ответственность советовать Вам совсем не
         пользоваться столовыми пpибоpами, а попpобовать лакать пpямо из
         таpелки. Мы слишком хоpошо пpедставляем себе все ужасные
         последствия(самым безболезненным для Вас будет, если Вы
         захлебнетесь сpазу) сего меpопpиятия.
              Поэтому на совещании в pедакции мы пpишли к выводу, что лучше
         всего Вам вообще отказаться от пpиема пищи. Во всяком случае, в
         течении 1-2 месяцев, пpосвятив это вpемя изучению документации. Hе
         надо отчаиваться, пpосто пока(мы подчеpкиваем: пока) этот пpоцесс
         Вам не под силу.
    
    ----------------------------------------------------------------------------
    Faithfully, Dmitry.
    Aka DVP.

    https://www.cs.bgu.ac.il/~barnshte/CompHumor/texts/c-sux.txt
    Там еще много всяких баянов: https://www.cs.bgu.ac.il/~barnshte/CompHumor/ кодировка KOI8-R

    j123123, 18 Декабря 2019

    Комментарии (90)
  8. PHP / Говнокод #25809

    −2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    25. 25
    26. 26
    27. 27
    28. 28
    <?php
    
    class A
    {
        public function TestFunc()
        {
            var_dump($this);
            return $this->test;
        }
    }
    
    class B
    {
        public $test;
    
        public function __construct()
        {
            $this->test = "Nice trick";
        }
    
        public function GetTest()
        {
            return A::TestFunc();
        }
    }
    
    $b = new B;
    echo $b->GetTest();

    object(B)#1 (1) {
    ["test"]=>
    string(10) "Nice trick"
    }
    Nice trick

    Именно поэтому я за "PHP 5.3"

    Stallman, 06 Сентября 2019

    Комментарии (90)
  9. C++ / Говнокод #25564

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    #include <iostream>
    #include <string>
    #include <string_view>
    
    int main() {
      std::string s = "Hellooooooooooooooo ";
      std::string_view sv = s + "World\n";
      std::cout << sv;
    }

    https://alexgaynor.net/2019/apr/21/modern-c++-wont-save-us/
    What's happening here is that s + "World\n" allocates a new std::string, and then is converted to a std::string_view. At this point the temporary std::string is freed, but sv still points at the memory that used to be owned by it. Any future use of sv is a use-after-free vulnerability. Oops! C++ lacks the facilities for the compiler to be aware that sv captures a reference to something where the reference lives longer than the referent. The same issue impacts std::span, also an extremely modern C++ type.

    j123123, 24 Апреля 2019

    Комментарии (90)
  10. Куча / Говнокод #25129

    −4

    1. 1
    2. 2
    3. 3
    4. 4
    <j123123__> Ну лол, я 29-летний бородатый чел из Харькова который живет с мамкой, пишет прошивки под микроконтроллеры STM32
    <j123123__> Я не мобилизован потому что например дважды в психбольнице лежал, лол
    <j123123__> Ну диагноз тама не говорят, вроде шизо-какое-то расстройство
    <j123123__> А вот представь вот в пледик укрыться с кунчиком и на сишечке прогать

    Узнаем j123123 с новой стороны.

    FrauSchweinhund, 29 Ноября 2018

    Комментарии (90)
  11. C# / Говнокод #24483

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    private void OutputLabels(DataTable dt)
    {
       string label; 
    
       // Iterate rows of table
       foreach (DataRow row in dt.Rows)
       {
          int labelLen;
          label = String.Empty;
          label += AddFieldValue(label, row, "Title");
          label += AddFieldValue(label, row, "FirstName");
          label += AddFieldValue(label, row, "MiddleInitial");
          label += AddFieldValue(label, row, "LastName");
          label += AddFieldValue(label, row, "Suffix");
          label += "\n";
          label += AddFieldValue(label, row, "Address1");
          label += AddFieldValue(label, row, "AptNo");
          label += "\n";
          labelLen = label.Length;
          label += AddFieldValue(label, row, "Address2");
          if (label.Length != labelLen)
             label += "\n";
          label += AddFieldValue(label, row, "City");
          label += AddFieldValue(label, row, "State");
          label += AddFieldValue(label, row, "Zip");
          Console.WriteLine(label);
          Console.WriteLine();
       }
    }
    
    private string AddFieldValue(string label, DataRow row, 
                                 string fieldName) 
    {                                
       if (! DBNull.Value.Equals(row[fieldName])) 
          return (string) row[fieldName] + " ";
       else
          return String.Empty;
    }

    label не используется в AddFieldValue. Официальный пример MS - https://docs.microsoft.com/en-us/dotnet/api/system.dbnull.value?view=netframework-4.7.2

    gogishvilli001, 12 Июля 2018

    Комментарии (90)