1. Комментарий к говнокоду #27368

    Показать код ▼

    JavaScript / Говнокод #27368

    1. 001
    2. 002
    3. 003
    4. 004
    5. 005
    6. 006
    7. 007
    8. 008
    9. 009
    10. 010
    11. 011
    12. 012
    13. 013
    14. 014
    15. 015
    16. 016
    17. 017
    18. 018
    19. 019
    20. 020
    21. 021
    22. 022
    23. 023
    24. 024
    25. 025
    26. 026
    27. 027
    28. 028
    29. 029
    30. 030
    31. 031
    32. 032
    33. 033
    34. 034
    35. 035
    36. 036
    37. 037
    38. 038
    39. 039
    40. 040
    41. 041
    42. 042
    43. 043
    44. 044
    45. 045
    46. 046
    47. 047
    48. 048
    49. 049
    50. 050
    51. 051
    52. 052
    53. 053
    54. 054
    55. 055
    56. 056
    57. 057
    58. 058
    59. 059
    60. 060
    61. 061
    62. 062
    63. 063
    64. 064
    65. 065
    66. 066
    67. 067
    68. 068
    69. 069
    70. 070
    71. 071
    72. 072
    73. 073
    74. 074
    75. 075
    76. 076
    77. 077
    78. 078
    79. 079
    80. 080
    81. 081
    82. 082
    83. 083
    84. 084
    85. 085
    86. 086
    87. 087
    88. 088
    89. 089
    90. 090
    91. 091
    92. 092
    93. 093
    94. 094
    95. 095
    96. 096
    97. 097
    98. 098
    99. 099
    100. 100
    function main()
    {
    	const ac = [1, 2, 3];
    	let a = ac;
    	print(ac[0]);
    	print(ac[1]);
    	print(ac[2]);
    	print(a[0]);
    	print(a[1]);
    	print(a[2]);
     
    	const ac2 = [1.0, 2.0, 3.0];
    	let a2 = ac2;
    	print(ac2[0]);
    	print(ac2[1]);
    	print(ac2[2]);
     
    	print(a2[0]);
    	print(a2[1]);
    	print(a2[2]);
     
    	const ac3 = ["item 1", "item 2", "item 3"];
    	let a3 = ac3;
    	print(ac3[0]);
    	print(ac3[1]);
    	print(ac3[2]);
     
    	print(a3[0]);
    	print(a3[1]);
    	print(a3[2]);
    }
     
    // LLVM output
     
    ; 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"
     
    @frmt_11120820245497078329 = internal constant [4 x i8] c"%s\0A\00"
    @s_13298922352840505641 = internal constant [8 x i8] c"item 3\00\00"
    @s_13297965777724151296 = internal constant [8 x i8] c"item 2\00\00"
    @s_13300835503073214331 = internal constant [8 x i8] c"item 1\00\00"
    @a_14124738666956595718 = internal constant [3 x i8*] [i8* getelementptr inbounds ([8 x i8], [8 x i8]* @s_13300835503073214331, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @s_13297965777724151296, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @s_13298922352840505641, i64 0, i64 0)]
    @frmt_11108397963124010376 = internal constant [4 x i8] c"%f\0A\00"
    @a_17125214420326958200 = internal constant [3 x float] [float 1.000000e+00, float 2.000000e+00, float 3.000000e+00]
    @frmt_11106471618751763154 = internal constant [4 x i8] c"%d\0A\00"
    @a_2366260266165782651 = internal constant [3 x i32] [i32 1, i32 2, i32 3]
     
    declare i8* @malloc(i64)
     
    declare void @free(i8*)
     
    declare i32 @printf(i8*, ...)
     
    define void @main() !dbg !3 {
      %1 = alloca i32*, align 8, !dbg !7
      store i32* getelementptr inbounds ([3 x i32], [3 x i32]* @a_2366260266165782651, i64 0, i64 0), i32** %1, align 8, !dbg !7
      %2 = load i32*, i32** %1, align 8, !dbg !7
      %3 = alloca i32*, align 8, !dbg !9
      store i32* %2, i32** %3, align 8, !dbg !9
      %4 = load i32*, i32** %1, align 8, !dbg !7
      %5 = getelementptr i32, i32* %4, i32 0, !dbg !10
      %6 = load i32, i32* %5, align 4, !dbg !10
      %7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %6), !dbg !11
      %8 = load i32*, i32** %1, align 8, !dbg !7
      %9 = getelementptr i32, i32* %8, i32 1, !dbg !12
      %10 = load i32, i32* %9, align 4, !dbg !12
      %11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %10), !dbg !13
      %12 = load i32*, i32** %1, align 8, !dbg !7
      %13 = getelementptr i32, i32* %12, i32 2, !dbg !14
      %14 = load i32, i32* %13, align 4, !dbg !14
      %15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %14), !dbg !15
      %16 = load i32*, i32** %3, align 8, !dbg !9
      %17 = getelementptr i32, i32* %16, i32 0, !dbg !16
      %18 = load i32, i32* %17, align 4, !dbg !16
      %19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %18), !dbg !17
      %20 = load i32*, i32** %3, align 8, !dbg !9
      %21 = getelementptr i32, i32* %20, i32 1, !dbg !18
      %22 = load i32, i32* %21, align 4, !dbg !18
      %23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %22), !dbg !19
      %24 = load i32*, i32** %3, align 8, !dbg !9
      %25 = getelementptr i32, i32* %24, i32 2, !dbg !20
      %26 = load i32, i32* %25, align 4, !dbg !20
      %27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %26), !dbg !21
      %28 = alloca float*, align 8, !dbg !22
      store float* getelementptr inbounds ([3 x float], [3 x float]* @a_17125214420326958200, i64 0, i64 0), float** %28, align 8, !dbg !22
      %29 = load float*, float** %28, align 8, !dbg !22
      %30 = alloca float*, align 8, !dbg !23
      store float* %29, float** %30, align 8, !dbg !23
      %31 = load float*, float** %28, align 8, !dbg !22
      %32 = getelementptr float, float* %31, i32 0, !dbg !24
      %33 = load float, float* %32, align 4, !dbg !24
      %34 = fpext float %33 to double, !dbg !25
      %35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11108397963124010376, i64 0, i64 0), double %34), !dbg !25
      %36 = load float*, float** %28, align 8, !dbg !22
      %37 = getelementptr float, float* %36, i32 1, !dbg !26
      %38 = load float, float* %37, align 4, !dbg !26
      %39 = fpext float %38 to double, !dbg !27
      %40 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11108397963124010376, i64 0, i64 0), double %39), !dbg !27

    продолжаем нашу е..блю с компилятором а ля "C" но только используя синтакс TypeScript

    дальше это гвно при запуска tsc.exe --emit=llvm c:\1.ts

    получаем равернутую раскладку го-в-на которе можно перевести в Obj файл

    а если запустим EXE получим такую Х типа "1 2 3 1 2 3 1.0 2.0 3.0 1.0 2.0 3.0 item 1 item 2 item 3 item 1 item 2 item 3"

    и никакой е..бли в указателями все сука компилятор делает сам

    Запостил: ASD_77, 20 Апреля 2021

    Все комментарии (33)
  2. Комментарий к говнокоду #27353

    • Ну а мне похуй. Я же слушаю, а не смотрю на их петушие хохолчки.
      Ответить
    Показать код ▼

    Куча / Говнокод #27353

    1. 1
    Питушня #15

    #1: https://govnokod.ru/26692 https://govnokod.xyz/_26692
    #2: https://govnokod.ru/26891 https://govnokod.xyz/_26891
    #3: https://govnokod.ru/26893 https://govnokod.xyz/_26893
    #4: https://govnokod.ru/26935 https://govnokod.xyz/_26935
    #5: (vanished) https://govnokod.xyz/_26954
    #6: (vanished) https://govnokod.xyz/_26956
    #7: https://govnokod.ru/26964 https://govnokod.xyz/_26964
    #8: https://govnokod.ru/26966 https://govnokod.xyz/_26966
    #9: https://govnokod.ru/27017 https://govnokod.xyz/_27017
    #10: https://govnokod.ru/27045 https://govnokod.xyz/_27045
    #11: https://govnokod.ru/27058 https://govnokod.xyz/_27058
    #12: https://govnokod.ru/27182 https://govnokod.xyz/_27182
    #13: https://govnokod.ru/27260 https://govnokod.xyz/_27260
    #14: https://govnokod.ru/27343 https://govnokod.xyz/_27343

    Запостил: nepeKamHblu_nemyx, 11 Апреля 2021

    Все комментарии (247)
  3. Комментарий к говнокоду #27361

    • Бох забери у них жизни - они их в пустую стратят
      Ответить
    Показать код ▼

    Python / Говнокод #27361

    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

    Все комментарии (243)
  4. Комментарий к говнокоду #27367

    • FileFoundException


      правда сук непонятно зачем в покете со стримами хоть и сетевыми ебля c UDP
      Ответить
    Показать код ▼

    Java / Говнокод #27367

    1. 1
    there are java.io.FileNotFoundException and java.nio.file.NoSuchFileException . Both are subclasses of IOException, neither of them is a subclass of the opposite.

    Запостил: DypHuu_niBEHb, 20 Апреля 2021

    Все комментарии (9)
  5. Комментарий к говнокоду #25573

    Показать код ▼

    Python / Говнокод #25573

    1. 1
    RE_DIGIT = re.compile(r'\D+')

    str.isdigit()
    не?

    Запостил: ifinik, 26 Апреля 2019

    Все комментарии (689)
  6. Комментарий к говнокоду #27336

    • Есть же vorec.space. (Правда на каком-то странном движке)
      Ответить
    Показать код ▼

    Куча / Говнокод #27336

    1. 1
    IT Оффтоп #84

    #54: https://govnokod.ru/26840 https://govnokod.xyz/_26840
    #55: https://govnokod.ru/26844 https://govnokod.xyz/_26844
    #56: https://govnokod.ru/26862 https://govnokod.xyz/_26862
    #57: https://govnokod.ru/26890 https://govnokod.xyz/_26890
    #58: https://govnokod.ru/26916 https://govnokod.xyz/_26916
    #59: https://govnokod.ru/26934 https://govnokod.xyz/_26934
    #60: https://govnokod.ru/26949 https://govnokod.xyz/_26949
    #61: https://govnokod.ru/26980 https://govnokod.xyz/_26980
    #62: https://govnokod.ru/26999 https://govnokod.xyz/_26999
    #63: https://govnokod.ru/27004 https://govnokod.xyz/_27004
    #64: https://govnokod.ru/27020 https://govnokod.xyz/_27020
    #65: https://govnokod.ru/27027 https://govnokod.xyz/_27027
    #66: https://govnokod.ru/27040 https://govnokod.xyz/_27040
    #67: https://govnokod.ru/27049 https://govnokod.xyz/_27049
    #68: https://govnokod.ru/27061 https://govnokod.xyz/_27061
    #69: https://govnokod.ru/27071 https://govnokod.xyz/_27071
    #70: https://govnokod.ru/27097 https://govnokod.xyz/_27097
    #71: https://govnokod.ru/27115 https://govnokod.xyz/_27115
    #72: https://govnokod.ru/27120 https://govnokod.xyz/_27120
    #73: https://govnokod.ru/27136 https://govnokod.xyz/_27136
    #74: https://govnokod.ru/27160 https://govnokod.xyz/_27160
    #75: https://govnokod.ru/27166 https://govnokod.xyz/_27166
    #76: https://govnokod.ru/27168 https://govnokod.xyz/_27168
    #77: https://govnokod.ru/27186 https://govnokod.xyz/_27186
    #78: https://govnokod.ru/27219 https://govnokod.xyz/_27219
    #79: https://govnokod.ru/27254 https://govnokod.xyz/_27254
    #80: https://govnokod.ru/27270 https://govnokod.xyz/_27270
    #81: https://govnokod.ru/27280 https://govnokod.xyz/_27280
    #82: https://govnokod.ru/27284 https://govnokod.xyz/_27284
    #83: https://govnokod.ru/27296 https://govnokod.xyz/_27296

    Запостил: nepeKamHblu_nemyx, 04 Апреля 2021

    Все комментарии (292)
  7. Комментарий к говнокоду #25671

    • вы тут петухи ёбаные про чё вообще кукарекаете....?
      Ответить
    Показать код ▼

    JavaScript / Говнокод #25671

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    function htmlspecialchars (s) {
        const el = document.createElement('span');
        el.innerText = s;
        return el.innerHTML.replace(/<br>/g, "\n");
    }

    Почему в жепаскрипте нет прямого доступа к этой функции? Почему я должен для этого работать с DOM или сам писать эту поеботу на рагулярках? Почему асё так анально?

    Запостил: O4epegHou_nemyx, 10 Июня 2019

    Все комментарии (121)
  8. Комментарий к говнокоду #27366

    • > if (hCell.X == vCell.X && hCell.Y == vCell.Y)

      Мог бы и переопределить кое-какой оператор )))

      > List<CellControl[]> result = new List<CellControl[]>();

      Чувствуется терпкий привкус йажи.

      > vLine

      Сразу ясно для чего эта переменная.
      Ответить
    Показать код ▼

    C# / Говнокод #27366

    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
    private List<CellControl[]> ComposeLines(List<CellControl[]> vertical, List<CellControl[]> horizontal)
            {
                List<CellControl[]> result = new List<CellControl[]>();
     
                foreach (var vLine in vertical)
                {
                    var cellsCount = vLine.Length;
                    List<CellControl[]> linesToCompose = new List<CellControl[]>();
                    foreach (var vCell in vLine)
                    {
                        foreach (var hLine in horizontal)
                        {
                            foreach (var hCell in hLine)
                            {
                                if (hCell.X == vCell.X && hCell.Y == vCell.Y)
                                {
                                    linesToCompose.Add(hLine);
                                    cellsCount += hLine.Length;
                                    break;
                                }
                            }
     
                            if (linesToCompose.Count == 0)
                            {
                                result.Add(hLine);
                            }
                        }
                    }
     
                    if (linesToCompose.Count == 0)
                    {
                        result.Add(vLine);
                    }
                    else
                    {
                        linesToCompose.Add(vLine);
                        var newLine = new CellControl[cellsCount];
                        var i = 0;
                        foreach (var line in linesToCompose)
                        {
                            foreach (var cellControl in line)
                            {
                                newLine[i] = cellControl;
     
                                cellControl.Selected = true;
                                i++;
                            }
                        }
     
                        result.Add(newLine);
                    }
                }
     
                return result;
            }

    Запостил: mdd-inbox, 20 Апреля 2021

    Все комментарии (2)
  9. Комментарий к говнокоду #27364

    Показать код ▼

    C++ / Говнокод #27364

    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
    // А какие-нибудь IDE с интегрированными отладчиками (или
    // отладчики сами по себе) умеют нахрен выкидывать всякую
    // там компилтайм-метушню из кода, оставляя лишь то, что
    // реально исполняется в рантайме?
     
    // Ну например, чтобы хуйня вида
    if constexpr(хуйня1)
    {
      bagor1();
      if constexpr(хуйня2)
      {
        bagor11();
      }
      else
      {
        bagor12();
      }
    }
    else
    {
      bagor2();
      if constexpr (хуйня3)
      {
        bagor21();
      }
      bagor();
    }
     
    // и если хуйня1 == true и хуйня2 == false то чтоб в отладчике
    // в какой-то там говноIDE я увидел бы не эту пидоросню с if consexpr
    // а только лишь
     
    bagor1();
    bagor12();

    Есть ли такое?

    Запостил: j123123, 18 Апреля 2021

    Все комментарии (114)
  10. Комментарий к говнокоду #26570

    Показать код ▼

    Куча / Говнокод #26570

    1. 1
    Электрика / электроника #3

    #1: https://govnokod.ru/25437 https://govnokod.xyz/_25437/
    #2: https://govnokod.ru/25820 https://govnokod.xyz/_25820

    Запостил: gost, 10 Апреля 2020

    Все комментарии (121)
  11. Комментарий к говнокоду #27362

    Показать код ▼

    Куча / Говнокод #27362

    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
    Три девицы вечерком
    Чатились за коньячком…
    Мысль у всех была ловка:
    Схантить бы холостяка.
    Чтобы в теле мускулистом
    Был крутым специалистом,
    Чтобы с опытом в айти
    Лет так более пяти.
    В корпорации, стартапе
    Чтоб прошёл он все этапы,
    Да на англицком на слоге
    Пел на Хабре в своём блоге.
    И в сообществе средь профи
    Был желан, как кружка кофе.
    Ну, короче, чтоб матёр
    Был как истинный Senior.
     
    ...

    https://m.habr.com/ru/post/552828/

    Какое поэтство )))

    Запостил: JloJle4Ka, 17 Апреля 2021

    Все комментарии (36)
  12. Комментарий к говнокоду #27363

    Показать код ▼

    C++ / Говнокод #27363

    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
    int main()
    {
        using Human = NamedTuple<
            Field<"name", std::string>,
            Field<"age", int>
        >;
        using User = NamedTuple<
            Field<"login", std::string>,
            Field<"password", std::string>
        >;
     
        Human vasya{ "Vasya", 16 };
        vasya.get<"age">() = 17;
     
        User user{ "xXxBaCRHxXx", "p4ssword" };
     
        auto vasyaMerged = mergeNamedTuples(vasya, user);
     
        std::cout << vasyaMerged.get<"name">() << " is " << vasyaMerged.get<"age">() << " years old!" << std::endl;
        std::cout << "Login is " << vasyaMerged.get<"login">() << " and password is " << vasyaMerged.get<"password">() << std::endl;
    }

    Как похорошел C++ при C++20!

    https://wandbox.org/permlink/llpXuy7IOSugtxHo

    Запостил: PolinaAksenova, 18 Апреля 2021

    Все комментарии (72)
  13. Комментарий к говнокоду #27164

    • > То есть ты в принципе за ОДИН язык ради линк тайм оптимизации и зеро абстракций, но тебе именно кресты не нравятся?

      Примерно так, но не точно и не полностью. Я против того, как в крестах смешиваются уровни абстракции. Можно сделать так, чтобы в рамках одного метаязыка описывались правила трансляции абстракций высокого уровня в абстракции низкого уровня. На абстракциях высокого уровня пишем высокоуровневый код, который не допускает абстракции низкого уровня внутри себя (но вполне можно вызывать что-то низкоуровневое в высокоуровневом коде). Через определенную систему типов и систему символьных вычислений можно выводить и/или описывать определенные свойства реализации алгоритмов. Ну скажем, что сортировка выдает массив такой, что в нем элементы с меньшим индексом всегда меньше или равны элементы с большим индексом, это можно выразить неким типом, и тогда второй раз сортировка уже никак этот сортированный массив не поменяет... Короче, почитай то, что я написал в комментарии https://govnokod.ru/27116#comment622955 и двумя комментами ниже него. Почитай про идеи суперкомпиляции (оптимизации методом частичных вычислений https://keldysh.ru/papers/2008/prep12/prep2008_12.html#_Toc193602742 ), проекции Футамуры. Вот так примерно надо это проектировать.

      Проблема крестов в том, что его делали прагматики, а не идеалисты, типа вот Страуструп тот же, взял сишку, подкостылил, получил какую-то хрень, потом опять подкостылил, и еще, и потом шаблоны еще начали использовать под какую-то хуйню, под которую их изначально не придумывали, и вот так строят всякие хреновые небоскребы из говна и костылей, один костыль подпирает второй костыль, второй подпирает третий, и весь этот сраный ворох говна так и накапливается
      Ответить
    Показать код ▼

    1C / Говнокод #27164

    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
    &НаКлиенте
    Процедура ИмяФайла_ПроизводственнаяПрограммаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    	ДиалогВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    	ДиалогВыборФайла.Фильтр = "Файлы Microsoft Excel (*.xls, *.xlsx, *.xlsm)|*.xls; *.xlsx; *.xlsm|Все файлы (*.*)|*.*";
    	ДиалогВыборФайла.Показать(Новый ОписаниеОповещения("ИмяФайла_ПроизводственнаяПрограммаНачалоВыбораЗавершение", ЭтотОбъект, Новый Структура("ДиалогВыборФайла,ИмяФайла", ДиалогВыборФайла, Элемент.Имя)));
    КонецПроцедуры
     
    &НаКлиенте
    Процедура ИмяФайла_ПроизводственнаяПрограммаНачалоВыбораЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
     
        ДиалогВыборФайла = ДополнительныеПараметры.ДиалогВыборФайла;
     
        Если (ВыбранныеФайлы <> Неопределено) Тогда
            ЭтаФорма[ДополнительныеПараметры.ИмяФайла] = ДиалогВыборФайла.ПолноеИмяФайла;
        КонецЕсли;
     
    КонецПроцедуры

    Асинхронные вызовы??? Нее.... Не слышал...

    Запостил: nytlenc, 15 Декабря 2020

    Все комментарии (167)
  14. Комментарий к говнокоду #25982

    • Ня самом деле всё просто: в момент определения foo() создаётся специализация set<type<tag>, decltype(call)>, эта специализация через friend injection создаёт перед foo() специализацию get(type<tag>) -> decltype(call), специализация type<tag> точня так же инжектит объявление get(type<tag>), чтобы get() можня было няйти через ADL. В main() на вызове get(type<tag>) срабатывает ADL, няходится объявление из type<tag>, к этому объявлению няходится инжектнутое определение. Ну а передача лямбды — совсем примитивное дело.

      class tag же нужен для того, чтобы объявление get(type<tag>) было т.н. "templated entity" ([temp.pre]/8) — иняче определение get() из set<> ня сматчится с объявлением.
      Ответить
    Показать код ▼

    C++ / Говнокод #25982

    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
    #include <cstdio>
     
    class tag;
     
    template<class>
    struct type { friend constexpr auto get(type); };
     
    template<class TKey, class TValue>
    struct set { friend constexpr auto get(TKey) { return TValue{}; } };
     
    void foo() {            // never called
      if constexpr(false) { // never true
        if (false) {        // never true
            constexpr auto call = [](auto value) { std::printf("called %d", value); };
            void(set<type<tag>, decltype(call)>{});
        }
      }
    }
     
    int main() {
      get(type<tag>{})(42); // prints called 42
    }

    https://twitter.com/krisjusiak/status/1186363017329594368
    Какой C++20 )))

    Запостил: j123123, 21 Октября 2019

    Все комментарии (70)
  15. Комментарий к говнокоду #27354

    Показать код ▼

    Python / Говнокод #27354

    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
    """
    This module provides a function merge_sort, which is one of the simplest and the
    most robust sorting algorithms, being relatively fast, having (n*log(n))
    complexity. Also, this module counts the number of inversions in a given array.
    Usage: import this module and use the function merge_sort. The first element in
    a returned tuple shall be a sorted array, while the second one will be a number
    of inversions in the array.
     
    Copyright (C) 2021 Sergay Gayorgyevich.
     
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as
    published by the Free Software Foundation, either version 3 of the
    License, or (at your option) any later version.
     
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.
     
    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
    """
     
    import argparse
     
    def merge_sort(array : list) -> (list, int):
        """
        MergeSort algorithm with additional inversion counting.
        input: array.
        output: sorted array and number of inversions in it.
        """
     
        if len(array) <= 1:
            return (array, 0)
        elif len(array) == 2:
            if array[0] > array[1]:
                array[0], array[1] = array[1], array[0]
                return (array, 1)
            return (array, 0)
     
        mid = len(array) // 2
        left, left_inversions = merge_sort(array[:mid])
        right, right_inversions = merge_sort(array[mid:])
     
        merged, split_inversions = _merge(left, right)
        return (merged, right_inversions + left_inversions + split_inversions)
     
    def _merge(left_array : list, right_array : list) -> (list, int):
        """
        This function isn't supposed to be called, it's an inner function of the
        module, and not a part of its API! 
     
        The purpose of this function is to merge two arrays. Due to the nature of
        the MergeSort algorithm, it operates two arrays, both of which are sorted.
        input: two sotrted arrays.
        output: sorted array, consisting of elements of both operated arrays.
        """
     
        resulting_array = list()
        inversion_count = 0
        c_len = len(left_array) + len(right_array)
     
        for i in range(c_len):
            if (len(left_array) != 0) and (len(right_array) != 0):
                if left_array[0] > right_array[0]:
                    inversion_count += len(left_array)
                    resulting_array.append(right_array.pop(0))
                else:
                    resulting_array.append(left_array.pop(0))
            elif len(left_array) == 0:
                resulting_array.append(right_array.pop(0))
            elif len(right_array) == 0:
                resulting_array.append(left_array.pop(0))
     
        return (resulting_array[:], inversion_count)
     
    # For testing purposes only! Do not use in production!
    if __name__ == '__main__':
        DESC = "Sort an array and print an amount of inversions it has." # Description for argparse.
        argparser = argparse.ArgumentParser(description = DESC)
        argparser.add_argument("elements", type = int, nargs = '+', help = "A list to be sorted.")
        args = argparser.parse_args()
        print(merge_sort(args.elements))

    Изучаю алгоритм "Сортировка Слиянием".

    Запостил: KoWe4Ka_l7porpaMMep, 12 Апреля 2021

    Все комментарии (158)
  16. Комментарий к говнокоду #27360

    • А ещё на коко (который пипи) можно красиво сделать. Только я не знаю как...
      Ответить
    Показать код ▼

    Java / Говнокод #27360

    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
    package org.trishinfotech.builder;
     
    public class Car {
     
        private String chassis;
        private String body;
        private String paint;
        private String interior;
     
        public Car() {
            super();
        }
     
        public Car(String chassis, String body, String paint, String interior) {
            this();
            this.chassis = chassis;
            this.body = body;
            this.paint = paint;
            this.interior = interior;
        }
     
        public String getChassis() {
            return chassis;
        }
     
    	public void setChassis(String chassis) {
            this.chassis = chassis;
     
        }
     
        public String getBody() {
            return body;
        }
     
        public void setBody(String body) {
            this.body = body;
        }
     
        public String getPaint() {
            return paint;
        }
     
        public void setPaint(String paint) {
            this.paint = paint;
        }
    		public String getInterior() {
            return interior;
        }
     
        public void setInterior(String interior) {
            this.interior = interior;
        }
     
        public boolean doQualityCheck() {
            return (chassis != null && !chassis.trim().isEmpty()) && (body != null && !body.trim().isEmpty())
                    && (paint != null && !paint.trim().isEmpty()) && (interior != null && !interior.trim().isEmpty());
        }
     
        @Override
        public String toString() {
            // StringBuilder class also uses Builder Design Pattern with implementation of java.lang.Appendable interface
            StringBuilder builder = new StringBuilder();
            builder.append("Car [chassis=").append(chassis).append(", body=").append(body).append(", paint=").append(paint)
            return builder.toString();
        }
     
    }

    https://habr.com/ru/company/otus/blog/552412/
    Паттерн проектирования Builder (Строитель) в Java

    Запостил: PolinaAksenova, 15 Апреля 2021

    Все комментарии (109)
  17. Комментарий к говнокоду #27173

    Показать код ▼

    1C / Говнокод #27173

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Если ЗначениеЗаполнено(Подразделение.Родитель.Родитель.Родитель) Тогда
    		ВышестоящееПодразделение = Подразделение.Родитель.Родитель.Родитель;
    	ИначеЕсли ЗначениеЗаполнено(Подразделение.Родитель.Родитель) Тогда
    		ВышестоящееПодразделение = Подразделение.Родитель.Родитель;
    	ИначеЕсли ЗначениеЗаполнено(Подразделение.Родитель) Тогда
    		ВышестоящееПодразделение = Подразделение.Родитель;
    	Иначе ВышестоящееПодразделение = Подразделение;
    	КонецЕсли;

    Найдем максимально вышестоящее подразделение, ну, до поры - до времени максимальное..

    Запостил: Stipa, 24 Декабря 2020

    Все комментарии (26)
  18. Комментарий к говнокоду #25396

    Показать код ▼

    Куча / Говнокод #25396

    1. 1
    Хостинг

    Запостил: syoma, 22 Февраля 2019

    Все комментарии (1483)
  19. Комментарий к говнокоду #27116

    • > (или принимает конечную известно какую строку, тогда такая программа сводима к программе, где эта строка тупо в сам код вшита)

      или принимает бесконечную периодическую строку, такую строку тоже можно в код вшить.
      Ответить
    Показать код ▼

    Куча / Говнокод #27116

    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
    Fixpoint mint_add0 {N} (i k : Fin.t N) te_i te' t0 vec
                 (Ht : MInt nonCommRel N k vec (te' :: t0))
                 (Hik : k < i)
                 (Hcomm0 : trace_elems_commute te_i te')
                 {struct Ht} :
          exists t' : list TE,
              MInt nonCommRel N k (vec_append i te_i vec) (te' :: t') /\
              Permutation trace_elems_commute (te_i :: te' :: t0) (te' :: t').
        Proof with eauto.
          (* Welcome to the hell proof! *)
          remember (te' :: t0) as t_.
          destruct Ht as [k
                         |k j vec te_k t Hij Ht
                         |k j vec te_k te_j t Hij Hcomm Ht
                         ];
            [discriminate
            |replace te' with te_k in * by congruence; clear Heqt_..
            ].
          2:{ destruct (trace_elems_commute_dec te_i te_j).
              - apply mint_add0 with (te_i := te_i) (i := i) in Ht; [|lia|assumption].
                destruct Ht as [t' [Ht' Hperm']].
                exists (te_j :: t'). split.
                + swap_vec_append.
                  eapply mint_cons2...
                + apply permut_cons with (a := te_k) in Hperm'.
                  eapply permut_trans...
                  now apply permut_head'.
              - exists (te_i :: te_j :: t). split.
                + swap_vec_append.
                  apply mint_cons1 with (j0 := i); [lia|].
                  apply mint_cons2 with (j0 := j); [lia|auto..].
                + now apply permut_head'.
          }
          { inversion_ Ht.
            - exists [te_i]. split.
              + swap_vec_append.
                apply mint_cons1 with (j0 := i); [lia|].
                apply mint_cons1 with (j0 := i); [lia|].
                constructor.
              + now apply permut_head'.
            - rename te into te_j.
              destruct (PeanoNat.Nat.lt_ge_cases j i).
              2:{ exists (te_i :: te_j :: t1). split.
                  - swap_vec_append.
                    apply mint_cons1 with (j1 := i); [lia|].
                    apply mint_cons1 with (j1 := j); [lia|assumption].
                  - now apply permut_head'.
              }
              { destruct (trace_elems_commute_dec te_i te_j) as [Hte_ij|Hte_ij].
                - apply mint_add0 with (i := i) (te_i := te_i) in Ht; [|lia|assumption].
                  destruct Ht as [t' [Ht' Hperm']].
                  exists (te_j :: t'). split.
                  + swap_vec_append.
                    eapply mint_cons1...
                  + apply permut_cons with (a := te_k) in Hperm'.
                    now apply permut_head.
                - exists (te_i :: te_j :: t1). split.
                  + swap_vec_append.
                    apply mint_cons1 with (j1 := i); [lia|].
                    apply mint_cons2 with (j1 := j); [lia|assumption..].
                  + apply permut_head; [assumption|constructor].
              }
            - rename j0 into i0. cbn in H0.
              destruct (PeanoNat.Nat.lt_ge_cases j i).
              2:{ exists (te_i :: te_i0 :: te_j :: t1). split.
                  + swap_vec_append.
                    apply mint_cons1 with (j0 := i); [lia|].
                    apply mint_cons1 with (j0 := j); [lia|assumption].
                  + now apply permut_head'.
              }
              { destruct (trace_elems_commute_dec te_i te_i0).
                - apply mint_add0 with (i := i) (te_i := te_i) in Ht; [|lia|assumption].
                  destruct Ht as [t' [Ht' Hperm']].
                  exists (te_i0 :: t'). split.
                  + swap_vec_append.
                    eapply mint_cons1...
                  + apply permut_cons with (a := te_k) in Hperm'.
                    now apply permut_head.
                - exists (te_i :: te_i0 :: te_j :: t1). split.
                  + swap_vec_append.
                    apply mint_cons1 with (j0 := i); [lia|].
                    apply mint_cons2 with (j0 := j); [lia|assumption..].
                  + apply permut_head.
                    * assumption.
                    * constructor.
              }
          }
        Qed.

    Мой magnum opus. Часть доказательства про выкидывание из рассмотрения коммутирующих системных вызовов.

    Запостил: CHayT, 17 Ноября 2020

    Все комментарии (87)
  20. Комментарий к говнокоду #27346

    • > что действительно нужно Борманду

      Ага, сегодня как раз искала программистские туфли, но они почему-то все маломерки Q_Q
      Ответить
    Показать код ▼

    Куча / Говнокод #27346

    1. 1
    Пиздец-оффтоп #17

    #1: https://govnokod.ru/26503 https://govnokod.xyz/_26503
    #2: https://govnokod.ru/26541 https://govnokod.xyz/_26541
    #3: https://govnokod.ru/26583 https://govnokod.xyz/_26583
    #4: https://govnokod.ru/26689 https://govnokod.xyz/_26689
    #5: https://govnokod.ru/26784 https://govnokod.xyz/_26784
    #5: https://govnokod.ru/26839 https://govnokod.xyz/_26839
    #6: https://govnokod.ru/26986 https://govnokod.xyz/_26986
    #7: https://govnokod.ru/27007 https://govnokod.xyz/_27007
    #8: https://govnokod.ru/27023 https://govnokod.xyz/_27023
    #9: https://govnokod.ru/27098 https://govnokod.xyz/_27098
    #10: https://govnokod.ru/27125 https://govnokod.xyz/_27125
    #11: https://govnokod.ru/27129 https://govnokod.xyz/_27129
    #12: https://govnokod.ru/27184 https://govnokod.xyz/_27184
    #13: https://govnokod.ru/27286 https://govnokod.xyz/_27286
    #14: https://govnokod.ru/27298 https://govnokod.xyz/_27298
    #15: https://govnokod.ru/27322 https://govnokod.xyz/_27322
    #16: https://govnokod.ru/27328 https://govnokod.xyz/_27328

    Запостил: nepeKamHblu_nemyx, 10 Апреля 2021

    Все комментарии (344)