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

    Всего: 105

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

    0

    1. 1
    2. 2
    3. 3
    https://software.intel.com/sites/default/files/managed/2b/80/5-level_paging_white_paper.pdf
    
    http://lkml.iu.edu/hypermail/linux/kernel/1612.1/00383.html

    x86-64 is currently limited to 256 TiB of virtual address space and 64 TiB
    of physical address space. We are already bumping into this limit: some
    vendors offers servers with 64 TiB of memory today.

    To overcome the limitation upcoming hardware will introduce support for
    5-level paging. It is a straight-forward extension of the current page
    table structure adding one more layer of translation.

    It bumps the limits to 128 PiB of virtual address space and 4 PiB of physical address space.
    This "ought to be enough for anybody" Â.

    https://imgs.xkcd.com/comics/supported_features.png

    3.14159265, 11 Января 2018

    Комментарии (79)
  3. Куча / Говнокод #21836

    −14

    1. 1
    2. 2
    3. 3
    4. 4
    >Сложность получается лучше O(1).
    
    >Не надо бросаться грудью на амбразуру, посиди — подумай. 
    >Как оказалось, самый быстрый алгоритм — это линейный поиск и никакие map/bitset не нужны.

    Будни мамкиного питимизатора
    https://habrahabr.ru/post/317588/

    3.14159265, 14 Декабря 2016

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

    −47

    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
    * if you know a switch stmt will not exceed the lowest or highest case values.  
    switch [] is a little faster because it doesn't check.
    
    * switch stmts always use a jump table.  Don't use them with cases with really 
    big, sparse ranges.
    
    * Allows ranges like "case 4...7:" in switch stmts.
    
    * A no case number causes next higher int case in switch stmts.  See 
    ::/Demo/NullCase.CPP.
    
      I64 i;
      for (i=0;i<20;i++) 
        switch (i) {
          case: "Zero\n";   break; //Starts at zero
          case: "One\n";    break; //One plus prev case.
          case: "Two\n";    break;
          case: "Three\n";  break;
          case 10: "Ten\n"; break;
          case: "Eleven\n"; break; //One plus prev case.
      }
    
    * Switch statements can be nestled with a single switch expression!  This is 
    known as a "sub_switch" statement.  start/end are used to group cases.  Don't 
    goto out of, throw an exception out of, or return out of the start front porch 
    area.  See ::/Demo/SubSwitch.CPP.
    
      I64 i;
      for (i=0;i<10;i++)
        switch (i) {
          case 0: "Zero ";  break;
          case 2: "Two ";           break;
          case 4: "Four ";  break;
          start:
            "[";
            case 1: "One";  break;
            case 3: "Three";        break;
            case 5: "Five"; break;
          end:
            "] ";
            break;
        }
      OutPut:
      >Zero [One] Two [Three] Four [Five]

    http://www.templeos.org/Wb/Doc/HolyC.html
    j123123 форсит заморского Царя сделавшего Священный Си и TempleOS

    3.14159265, 27 Июня 2016

    Комментарии (58)
  5. JavaScript / Говнокод #20230

    −44

    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
    var fn={ 
         '+':{priority:0,exec:function(a,b){return a+b}}
        ,'-':{priority:0,exec:function(a,b){return a-b}}
        ,'*':{priority:1,exec:function(a,b){return a*b}}
        ,'/':{priority:1,exec:function(a,b){return a/b}}
        ,'&':{priority:1,exec:function(a,b){return a&b}}
        ,'|':{priority:1,exec:function(a,b){return a|b}}
        ,'»':{priority:2,exec:function(a,b){return a>>b}}
        ,'«':{priority:2,exec:function(a,b){return a<<b}}
    }
    
    function exec(str){
        var machine=putin();
        var out=[];
        console.log("Executing: "+str);
        (str.trim()+" END").split(/\s+/).forEach(parser(function (e){
            if (!e) throw "empty:"+e;
            out.push(e);
            machine.send(e);
        }));
        console.log(out.slice())   
        return machine.top();
    }
        
    
    function putin(){
        // раз "единственно полезная структура данных"
        var stack = [];
        return {
            send:function(e){
                if (fn[e]){
                    b = stack.pop();
                    a = stack.pop();
                    r=fn[e].exec(a, b);
                }else{
                  r=+e;
                }
                console.log(e,r);
                stack.push(r);
            },top:function(){return stack[0];}
        }
    }    
    
    function parser(output){
        // джва "единственно полезная структура данных"
        var ops=[];
        var op2;
        return function(e){
            if (/[0-9]+/.test(e)) {
                output(e);
            }else if (null!=fn[e]){
                op2=ops.slice(-1)[0];
                while (fn[op2] &&  (fn[e].priority <= fn[op2].priority) ){
                    output(op2);
                    ops.pop(); 
                    op2 = ops.slice(-1)[0];
                }
                ops.push(e);
            }else if (e == "(") {
                ops.push(e); 
            }else if (e == ")") { 
                while (ops.slice(-1)[0] != "("){ 
                    output(ops.pop())
                }
                ops.pop(); 
            }else if ("END" == e){
                var x;
                while (x=ops.pop(),x) {
                    output(x);
                }    
            }else{
                throw 'invalid pituh:'+e;
            }
        }
    }
    [
        [-1187,"1 + 22 - 13 * ( 44 + 51 ) + 150 / 3 « 1"]
        ,[13,"1 + 3 * 4"]
        ,[16,"( 1 + 3 ) * 4"]
        ,[17,"  1 + 2 * 3 - 4 * 5 + 10 * ( 12 - 9 )"]
    ]
    .forEach(function (a){
        if (a[0]!=exec(a[1])) throw ("Shit:"+ a[0]+" != "+ a[1])
    });

    После того как я заявил что массив — "единственно полезная структура данных", и можно парсить выражения без деревьев.
    Гумно начало брать на «слабо».
    Поточный парсер выражений, который принимает пайпом поток токенов и «на лету» пайпает свой выхлоп в интерпретатор.
    Таким образом по мере прохождения потока он потихоньку исполняется и упрощается.

    3.14159265, 19 Июня 2016

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

    +4

    1. 1
    2. 2
    3. 3
    try{
          throw Exception();
    }

    Мне в сонном бреду пришла мысль, а нахера обязательный catch?
    finally везде необязательно.
    try{ //исключения не пройдут
    }
    //вполне по крестоблядски

    3.14159265, 15 Декабря 2015

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

    −98

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    #if !defined(M_PI)
    # define M_PI (3.141592653589793238462643)
    #endif
    #include <string.h>
    /*Yes, yes, we're going to hell.*/
    #if defined(_WIN32)
    #include <io.h>
    #include <fcntl.h>
    #endif

    коммент доставил.

    3.14159265, 19 Ноября 2015

    Комментарии (3)
  8. Куча / Говнокод #18461

    +144

    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
    Флоат даёт ошибки только тогда, когда он плывёт. 
    На вычислении всяких косинусов он не плывёт - поэтому ошибки там врядли возможны.
    
    Точность не будет падать - её не будет, вместо неё будет округленчиский мусор.
    
    Каким образом у вас это получилось - я не знаю, ибо у меня cos(M_PI_2) = ноль. 2.0f*2.0f = 4.0.
    
    Конпелятор всегда знает, ибо нормальные про-пацаны юзают фичи конпелятора, и умеют писать код. 
    В гцц есть такие штуки - builtin_*() - ими запиленны аналоги самых популярных libc функций. 
    ГГЦ абсалютно точно умеет определять константы - для этого есть свой builtin_constant_p() - 
    который в любом куске кода тебе 100% скажет - константа эта перменная, либо нет.
    
    Дак вот, в гцц даже можно писать так:
    
      static const double cos_pi = cos(M_PI);//глобальная статик-константа, которая в компилтайме инициализируется результатом вызова функции cos(). Это не особо профитно, ибо издревли система констант в Си лютое говно.
    Так же в гцц есть атрибуты, один из которых const - он говорит, что твоя функция не имеет побочных эффектов. 
    И все функции, которые их не имеют - принято так помечать, особенно в glibc и libgcc.
    
    А всё почему? Патамучто их пишут более-менее про-пацаны. 
    Конпелятору не нужно ничего знать - знает программист, который пишет, а конпелятор должен предоставить ему фичи, 
    с которыми он может пилить нормальный код, а не говно. 
    А неосиляторам подавай оптимизиторы, автоматизаторы и прочую ересь, от которой толка нет, а гонору много.

    http://ru.stackoverflow.com/questions/245261/Неправильная-работа-cos
    Как-то я проебал открытие сего быдлятника. Когда читал ответ сходу какое-то знакомое чувство, будто я знаю автора.

    3.14159265, 10 Июля 2015

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

    +148

    1. 1
    2. 2
    //G++ now allows typename in a template template parameter.
        template<template<typename> typename X> struct D; // xzibit.jpeg

    Пятый gcc вышел. Больше крестоблядства за те же деньги.
    https://gcc.gnu.org/gcc-5/changes.html

    3.14159265, 02 Мая 2015

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

    +209

    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
    /*
          _31 - числа  начинаются с _
          _Math_sin - глобальные функции тоже
          $abcd - строки начинаются с $ 
          /\ - символ лямбда. Easter egg:можно писать и / для краткости
          САХАР:
           args = arguments
          _ = args[0]     
    */
    
    log("========CALCULATOR EXAMPLE========");
    //*
    handler= makeHandler(chainer());
    var calc = prox(
        {   //imports
            print:function(x){log(x); return x;}
            ,add:function(a,b){ return a+b;}
            ,set:function(x,y){ return y;}
            ,fma:function(a,b,c){
                return a*b+c;
            }        
        }
    );
    calc
        .set[0]
        .add[2]
        .print //2
        .fma[10][5]
        .print //25
        
        .add._3
        .String
        .add._1111
        .print //281111
        
        ._Math_min._1
        ._Math_max._1000
        .print //100
        
        .String
        ._Math_log10
        .add["$ pow 10"]
        .print //3 pow 10
    ;
    //*/
    handler= makeHandler(chainer());
    var linq = prox(
        {   //imports
            set     :function(inner,y){ return y;}
            ,print  :function(x){log(x); return x;}
            ,map    :function(arr,y){ return arr.map(y)}
            ,filter :function(arr,y){ return arr.filter(y)}
            ,sort   :function(arr,comparator){ return arr.sort(comparator)}
            //Imperatii
            ,IF     :function(context,condition,trueBranch,falseBranch){
                return (condition(context)) ? trueBranch(context) : falseBranch(context);
            }
        }
    );
    
    linq
        .set    ["[5,2,1,3,4]"]
        .print//[5, 2, 1, 3, 4]
        .map    ["/\ _ * 3"]
        .print//[15, 6, 3, 9, 12]   
        .filter ["/\ log('filter='+args[0]),args[0]>5"] //несколько операторов в лямбде.
        .print//[6, 9, 12, 15]
        .sort   ["/\ args[0]-args[1]"]
        .map    ["/\ _ - 6"]
        .print//[0, 3, 6, 9]
        .map    ["/\ 2>_ ? 1 : _ * args.callee(_-1)"]   //анонимная рекурсия и факториал
        .print//[1, 6, 720, 362880]
        
        //имперации
        .filter ["/\ _>100"]
        .IF ["/\ _.length===0"][ 
            "/\ log('array is EMPTY!'), _" 
        ][ 
            "/\ log('Not empty:',_), []"         
        ]    //"Not empty:" [720, 362880]
        .IF ["/\ _.length===0"][ 
            "/\ log('EMPTY!'), ['empty','replacement']" 
        ][ 
            "/\ log(_), _"         
        ].print//['empty','replacement']
           
    ;

    Такой вот DSL на свойствах javascript.
    Осторожно! Все трюки выполнены профессионалами. Не пытайтесь повторить это на работе.
    http://jsfiddle.net/y5og4o9q/1/

    3.14159265, 15 Декабря 2014

    Комментарии (16)
  11. JavaScript / Говнокод #17243

    +215

    1. 1
    if (new Boolean(false)) {

    Отвратная вещь этот new.

    3.14159265, 03 Декабря 2014

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