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

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

    +3

    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
    // A sample standard C++20 program that prints
    // the first N Pythagorean triples.
    #include <iostream>
    #include <optional>
    #include <ranges>   // New header!
     
    using namespace std;
     
    // maybe_view defines a view over zero or one
    // objects.
    template<Semiregular T>
    struct maybe_view : view_interface<maybe_view<T>> {
      maybe_view() = default;
      maybe_view(T t) : data_(std::move(t)) {
      }
      T const *begin() const noexcept {
        return data_ ? &*data_ : nullptr;
      }
      T const *end() const noexcept {
        return data_ ? &*data_ + 1 : nullptr;
      }
    private:
      optional<T> data_{};
    };
     
    // "for_each" creates a new view by applying a
    // transformation to each element in an input
    // range, and flattening the resulting range of
    // ranges.
    // (This uses one syntax for constrained lambdas
    // in C++20.)
    inline constexpr auto for_each =
      []<Range R,
         Iterator I = iterator_t<R>,
         IndirectUnaryInvocable<I> Fun>(R&& r, Fun fun)
            requires Range<indirect_result_t<Fun, I>> {
          return std::forward<R>(r)
            | view::transform(std::move(fun))
            | view::join;
      };
     
    // "yield_if" takes a bool and a value and
    // returns a view of zero or one elements.
    inline constexpr auto yield_if =
      []<Semiregular T>(bool b, T x) {
        return b ? maybe_view{std::move(x)}
                 : maybe_view<T>{};
      };
     
    int main() {
      // Define an infinite range of all the
      // Pythagorean triples:
      using view::iota;
      auto triples =
        for_each(iota(1), [](int z) {
          return for_each(iota(1, z+1), [=](int x) {
            return for_each(iota(x, z+1), [=](int y) {
              return yield_if(x*x + y*y == z*z,
                make_tuple(x, y, z));
            });
          });
        });
     
        // Display the first 10 triples
        for(auto triple : triples | view::take(10)) {
          cout << '('
               << get<0>(triple) << ','
               << get<1>(triple) << ','
               << get<2>(triple) << ')' << '\n';
      }
    }

    «C++20»: ещё больше модерна! Ещё больше шаблонов! Ещё больше ебанутых конструкций! Ещё больше блядского цирка!
    s: http://aras-p.info/blog/2018/12/28/Modern-C-Lamentations/

    gost, 30 Декабря 2018

    Комментарии (56)
  3. JavaScript / Говнокод #25217

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    const arr = [['govno',  'shit'], ['kod', 'code']]
    //we expect it to be {'govno': 'shit', 'kod' :  'code'}
    
    //unsupported(yet)
    Object.fromEntries = arr => 
        Object.assign({}, ...Array.from(arr, ([k, v]) => ({[k]: v}) ));
    const res1 = Object.fromEntries(arr)
    
    const res2 = arr.reduce((res, [key, value]) => Object.defineProperty(res, key, {'value': value, 'enumerable': true}), {})
    
    const res3 = {}
    arr.forEach(([key, value]) => res3[key] = value)

    А как превратить массив пар ключ-значение в ассоциативный на Вашем языке?

    bootcamp_dropout, 23 Декабря 2018

    Комментарии (113)
  4. C++ / Говнокод #25193

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    Кстати, разные эпизоды из Зеленого слоника можно сопоставить с разными статьями
    о C++. Если статья про какие-то новые возможности, которые вводятся в
    каком-нибудь С++20, это когда братишке покушать принесли. Если статья о том,
    как можно метапрограммировать на шаблонах, то это когда вилкой говно чистить.

    Ну что ты! Я тебе сейчас расскажу, вот смотри, Я тебе хорошую сейчас расскажу! Смотри, я… вот у нас здесь копипаста много… ой-ой… копипаста много, понимаешь? Смотри, копипаст, они тебе код читать мешает. А я вот, давай я здесь напишу метушни на темплейтах и консэкспрах с препроцессором сишным, и весь копипаст сокращу слышишь? Ну что, писать?

    j123123, 15 Декабря 2018

    Комментарии (21)
  5. Си / Говнокод #25188

    +3

    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
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    enum {
        HOST = INADDR_LOOPBACK,
        PORT = 6666,
        MAX_BUF = 1024
    };
    
    struct sock {
        int sockfd;
        int addrlen;
        struct sockaddr_in addr;
    } host, client;
    
    int check(int x, char*msg)
    {
        if (!~x) {
            perror(msg);
            exit(1);
        }
        return x;
    }
    
    #define QUOTE_(...) #__VA_ARGS__
    #define QUOTE(...) QUOTE_(__VA_ARGS__)
    #define CHECK(...) check(__VA_ARGS__, QUOTE(line __LINE__: __VA_ARGS__))
    
    int main(int argc, char**argv)
    {
        struct sock host, client;
        host.sockfd = CHECK(socket(AF_INET, SOCK_STREAM, 0)),
        host.addr = (struct sockaddr_in){AF_INET, htons(PORT), htonl(HOST)};
        CHECK(bind(host.sockfd, &(struct sockaddr)host.addr, sizeof(host.addr)));
        CHECK(listen(host.sockfd, 1));
        CHECK(client.sockfd = accept(host.sockfd, (void*)&client.addr, &client.addrlen));
        printf("connected: %s\n", inet_ntoa(client.addr.sin_addr));
        
        struct {int len; char buf[MAX_BUF];} msg;
        while (CHECK(msg.len = recv(client.sockfd, msg.buf, MAX_BUF - 1, 0)) && msg.len) {
            msg.buf[msg.len] = 0;
            printf("%s", msg.buf);
            send(client.sockfd, msg.buf, msg.len, 0);
        }
        close(client.sockfd);
        close(host.sockfd);
        return 0;
    }

    Почему если закоментить 36-ю строчку адрес килента 0.0.0.0?

    666_N33D135, 13 Декабря 2018

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

    +3

    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
    user_pref("general.useragent.override.3dn.ru", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.at.ua", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.clan.su", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.do.am", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.moy.su", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.my1.ru", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.narod.ru", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.ae", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.com", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.es", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.hu", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.kz", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.lv", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.net", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.org", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.ru", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");

    Ко-ко-ко, куд-кудах-тах-тах!

    nemyx, 08 Декабря 2018

    Комментарии (36)
  7. Куча / Говнокод #25132

    +3

    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
    : ENUM>  ( -- )  ;
    : <ENUM ( xt n -- )
       BEGIN
          BEGIN
             >IN @  BL WORD DUP C@ 0=
          WHILE
             2DROP  REFILL 0= IF EXIT THEN
          REPEAT
          FIND SWAP ['] ENUM> = AND IF DROP 2DROP EXIT THEN
          >IN !
          2DUP SWAP EXECUTE
          1+
       AGAIN
    ;
    WORDLIST CONSTANT ASSEMBLER
    GET-ORDER ASSEMBLER SWAP 1+ SET-ORDER  DEFINITIONS
    HEX
    VARIABLE 'BYTES
    : B,  ( c -- )  C,  1 'BYTES @ +! ;
    : W,  ( u -- )  DUP B,  8 RSHIFT B, ;
    : DB"  ( "ccc<quote>" -- c-addr u )
       [CHAR] " PARSE SWAP OVER HERE >R HERE SWAP DUP ALLOT CMOVE
       R> SWAP DUP 'BYTES @ +!
    ;
    : W!  ( u addr -- )  2DUP C!  SWAP 8 RSHIFT SWAP 1+ C! ;
    ' CONSTANT 0 <ENUM  AX CX DX BX SP BP SI DI  ENUM>
    ' CONSTANT 0 <ENUM  AL CL DL BL AH CH DH BH  ENUM>
    : MEM  ( u "<spaces>name" -- )  DUP 18 AND 3 RSHIFT >R 7 AND R> 2CONSTANT ;
    ' MEM 0 <ENUM
       [BX+SI]   [BX+DI]   [BP+SI]   [BP+DI]   [SI]   [DI]   [W]      [BX]
       [BX+SI]+B [BX+DI]+B [BP+SI]+B [BP+DI]+B [SI]+B [DI]+B [BP]+B   [BX]+B
       [BX+SI]+W [BX+DI]+W [BP+SI]+W [BP+DI]+W [SI]+W [DI]+W [BP]+W   [BX]+W
    ENUM>
    :NONAME  ( reg1 reg2 -- )  3 LSHIFT OR B, ;
    :NONAME  ( reg off u -- )  ROT 3 LSHIFT OR B, W, ;
    :NONAME  ( reg off u -- )  ROT 3 LSHIFT OR B, B, ;
    :NONAME  ( reg off 6 | reg u -- )
       DUP 6 = IF
          ROT 3 LSHIFT OR B, W,
       ELSE
          SWAP 3 LSHIFT OR B,
       THEN 
    ;
    CREATE MOD , , , ,
    3 CONSTANT REG
    : -- ( opcode "<spaces>name" -- )  CREATE C,   DOES> C@ B, CELLS MOD + @ EXECUTE ;
    ' --  0   <ENUM    ADD<B    ADD<W    ADD>B    ADD>W    ENUM>
    ' --  8   <ENUM    OR<B     OR<W     OR>B     OR>W     ENUM>
    ' --  10  <ENUM    ADC<B    ADC<W    ADC>B    ADC>W    ENUM>
    ' --  18  <ENUM    SBB<B    SBB<W    SBB>B    SBB>W    ENUM>
    ' --  20  <ENUM    AND<B    AND<W    AND>B    AND>W    ENUM>
    ' --  28  <ENUM    SUB<B    SUB<W    SUB>B    SUB>W    ENUM>
    ' --  30  <ENUM    XOR<B    XOR<W    XOR>B    XOR>W    ENUM>
    ' --  38  <ENUM    CMP<B    CMP<W    CMP>B    CMP>W    ENUM>
    ' --  85  <ENUM    TESTB    TESTW    XCHGB    XCHGW
                       MOV<B    MOV<W    MOV>B    MOV>W    ENUM>
    8D -- LEA    0C4 -- LES    0C5 -- LDS
    : -- ( opcode "<spaces>name" -- )  CREATE C,   DOES> C@ B, B, ;
    4  -- AL-ADD     0C  -- AL-OR    14  -- AL-ADC   1C  -- AL-SBB
    24 -- AL-AND     2C  -- AL-SUB   34  -- AL-XOR   3C  -- AL-CMP
    6B -- PUSHB      0A8 -- AL-TEST  0CD -- INT      0EB -- JMP-SHORT
    ' --  70  <ENUM  JO JNO JB JAE JZ JNZ JBE JA JS JNS JP JNP  ENUM>
    ' --  0B0 <ENUM    AL-MOV    CL-MOV    DL-MOV    BL-MOV
                       AH-MOV    CH-MOV    DH-MOV    BH-MOV    ENUM>
    ' --  0E0 <ENUM    LOOPNZ    LOOPZ     LOOP      JCXZ
                       INB       INW       OUTB      OUTW      ENUM>
    : -- ( opcode "<spaces>name" -- )  CREATE C,   DOES> C@ B, W, ;
    5   -- AX-ADD    0D  -- AX-OR     15  -- AX-ADC    1D  -- AX-SBB
    25  -- AX-AND    2D  -- AX-SUB    35  -- AX-XOR    3D  -- AX-CMP
    68  -- PUSHW     0A0 -- MEM>AL    0A1 -- MEM>AX    0A2 -- AL>MEM
    0A3 -- AX>MEM    0A9 -- AX-TEST   0C2 -- RETW      0CA -- RETW-FAR
    0E8 -- CALL      0E9 -- JMP
    ' --  0B8  <ENUM    AX-MOV    CX-MOV    DX-MOV   BX-MOV
                        SP-MOV    BP-MOV    SI-MOV   DI-MOV    ENUM>
    : -- ( opcode "<spaces>name" -- )  CREATE C,   DOES> C@ B, ;
    6   -- ES-PUSH             7   -- ES-POP    0E -- CS-PUSH    16 -- SS-PUSH
    17  -- SS-POP              1E  -- DS-PUSH   1F  -- DS-POP     26 -- ES:
    26  -- DAA                 2E  -- CS:       2F  -- DAS        36 -- SS:
    37  -- AAA                 3E  -- DS:       3F  -- AAS        60 -- PUSHA
    61  -- POPA                64  -- FS:       65  -- GS:        66 -- CHANGE-OP-SIZE
    67  -- CHANGE-ADDR-SIZE    0C3 -- RET       0C9 -- LEAVE      0CB -- RET-FAR
    0CC -- INT3                0CE -- INTO      0CF -- IRET       0F0 -- LOCK
    ' --  40  <ENUM    AX-INC  CX-INC  DX-INC  BX-INC  SP-INC  BP-INC  SI-INC  DI-INC
                       AX-DEC  CX-DEC  DX-DEC  BX-DEC  SP-DEC  BP-DEC  SI-DEC  DI-DEC
                       AX-PUSH CX-PUSH DX-PUSH BX-PUSH SP-PUSH BP-PUSH SI-PUSH DI-PUSH
                       AX-POP  CX-POP  DX-POP  BX-POP  SP-POP  BP-POP  SI-POP  DI-POP
    ENUM>
    ' --  6C  <ENUM    INSB          INSW          OUTSB         OUTSW         ENUM>
    ' --  80  <ENUM    NOP           CX-AX-XCHG    DX-AX-XCHG    BX-AX-XCHG
                       SP-AX-XCHG    BP-AX-XCHG    SI-AX-XCHG    DI-AX-XCHG
                       CBW           CWD                                       ENUM>
    ' --  9B  <ENUM    WAIT      PUSHF     POPF       SAHF       LAHF          ENUM>
    ' --  0A4 <ENUM    MOVSB     MOVSW     CMPSB      CMPSW                    ENUM>
    ' --  0AA <ENUM    STOSB     STOSW     LODSB      LODSW      SCASB  SCASW  ENUM>
    ' --  0D4 <ENUM    AAM       AAD       SALC       XLAT                     ENUM>
    ' --  0EC <ENUM    DX-AL-IN  DX-AX-IN  AL-DX-OUT  AX-DX-OUT                ENUM>
    ' --  0F2 <ENUM    REPNZ     REPZ      HLT        CMC                      ENUM>
    ' --  0F8 <ENUM    CLC       STC       CLI        STI        CLD    STD    ENUM>

    Я вчера упоролся подумал, хуля я как лох пешу форт на асме, ТруЪ фротеры пишут форт на ыорте. И начал я с этого —– я представляю вам единственный и неповторимый говно-фрот-асамблец за авторством моего меня.

    Примерим:

    VARIABLE BYTES
    BYTES 'BYTES !
    CREATE PROG

    9 AH-MOV
    0 DX-MOV HERE 2 -
    21 INT
    4C00 AX-MOV
    21 INT

    DB" Hello, Forth-ASSembler!$" DROP PROG - 100 + SWAP W!

    PROG BYTES @ DUMP


    https://ideone.com/UtN1EZ

    another_fake, 29 Ноября 2018

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

    +3

    1. 1
    2. 2
    https://youtu.be/A4Gu0lfIKU0
    Нужно ли программисту изучать C++?

    Какое только дерьмо не найдешь на ютубе.

    C++ это кривая и дерьмовая высокоуровневая говнонадстройка над Си.
    Начинать с C++ точно не стоит, потому что в итоге получаются какие-то говнокодеры, не умеющие ничего делать без трижды обдристанной плюсовой стдлибы и всяких там классов с шаблонами и эксепшенами. Лучше уж начинать с Си, потом немного потыкать в лисп с его макросами, а потом посмотреть на плюсовые темплейты и констэкспры, тогда-то дерьмовейщая суть говноплюсов будет ясна.
    Что касается ООП в C++, то это просто сраное дерьмо. Понапридумывали каких-то паблик-приват-протектед наследований. Еще эта питушня с множественным наследованием и vtable, отсутствие метаклассов (RTTI - говно), отсутствие нормальных механизмов метапрограммирования (только какое-то кривое и убогое говно), отсутствие интроспекции, тьюринг-полные темплейты, не совпадающие с самим C++. Сраное парашное нагромождение разнообразной хуйни. Никакого базиса и ничего фундаментального в этому куске дерьма нет.

    j123123, 05 Ноября 2018

    Комментарии (2025)
  9. JavaScript / Говнокод #24929

    +3

    1. 1
    [ '\uD83D\uDC14', '\uD83E\uDD5A' ].sort()

    Unicode порешал

    https://twitter.com/aBagorn/status/1051286652663025664

    Оригинал не влез, ибо:
    Application was halted by an exception.
    Debug-mode is off.

    Elvenfighter, 17 Октября 2018

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

    +3

    1. 1
    https://ssr.vuejs.org/ru/

    Это победа! Столько лет героически переносить сайты на клиент (SPA! Мы разгрузим сервер! Сервер будет отдавать только JSON!) что бы в один момент пенести всё на сервер обратно из-за ёбанных сеошников.

    хуита, 12 Сентября 2018

    Комментарии (19)
  11. Куча / Говнокод #24684

    +3

    1. 1
    Почему Application стал так часто падать???

    А ещё csrf eггог-и nocTo9lHHo

    kir_rik, 29 Августа 2018

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