// бухой, пофиксю позже

    long long ago; /* in a galaxy far far away */

     //
        //                       _oo0oo_
        //                      o8888888o
        //                      88" . "88
        //                      (| -_- |)
        //                      0\  =  /0
        //                    ___/`---'\___
        //                  .' \\|     |// '.
        //                 / \\|||  :  |||// \
        //                / _||||| -:- |||||- \
        //               |   | \\\  -  /// |   |
        //               | \_|  ''\---/''  |_/ |
        //               \  .-\__  '-'  ___/-. /
        //             ___'. .'  /--.--\  `. .'___
        //          ."" '<  `.___\_<|>_/___.' >' "".
        //         | | :  `- \`.;`\ _ /`;.`/ - ` : | |
        //         \  \ `_.   \_ __\ /__ _/   .-` /  /
        //     =====`-.____`.___ \_____/___.-`___.-'=====
        //                       `=---='
        //
        //
        //     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        //
        //               佛祖保佑         永无BUG
        //

    «Слава богу, багов нет»

    #define TRUE FALSE //Happy debugging suckers

    
        //
        //	Dear maintainer:
        // 
        // Once you are done trying to 'optimize' this routine,
        // and have realized what a terrible mistake that was,
        // please increment the following counter as a warning
        // to the next guy:
        // 
        // total_hours_wasted_here = 42


    image

    // Magic. Do not touch.

    image

    Коммент к AngularJS.

    image

    Коммент к исходникам Quake III Arena.

    image

    view-source:http://theoatmeal.com/

    image

    image

    Резюме Сергея Брина

    /* Stupid CSS hack because IE sucks */

    На сайте microsoft.com

    image

    На сайте Amazon.com

    image

    На сайте Amazon.com

    image

    Welcome to Flickr — Photo Sharing

    image

    Home of the Mozilla Project

    image

    Flipkart

    image

        .
                                 _
         _._ _..._ .-',     _.._(`))
        '-. `     '  /-._.-'    ',/
           )         \            '.
          / _    _    |             \
         |  a    a    /              |
         \   .-.                     ;  
          '-('' ).-'       ,'       ;
             '-;           |      .'
                \           \    /
                | 7  .__  _.-\   \
                | |  |  ``/  /`  /
               /,_|  |   /,_/   /
                  /,_/      '`-'


    image


    "...just crawl it."

    image


    MS-DOS Operating System:

    image

    image

    image

    image

    Source: Farts and f-bombs: see the hidden jokes in Microsoft's early code

    Запись в .EXE file:

    If you can read this, you too could become a great hacker!

    image

    Source Code of SpankBang

    image

    Вебсайт анимэшки.

    image

        /** 
        * For the brave souls who get this far: You are the chosen ones, 
        * the valiant knights of programming who toil away, without rest, 
        * fixing our most awful code. To you, true saviors, kings of men,
        * I say this: never gonna give you up, never gonna let you down, 
        * never gonna run around and desert you. Never gonna make you cry,
        * never gonna say goodbye. Never gonna tell a lie and hurt you. 
        */

        //When I wrote this, only God and I understood what I was doing 
        //Now, God only knows

    // Autogenerated, do not edit. All changes will be undone.

    // sometimes I believe compiler ignores all my comments

        // I dedicate all this code, all my work, to my wife, Darlene, who will 
        // have to support me and our three children and the dog once it gets 
        // released into the public.
    

    // drunk, fix later

        Catch (Exception e) {
         //who cares?
        }

        
    /* 
     * You may think you know what the following code does. 
     * But you dont. Trust me. 
     * Fiddle with it, and youll spend many a sleepless 
     * night cursing the moment you thought youd be clever 
     * enough to "optimize" the code below. 
     * Now close this file and go play with something else. 
     */

        
    //This code sucks, you know it and I know it. 
     //Move on and call me an idiot later.

    // If this comment is removed the program will blow up 

    //Dear future me. Please forgive me.
    //I can’t even begin to express how sorry I am.
    

    options.BatchSize = 300; //Madness? THIS IS SPARTA!

    // I have to find a better job

    // Catching exceptions is for communists

    // Houston, we have a problem

    // If I from the future read this I’ll back in time and kill myself.

    // This is crap code but it’s 3 a.m. and I need to get this working


    //Mr. Compiler, please do not read this.


    B    FUBAR     # OK, I give up. Halt & take a dump!


    /* don't ask, don't touch */


    /* If you are reading this, I want you to know that I am probably on some kind of FBI watch-list because I googled “how to kill all children while leaving the parents alive”. So yeah, Linux is brutal */


    
        /*         ^          ^
         *		\______    ______/
         *       \  * \   / *   /
         *        -----   ------           /----\
         *              ||               -< Boo! |
         *             /__\                \----/
         *       \______________/
         *        \/\/\/\/\/\/\/
         *         ------------
         */


    
        /*
        This following code is a work of fiction. Variables, methods, classes and interfaces are either the products of the author’s imagination or used in a fictitious manner. Any resemblance to actual persons's code, living, dead or in coma is purely coincidental.
        */


    
        /*
         *
         *   ARRRRRRRRRRRRRRRRRRRRRR!
         *
         *
         *              |    |    |
         *             )_)  )_)  )_)
         *            )___))___))___)
         *           )____)____)_____)\
         *         _____|____|____|____\\\__
         *---------\                   /---------
         *  ^^^^^ ^^^^^^^^^^^^^^^^^^^^^
         *    ^^^^      ^^^^     ^^^    ^^
         *         ^^^^      ^^^
         *
         *
         */


    image


    image


    // somedev1 - 6/7/02 Adding temporary tracking of Login screen
         // somedev2 - 5/22/07 Temporary my ass .
    


    //If you have reached here, you're probably doing something wrong. 


    //Increase the counter when you have tried hard to optimize this code and failed. 
        //total_hours_wasted=21


    // No comments, as it was hard to code, it should be hard to understand.


    //f**k the customers. 


    /* Please work */


     //Hey John, please fix the errors. 
        //Hey Abraham, please fix the errors. 
        //Abraham says F**k you both .


        /*
        The CEO of the company (and my former boss) sold the company
        leaving me free to comment the code as I should have. The 
        former CEO of the company will be referred  to as Dip Shit, or DS for short.
         
        DS thinks he is a software developing genius. Unfortunately for
        me (the maintenance programmer) I spent too much time cleaning
         up Dip's Shit.
        DS is a daredevil developer. Like Evel Knievel his code uses
         the GOTO statement frequently jumping daringly from a code 
        module into the middle of an IF...THEN structure in a different 
        module that has nothing to do with the first module.
        Speaking of IF structures DS loves them. He has no idea what a 
        CASE or SWITCH logic block is. Instead, I get to play code 
        archaeologist, and dig though a massively nested (and un-
        indented) IF...THEN...ELSE logic blocks.
         
        DS thinks of himself as clever, and this shows though with the 
        variable names he chooses:
         
          global i=0;
          global dateMyWife = 1;
          datesAreAFruit = '12/12/98';
          giveDatesToMyWife = datesAreAFruit + dateMyWife;
          if (someStuid)
          {
            giveDatesToMyWife = false;
          }
         
          // Ryan. Why does this sometimes crash? 
          if (giveDatesToMyWife) goto :hotTub 
         
          // Well, DS because you changed giveDatesToMyWife data type, 
        (also, adding an integer to the string -- which the compiler 
        warned you about)... Anyway in a weakly typed language you 
        obtained drain bramage by conditionally changing the data type 
        from a string to a Boolean, so that when the 
        if(giveDatesToMyWife) executes, when the variable is a string 
        the program correctly crashes -- because a string is not a 
        conditional bool type. Also, since someStuid is global, the 
        invisible pink unicorn only knows where this value is set, or 
        where and in what modules it gets changed.
         
        DS only knows how to scope variables as global. Stating when he  
        "tried using local, or private, my programs would always error 
        with variable not found error, so it's just easier to make 
        everything a global."
         
        I could go on, but as you dig though this flying-spaghetti-
        monster nightmare code you will see what I mean.
        */


        var c = 0,
        	safeCounter;
        ...
        safeCounter = function () {
              ...
              c++; // this is not subliminal
              ...
        },
        ...


        int x; 				// x is an int
        int y; 				// y is an int
        int z; 				// z is an int
         
        /* more code here ... */
         
        if (x)				// do something here
        	return x;
        else if (x == 0) 	// do something else here
        	return y;
        else				// do something entirely different
        	return z;


    Коммент в исходниках VMWare:
    //This exception should never happen, if it does gods help us.


    И все же ЭТО однажды случилось, и бог не помог...

    image


    Has the Large Hadron Collider destroyed the world yet?

    image


    image


    image


    image

    Исходники Apollo 11

    И напоследок, крик души:

    
        # Stop using anal as a variable! 
        # Wherever I look I see anal this and anal that!
        # So please stop.
        # Use analyze or xbvvzr or whatever and not anal_insert or anal_check
    

    P.S.


    // I'm sorry.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 139
    • +9

      А что не так с


      // Autogenerated, do not edit. All changes will be undone.

      ?

      • +3
        То что этот код не автосгенерирован, а написан человеком.
        • +5
          Почему вы так решили?
          • +9
            Встречал эту штуку в приколах, где написано что-то вроде: «Чтобы ваш код никто не трогал, добавьте в нее эту строчку».
        • +23
          На StackOverflow там ещё был комментарий на этот комментарий: «This seems to stop morons from messing my code...»
        • –65

          Почему коментарии без соответсвующего кода?
          Почему не перевели комментарии?

          • +61
            Мы не на Пикабу, чтобы комментарии переводить. Общепринято, что язык комментариев — английский, не зависимо от того, для кого написан софт.
            • –76

              Оон оно как, не знал. А кем кстати "общепринято"? Может стоит уведомить все крупные конторы об этом правиле?

              • +63
                Крупные конторы и так в курсе.
                • –60

                  Яндекс, 1С, Сбертех как-то пропустили мимо ушей. Хотя это наверно недостаточно крупные.

                  • +53
                    Яндекс исправляет на английские и кается. 1С стыдно поминать, Сбертех… Тоже.
                    • +4
                      Справедливости ради, переведены были комментарии в коде, предназначенном для использования внешними людьми. Про внутренний код никто ничего не говорил.
                      Момент, где Яндекс кается за использование русских комментариев так же не нашел. Цитату приведете?
                      • +14
                        Цитирую: «каемся».
                        • +8
                          Нет вхождения такого слова на странице по вышеприведенной вами ссылке.
                          • –2
                            Я ссылок не приводил. Её надо через Яндекс искать самому.
                            • +1
                              А, это была попытка троллинга…
                              • 0
                                Интересное определения шутки. Каждому — своё.
                    • +10
                      Лови 1С-ника!
                      • +5

                        Что с 1С взять, если у них даже код на русском?

                    • +12
                      Тех, кто пишет комменты не на английском, надо бить до посинения.
                      Доводилось мне ковыряться в коде, который писали фрицы и итальянцы. В первом случае хватало магии, во втором — адские спагетти. И комменты на немецком и итальянском, соответственно. Разработка была для заказчиков, которые не розуміють ни по-немецки, не по-итальянски.
                      Я очень долго ругался и уйму времени потратил только на перевод комментов. В случае с немецким особо доставляло то, что надо локаль менять, иначе теряются некоторые символы — вот такие, например: «groß».

                      Сам пишу на английском.
                      • +7
                        Вспоминаю попавшуюся часть проекта с комментариями на корейском. Тоже весело было.
                        • +3
                          Это уровень nightmare :)
                          • +2
                            Встретил код с комментариями на корейском с побитой кодировкой!
                            Благо что строк кода мало и вообще это AI гомункула для игры Ragnarok Online — нет необходимости сидеть и разбираться, если не идет.
                            • +4

                              а я сейчас работаю с наукоёмким и низкоуровневым кодом (т.к. сложный и его нереально много) на японском — то ещё счастье, особенно мило что вместо взаимствований и кальки английских терминов всё термины написали исключительно на японском. т.е. не пиксель (pixeru) а 画素 и тд
                              ладно этот быдлокод разложен по полочкам, есть структура и есть документация и оформлен по самым суровым стандартам.

                              • +10
                                Вы бы определились — или «быдлокод», или «разложен и оформлен»…
                                Если каменты не на английском, то предполагается, что продукт дальше страны не пойдет. Так или иначе, на родном языке воспринимаются намного проще (при условии «толковости» написания).
                                • +6

                                  объясняю на примере:
                                  всё оформлено в строгом и едином кодестиле, не только для собственно программирования а ещё и для удобного документирования (типа доксигена и тд), чтоб гит давал минимум строк изменений и тд.
                                  всё разложено по отдельным функциям, они в классы и методы, потом модули и тд.
                                  но


                                  1. вызывается в итоге одна чудо функция в которую передаётся ВСЁ, десять типов изображений, все опции и все указатели на другие функции которые аккуратно и тчательно обёрнуты, но NULL или указатель не на ту функцию с другими параметрам передать можно хотя с++.
                                  2. функция нахождения медианы из 5 чисел — сотни строк аккуратнейшего кода (хотя во всех DSP и сигнальных либах это 30-40 строк и десять compare&swap)
                                  3. на каждый вид и размерность матрицы свои функции которые принимают (void *) БРРРР!!! холодный пот!!! ну и прочие миксы си и си++.
                                  4. зачем то умножения расписаны в деления и сдвиги, хотя целевая плис аппаратных умножителей содержит в 10 раз больше чем требуется даже этому быдлокоду.
                                  • +1
                                    С++ и целевая ПЛИС — балуетесь HLS? Как впечатления? Нет проблем с С++'овскими фишками?
                              • +3
                                О, тоже бывало. Но всё же лучше комментарии на корейском, чем вообще никаких, и код, кхм, нетривиальный.
                                А так больше документация на корейском попадается, либо переписка.
                                • +2
                                  Буквально пару недель назад разбирал исходники, комментарии к которым были написаны на китайском в древней кодировке GB18030. Сами китайцы закатили глаза, пожелали удачи и умыли руки.
                                • +1
                                  В случае с немецким особо доставляло то, что надо локаль менять, иначе теряются некоторые символы — вот такие, например: «groß».
                                  А нужно просто пользовать вменяемые редакторы.

                                  Самый цимес, что я видел (правда давно) — файл, который был одновременно написан в трёх кодировках. После моих правок он стан написан в четырёх кодировках… и я не о комментариях. Комментарии там, как раз, были вполне себе на английском.
                                  • +3
                                    А нужно просто пользовать вменяемые редакторы.
                                    Спасибо, Кэп! Step 5, Step 7.

                                    Самый цимес, что я видел (правда давно) — файл, который был одновременно написан в трёх кодировках.
                                    Только один вопрос: зачем?!
                                    • +2
                                      Только один вопрос: зачем?!
                                      Это был спеллчекер. На входе был, понятно, UTF-8 (XXI век, всё-такое), но дальше — оно перегонялось в однобайтовую кодировку (ядро было универсальным, но поддерживало только однобайтовые кодировки). windows-1252 для европейских языков, понятно, windows-1250 для центральной европы и, кажется, windows-1253 для греческого (вот тут могу соврать — давно дело было).

                                      Ну а вишенкой на торте было наличие некоторого количество таблиц в коде (валидные символы для разных языков), символы, «нерелевантные» для текущего языка (как и символы не поддерживаемые в текущей кодировке) перегонялись в "?" плюс таблички с классификаторами (гласные/согласные/etc).

                                      Ну и как понятно табличка для немецкого была в windows-1252, а для польского — в windows-1250… для русского, понятно, ещё windows-1251 добавился…

                                      Всё в одном файле, да. Достаточно было этот файл в каком-нибудь новомодном Eclipse открыть и один пробел поставить — и всё, тесты начинали падать (да, несмотря на весь этот ужас с кодировками в остальном-то там всё неплохо было, unit-тесты, CI, вот это вот всё)…
                                      • +1

                                        Похоже, движок у этого спеллчекера — адское легаси..

                                      • +1

                                        Зато в TIA Portal'е немцы исправились, даже теги на русском создавать можно)

                                        • +2
                                          Но не нужно. Тэги на английском получаются короче и понятней, чем на русском)
                                          • +2

                                            Не спорю) Но вопрос стоял в перевариваемости продуктом разных языков.

                                          • +1
                                            TIA Portal во многих отношениях был шагом назад, только сейчас догоняют былое. Комменты на русском мы ещё в Step 7 писали (в России и для российских заказчиков).
                                            даже теги на русском создавать можно)
                                            А вот это ни за что и никогда.
                                            С языками ещё одна подстава, актуальная для меня: из списка языков, которые можно добавить в проект, исчез иврит. Не сильно критично, выбираем какой-нибудь другой. Но неприятно. Из плюсов — больше не надо писать на иврите для панелей задом наперёд. Старые, под Flexible на WinCE, не поддерживали RTL.
                                        • +1
                                          одновременно написан в трёх кодировках
                                          Но ведь английские буквы и всякие плюсы-минусы во всех кодировках в одном и том же месте? Или в коде были неанглийские?
                                          • +1

                                            Скажите это BOCU1 ,)

                                            • +2
                                              В коде были не английские. То есть было что-то в духе:
                                                switch (CurrentSpellcheckerLanguage) {
                                                  case LanguageGerman:
                                                    if (std::find_if(it1, it2, 'ß') {
                                                     ...
                                                    }
                                                    break;
                                                  case LanguagePolish:
                                                    if (std::find_if(it1, it2, 'ł') {
                                                     ...
                                                    }
                                                    break;
                                                  case LanguageRussian:
                                                    if (std::find_if(it1, it2, 'ш') {
                                                     ...
                                                    }
                                                    break;
                                                }
                                              
                                              И, соответственно вот эти вот 'ß', 'ł' и 'ш' — были в разных кодировках. Прямо внутри одной функции…
                                              • +1

                                                Насколько трудно кусок между case и break вынести в отдельный файл?
                                                Или проще есть кактус?

                                                • +1
                                                  Насколько трудно кусок между case и break вынести в отдельный файл?
                                                  В конце-концов это и сделали… когда ресурсы нашли.

                                                  До сих пор не знаю как к этому относится: код в результате стал сложнее и медленнее, но зато его можно редактировать Eclipse'ом не опасаясь всё уничтожить неловким движением. Ну и количество WTF'ов уменьшилось…
                                                  • +1
                                                    По-моему, еще проще было бы сделать что-то вроде
                                                    #define CODE_GERMAN_ESZETT = 223
                                                    #define CODE_RUSSIAN_SHA = 248
                                                    и сравнивать по коду символа
                                                    • –1
                                                      Ну как паллиатив — возможно. Но последний раз, когда я этот код видел правила вынесли во внешний файл специального формата, «типа понятного лингвистам»… правда правил новых там после этого за пару лет не добавилось… Но фиг его знает, может просто с лингвистами туго было…
                                                  • +1
                                                    Т.е. сама программа нормально работала с кодировками, только сам файл с данными был восьмибитным?

                                                    PS вам повезло, что ко всей этой прелести не добавилась кодировка windows-1255 :)
                                                    • 0
                                                      Т.е. сама программа нормально работала с кодировками
                                                      Как я уже писал: ядро у неё нормально работало с любой однобайтовой кодировкой — а языков там было… много.

                                                      PS вам повезло, что ко всей этой прелести не добавилась кодировка windows-1255 :)
                                                      А чем тут windows-1255 плох? Это бы как-то повлияло только на тех, кто поддержку иврита бы добавлял, остальные бы видели в этих местах разные свои буквы…
                                                      • 0
                                                        Тем, что к некоторой свистопляске с кодировкой добавляется свистопляска с RTL. Хотя, возможно, на уровне текстового файла это не влияет.
                                              • +2
                                                Я вижу немало минусов. Подозреваю, что минусующие никогда не работали с интернациональными проектами (когда среди заказчиков и исполнителей присутствуют носители более, чем одного языка).
                                                • +2
                                                  Вот каталанские комментарии это было да, ладно какой-то популярный язык вроде итальянского, немецкого, а тут вообще редкий и сложный язык.
                                                  • 0
                                                    Мне попадалось немало комментариев на иврите :)
                                                  • 0

                                                    С немцами у меня была похожая история. Только там еще в комплекте шел модуль препроцессора для Java (который вызывался внутри ant-таски и переводил ключевые слова с немецкого на английский). Более того: имена классов, методов и переменных были тоже на немецком. УчитываяОсобенностиОнногоЯзыка оно действительно выглядело как нечто родное.

                                                • 0
                                                  Коммент в исходниках VMWare:
                                                  //This exception should never happen, if it does gods help us.
                                                  И все же ЭТО однажды случилось, и бог не помог..


                                                  Тут и переводы хромают, в оригинале написано: «Это исключение никогда не должно было случиться, но если произошло, боги помогают нам».
                                                  • 0
                                                    Я думаю скорее имелось в виду, что «это прерывание никогда не должно случаться, если уж оно произойдёт, то только Бог сможет нам помочь».

                                                    Так что комментарий правильный…
                                                    • 0
                                                      gods ну никак не может перевестись как Бог.

                                                      То что вы написали должно писатся как: God would help us.
                                                      • +1
                                                        “if it does gods help us.” => «если случится, то да помогут нам боги»
                                                • +38

                                                  Так нормально?


                                                  длинный длинный тому_назад; /* в далекой-далекой галактике */
                                                  • +13
                                                    #define давным long long
                                                    давным давно; /* в далекой-далекой галактике */
                                                    

                                                  • +13
                                                    Справедливости ради, один из комментариев по-русски звучит как влитой:
                                                    // Catching exceptions is for communists

                                                    // Отлавливать исключения - занятие для коммунистов
                                                • +33
                                                  float boat;   // must be a float, otherwise it sinks.


                                                  // I can’t divide with zero, so I have to divide with something very similar 
                                                  result = number / 0.00000000000001


                                                  // no comments for you
                                                  // it was hard to write
                                                  // so it should be hard to read
                                                  • 0
                                                    А зачем надо было делить на ноль?)
                                                    • +7
                                                      Получить почти бесконечность?..
                                                      • +7
                                                        такая проблема возникает в играх с геометрическими вычислениями, когда используется формула с делением, куда в делитель может попасть 0, при этом формула должна выдавать какое-то значение (а не вываливаться с ошибкой)

                                                        решение — делать перед вычислением
                                                        if(divider==0) return SomeSpecialResult
                                                        • +3

                                                          А разве стандарт float не позволяет делить на ноль? Есть же специальные значения для Nan, PositiveInfinity, NegativeInfinity.

                                                          • +6
                                                            А разве стандарт float не позволяет делить на ноль?
                                                            Лучше бы не позволял.

                                                            Есть же специальные значения для Nan, PositiveInfinity, NegativeInfinity.
                                                            +inf и -inf — ещё себя прилично ведут. Но nan
                                                            nan < 0false
                                                            nan > 0false
                                                            nan == 0false
                                                            nan != 0false
                                                            Разработчики, которые это извращение изобрели на stack overflow рассказывают сказки, но… звучит это примерно как «мины замедленного действия — это жутко круто, кишки намотанные на люстру — это просто восхитительно».

                                                            Дело в том, что если вы задумаетесь, то поймёте, что неявное предположение о том, что == — это отношение эквивалентности (в частности A == A для любого A), а <= — это отношение порядка (в частности если A < B — false, то A >= B — true) заложено в такое количество алгоритмов, что возврат из функции nan'а — это почти акт саботажа…
                                                            • +3

                                                              Одна из причин почему в rust разделили типажи Ord/PartialOrd и Eq/PartialEq это как раз ieee754

                                                              • 0
                                                                Справделивости ради в машинных инструкциях операции сравнения с NaN возвращают не False, а отдельное сотояние, которое можно понимать например как NaB (Not a Boolean. Термин не общепризнанный, но результату операции соответствуют 2 флага вместо одного, что дает нам третье состояние). Проблема в том, что это самое Not a Boolean никак не влазит в boolean, у которого только 2 состояния. Поэтому разработчики языка забили болт, и сказали, что это Not a Boolean кастится к False всегда, и не волнует.
                                                                Вы же в свою очередь можете разработать свой язык и компилтор, для которого результат сравнений больше/меньше/равно будет возвращать 3 состояния, и тогда проблема с nan == nan исчезнет.
                                                                • +1
                                                                  Вот только не надо мне сказок про машинные инструкции сочинять, я с ними, как бы, каждый день сталкиваюсь. cmpss возвращает либо 0, либо -1, других вариантов нет. Или вы про ucomiss? Да — там для NaN отдельный флаг есть, но… его-таки нужно отдельноa проверять! Для проверок же «равно»/«неравно» и «больше»/«меньше» возвращаются, опять-таки true или false — при этом инструкция перехода может либо смотреть на флаги ZF/SF, либо на PF.

                                                                  Так что мне придётся создавать не свой собственный компилятор, а свой собственный процессор — что гораздо сложнее и безумнее. Гораздо более разумное решение: при обнаружении nan прекращать вычисления вообще. Проще, надёжнее, быстрее.
                                                                  • 0
                                                                    Да, я в первую очередь про ucomiss, ибо именно его используют компиляторы при сравнении флоатов.
                                                                    но… его-таки нужно отдельноa проверять! Для проверок же «равно»/«неравно» и «больше»/«меньше» возвращаются, опять-таки true или false
                                                                    Дело в том, что его нужно в ряде случаев обязательно проверять. Иначе может оказаться, что любое число будет меньше и равно NaN. И компиляторы частенько проверяют оба флага, чтобы сгенерировать false.
                                                          • 0
                                                            Либо делитель вычисляется и может оказаться нулём, либо есть цель вызвать исключение.
                                                          • +1
                                                            Видел в одном из проектов, над которым довелось поработать, комментарий вроде «сейчас три часа ночи, я очень устал, а завтра сдавать проект» и дальше вёрстка на таблицах. Впрочем, и без того там хватало приколов, но это уже другая история.
                                                          • +1
                                                            Оказывается, у всех это было. И будет.
                                                            • +2

                                                              Что это было?

                                                              • +18
                                                                // Нужно обязательно дунуть, потому что если не дунуть, 
                                                                // то никакого чуда не произойдет...
                                                                // © Амаяк Акопян
                                                                
                                                                • +19
                                                                  Про извлечение обратного квадратного корня в исходниках Quake на хабре есть более подробная статья, где объясняется вся магия.
                                                                  • +11
                                                                    // Please do not refactor, you probably won't optimize this better.

                                                                    — в заголовке метода на 2000 с лишним строк. Ну, я его на сотню строк всё же сумел ужать.


                                                                    // contrary to popular beliefs no magic is done here

                                                                    — перед блоком, где выполнялось 15 битовых операций подряд. Код на Java.


                                                                    // talk to the hand ★-★
                                                                    Handler hand = new TerminationHandler();

                                                                    — автор не поленился найти в Юникоде символ для очков, которые примерил Терминатор.

                                                                    • +2
                                                                      > — в заголовке метода на 2000 с лишним строк. Ну, я его на сотню строк всё же сумел ужать.

                                                                      Вспомнился ассемблерный исходник тетриса для DOS, где бинарник получался размером ровно 2 Кб. Оно работало в текстовом режиме, я сумел туда дописать загрузку графики в знакогенератор, и удержаться в тех же 2 Кб.
                                                                      • +1
                                                                        Если мы говорим про один и тот же тетрис, то можно выкинуть в этом тетрисе строку копирайта и таблицу рекордов и ничего сложного. Но с таблицей рекордов есть фича — уложиться максимально близко к 64К-1, что тоже один из челленджей, так что такое выкидывание заметно меняет использование.
                                                                        • 0
                                                                          Нет, челлендж был именно в том, чтобы что-то добавить, ничего не выкидывая, уложившись при этом в тот же размер.
                                                                      • +8

                                                                        для вас рефакторинг это ужатие количества строк? тогда я бы до 1 ужал :-D

                                                                        • +1
                                                                          ну, там реально был алгоритм межсерверной синхронизации на полсотни шагов с состоянием, протаскиваемым с начала до конца. чисто механически порезать на куски можно было, но вот какой смысл? 23 переменных из метода в метод передавать — это уже слишком, даже если их в класс запаковать. а одним куском это было хотя бы с пятого раза читаемо.
                                                                        • +2
                                                                          Напомнило историю про русского, придумавшего формулу.
                                                                          Правда, я бы не стал удалять таблицу сразу. Как минимум, запустил бы что-то вроде
                                                                          SELECT COUNT(A)
                                                                          FROM Table
                                                                          WHERE B <> A*3
                                                                          • 0
                                                                            Кстати прикол именно такой таблицы — на некоторых реализациях результат будет вычисляться одинаковое время с точностью до тика.
                                                                            Забавно было бы, если бы результатом этой оптимизации стал бы эфект гонки, который проявился только через полгода/год.
                                                                            • 0
                                                                              Т.е. возможны варианты, когда целочисленное умножение исполняется за переменное количество тиков, а SQL запрос к немаленькой таблице — за постоянное?
                                                                              Гонка из-за чего? из-за нескольких параллельных обращений к формуле/таблице? Не думаю, что там это было актуально. А даже если, то слишком легкомысленно полагаться на одинаковое время исполнения и не отлавливать потенциальные гонки.
                                                                              • 0
                                                                                > SQL запрос к немаленькой таблице
                                                                                Это не обязательно таблица. Возможно просто внешняя память.

                                                                                > Гонка из-за чего? из-за нескольких параллельных обращений к формуле/таблице? > Не думаю, что там это было актуально.
                                                                                Мы наверно никогда не узнаем.

                                                                                > А даже если, то слишком легкомысленно полагаться на одинаковое время исполнения.
                                                                                Согласен. Кстати, насколько я помню, некоторые платы реального времени именно так и работают.
                                                                            • +3
                                                                              Я видел другой вариант этой истории. Целочисленное умножение на 3 вычислялось слишком долго, поэтому использовали эту таблицу, потому что O(1). Но русский придумал формулу
                                                                              B = (A << 1) + A // B = A * 3

                                                                              • +1
                                                                                Эта история лучше.
                                                                          • +5
                                                                            Исходники Apollo 11 — the best
                                                                          • +2
                                                                            Простите за зануду, но не нашел подтверждений для "Исходники Apollo 11". Исходники давно опубликовали на гитхабе chrislgarry/Apollo-11. Не в текущем master, ни в инициирующем комите #7 (6e8c67f53145375d48d8a1af8f85384d1b10ec51) не удалось найти ни одного вхождения по «anal», если и используется то вполне корректно как «analysis». Естественно самого комментария в коде нет. Возможно, конечно, он был на стадии разработки проекта, но что-то я в этом сильно сомневаюсь.
                                                                            • +5
                                                                              Подпись относится к тому, что над ней.
                                                                              • +5

                                                                                Я вот не знаю, как там у Apollo, а в нашей больничной БД названия всех таблиц и полей, имеющих отношение к лабораторным анализам, начинаются с ANAL_. Например, ANAL_DIR, ANAL_COMMON и т.п. В общем, всё через жо… Простите, через ANAL.

                                                                                • +1
                                                                                  Когда вышестоящие товарищи захотели сократить слово «ANALOG(_INPUT)» я тоже предложил не маяться дурью и сократить до ANAL_IN.

                                                                                  А ещё лекарство есть — ANAL GIN :)
                                                                                • –1
                                                                                  Либо легенда, либо процензурировали.
                                                                                • +3
                                                                                  //DNA - Because fuck you and your magic numbers being all over the codebase.
                                                                                  #define DNA_BLOCK_SIZE   3
                                                                                  
                                                                                  • +2
                                                                                    Зря ноль перестали зачеркивать :)
                                                                                    • +1

                                                                                      Что именно Вы имеете в виду?
                                                                                      В командной строке и многих IDE по дефолту используются шрифты с зачёркнутым нулём.
                                                                                      Или Вы про хабр речь ведёте? В блоках кода действительно нули обычные… Ну, можете предложение кинуть админам хабра, чтобы со шрифтом поиграли для блоков кода.


                                                                                      int x = 0;  // обычный нолик :)
                                                                                      
                                                                                      • +2
                                                                                        Эээ…
                                                                                        • +2

                                                                                          Серьёзно?
                                                                                          А у меня по-другому...



                                                                                          По настройкам в своём профиле пробежался, вроде как ничего не нашел по настройкам шрифтов… У Вас какой браузер/ОС, если не секрет? (у меня Mozilla/Win10)

                                                                                          • +2
                                                                                            Chrome/MacOS
                                                                                            • +1

                                                                                              Может быть, дефолтный шрифт в браузере разный?
                                                                                              У меня "Times New Roman" стоит. Может быть, у Вас "программерский" шрифт на дефолте?


                                                                                              UPD:
                                                                                              поменял дефолтный шрифт на "Consolas", ничего не изменилось :(
                                                                                              какая-то бага хабра, как думаете?

                                                                                              • +3
                                                                                                У меня просто стоит Menlo(специально не ставил, вообще в первый раз его вижу осознанно), который указан в стилях, он и используется, видимо — в нем нолик перечеркнутый.
                                                                                        • +2
                                                                                          У меня для вас плохие новости :) Хабр использует моноширинный системный шрифт. Ниже скриншот моей ОС:
                                                                                          image
                                                                                          А вот код стиля для шрифта исходников хабра:
                                                                                          font-family: Menlo, Monaco, 'Courier New', monospace
                                                                                          

                                                                                          Предположу что вы читаете Хабр под Windows, а в Courier New ноль без зачеркивания.
                                                                                          • 0

                                                                                            Да, Вы правы :)
                                                                                            Я скачал и установил в системе шрифт Monaco, теперь блоки кода сменили вид и отображаются этим шрифтом.
                                                                                            Спасибо!

                                                                                            • +3

                                                                                              Черкнул в службу поддержки предложение пересмотреть список шрифтов в стилях…
                                                                                              Правда, не знаю, сочтут ли этот вопрос достойным рассмотрения — так-то невелика проблема

                                                                                              • –2
                                                                                                Вообще, раз это сайт для профессионалов, следует использовать профессиональный шрифт с лигатурами типа github.com/tonsky/FiraCode

                                                                                                /CC msdos9 AreD vvzvlad askv Boomburum
                                                                                                • +2

                                                                                                  Мне кажется это плохая идея, тащить лигатуры в статьи. Все эти автозамены уместны в уютном, под себя настроенном, редакторе, а в статьях будут создавать лишь путаницу и вызывать множество вопросов. К тому же, они не всегда идеально работают. Использую FiraCode и иногда натыкаюсь на появление символов там, где я бы не хотел их видеть.

                                                                                                  • 0
                                                                                                    Так я и не предлагаю использовать его в статьях, только в блоках кода :)
                                                                                                  • +2
                                                                                                    Вот не надо лигатур на сайте, где могут быть не очень профессионалы — они разительно отличаются от того, что написано в любых руководствах и могут ввести в заблуждение. Я их и в редакторе-то не использую.
                                                                                                • 0
                                                                                                  Тоже скачал и установил Monaco в ОС, но шрифт блоках кода на хабре не изменился ((( Пользуюсь Win7/Firefox
                                                                                                  • 0

                                                                                                    Проверьте название шрифта :)
                                                                                                    У меня тоже первая попытка была неудачной, но это был шрифт "Monaco Plain".
                                                                                                    Затем я поискал ещё, нашёл шрифт с точным названием "Monaco" и вот на нём уже всё заработало :)

                                                                                                    • 0
                                                                                                      нашёл оригинальный шрифт, установил, всё гуд. Спасибо, добрый человек.
                                                                                              • +6
                                                                                                int x = 0; // обычный нолик :)

                                                                                                и так сойдет ;)
                                                                                                • +2
                                                                                                  А у меня мало того, что нолик с палочкой, так еще и зачеркнут теперь!
                                                                                          • +10

                                                                                            А можно подписи к изображениям писать над самими изображениями? Я, конечно, понимаю — ЕСКД там, ГОСТ и все дела, но удобнее читать сверху-вниз всё-таки...

                                                                                            • +19
                                                                                              Извините, но это не статья, это куча надерганных из интернета скриншотов.
                                                                                              • +1
                                                                                                Тут самое ценное — обсуждение со своими примерами ;)
                                                                                              • +2
                                                                                                const {
                                                                                                  __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,
                                                                                                } = require('ReactNative');
                                                                                                
                                                                                                module.exports =
                                                                                                  __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactDebugTool;


                                                                                                https://github.com/facebook/react-native/blob/678a7f3c39e495db602e90e994894051eb7aab10/Libraries/Renderer/shims/ReactDebugTool.js
                                                                                                • –34
                                                                                                  Тонкий юмор, присущий лишь задротам. Даже не знаешь, плакать или смеяться.
                                                                                                  • +3
                                                                                                    В сорцах игрового движка Phaser
                                                                                                        // now draw those suckas!
                                                                                                        gl.drawElements(gl.TRIANGLES, this.currentBatchSize * 6, gl.UNSIGNED_SHORT, 0);


                                                                                                    • +3
                                                                                                      #define TRUE FALSE //Happy debugging suckers

                                                                                                      Это слишком просто, здесь есть на много больше интересного.

                                                                                                      • +1
                                                                                                        //Why i rewrite this again…
                                                                                                        • –1
                                                                                                          Я немного не понимаю: что это?
                                                                                                          • 0

                                                                                                            Это юмористические комментарии в коде

                                                                                                            • +3
                                                                                                              Выдержки из исходников различных проектов. Чтиво для программистов в общем, нормальные люди не поймут. Поздравляю, вы — нормальный!
                                                                                                            • +3
                                                                                                              Достойное пополнение коллекции

                                                                                                                  /*
                                                                                                                      COME TO THE DARK SIDE!!!
                                                                                                              
                                                                                                                               _.-'~~~~~~`-._                                                    
                                                                                                                              /      ||      \                                                   
                                                                                                                             /       ||       \        
                                                                                                                            |        ||        |                      
                                                                                                                            | _______||_______ |                                                 
                                                                                                                            |/ ----- \/ ----- \|                                                 
                                                                                                                           /  (     )  (     )  \                                                
                                                                                                                          / \  ----- () -----  / \                                               
                                                                                                                         /   \      /||\      /   \                                              
                                                                                                                        /     \    /||||\    /     \  
                                                                                                                       /       \  /||||||\  /       \                                            
                                                                                                                      /_        \o========o/        _\                                           
                                                                                                                        `--...__|`-._  _.-'|__...--'                                             
                                                                                                                                |    `'    |                         
                                                                                                              
                                                                                                                  */
                                                                                                              


                                                                                                              Из заголовочной части одного очень заморочного модуля.
                                                                                                              • +3
                                                                                                                Кому интересно, pterodactyl.me когда-то редиректил сюда theoatmeal.com/comics/ptero
                                                                                                                • +3
                                                                                                                  есть еще такая
                                                                                                                  Вот

                                                                                                                  • –2
                                                                                                                    Спасибо! Супер!
                                                                                                                      • +1
                                                                                                                        Если есть цель оскорбиться, то всегда можно найти, чем именно. Главное — поискать. Лично я бы просто не догадался до такой нумерологии.
                                                                                                                        Вот 0xDEADBEEF — другое дело.
                                                                                                                        • +1
                                                                                                                          Мёртвоамериканцы же обидятся, уберите это
                                                                                                                          • 0
                                                                                                                            Коровоамериканцы :)
                                                                                                                      • 0
                                                                                                                        MS-DOS Operating System:

                                                                                                                        А на скриншотах путь с Word 1.1
                                                                                                                        • +1
                                                                                                                          А для чего два раза комментарий с рикроллом (текстом и картинкой)?
                                                                                                                          • +1
                                                                                                                            Последнее прям вообще доставило… Есть у меня код в котором есть вот такие забавные методы PasteAnalExecute, DelAllAnalExecute, CopyAnalExecute

                                                                                                                            P.S. и это не софт для игрушек 18+
                                                                                                                            • +1
                                                                                                                              Из Вики ru.wikipedia.org/wiki/RMI
                                                                                                                              int q=centralWarehouse.getQuantity("SuperSucker 100 Vacuum Cleaner");
                                                                                                                              • 0
                                                                                                                                Как-то видел в продакшн-коде комментарий — большой (строк 15-20 в высоту, наверное) ASCII-костыль.

                                                                                                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.