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

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

    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
    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
    // https://github.com/flipperdevices/flipperzero-firmware/blob/2a6a3a1bf7ba1ecb42b8cbfc1b1856a54f2878b7/applications/plugins/music_player/music_player.c#L74
    
    static bool is_white_note(uint8_t semitone, uint8_t id) {
        switch(semitone) {
        case 0:
            if(id == 0) return true;
            break;
        case 2:
            if(id == 1) return true;
            break;
        case 4:
            if(id == 2) return true;
            break;
        case 5:
            if(id == 3) return true;
            break;
        case 7:
            if(id == 4) return true;
            break;
        case 9:
            if(id == 5) return true;
            break;
        case 11:
            if(id == 6) return true;
            break;
        default:
            break;
        }
    
        return false;
    }
    
    static bool is_black_note(uint8_t semitone, uint8_t id) {
        switch(semitone) {
        case 1:
            if(id == 0) return true;
            break;
        case 3:
            if(id == 1) return true;
            break;
        case 6:
            if(id == 3) return true;
            break;
        case 8:
            if(id == 4) return true;
            break;
        case 10:
            if(id == 5) return true;
            break;
        default:
            break;
        }
    
        return false;
    }

    Хуйня какая-то. То ли дело "паттерн матчинг".

    j123123, 01 Декабря 2022

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

    +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
    type CreateMutable<Type> = {
      -readonly [Property in keyof Type]: Type[Property];
    };
     
    type LockedAccount = {
      readonly id: string;
      readonly name: string;
    };
    
    type UnlockedAccount = CreateMutable<LockedAccount>;
    
    function main() {
        let a: LockedAccount;
        let b: UnlockedAccount;
    
        print("done.");
    }

    Я вам наговнокодил новую фичу.. называется "mapped type"

    ASD_77, 01 Января 2022

    Комментарии (41)
  4. Куча / Говнокод #27570

    +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
    C	5.2s 	gcc test.c
    C++	1m 25s 	g++ test.cpp
    Zig	10.1s 	zig build-exe test.zig
    Nim	45s 	nim c test.nim
    Rust	Stopped after 30 minutes	rustc test.rs
    Swift	Stopped after 30 minutes 	swiftc test.swift
    D	Segfault after 6 minutes 	dmd test.d
    
    Rust and Swift took too long to compile 400k lines, so I tried smaller numbers: 
    
    # lines	Rust	Swift 	D
    2k	3.4s 	0.8s
    4k	9.0s 	1.0s
    8k	30.8s 	2.3s
    20k	3m 52s 	11.8s 	4.7s
    100k	- 	5m 57s 	segfault

    https://vlang.io/compilation_speed

    3.14159265, 15 Августа 2021

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

    +1

    1. 1
    #define LEAP_YEAR_OR_NOT(year)( ( year % 4 ) ? ( 0 ) : ( 1 ) )

    Тот кто это писал, видимо рассуждал примерно так:

    - В 2100 году это конечно забагует, но это будет уже не моя проблема.

    j123123, 11 Ноября 2020

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    /// <summary>
            /// Сохранение описания отеля в базу данных.
            /// </summary>
            public void Save()
            {
                lock ("save")
                {

    tablecell, 01 Июня 2020

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

    +1

    1. 1
    file:///C:/Users/сергейкомп/Desktop/проекты/desktopui_framework/src/core/formloader.cpp

    govnokoduser2000, 27 Апреля 2020

    Комментарии (41)
  8. 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)
  9. Куча / Говнокод #26089

    −4

    1. 1
    2. 2
    Чем лучше реверсить бинарник под ARM (armv5te)? Желательно бесплатно и опенсорс
    Пробовал Ghidra, оно нормально структуры не определяет

    a0a1, 11 Декабря 2019

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

    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
    #include <stdio.h>
     
    #define BIG_ENDIAN 0
    #define LITTLE_ENDIAN 1
     
    int TestByteOrder() {
            short int word = 0x0001;
            char *b = (char *)&word;
            return (b[0] ? LITTLE_ENDIAN : BIG_ENDIAN);
    }
     
    int main() {
            int r = TestByteOrder();
            printf("%s\n", r == LITTLE_ENDIAN ? "Little Endian" : "Big Endian");
            return r;
    }

    Игрушечная программа, проверяет порядковость байтов процессора ("endianness"); хотя изначально понятно что WinNT всегда "от младшего к старшему".
    Она безупречно правильная, но меня не устраивает ее размер. Ведь всё можно было бы уместить в две строки. (А еще лучше перевести на АСМ). Прошу знатоков поупражняться.

    tmayh, 06 Октября 2019

    Комментарии (41)
  11. Lua / Говнокод #25853

    0

    1. 1
    Ня, пока.

    Пароль: 123456654321123456

    3oJIoTou_xyu, 18 Сентября 2019

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