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

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

    +162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    <?php
    
    require_once ("db.php");
    
    $region = $_POST["region"];
    
    $array = mysql_query ("SELECT * FROM city WHERE region = '$region'");
    	echo "<option value=\"\">Выберете город</option>";
    while ($m = mysql_fetch_array($array)){
    	echo "<option value=\"".$m["alias"]."\" id=\"".$m["id"]."\">".$m["title"]."</option>";
    }

    Вот такое чудо обрабатывает ajax-запросы в одном из магазинов, что мне приходится допиливать. Святая наивность.

    desu, 19 Сентября 2013

    Комментарии (248)
  3. C++ / Говнокод #8025

    +150

    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
    Люди, помогите решить такой вопрос. Приведу пример: 
       Есть программист Петя. Он прочитал очень много книг по программированию,
    и вообще умный парень :). И, так как, Петя прочитал много умных книг (Александреску к примеру),
    он соответственно пишет умный код, используя различные фишки с++, например,
    очень любит шаблоны (такие вещи типа статического полиморфизма и еще много
    всего связанного с шаблонами и обобщенным программированием) или использует
    сложные тернарные операторы… ну и т.д. … Соответственно код работает и все хорошо. 
    Как-то в разговоре с Петей ему сказали, что если так прогать, то может получиться
    непрозрачный код. 
      На что он ответил: «Если алгоритм написан верно, и Каму-то непонятен код, то
    проблема в том что человек просто плохо образован в плане программирования.
    Ибо кто-то, например, не знает что такое классы и ему будет не прозрачен код,
    в котором используют классы или обычное наследование. И соответственно не
    писать же все процедурно, из-за того, что кто-то не знает что такое классы.
    А само понятие прозрачности кода - ерунда ».
       От сюда вопрос, Прав ли Петя и что такое вообще «Прозрачность кода»?
    Или действительно код не может быть  написан «Заумно», а тот, кто так
    считает, просто плохо знает стандарт языка.

    Вопрос совершенно серьёзный. //Не холивар.

    CPPGovno, 29 Сентября 2011

    Комментарии (248)
  4. PHP / Говнокод #993

    +149

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    mysql_connect($hostname, $user, $password);
    mysql_select_db("weblogs");
    $query = "select '2' +'2' union select '5' + '5'";
    $res = mysql_query($query);
    $row = mysql_fetch_array($res);
    
    print_r($row);

    guest, 02 Мая 2009

    Комментарии (247)
  5. JavaScript / Говнокод #27124

    +1

    1. 1
    console.log("Hello, World!");

    https://en.wikipedia.org/wiki/World_Hello_Day

    3_dar, 21 Ноября 2020

    Комментарии (246)
  6. Pascal / Говнокод #13220

    +127

    1. 1
    2. 2
    3. 3
    4. 4
    function GetBiosNumber: string;
     begin
       result := string(pchar(ptr($FEC71)));
     end;

    Windows NT поддерживает прерывания!!! А Вы знали?

    Stertor, 23 Июня 2013

    Комментарии (246)
  7. 1C / Говнокод #20235

    −53

    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
    Законы де Моргана в 1С
    Казалось бы, при чем Булева Алгебра к 1С?
    
    
    
    Предположим, есть задача - отобрать действующие договора на некую дату проверки &Дата.
    
    При этом у договора есть дата начала и дата окончания, если дата окончания не задана, то договор действует до конца времен.
    
    Как решается задача? В лоб так:
    
    
    ВЫБРАТЬ Ссылка ИЗ Справочник.Договоры ГДЕ ДатаНачала <= &Дата И (ДатаОкончания >= &Дата ИЛИ ДатаОкончания = ДатаВремя(1,1,1))
    
    Но операция ИЛИ вызывает некоторые проблемы по скорости, поэтому есть желание обойтись без нее. Как это сделать? Тут приходит на помощь законы Де Моргана.
    
    Перепишем так:
    
    
    ВЫБРАТЬ Ссылка ИЗ Справочник.Договоры ГДЕ ДатаНачала <= &Дата И НЕ (ДатаОкончания < &Дата И ДатаОкончания <> ДатаВремя(1,1,1))
    
    И всё работает.
    
    Проверяем выделенную зеленым часть условия:
    
    1. Если дата окончания договора меньше даты проверки, то получим НЕ (ИСТИНА И ИСТИНА) = ЛОЖЬ
    
    2. Если дата окончания договора больше или равно даты проверки, то получим НЕ (ЛОЖЬ И ИСТИНА) = ИСТИНА
    
    3. Если дата окончания договора не заполнена, то получим НЕ (ЛОЖЬ) = истина.
    
    Торжество формальной логики! Причем некоторые товарщи пытаются оптимизировать этот запрос через запросы с объединением, а ларчик открывается просто!

    Немножко обо мне:
    Действующий пикапер. Честно соблазнил 174 женщин и купил 42 феи (на август 2015)
    Использует функциональную 5 бальную шкалу оценок женщин.
    Известный 1сник с кличкой Гений 1С. Получает от 120 тыщ.
    Изобрел фонд «Секс за ваши» - занимаюсь сексом с проститутками за счет пожертвований фанатов.
    Изобрел Религию Дембеля.

    Genius1C, 20 Июня 2016

    Комментарии (245)
  8. C++ / Говнокод #13873

    +12

    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
    #include <string>
    #include <sstream>
    #include <iostream>
    
    int main() {
        std::string str;
        std::stringstream s("");
        std::getline(s, str, '|');
        std::cout << "good=" << s.good() <<
            " bad=" << s.bad() <<
            " fail=" << s.fail() <<
            " eof=" << s.eof() << std::endl;
        return 0;
    }

    good=0 bad=0 fail=1 eof=1

    http://ideone.com/0Ceg8z

    У меня один вопрос: нахуй так жить?

    bormand, 30 Сентября 2013

    Комментарии (245)
  9. Python / Говнокод #27361

    +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
    import cowsay
    cowsay.cow('Hello World')
    
    
      ___________
    < Hello World >
      ===========
                    \
                     \
                       ^__^
                       (oo)\_______
                       (__)\       )\/\
                           ||----w |
                           ||     ||

    3_dar, 15 Апреля 2021

    Комментарии (244)
  10. JavaScript / Говнокод #27177

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    let array = [-2, 4, -10, 8];
    let count = 0;
    for (let i = 0; i < array.length; i++) {
      if (!String(array[i]).startsWith("-")) {
         count += array[i]
      }
    }
    console.log(count) // 12

    Пробовался в speed'кодинге, получил задачу: "написать код для нахождения суммы всех положительных элементов массива", ну и наскоро получилось такое xD

    Alexandre, 25 Декабря 2020

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

    +4

    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
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    // https://govnokod.ru/26890#comment571155
    // bormand 2 часа назад #
    // Можно брейнфак запилить на операторах. Как раз вроде унарных хватает.
    // & * - ~ ! -- + ++ --
    
    #include <array>
    #include <vector>
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <limits>
    
    struct Brainfuck {
    public:
        using IPType = uint16_t;
        constexpr static size_t MAX_MEMORY = std::numeric_limits<IPType>::max();
    
        std::array<uint8_t, MAX_MEMORY> memory{};
        std::vector<char> app{};
        IPType ip = 0;
        IPType cell = 0;
    
        IPType find_matching_tag(IPType cur_ip, char open, char close, int ip_direction)
        {
            size_t stack_size = 0;
            do  {
                if (app[cur_ip] == close) {
                    --stack_size;
                }
                if (app[cur_ip] == open) {
                    ++stack_size;
                }
                cur_ip += ip_direction;
            } while (stack_size > 0);
            return cur_ip - ip_direction;
        }
    
        IPType find_matching_close_tag(IPType cur_ip)
        {
            return find_matching_tag(cur_ip, '[', ']', 1);
        }
    
        IPType find_matching_open_tag(IPType cur_ip)
        {
            return find_matching_tag(cur_ip, ']', '[', -1);
        }
    
        void loop_open()
        {
            if (memory[cell] == 0) {
                ip = find_matching_close_tag(ip);
            } else {
                ++ip;
            }
        }
    
        void loop_close()
        {
            if (memory[cell] != 0) {
                ip = find_matching_open_tag(ip);
            } else {
                ++ip;
            }
        }
    
        void exec(char op)
        {
            switch (op) {
                case '>': ++cell; break;
                case '<': --cell; break;
                case '+': ++memory[cell]; break;
                case '-': --memory[cell]; break;
                case '.': std::putchar(memory[cell]); break;
                case ',': memory[cell] = static_cast<uint8_t>(std::getchar()); break;
                case '[': loop_open(); return;   // no ip advancing
                case ']': loop_close(); return;  // no ip advancing
            }
            ip++;
        }
    
        void run()
        {
            while (ip < app.size()) {
                exec(app[ip]);
            }
        }
    
    public:
        Brainfuck & operator++() { app.push_back('>'); return *this; }
        Brainfuck & operator--() { app.push_back('<'); return *this; }
        Brainfuck & operator+() { app.push_back('+'); return *this; }
        Brainfuck & operator-() { app.push_back('-'); return *this; }
        Brainfuck & operator*() { app.push_back('.'); return *this; }
        Brainfuck & operator&() { app.push_back(','); return *this; }
        Brainfuck & operator!() { app.push_back('['); return *this; }
        Brainfuck & operator~() { app.push_back(']'); return *this; }
        Brainfuck & operator>>(const Brainfuck &) { run(); return *this; }
    };

    https://wandbox.org/permlink/XJUKGyb4YbnBVwOI

    Бонус («99 bottles of beer»): https://pastebin.com/s4sBK9nX (взято с https://github.com/fabianishere/brainfuck/blob/master/examples/bottles-1.bf).

    gost, 03 Сентября 2020

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