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

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

    +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
    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
    function main()
    {
    	f1();
    }
    
    function f1(a = 10)
    {    
        return a;
    }
    
    // code for 1
    
    module @"1.ts"  {
      func @main() {
        %c0_i32 = constant 0 : i32
        %0 = typescript.undef : i32
        %1 = call @f1(%c0_i32, %0) : (i32, i32) -> i32
        return
      }
      func private @f1(%arg0: i32, %arg1: i32) -> i32 attributes {OptionalFrom = 1 : i8} {
        %c10_i32 = constant 10 : i32
        %c1_i32 = constant 1 : i32
        %0 = alloca() : memref<i32>
        %1 = cmpi ult, %arg0, %c1_i32 : i32
        %2 = scf.if %1 -> (i32) {
          scf.yield %c10_i32 : i32
        } else {
          scf.yield %arg1 : i32
        }
        store %2, %0[] : memref<i32>
        %3 = load %0[] : memref<i32>
        return %3 : i32
      }
    }
    
    // code for 2
    
    ; ModuleID = 'LLVMDialectModule'
    source_filename = "LLVMDialectModule"
    target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
    target triple = "x86_64-pc-windows-msvc"
    
    declare i8* @malloc(i64)
    
    declare void @free(i8*)
    
    define void @main() !dbg !3 {
      %1 = call i32 @f1(i32 0, i32 undef), !dbg !7
      ret void, !dbg !9
    }
    
    define i32 @f1(i32 %0, i32 %1) !dbg !10 {
      %3 = alloca i32, i64 ptrtoint (i32* getelementptr (i32, i32* null, i64 1) to i64), align 4, !dbg !11
      %4 = insertvalue { i32*, i32*, i64 } undef, i32* %3, 0, !dbg !11
      %5 = insertvalue { i32*, i32*, i64 } %4, i32* %3, 1, !dbg !11
      %6 = insertvalue { i32*, i32*, i64 } %5, i64 0, 2, !dbg !11
      %7 = icmp ult i32 %0, 1, !dbg !11
      br i1 %7, label %8, label %9, !dbg !11
    
    8:                                                ; preds = %2
      br label %10, !dbg !11
    
    9:                                                ; preds = %2
      br label %10, !dbg !11
    
    10:                                               ; preds = %8, %9
      %11 = phi i32 [ %1, %9 ], [ 10, %8 ]
      br label %12, !dbg !11
    
    12:                                               ; preds = %10
      %13 = extractvalue { i32*, i32*, i64 } %6, 1, !dbg !11
      store i32 %11, i32* %13, align 4, !dbg !11
      %14 = extractvalue { i32*, i32*, i64 } %6, 1, !dbg !11
      %15 = load i32, i32* %14, align 4, !dbg !11
      ret i32 %15, !dbg !13
    }

    История о том как я компайлер писал. (предисторию знают думаю все). Посмотрите на код и сравните с ужасным кодом на С. Это простенький javascript который тоже може быть скомпиленным в исполняемый год. а что для этого надо. просто несколько шагов.

    1) компилим код через чудо компилятор tsc.exe --emit=mlir-affine c:\1.ts



    а дальше может получить LLVM IL который можно компилировать

    2) компилим код через чудо компилятор tsc.exe --emit=mlir-llvm c:\1.ts



    а далее компилим код

    llc.exe --filetype=obj -o=out.o 1.ll


    запускаем a.exe

    и оно работает :)

    ASD_77, 19 Февраля 2021

    Комментарии (30)
  3. Си / Говнокод #27266

    +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
    // https://deadlockempire.github.io/
    // Игра, где надо играть за планировщик чтоб вызвать дедлок
    
    // https://deadlockempire.github.io/#2-flags
    
    // First Army
    
    while (true) {
      while (flag != false) {
        ;
      }
      flag = true;
      critical_section();
      flag = false;
    }
    
    // Second Army
    
    while (true) {
      while (flag != false) {
        ;
      }
      flag = true;
      critical_section();
      flag = false;
    }

    The day finally came. The Deadlock Empire opened its gates and from them surged massive amounts of soldiers, loyal servants of the evil Parallel Wizard. The Wizard has many strengths - his armies are fast, and he can do a lot of stuff that we can't. But now he set out to conquer the world, and we cannot have that.

    You are our best Scheduler, commander! We have fewer troops and simpler ones, so we will need your help. Already two armies of the Deadlock Empire are approaching our border keeps. They are poorly equipped and poorly trained, however. You might be able to desync them and break their morale.

    j123123, 20 Февраля 2021

    Комментарии (58)
  4. Go / Говнокод #27261

    +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
    // https://docs.docker.com/engine/api/v1.24/#create-a-container
    
    POST /v1.24/containers/create HTTP/1.1
    Content-Type: application/json
    Content-Length: 12345
    
    {
           "Hostname": "",
           "Domainname": "",
           "User": "",
           "AttachStdin": false,
           "AttachStdout": true,
           "AttachStderr": true,
           "Tty": false,
           "OpenStdin": false,
           "StdinOnce": false,
           "Env": [
                   "FOO=bar",
                   "BAZ=quux"
           ],
           ...
    }

    Ядро предоставляет сисколл execve. Execve принимает переменные окружения в виде массива строк A=B -
    не знаю конкретных причин, почему так сделано, но скорее всего просто потому что писать хэшмапу под
    это дело, которая еще и будет выкинута из памяти через относительно небольшое время - дело дорогое и
    ненужное, плюс наверняка какой-нибудь лишний пердолинг со стеком.
    https://man7.org/linux/man-pages/man2/execve.2.html

    Го, "человеческий язык" с поддержкой обычных мап из коробки, ничтоже сумляшеся не замечает никакой
    проблемы и заставляет пользователя передавать переменные окружения в том же формате, потому что у
    языка не только синтаксис должен быть таким же тупым, как программист на нём и вообще мы же тут
    делаем вид, что мы C, только лучше.
    https://golang.org/pkg/os/exec/#example_Command_environment

    Докер, "человеческий сервис" с HTTP API, использующим формат JSON с поддержкой обычных мап из коробки,
    ничтоже сумляшеся не замечает никакой проблемы и заставляет пользователя передавать переменные
    окружения в том же формате, потому что на программист на языке должен быть тупым, как этот язык.
    https://docs.docker.com/engine/api/v1.24/#create-a-container

    В результате мы имеем пачку долбоебов, из-за которых оперирующие (мапами / объектами / словарями / как угодно назовите)
    нормальные люди должны вести себя как типичные гошники.

    Fike, 17 Февраля 2021

    Комментарии (42)
  5. Java / Говнокод #27258

    +1

    1. 1
    .

    https://vc.ru/flood/149783-podgotovte-nomer-pablik-steytik-dzhava-tochka-pomoshchnik-oleg-zachital-sboy-vo-vremya-testa-v-koll-centre-tinkoff

    3_dar, 17 Февраля 2021

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

    +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
    $txtdd = $DI_Date;
    $DI_Date = explode(".",$DI_Date);
    
    $DI_YY = $DI_Date[2];
    $DI_LYY = $DI_YY;
    $DI_NYY = $DI_YY;
    $MY = $DI_Date[1].".".$DI_Date[2];
    
    $DI_MM = $DI_Date[1]-1;
    $DI_LMM = $DI_MM-1;
    if ($DI_LMM<0) $DI_LMM = 11;
    $DI_NMM = $DI_MM+1;
    if ($DI_NMM>11) $DI_NMM = 0;
    
    if ($DI_MM==0) $DI_LYY = $DI_YY-1;
    if ($DI_MM==11) $DI_NYY = $DI_YY+1;
    
    $DI_DD = 1;
    
    $lastM = $DI_MM;
    $yy = $DI_YY;
    if ($lastM<1) {
    	$lastM = 12+$lastM;
    	$yy = $yy - 1;
    }
    $lastM = $DI_DD.".".$lastM.".".$yy;
    
    $nextM = $DI_MM+2;
    $yy = $DI_YY;
    if ($nextM>12) {
    	$nextM = $nextM-12;
    	$yy = $yy + 1;
    }
    $nextM = $DI_DD.".".$nextM.".".$yy;
    
    $lastY = $DI_DD.".".($DI_MM+1).".".($DI_YY-1);
    $nextY = $DI_DD.".".($DI_MM+1).".".($DI_YY+1);

    kib0rg, 05 Февраля 2021

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