1. Список говнокодов пользователя j123123

    Всего: 331

  2. Куча / Говнокод #26489

    +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
    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
    .
                                    Т Е С Т
    
    
                 К А К О Й     В Ы    П Р О Г Р А М М И С Т ?
    
    
                       Источник: Datamation, march, 1977
              Norman Grabowsky "What kind of programmer are you?"
    
    
         Этот тест расскажет о вашем программировании больше,  чем  вы  сами
    хотели бы знать.
    
         Переменная  I  представляет  собой  полное  слово  с  фиксированной
    точкой. I принимает значения 1  либо  2.  Если  I  оказалось  равным  1,
    замените его на 2 и наоборот.
         Сравните ваше решение с десятью  предложенными.  Найдите  одно  или
    несколько  наиболее  похожих  на ваше и прочитайте в разделе "категории"
    краткую характеристику. Вы можете кодировать  на  любом  языке,  но  для
    сравнения предпочтительнее всего использовать PL/1.
    
    
                        Р е ш е н и я.
    
    1.           IF I='2' THEN I=1;
                 ELSE I=2;
    
    2.           IF I=2 THEN I=1;
                 IF I=1 THEN I=2;
    
    3.           IF I=1 THEN GOTO SKIP;
                 I=1;
                 GOTO DONE;
        SKIP:    I=2;
        DONE:
    
    4.           J=2;
                 IF I=2 THEN J=1;
                 I=J;
    
    5.           DECLARE SWITCH LABEL;
                 .  .  .
                 IF I=1 THEN SWITCH=ONE;
                 IF I=2 THEN SWITCH=TWO;
                 GOTO SWITCH;
        ONE:     I=2;
                 GOTO DONE;
        TWO:     I=1;
        DONE:
    
    6.           DECLARE ONETWO(2) FIXED BIN(31) INIT (2,1);
                 .  .  .
                 I=ONETWO(I);
    
    7.           I=3-I;
    
    8.           I=I-(I/2*2)+1;
    
    9.           IF I=2
                       THEN DO;
                            I=1;
                       END;
                       ELSE DO;
                            I=2;
                       END;
    
    10.          IF I=1 THEN I=2;
                 IF I^=2 THEN DO;
                   PUT LIST('ПЛOXOE  I - ЗAMEHEHO HA 1');
                        I=1;
                   END;

    https://www.cs.bgu.ac.il/~barnshte/CompHumor/texts/TEST.koi

    j123123, 11 Марта 2020

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    // https://habr.com/ru/post/490222/
    
    Почему мы должны сломать ABI
    
    Прежде всего, есть несколько полезных изменений в реализации стандартной библиотеки, которые можно внедрить, если нарушить текущий ABI:
    
    ...
    
    * Ускорить работу std::regex (На данный момент быстрее запустить PHP и выполнить на нем поиск по регулярному выражению, чем использовать стандартный std::regex)

    Какой багор! Именно поэтому я за PHP

    j123123, 28 Февраля 2020

    Комментарии (362)
  4. Си / Говнокод #26430

    +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
    // https://www.linux.org.ru/forum/development/15520475
    // *Какой #define макрит for в while?
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #define FOR(a, b, c, ...) {a;while(b){__VA_ARGS__ c;}}
    
    int main(void)
    {
      for(int i = 0; i < 10; i++)
      {
        printf("test %d\n", i);
      }
      
      printf("\n");
      
      FOR(int i = 0, i < 10, i++,
      {
        printf("test %d\n", i);
      }   
      )
        
      return EXIT_SUCCESS;
    }

    j123123, 10 Февраля 2020

    Комментарии (3)
  5. Python / Говнокод #26412

    +6

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    # coding: inlinec
    from inlinec import inlinec
    
    @inlinec
    def test():
        #include<stdio.h>
        void test() {
            printf("Hello, world");
        }

    https://www.opennet.ru/opennews/art.shtml?num=52306 - Inlinec - новый способ использования Си-кода в Python-скриптах

    Сишные вставки в питоне

    j123123, 04 Февраля 2020

    Комментарии (204)
  6. C++ / Говнокод #26389

    +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
    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
    // https://www.linux.org.ru/forum/development/15496357
    
    // Нужен нормальный способ сказать компилятору что type aliasing невозможен на некотором участке кода. Минимальный пример:
    
    template<typename T> struct f final {
    	void bad(T v) noexcept { while (b != e) *b++=v; }
    	void good(T v) noexcept {
    		auto tb(b), te(e);
    		while (tb != te) *tb++=v;
    		b=tb;
    		e=te;
    	}
    
    	T* b, * e;
    };
    template struct f<char>;
    /*
    Выхлоп gcc-8:
    
    $ g++ -xc++ -std=c++14 -pedantic-errors -Os -c -of.o f.cc
    $ objdump -Cd f.o
    f.o:     file format elf64-x86-64
    
    
    Disassembly of section .text._ZN1fIcE3badEc:
    
    0000000000000000 <f<char>::bad(char)>:
       0:	48 8b 07             	mov    (%rdi),%rax
       3:	48 3b 47 08          	cmp    0x8(%rdi),%rax
       7:	74 0c                	je     15 <f<char>::bad(char)+0x15>
       9:	48 8d 50 01          	lea    0x1(%rax),%rdx
       d:	48 89 17             	mov    %rdx,(%rdi)
      10:	40 88 30             	mov    %sil,(%rax)
      13:	eb eb                	jmp    0 <f<char>::bad(char)>
      15:	c3                   	retq   
    
    Disassembly of section .text._ZN1fIcE4goodEc:
    
    0000000000000000 <f<char>::good(char)>:
       0:	48 8b 07             	mov    (%rdi),%rax
       3:	48 8b 57 08          	mov    0x8(%rdi),%rdx
       7:	48 39 d0             	cmp    %rdx,%rax
       a:	74 09                	je     15 <f<char>::good(char)+0x15>
       c:	48 ff c0             	inc    %rax
       f:	40 88 70 ff          	mov    %sil,-0x1(%rax)
      13:	eb f2                	jmp    7 <f<char>::good(char)+0x7>
      15:	48 89 07             	mov    %rax,(%rdi)
      18:	48 89 47 08          	mov    %rax,0x8(%rdi)
      1c:	c3                   	retq
    */

    f<char>::bad(char)+0, f<char>::bad(char)+3 и f<char>::bad(char)+d - три раза за итерацию лезет в память. Разумеется, подобный код сливает в тестах производительности. Есть решение лучше, чем локальные переменные заводить каждый раз?

    j123123, 28 Января 2020

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    // https://github.com/microsoft/PQCrypto-SIDH/blob/ebd1c80a8ac35e9ca2ef9680291a8a43b95a3bfa/src/random/random.c#L22
    
    static __inline void delay(unsigned int count)
    {
        while (count--) {}
    }

    ... guess what?

    j123123, 25 Января 2020

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

    +1

    1. 1
    https://www.linux.org.ru/forum/development/15475716?cid=15478711

    > Система типов в С++ куда мощнее любой скриптухи, особенно хаскеля. Там уже есть завтипы. А значит какая угодно суперкомпиляция. Да и сам С++ состоит из суперкомпиляции на 99%.
    Царь

    j123123, 20 Января 2020

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

    +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
    // https://habr.com/ru/post/451830/  Кратко с реализацией о AES 128 ECB
    
    // ...
    
    byte_t hex(char ch) { return (ch - '0') % 39; }
    byte_t sbox(byte_t x, bool decrypt = false) {
      std::string s = (decrypt ? INV_SBOX : SBOX)[x >> 4][x & 15];
      return hex(s[0]) << 4 | hex(s[1]);
    }
    byte_t mult_by_2(byte_t x) { return (x < 128) ? x << 1 : (x << 1 & 0xff) ^ 0x1b; }
    byte_t mult_by_8(byte_t x) { return mult_by_2(mult_by_2(mult_by_2(x))); }
    
    const std::unordered_map<byte_t, std::function<byte_t(byte_t)>> mapper = {
      {0x1, [](byte_t x) { return x; }},
      {0x2, mult_by_2},
      {0x3, [](byte_t x) { return mult_by_2(x) ^ x; }},
      {0x9, [](byte_t x) { return mult_by_8(x) ^ x; }},
      {0xb, [](byte_t x) { return mult_by_8(x) ^ mult_by_2(x) ^ x; }},
      {0xd, [](byte_t x) { return mult_by_8(x) ^ mult_by_2(mult_by_2(x)) ^ x; }},
      {0xe, [](byte_t x) { return mult_by_8(x) ^ mult_by_2(mult_by_2(x)) ^ mult_by_2(x); }},
    };
    byte_t vector_mult(const std::array<byte_t, 4>& v1, std::array<byte_t, 4>&& v2) {
      std::transform(begin(v1), end(v1), begin(v2), begin(v2),
        [](byte_t x, byte_t y) { return mapper.at(y)(x); });
      return std::accumulate(begin(v2), end(v2), byte_t(0), std::bit_xor<byte_t>());
    }
    
    
    const std::vector<std::vector<std::string>> SBOX = { // блядь сука долбоеб нахуя это так делать?
      { "63", "7c", "77", "7b", "f2", "6b", "6f", "c5", "30", "01", "67", "2b", "fe", "d7", "ab", "76" },
      { "ca", "82", "c9", "7d", "fa", "59", "47", "f0", "ad", "d4", "a2", "af", "9c", "a4", "72", "c0" },
      { "b7", "fd", "93", "26", "36", "3f", "f7", "cc", "34", "a5", "e5", "f1", "71", "d8", "31", "15" },
      { "04", "c7", "23", "c3", "18", "96", "05", "9a", "07", "12", "80", "e2", "eb", "27", "b2", "75" },
      { "09", "83", "2c", "1a", "1b", "6e", "5a", "a0", "52", "3b", "d6", "b3", "29", "e3", "2f", "84" },
    // ...

    пиздец нахуй

    j123123, 16 Января 2020

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

    +7

    1. 1
    https://tsar1997.blogspot.com/ блог царя

    > Я продолжил умножать на ноль недоязычки. Сектанты там атакуют со всех сторон. Сидел в окопе всё это время.

    лол

    j123123, 14 Января 2020

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

    +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
    // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1371r1.pdf#section.4
    // Pattern Matching P1371R1
    
    // before
    
    auto&& [x, y] = p;
    if (x == 0 && y == 0) {
      std::cout << "on origin";
    } else if (x == 0) {
      std::cout << "on y-axis";
    } else if (y == 0) {
      std::cout << "on x-axis";
    } else {
      std::cout << x << ',' << y;
    }
    
    // after
    
    inspect (p) {
      [0, 0]: std::cout << "on origin";
      [0, y]: std::cout << "on y-axis";
      [x, 0]: std::cout << "on x-axis";
      [x, y]: std::cout << x << ',' << y;
    }

    Говностандартизаторы очередную хуйню изобретают. Нет чтоб нормальную гомоиконность сделать, чтоб через нее любую такую поебень синтезировать можно было, не изменяя говностандарт, не добавляя всяких новых statement. И почему они не хотят эту херню прикрутить тупо к switch? Что если у меня переменная называется inspect, мне ее что, переименовывать?

    Давайте пропосал напишем, чтоб для стейтментов отдельные неймспейсы были, и чтоб можно было свои самопальные стейтменты написать на каком-то отдельном говноязыке (шаблоны под эту хуйню, как я понял, не подходят)? Ну чтоб у всех окончательно сорвало крышу от обилия хуйни.

    j123123, 10 Января 2020

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