1. C++ / Говнокод #13181

    +31

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    for(i = 0; i < strlen(line); i++)
    {
        ...
        doSomethingWith(line);
        ...
    }

    Пишет на С++, так как в нем (цитирую) больше возможностей, но std::string он не использует по причине (цитирую) его несовместимости с си компиляторами.
    Автор намекнул мне, что я не умею в многопоточность и что этот код лучше любого другого подходит для исполнения в многопоточной среде на тот случай, если переменная line bump изменится ("англици́зм" цитирую дословно, видимо вставленный для понтов и переводимое как наречие внезапно).

    Имеет ли смысл доказывать, что он не прав, если я с ним не работаю?

    Запостил: LispGovno, 15 Июня 2013

    Комментарии (296) RSS

    • С личного опыта - не докажешь, даже если бы был смысл. :)
      Ответить
    • объявление переменной в цикле тоже походу не практикует
      Ответить
    • > Имеет ли смысл доказывать, что он не прав, если я с ним не работаю?

      Нет.

      По моему опыту такое выдают "devolved" (как антоним evolve; знаю что неправильный англиский; может "de-evolved"?) типы, которые слишком долго работали в одиночку (или без критики/отзывов из вне), и их стиль программирования (и как следствие профессионального общения) деградировали в нечто несуразное. И это нечто несуразное с их точки зрения очень близко к совершенству, поэтому теперь они уже критики просто не приемлят.

      Предлагаю не останавливать эксперимент и продолжать наблюдения. Будет что постить на ГК - и простое человеческое общение этому типу однозначно пойдет на пользу.
      Ответить
      • Может напостить его перлов и однажды дать ссылку на их обсуждение на гк?
        Ответить
      • > devolved
        Ты хотел сказать stagnant?

        > devolved
        > ("англици́зм" цитирую дословно, видимо вставленный для понтов
        Ответить
        • > Ты хотел сказать stagnant?

          Я хотел сказать "evolved backwards, from higher to lower forms."
          Ответить
          • > evolved backwards
            Ааа.. degenerate
            Ответить
            • Да, но "дегенерат" уже как бы ругательное, и его никто в буквальном смысле слова не использует.
              Ответить
              • Это в руском языке ругательное, а в англиском оно показывает суть вещей без негативной окраски.
                Ответить
              • Это какбе реверс развитие. Что тут ругательное?
                Ответить
                • "Шампанское по утрам пьют только аристократы и дегенераты!"
                  (с) "Брильянтовая Рука"
                  Ответить
                  • Ты так говоришь аристократы, как-будто это что-то плохое.
                    Ответить
            • .
              Ответить
    • показать все, что скрытоstd::string говно. Питухи, юзающие "многопоточность" на локах - питухи. Перебирает так строки только питухи, юзают фор только питухи.
      Ответить
      • А что делают не петухи?
        Ответить
        • показать все, что скрытоНе юзают питушраский std::string. Стараются написать "многопоточность" более-мене вменяемо, а питухи любят пихать везде локи. Любят всякие питушрский контейнеры, которые юзают даже не хардварную атомарность. А зачем? Хоть в 10нитей в него пиши - он не будет быстрее, но питухам не понять.


          Питухи не осилил указатели - питухи всегда пишут фуфло. Фор в 99% не нужен, но питухам не дано.
          Ответить
          • >Фор в 99% не нужен, но питухам не дано.
            правильно, чёткие посоны юзают std::transform или std::for_each. Только функции высшего порядка, только хардкор!
            Ответить
          • Поэтому я за "PHP".
            Ответить
      • Питухи и петухи - это синонимы?
        Ответить
      • https://ru.wikipedia.org/wiki/Истерическое расстройство личности
        Ответить
      • superhackkiller1997, если когда-нибудь оформить свои советы в виде книги, дарю обложку и название:

        http://funkyimg.com/u2/4652/484/794415superhackkiller1997.png
        Ответить
    • показать все, что скрытоi++ - так пишут только питухи, щитстайл скобка - так пишут только питухи зедушные. < > >= <= - питушт только питухи, мужик пишет !=.

      Цикл для этого юзает только питух, который не осилил указательнауказатель, либо инлайн.

      Код питуха.
      Ответить
      • Все говно, ты не можешь предложить альтернативу, забейся в угол и не вякай.
        Ответить
        • показать все, что скрыто
          #include <stdio.h>
          
          inline char * doSomethingWith(char * str) {
            fprintf(stdout, "%c", *str);
            return ++str;
          }
          int main(void) {
            char * line = "Питухи так не осилят";
            while(*(line = doSomethingWith(line)));
            fprintf(stdout, "\n");
            return 0;
          }
          Ответить
          • fprintf(stdout, "%c", *str); - так пишут только питухи, египет стайл скобка - так пишут только питухи зедушные. Мужик пишет !=. И где твое !=?

            Цикл для этого юзает только питух, который не осилил указательнауказатель, либо инлайн. А while это таки цикл.

            Код питуха.
            Ответить
            • показать все, что скрытоПитух, там фринтф только для примера. Не хватит твоих куринных мозгов это понять. Что-то я не видел такого стиля у вас, заедушных питухов.

              while(*(line = doSomethingWith(line))) - вот сдесь.


              >Цикл для этого юзает только питух, который не осилил указательнауказатель, либо инлайн. А while это таки цикл.
              Питух, тут цикл ничего не делает. И для чего этого? Ты питух даже копипастить нормально не может. Нет питушок, тут цикл по иной причине.
              Ответить
              • >>цикл ничего не делает

                Так зачем он, если не делает ничего?
                Ответить
                • показать все, что скрытоfor(i = 0; i < strlen(line); i++) - питух, что тут цикл делает?

                  while(*(line = doSomethingWith(line))) - а что тут, питушок?
                  Ответить
                  • Ты ничего не говорил, делает цикл что-то или нет, ты просто написал:

                    >>Цикл для этого юзает только питух

                    Сам его же и используешь.
                    Ответить
                    • показать все, что скрыто>Цикл для этого юзает только питух
                      Питух, цикл для "этого"( для питухов поясню: "это" - это, для чего он юзается по контексту, а по контексту он юзается для перебора строки) юзают только питухи.


                      Мой же цикл следит только за концом массива. Его можно вообще выпилить и написать 10раз подрят строку из цикла без изменения и оно будет работать - это значит не юзать цикл как питушок.

                      Ну и да, питух, ты авось попытаешься отвечать на мои вопросы? Мне не интересно слушать твой питушарний слив.
                      Ответить
                      • >>Мой же цикл следит только за концом массива.

                        Ага, но не следит за изменениями строки.

                        А мне как раз интересно с тобой общаться, продолжай. Или зассал?
                        Ответить
                        • показать все, что скрыто>Ага, но не следит за изменениями строки.
                          С чего он должен следить за какими-то изменениями. Код питуха выше следит за чем-то, за чем мой не следит?

                          >А мне как раз интересно с тобой общаться, продолжай. Или зассал?
                          Ты сливаешься, как питух. Ты не можешь отвечать на мои комменты полность, а отвечаешь выборочно - это первый признак питуха и сливателя.
                          Ответить
                          • Бе бе бе.
                            Ответить
                          • "Автор намекнул мне, что я не умею в многопоточность и что этот код лучше любого другого подходит для исполнения в многопоточной среде на тот случай, если переменная line bump изменится ("англици́зм" цитирую дословно, видимо вставленный для понтов и переводимое как наречие внезапно). "

                            Сам читай
                            Ответить
                            • показать все, что скрытоДак даже если переменная лайн изменится и сохранится её инвариант( т.е. будет NULL на конце), то мой код так же следить за изменением line. Пропитушковался, питушок.


                              А вообще, питухи так и не осилил свою архитектуру - мне похрен на их ко-ко-ко. На х86 при вменяемой организации данных никакие локи, софтварная атормащина и даже хардварная не упёрлась.
                              Ответить
                              • >>сохранится её инвариант

                                тебе еще и инвариант подавай.
                                Ответить
                                • показать все, что скрытоНу без инварианта его стрлен тоже отвалится, или что он там юзает.
                                  Ответить
                                  • Если строка станет короче, его стрлен померяет строку покороче и выйдет из цикла.

                                    Твой пойдет по памяти дальше.
                                    Ответить
                                    • показать все, что скрытоС шансом 50% он выйдет из цикла на +1 итерации - т.е. он зайдёт за предел. А если там конец страницы? Сегфолт.


                                      Если кто-то поменяет строку, то он выйдет либо на том конце, где он был раньше, а если его перезапушит - он выйдет на нулях( для тебя открой тайну в линуксах, да и вообще в посиксах память возвращается занулённой, а так же у всяких малоков есть выравнивание).


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

                                        P.S. Я не защищаю изначальный код. Как твой, так и изначальный код - непотокобезопасны. И если соседний поток может менять line - юзать оба кода нельзя.
                                        Ответить
                                        • показать все, что скрыто>Если попросить круглый размер - маллок ничего не добавит, и код не нарвавшись на нули от выравнивания попрет читать или следующий блок или структуры аллокатора.
                                          Добавит.

                                          >P.S. Я не защищаю изначальный код. Как твой, так и изначальный код - непотокобезопасны. И если соседний поток может менять line - юзать оба кода нельзя.
                                          Потокобезопасность придумали питухи, который ничего не знают о тредах. Мой код не хуже того, что запости TC - только он быстрее, короче, проще и понтовей по всем параметрам.

                                          Если в коде соседний поток может менять line - этот код питушня и я просто клал на того, что написал эту питушню.
                                          Ответить
                                          • > Добавит.
                                            Пруф.

                                            > Мой код не хуже того, что запости TC
                                            Отчасти хуже - функция, которую он вызывает должна возвращать str+1, а это можно забыть. Хотя... крутые хацкиры же ничего не забывают ;)

                                            > Если в коде соседний поток может менять line - этот код питушня и я просто клал на того, что написал эту питушню.
                                            Тут ты прав.
                                            Ответить
                                            • показать все, что скрыто>Пруф.
                                              У малока выравнивание 2*size_t . А ему для фри нужен size_t - т.е. free(ptr); - это ptr-sizeof(size_t) - т.е. первый size_t он никогда не трогает.

                                              size_t size_t и тут уже начинается твой указатель, который вернул тебе малок. Первый size_t маллок никогда не трогает, а вот второй трогает.

                                              >Отчасти хуже - функция, которую он вызывает должна возвращать str+1, а это можно забыть. Хотя... крутые хацкиры же ничего не забывают ;)
                                              Ну он же не забыл в форе ++i - не забудет и тут.
                                              Ответить
                                              • > Первый size_t маллок никогда не трогает, а вот второй трогает.
                                                Ок, тут надо перекурить.

                                                > Ну он же не забыл в форе ++i - не забудет и тут.
                                                Одно дело не забыть в одной функции, а другое - когда ++i в одной функции, а while от него в другой.
                                                Ответить
                                              • > У малока выравнивание 2*size_t
                                                Да, ок, тупанул я. На круглых размерах действительно будет паддинг в конце. Не будет его на размерах sizeof(size_t) * (2*N+1) - на 32-битной архитектуре - 12, 20, 28 и т.п.
                                                Ответить
                              • >>при вменяемой организации данных

                                с этого места поподробнее.
                                Ответить
                                • показать все, что скрытоНу банальный пример - питушки любят иметь один пулл данных на все нити. А не питушки имеют пулл на нить и мержат.

                                  Почитай википедию - там написанно про это.


                                  Знаешь почему пацаны юзают сишку? Патамучто она предсказуема и пацан может определить есть ли фейлы в его реализации или нет. А питушки на всяких питушачих плюсах и жавах даже не могут сказать - будет ли local_ptr = global_ptr; атомарной или нет.
                                  Ответить
                                • показать все, что скрытоИ да, систайл плюсы относятся к сишке, ибо это сишка, которую собирает плюсовой конпелятор.

                                  А то ты мне начнёшь понять, что некоторые пацаны пишут на систайл плюсах. В этих плюсах нет ствоего стл"а в нужных местах, нет всяких иных питушрнь - всё написано на сишке. Так написан тот же шланг( правда он написан как питушня, но на сишке).
                                  Ответить
                                  • И изменения имен там тоже нет?
                                    Ответить
                                  • И sizeof('a') равно 1 да?
                                    Ответить
                                    • показать все, что скрытоНикто sizeof('a') не пишет, только питушки.
                                      Ответить
                                      • Литералы - для питушков?
                                        Ответить
                                        • > Литералы - для питушков?
                                          Сайзоф от литералов для питушков. Тут он, к сожалению, прав.
                                          Ответить
                                          • >Сайзоф от литералов для питушков.
                                            не всяк литерал основан на char
                                            Ответить
                                            • Только вот заюзает для него сайзоф только питушок.
                                              Ответить
                                              • > Только вот заюзает для него сайзоф только питушок.
                                                Для строкового литерала - не только петушок;)
                                                Ответить
                                                • Когда даже Борманд употребляет слово питушок, я чувствую себя питушком из-за того, что не употре бляю.
                                                  Ответить
                                                  • > Когда даже Борманд употребляет слово питушок, я чувствую себя питушком из-за того, что не употре бляю.
                                                    SEO. Скоро эта страничка будет гуглиться по слову петушок.
                                                    Ответить
                                                    • по словам питушок govnokod уже гуглится первая в списке тема курочки
                                                      Ответить
                                                    • петушки мокрая сишка скачать бесплатно без регистрации смс
                                                      Ответить
              • > while(*(line = doSomethingWith(line))) - вот сдесь.

                Что за питушарный цикл? Что за питушинуе мутабельное говно я вижу в этом питушином императивном цикле?
                Тру поцаны делают рекурсией.
                Ответить
          • Так выводить строку, вместо printf("%s",line); - питушиная еботека.
            Ответить
            • показать все, что скрытоА теперь в принтфе сделай вот так: fprintf(stdout, "%c", ((*str) + 1)), питушок, а я поржу.
              Ответить
              • Зачем мне следующий символ в таблице?
                Ответить
              • на, над пропастью поржи: printf("%c", ((*str) + 1));

                и зачем получать значение символа +1, ты так и не ответил
                походу, твоя куриная анскильность не позволяет понять разницу между *s + 1 и *(s + 1), и ты снова в луже
                Ответить
                • Помнится, здесь уже был один поциент, который генерил код под все платформы и байтоебствовал голыми руками, утверждая, что умнее всех на порядки и такие как он вымирающий вид. Это его наследник, он уже открыл для себя Це.
                  Ответить
                  • >Помнится, здесь уже был один поциент, который генерил код под все платформы и байтоебствовал голыми руками
                    компиляторы уже устраивают срач на ГК?
                    Ответить
                  • не стоит исключать того, что ему на самом деле 16 лет и с 3 класса его уже держат на принудительном лечении, потому что болезнь проявлялась слишком явно
                    кто знает, каким он был 7 лет назад, может, челябинские светила психиатрии чем-то помогли бедному, но я сомневаюсь, в россии все херово с психиатрией

                    вот и все что знает - на уровне 3 класса, небось и родители от него отказались, наверное, стоит пожалеть его..,
                    Ответить
                    • И он с апреля дорывается до компа по ночам. И срет на лоре и на уютненьком. Я ему пишу бредовые строки, их есть у меня - он отвечает.
                      Ответить
                      • > бредовые строки, их есть у меня - он отвечает.
                        Он понимает даже такое и способен ответить?
                        Ответить
                • показать все, что скрыто>и зачем получать значение символа +1, ты так и не ответил
                  Питух, патамучто так надо - читай говнокод, питух. Суть говнокода в том, что он может отдельно юзать что угодно для каждого символа.

                  >походу, твоя куриная анскильность не позволяет понять разницу между *s + 1 и *(s + 1), и ты снова в луже
                  Нет, питух. Там написано всё правильно. *(s +1) у меня будет на следующей итерации - мне не нужно выводить следующий символ.
                  Ответить
                  • Но ты так и не привел нормального примера, которого нельзя заменить принтфом.
                    Ответить
                    • Ну вот как-то так.

                      #include <stdio.h>
                      #include <ctype.h>
                      
                      
                      typedef int(*f_callback)(int);
                      
                      inline void aka_cppalg(char * str, f_callback f) {
                        inline char call_f(void) { *str = f(*str); return *(++str);}
                        while(call_f());
                      }
                      
                      int main(void) {
                        char line[] = "abbath unskilled shit!";
                        aka_cppalg(line, toupper);
                        fprintf(stdout, "%s\n", line);
                        return 0;
                      }


                      На более сложных код будет ещё красивее, а питушки так и пишут фуфло. Кстати в вашем питушарнем C++ до этого уже дошли, но не вы питушки.
                      Ответить
                      • Блин, с такой любовью к вложенным функциям тебе однозначно стоит изучить хаскель ;)
                        Ответить
                        • показать все, что скрытоПро эта была тема на лоре, но хаскель слишком тухлый - они избыточный, тупой гц, тупой лисп. Я хочу сишку как твой хаскель, только сишку.

                          inline void aka_cppalg(char * str, f_callback f) {
                            while(({ *str = f(*str); *(++str);}));
                          }


                          Вот тебе уже больше хаскель, но я побоялся, ибо пацаны не поймут.
                          Ответить
                          • Тогда уж просто
                            while(*str = f(*str), *(++str));
                            Зачем тебе в данном конкретном случае этот гццизм с блоком?

                            P.S. А вообще надо бы вот так:
                            while (*str) { *str = f(*str); ++str; }
                            чтобы не баговало на пустых строках.
                            Ответить
                            • показать все, что скрыто>Зачем тебе в данном конкретном случае этот гццизм с блоком?
                              Патамучто - это пример.

                              >Тогда уж просто
                              Ну возьми что-то посложнее - будет питушня.

                              >while (*str) { *str = f(*str); ++str; }
                              Питушня. Длинше, лишняя проверка в начале, некрасиво.
                              Ответить
                              • > лишняя проверка в начале
                                А, т.е. проверка на пустую строку она лишняя? Шел бы ты отсюда, лолка, со своим быдлокодом, который неадекватно пашет на пустой строке.
                                Ответить
                                • >который неадекватно пашет на пустой строке.
                                  Это ж "контрактное" программирование. Код работает только на седьмые лунные сутки, если в четверг был дождь и папоротник расцвет не раньше, чем позавчера.
                                  Ответить
                                • показать все, что скрытоПитух, а как у меня получится так, что я передам туда пустую строку? Для меня, питух - путсая строка - есть NULL, а как для питухов - мне не интересно.

                                  И да, питушок, я смотрю ты слишком раскукорекался в последнее время? Тебя ещё в лужу потыкать?
                                  Ответить
                                  • Разыменовал ты NULL и присвоил туда? Молодец.
                                    Ответить
                                    • Дак strlen() так же упадёт. Я не проверяю нулы в каждой фукнции как питух. В моём коде неможет быть нула.
                                      Ответить
                          • > Я хочу сишку как твой хаскель, только сишку. Вот тебе уже больше хаскель, но я побоялся, ибо пацаны не поймут.


                            Он раньше вроде более вменяемо говорил?
                            Вообще-то я понял что ты сазал, но книг тебе нужно почитать для востановления речевых центров.

                            Тебе бы мышление упорядочить. Х анскиль бы помог.
                            Ответить
                            • показать все, что скрытоМой мышление в порядки, и упорядочено настолько, что у вас не хватает связей и порядка, чтобы понять как одно моё слово вытекает из другого.
                              Ответить
                              • Так в порядке, что даже писать не умеешь.
                                Ответить
                              • Как твои мозги вытекают из твоего носа.
                                Ответить
                              • Слышь говно, где решение уравнения теплопроводности?
                                Ответить
                            • Хаскель и 1С портят людей одинаково. Первые жаждут рекурсии, вторые становятся индусами байтоебами.
                              Ответить
                              • Хаскель не приучает к рекурсии ;) Скорее он приучает к функциям высшего порядка.
                                Ответить
                          • > while(({ *str = f(*str); *(++str);}));
                            Лямбда, хаскилизм и гецецизм головного мозга.
                            Ответить
                            • Фигурные скобки ведут себя как запятая в расширениях гцц? Т.е. возвращают результат последней операции? Или как это работает?
                              Ответить
                              • *(++str); последняя "строка" - это иквивалент return, только ретурне не пишется, а подразумевается.
                                Ответить
                                • Не будет работать.
                                  Ответить
                                  • Что небудет работать, питух?
                                    Ответить
                                    • Не по стандарту.
                                      Ответить
                                      • Какому стандарту, питух - он спрашивает синтаксис ({}) - это аналог инлайн функции локальной, который возвращает последнюю строку, которая должна быть оформлена как ретурн, кроме самого ретурна.

                                        Питух. Ты несёшь, как и все питушки тут, херню, даже не понимая что ты несёшь.
                                        Ответить
                                        • >>Ты несёшь, как и все питушки тут, херню, даже не понимая что ты несёшь.

                                          Наконец заметил, я думал уже не заметишь.
                                          Ответить
                                • http://darkmachine.org/~artem/grammar_nazi.jpg
                                  Ответить
                              • Да, результат последней операции. Ну и в отлчиие от запятой там можно описывать переменные. Вот только ради переменных эти блоки и юзают.
                                Ответить
                        • > к вложенным функциям
                          он GNUcicism использует?
                          Ответить
                      • char line[] = {0};
                        aka_cppalg(line, toupper);
                        упс, да?

                        слив на сливе, ну что за лошара
                        Ответить
                        • >упс, да?
                          Что именно упс? Ты питушок тотальный анскиллед - иди подучит выравнивание там, как пишут пацаны нормальный код.

                          Если ты питушок, то зафигач туда проверку.


                          Чего слив? Может быть aka_cppalg(NULL, toupper); Тоже будет слив? Ах strlen() как ты мог предать питушка, а он такой питушыстый.
                          Ответить
                          • т.е. пустую строку (не нулевой указатель, заметь - а то вдруг ты разницы не видишь) в твой убер алгоритм передать не могут? курочка не осилила написать его таким образом, чтобы с тем же перформансом все работало?
                            Ответить
                            • показать все, что скрытоПередавать пустую строку не имеет смысла. Питуху надо - пусть питух это реализует - мне не упёрлось.
                              Ответить
                              • То есть твой код гарантированно не будет обрабатывать пользовательский ввод / внешние файлы?

                                Ну и нахуя он тогда нужен?
                                Ответить
                                • Как жешь вы меня питухи одалели. Вы тотальная анскильность, которая нихрена не умеет писать.

                                  Питух, пользовательский ввод/файлы( хотя не пишу питушню, которой это надо) обрабатывает отдельный анализатор, который проверяет его(ввода) корректность и только потом эта питушня попадает ко мне в рабочий код.


                                  Только у питушков по коду гуляют нуллы и прочая байда. У нормальных людей непредсказуемые вещи в коде не обитают.
                                  Ответить
                                  • Выложи свой код на git и мы оценим твою скильность.
                                    Ответить
                                  • Ниодной твоей проги не видели, видимо никто не хочет писать тебе анализатор.
                                    Ответить
                                  • Вот я и собираюсь использовать твой код, чтобы убрать из ввода запрещённые символы.
                                    А пустая строка это нормальный случай для многих полей ввода.
                                    Скажи, что делать, если пользователь не желает указывать маску для подбора, а его предпочитаемые настройки нужно сохранять, загружать и обрабатывать?
                                    Ответить
                                    • Как ты использует мой код для этого, питух? осиль strchr() питух, мозг и аргументы получше, питух.

                                      Нет, птиух. Пустая строка - питушня, и быывает только у питухов.


                                      Питух, сохранять настроки тебе похрен как. Загружать, питух, их надо специально запиленным кодом, питух.


                                      А обрабатывать уже надо кодом, который пишу я, ибо если ты не питух - у тебя пустых строк в обработке НИКОГДА НЕ БУДЕТ. А если ты питух сразу файл даёшь в обработку - ты питух и твйо код говно.
                                      Ответить
                                      • Вот я предлагаю реальный пример: Загрузи строку произвольной длины (до 10к символов) из текстового файла, заменив все символы кроме (a, d, p, c, l, t, n, 0) на 0 и сохрани её в памяти для дальнейшего использования в других функциях.

                                        Просто ты много говоришь, а коде, который можно использовать кроме как в «примерах» не показываешь. Создаётся впечатление, что ты профессиональный писатель примеров, который нихуя не может на продакшене.
                                        Ответить
                                        • показать все, что скрытоПитух, ты упоролся? Вот так вы, питухи, и живёте, неся тотальную херню.


                                          Зачем питух тебе заменять все ненужные символы на что-то там - так делают только питухи.

                                          Ты мне предлогай реальный приме - зачем и что тебе надо.

                                          >Просто ты много говоришь, а коде, который можно использовать кроме как в «примерах» не показываешь. Создаётся впечатление, что ты профессиональный писатель примеров, который нихуя не может на продакшене.
                                          Ты, питух, совсем упорлся? С какого хрена у меня в коде будет пустая строка? Питух. Как она там появится? Питух.

                                          Вы анскильные "продакшн" питухи, которые вояют говно за еду, ничего не зная.
                                          Ответить
                                          • >Зачем питух тебе заменять все ненужные символы на что-то там
                                            Требование ТЗ. Это реальный пример. От нас только коррекция «до 10к символов». В оригинале было «неограниченной длины»

                                            В файле описываются маски для полей ввода в программе. Именно такой формат для совместимости с уже имеющимся ПО у заказчика. В случае пустой строки — свободный ввод.

                                            >Вы анскильные "продакшн" питухи, которые вояют говно за еду, ничего не зная.
                                            А ты борец за идею, знающий всё лучше всех, но ни копейки своим трудом не заработавший и ни строчки в открытые проекты не внёсший.
                                            Ответить
                                            • >Требование ТЗ. Это реальный пример. От нас только коррекция «до 10к символов». В оригинале было «неограниченной длины»
                                              Я шлю питухов нахрен.

                                              Питух - осиль таблицу:
                                              char m[0xff + 1] = {['a'] = 'a', ['d'] = 'd', ['p'] = 'p', ['c'] = 'c', ['l'] = 'l', ['t'] = 't', ['n'] = 'n'};


                                              >В файле описываются маски для полей ввода в программе. Именно такой формат для совместимости с уже имеющимся ПО у заказчика. В случае пустой строки — свободный ввод.
                                              Питух идёт нахрен.


                                              >А ты борец за идею, знающий всё лучше всех, но ни копейки своим трудом не заработавший и ни строчки в открытые проекты не внёсший.
                                              Мне это не упёрлось. Есть вы - анскилледы, которые пишите фуфло бесполезное за еду. Есть я - у меня нет времени писать фуфло за еду.

                                              Надеюсь ты понимаешь в чём разница между 10питушарскими строчками в спо проектах и царём с бесконечно понтовым скиллом, причём спошник.

                                              У одних задача коммитить 10строк, у других подымать с колен.
                                              Ответить
                                              • >У одних задача коммитить 10строк, у других подымать с колен.
                                                Ну назови хоть один проект, которым пользуется более чем один человек, который ты «поднял с колен». Или дай ссылку на портфолио.

                                                Судя по тому, что ты не смог решить элементарный пример, который даже на собеседование на джуниора давать стыдно, не привёл примера реального использования кода с оглядкой на реальные особенности платформ с доказательством, что тут байтоёбство даст выигрыш более чем в одну наносекунду за всё время работы программы, ты исключительно дрочишь на свой «идеальный» код, который метлой бы вымели из всех более-менее нормальных проектов.
                                                Ответить
                                                • >Ну назови хоть один проект, которым пользуется более чем один человек, который ты «поднял с колен». Или дай ссылку на портфолио.
                                                  Поднимаю проекты с колен анскилледы - я не копаюсь в гумне.


                                                  >Судя по тому, что ты не смог решить элементарный пример, который даже на собеседование на джуниора давать стыдно, не привёл примера реального использования кода с оглядкой на реальные особенности платформ с доказательством, что тут байтоёбство даст выигрыш более чем в одну наносекунду за всё время работы программы, ты исключительно дрочишь на свой «идеальный» код, который метлой бы вымели из всех более-менее нормальных проектов.
                                                  Питух, я клал на ушлёпков типа тебя. Какие особенности платформы, питух? Какой платформы? Аппаратной? Дак питух тут без разницы.

                                                  Питух, какой программы - в нормальном коде( который работает, а не форму в гуйне апдейтит) - наносекунда - это порядки, а ты питух этого не поймёшь.


                                                  Я тебе питух написал выше то, что тебя, питуха сольёт в хламину, ибо ты, питух, не осилил таблицы, ибо питух.

                                                  И делал на ифах, либо на свиче( и то врядли), ибо питух.

                                                  Чтож ты не ответил мне, питух?
                                                  Ответить
                                              • А чем же ты занят, если нет времени?
                                                Ответить
                                                • гадит на уютном ГК. Ваш КО
                                                  Ответить
                                                  • > гадит
                                                    Я бы не был столь категоричен. Вайпать он не вайпает, что набросы делает - так мы тут привыкли к рафинированным троллям (не будем перечислять, все и так знают), попутно выясняется что-то новое, интересное. Плюс, вдруг перевоспитается организм.
                                                    Ответить
                                    • Ну как, использовал?
                                      Ответить
                  • курочка, сохраняй спокойствие, а то санитары снова изолируют
                    ну так чем отличается fprintf(stdout, ... от printf?
                    Ответить
                    • показать все, что скрытоТем, что принтф и есть fprintf(stdout, .

                      Питушкам не понять, а мне удобней.
                      Ответить
                      • поциент, у вас есть иные агрументы, кроме "вы все пидарасы питушки и анскилльности, а я Д'Артаньян"?
                        Ответить
                        • Дак я написал аргумент - принтф и есть fprintf(stdout. Т.е. они эквивалентных.

                          Я пишу так, как хочу. Я люблю м енять выводы для удобства и красоты( один красненький, другой синеникой или как-то так). Я пишу fprintf(stdout быстрее, чем он пишет printf.

                          Допустим я у меня одновременно работают 2 вещи и я хочу запилить отладочный вывод, а stdout мне не нужен - я пишу в одной stdout, а другое stderr - и у меня разными цветами будет красивый вывод в консольке.

                          Это объективно удобней, чем "SHIT 1 OUT:" и "SHIT 2 OUT:".

                          Да и вообще, почему у меня должна быть не симетричная питушня в коде.
                          Ответить
                          • Этот пост я даже плюсану.
                            Ответить
                            • За что?
                              Ответить
                              • Вполне аргументированный пост. Форму fprintf(stdout легко исправить на fprintf(stderr, если понадобится. (Хотя, на самом деле, обычный printf рефакторится не сложнее :)
                                Ответить
                          • > Да и вообще, почему у меня должна быть не симетричная питушня в коде.

                            Потому что у тебя всегда несимметричная питушня в коде.
                            Ответить
                      • ты же курочка верещал выше, что это не одно и то же
                        стоит тыкнуть тебя в любую тему, как сразу всплывает жуткий пробел
                        принтф ты просто никогда в жизни не использовал - даже был не в курсе, что еще миллион способов вывода в консоль, ну что ж, очередное открытие царя сишки
                        каждый день что-то новенькое, да?
                        Ответить
                        • >ты же курочка верещал выше, что это не одно и то же
                          Где - пруфы.

                          >принтф ты просто никогда в жизни не использовал - даже был не в курсе, что еще миллион способов вывода в консоль, ну что ж, очередное открытие царя сишки
                          Причем тут пильён способов питушок. Любой твой питушатскйи вывод - это write() после sprintf().

                          Питушок.

                          >каждый день что-то новенькое, да?
                          Я знаю, что ты слился и пукан болит, но не выражай своё невежство в токой грубой форме - ловить меня у тебя не выйдет. Дальше говори, что мой код не работает и т.п. - питушки тебя плюсанут.
                          Ответить
                          • ловить тебя? ты сам упарываешься постоянно, курочка

                            с производной то разобрался?
                            Ответить
                            • Есть ссылка на тему, где он слил смысл производной? Алсо сливать производную в 16 лет имхо нормально.
                              Ответить
          • > return ++str;

            Что это за питушня? Нахуя менять значение str, если нужно только вернуть результат?
            Норм пацан бы написал
            return str+1;
            Хотя это же слишком понятно, кулхацкеры не любят понятный код
            Ответить
            • показать все, что скрытоПатамучто так понятние во что конпелятор это превратит, а превратит он это именно в ++str. Поэтому питухи пишут говно, а поцаны пишут так, как это будет работать.


              Нет, куллхацкеры не любят понятный для питухов код. Если ты не осилил ++str - ты питух, а писать str + 1 - мне лень - это на 2 символа больше.


              Поэтому ты питух и питухи тебя плюсанули.
              Ответить
              • > Патамучто так понятние во что конпелятор это превратит

                Так пишут только питухи, это во-первых.
                Ты снова пропизделся, это во-вторых.
                Чтобы было понятнее, во что компилятор превратит, надо писать так:
                __asm{
                ...
                }
                Ответить
                • Нет питух, это не твои питушарние делфи.


                  Пацаны итак знают во что конпелятор это превратит - им не надо писать это самим. А вот питушка типа тебя всё нравится писать лишнюю байду.
                  Ответить
                  • > Пацаны итак знают во что конпелятор это превратит

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

                    > А вот питушка типа тебя всё нравится писать лишнюю байду.

                    Охлол, ты ж ресурсы руками удаляешь, и про лишнюю байду что-то пиздишь, двойные стандарты у тебя, питушок.
                    Ответить
                    • Это какая-то старая курочка. Она даже знает о том, что тебе нравится дельфи. Небось ещё и на гейдеве зареган.
                      Ответить
                      • на гейдеве анальная модерастия, пациент там и часа не продержится
                        Ответить
                        • Если даже гейдевская модерастия для него слишком анальная, то что же говорить про все прочие форумы?
                          Ответить
                      • Понять, что тарасу нравятся делфи ничего не стоит. Только делфятский питушки защищают паскаль.
                        Ответить
                    • >Пиздишь, современные компиляторы настолько хитрожопы, что предсказать выхлоп невозможно.
                      Реально? Я предсказал. И не зря там написал ++str, а так же инлайн.

                      >Или ты пишешь на асме, или все твои высеры про понятность для машины - питушиное кукареканье пиздобола, не отвечающего за базар.
                      Щито?


                      >Охлол, ты ж ресурсы руками удаляешь, и про лишнюю байду что-то пиздишь, двойные стандарты у тебя, питушок.
                      Какие ресурсы - я ничего не удаляю. Питушки не осиливают кольцевой буфер? Стеки? Или питушки как мужики пишут каждый раз маллок?
                      Ответить
                  • > Пацаны итак знают во что конпелятор это превратит
                    И с ключом -O0, и -O1, и -O2, и -O3, и со всеми значениями -march, -mtune, и с прочими ключами -f... пацаны заранее знают, во что это компилятор превратит?
                    Ответить
                    • Вангую, что он скажет, что ключи конпелятора не нужны. Так как он пишет лучше
                      Ответить
                      • Нет, он скажет, что -O0, и -O1 не упёрлись. Питух не осилил "-march, -mtune", которые ниначто не влияют.

                        Про ключи ф питух пробалаболился, ибо в основном они тоже не влияют, а которые влияют вынесены в O, остальные не юзают, а если юзают, то знают, что они делают.


                        Поэтому питух написал фуфло.
                        Ответить
                        • Так нахуй они нужны? Раз не влияют?
                          Ответить
                          • Просто так. O0 нужен, чтобы вырубать оптимизатор, но только питух вырубает оптимизатор, ибо конпелятор не умеет гинерить нормальный код без оптимизатора.

                            O1 просто так - самые притивные оптимизации собраны, чтобы были как минимальный джентельменский набор.

                            O2 - уже юзают все, меньше не юзают.
                            Ответить
                            • Нет, оптимизатор вырубают для того, чтобы он не мешал отладке. Это когда большая программа работает не так как надо, когда ты начнёшь писать что-то серьёзное, то ты узнаешь.
                              Ответить
                        • >>Питух не осилил "-march, -mtune", которые ниначто не влияют.
                          То есть SIMD это так, баловство, и инженеры крупнейших компаний по производству процессоров нихуя не делают за большие бабки?
                          Ответить
                          • показать все, что скрытоПитух, а причем тут simd? http://gcc.godbolt.org/ - кури, питух.


                            Питухам лижбы вякнуть какую-то херню. И да, -m, питух.
                            Ответить
                            • А притом, что без -march твой любимый gcc будет компилировать код для совместимости с 386 процессором, даже если твой код в принципе не должен на нём запускаться, и не будет использовать команды процессора, скажем из SSE4. А они очень ускоряют код обрабатывающий большие объёмы данных. Например в научных вычислениях.
                              Ответить
                              • Питух, ты мне про ссе будешь рассказывать? Питух, ты их хоть раз в жизни юзал? А, питух?

                                Каким нахрен 386 - я тебе дал линк, питух, ты видешь там код для 386-го? питух? Без марча? Питух. Питух, ты не осилил msse4? Питух, использует "комманды" гцц как питух, и никакого перфоманса ты не получишь, питух.
                                Ответить
                      • Как в воду глядел!
                        Ответить
              • > ++str, а писать str+1 мне лень - это на 2 символа больше.
                Наркоман?
                Ответить
                • Питух, str+1 питушт питухи, a+=2; - питуш питухи. Нормальные люди пишут str + 1.
                  Ответить
                  • Тебе жалко 2 символов? Так почему у тебя fprintf(stdout... вместо printf? В нем то символов поменьше будет.
                    Ответить
                    • Патамучто дело не только в 2-х семволах. Если я пишу везде ++str, а не str = (str + 1), то я пишу так везде.

                      А питухи даже не могут выдерживать стиль.
                      Ответить
                      • Так хуле ты тогда аргументируешь, что "мне лень - это на 2 символа больше."
                        Ответить
                  • > str+1 питушт питухи
                    > Нормальные люди пишут str + 1
                    О как.
                    Ответить
                    • Да. (str+1) на присваивании и ретурне пишут ещё большие питухи.
                      Ответить
                      • как раз инкременты на присваивании и возврате - это питушня полная.
                        Ответить
                        • Т.е. питушок в одном месте пишет ++i, а во втором i = i + 1?
                          Ответить
                          • Нет, i=i+1 вряд ли кто пишет.
                            Но писать ++i, когда нужно лишь i+1 - это питушизм.
                            Писать
                            ++i более одного раза в выражении - питушизм.
                            И вообще почти всегда питушизм, когда инкремент является частью более сложного выражения.
                            Ответить
                            • показать все, что скрыто>когда нужно лишь
                              Питух, там не нужно. Да, конпелятор за тебя исправит (i + 1) на ++i, ибо ты анскильный питух.

                              Из-за таких питухов в мире и нет перфоманса.
                              Ответить
                              • Вот код:
                                int func_increment(int j) {
                                    int i = j;
                                    return ++i;
                                }
                                
                                int func_plus(int j) {
                                    int i = j;
                                    return i + 1;
                                }

                                Вот во что компилируется без оптимизации:
                                func_increment(int):                    # @func_increment(int)
                                	movl	%edi, -4(%rsp)
                                	movl	-4(%rsp), %edi
                                	movl	%edi, -8(%rsp)
                                	movl	-8(%rsp), %edi
                                	addl	$1, %edi
                                	movl	%edi, -8(%rsp)
                                	movl	%edi, %eax
                                	ret
                                
                                func_plus(int):                          # @func_plus(int)
                                	movl	%edi, -4(%rsp)
                                	movl	-4(%rsp), %edi
                                	movl	%edi, -8(%rsp)
                                	movl	-8(%rsp), %edi
                                	addl	$1, %edi
                                	movl	%edi, %eax
                                	ret

                                Инкремент должен новое значение засунуть обратно в i, а (i + 1) новое значение никуда не копирует, кроме результата.
                                Ответить
                                • А теперь, квадратный питух, возьми мой код и погляди. Чё ты мне фуфло это выкатил, квадратный питух.
                                  Ответить
                                  • Выкатил к тому, что оптимизатор как раз наоборот заменяет return ++i на return (i + 1), потому что инкремент в данном случае выполняет лишнюю работу.
                                    Ответить
                                    • Гдеж ты такие конпеляторы берёшь.
                                      func_increment:
                                      .LFB29:
                                      	.cfi_startproc
                                      	leal	1(%rdi), %eax
                                      	ret
                                      	.cfi_endproc
                                      
                                      func_plus:
                                      .LFB30:
                                      	.cfi_startproc
                                      	leal	1(%rdi), %eax
                                      	ret
                                      	.cfi_endproc
                                      Ответить
                                      • Разуй глаза: «Вот во что компилируется без оптимизации».

                                        Я специально компилировал без ключа -O2, чтобы показать, чем ++i отличается от i + 1.

                                        Да, с оптимизацией тут получились одинаковые выражения и похожи они на i + 1, а не на инкремент. Ты же писал: «Да, конпелятор за тебя исправит (i + 1) на ++i».

                                        Итого: слив.
                                        Ответить
                                        • >Разуй глаза: «Вот во что компилируется без оптимизации».
                                          Зачем мне это?

                                          >Я специально компилировал без ключа -O2, чтобы показать, чем ++i отличается от i + 1.
                                          Я знаю чем они отличаются. Только вот, квадратный питух, там у меня инлайн.

                                          >Итого: слив.
                                          В чём?
                                          Ответить
                                          • Не угадал направление. См. комментарий Soul_re@ver.

                                            return ++i для питухов и инлайн тут ни при чём.
                                            Ответить
                                            • Квадратный питух, я смотрю ты попутал? локальная переменная алиас, питух - её нет, питух.

                                              По стандарту конпелятор не может изменять значение, которое ему пришло, но это не имеет значение в моём случае. Что ты, квадратный питух, придумал там себе - я клал.
                                              Ответить
                                        • Квадтатный питух, ты тоже кури ниже.
                                          Ответить
                                      • Оптимизацию отключи. Вот тебе и ответ, зачем её выключать: чтобы ты мог посмотреть какое говно за тобой приходится вычищать оптимизатору.

                                        Тебе показали, что при оптимизации компилятор заменяет ++i на i+1 в ретурнах, если i — локальная переменная. Радуйся, что компиляторы умнее тебя и знают, что этого говна в коде быть не должно. 30 лет назад компиляторы такого не умели. И твоё ++ скомпилировалось бы как есть: с лишней операцией.
                                        Ответить
                                        • показать все, что скрыто>Оптимизацию отключи. Вот тебе и ответ, зачем её выключать: чтобы ты мог посмотреть какое говно за тобой приходится вычищать оптимизатору.
                                          Питух, ты там слился - пришел сюда?

                                          Питух, ты не знаешь как работают конпеляторы? Это не без оптимизации, питух, а с пессимизацией. С O0 конпелятор ВООБЩЕ(кроме ea) не юзает регистры.

                                          >Тебе показали, что при оптимизации компилятор заменяет ++i на i+1 в ретурнах, если i — локальная переменная. Радуйся, что компиляторы умнее тебя и знают, что этого говна в коде быть не должно. 30 лет назад компиляторы такого не умели. И твоё ++ скомпилировалось бы как есть: с лишней операцией.
                                          Ты что несёшь, питух? Что мне показали, питух. Ты понимаешь, что там инлайн, питух? Ты понимаешь, что аргумент копируется в функцию по стандарту и не изменяется, питух?

                                          __attribute__((always_inline)) int func_increment(int j) {
                                              return ++j;
                                          }
                                          
                                          int main(void) {
                                            int i = 0;
                                            i = func_increment(i);
                                            return 0;
                                          }


                                          movl	$0, -4(%rbp)
                                          	movl	-4(%rbp), %eax
                                          	movl	%eax, -8(%rbp)
                                          	addl	$1, -8(%rbp)
                                          	movl	-8(%rbp), %eax
                                          	movl	%eax, -4(%rbp)


                                          Кури, питух.
                                          Ответить
                                        • показать все, что скрытоПитушня, конпеляторы всегда умели выпиливать такие примитивные алиасы, но питухам не понять.
                                          Ответить
                                • показать все, что скрытоНу и забыл, ещё питушка посливать:
                                  int func_increment(int j) {
                                      return ++j;
                                  }
                                  
                                  int func_plus(int j) {
                                      return j + 1;
                                  }

                                  func_plus:
                                  .LFB2:
                                  	.cfi_startproc
                                  	pushq	%rbp
                                  	.cfi_def_cfa_offset 16
                                  	.cfi_offset 6, -16
                                  	movq	%rsp, %rbp
                                  	.cfi_def_cfa_register 6
                                  	movl	%edi, -4(%rbp)
                                  	movl	-4(%rbp), %eax
                                  	addl	$1, %eax
                                  	popq	%rbp
                                  	.cfi_def_cfa 7, 8
                                  	ret
                                  	.cfi_endproc
                                  func_increment:
                                  .LFB3:
                                  	.cfi_startproc
                                  	pushq	%rbp
                                  	.cfi_def_cfa_offset 16
                                  	.cfi_offset 6, -16
                                  	movq	%rsp, %rbp
                                  	.cfi_def_cfa_register 6
                                  	movl	%edi, -4(%rbp)
                                  	addl	$1, -4(%rbp)
                                  	movl	-4(%rbp), %eax
                                  	popq	%rbp
                                  	.cfi_def_cfa 7, 8
                                  	ret
                                  	.cfi_endproc
                                  Ответить
                                  • И что ты хотел этим кодом показать? Что в случае с плюсом инкрементят регистр, а в твоем - инкрементят область памяти? Крутое преимущество инкремента перед плюсом, да.
                                    Ответить
                                    • ваше слил, говорит 2+2=5, потом считает на калькуляторе, показывет всем результат и говорит "ну что слился питушок?"
                                      Ответить
                                      • Вы питушки слишком анскильные, чтобы что-то понять. Вы не пониманиете нихрена, ни что такое call abi, ни почему в обоих случаях получится j + 1; Ничего.
                                        Ответить
                                        • мы прекрасно понимаем что в eax помещается результат, вся разница лишь в том что в func_increment место в стеке под j будет больше на 1 так как складывалось со значением в памяти, затем происходит ret, вот и все, в остальном обе функции теже яйца только в профиль. Собсно нафига писать ++j для возврата увеличенного на 1 значения, когда логичней написать j+1
                                          Ответить
                                          • Патамучто - это пессимизация. Конпеляторы так работают - они не умеют гинерить нормальный код - для этого им и нужен оптимизатор, хотябы на 01.


                                            А функция инкримент всегда инлайнится, и конпелятор ваше говно (j + 1) преврщается в ++j, а j - это алис того, что ты послал в функцию.
                                            int inc(int j) {return (j + 1);}
                                            int i = 0; i = inc(i);


                                            Тут конпелятор зафигачит инлайн, i и j - алиасы - j выпилвается. Остаётся i = (i + 1), что заменяется на i += 1 ака ++i( по понятным причинам конпелятор не юзает Inc).

                                            Если конпелятор так не сделает - ты получишь тормаза и говно. Поэтому и питушки те, кто отлаживает на -O0, ибо регистры конпелятор не юзает, алиасы не выпиливает( а это умеет делать любой конпелятор, особенно тот, что был 30лет назад).
                                            Ответить
                                            • > А функция инкримент всегда инлайнится, и конпелятор ваше говно (j + 1) преврщается в ++j, а j - это алис того, что ты послал в функцию.

                                              Нет, курочка, в точности наоборот.

                                              > Поэтому и питушки те, кто отлаживает на -O0, ибо регистры конпелятор не юзает, алиасы не выпиливает

                                              Курочка, ты понимаешь смысл отладки? А, ну да, ты ж ничего нормального не писал...
                                              Ответить
                                            • Нифига. Обозначим result псевдопеременную, через которую возвращается результат (в интеловской архитектуре это регистр eax).

                                              Твои же листинги демонстрируют, что return i + 1 компилятор считает сразу как инкремент result, а return ++i требует лишних операций: либо инкремент result и копирование результата в i, либо инкремент i и копирование результата в result.

                                              То есть оптимизатор как раз наоборот, заменяет return ++i на return i + 1.
                                              Ответить
                                              • Смотри, питух.

                                                ret - выходящая переменная(входящая), i - входящая.

                                                ret = i + 1; - твоей вариант. так и делает гцц через леа.

                                                Мой вариант гцц тоже вревращает в твой, ибо нет профита изменять ай. Но лишь потому, что ты квадратный питух.


                                                А вот при инлайне уже есть смысл писать ++i, ибо иначе нам надо будет создавать ещё 1регистр, делать в неём леа и приравнивать i, но питух этого не понимает.
                                                Ответить
                                                • При инлайне то же самое. ++i инкрементирует временную переменную i, а потом копирует в ret, в то время как i + 1 сразу инкрементирует ret.

                                                  Смысл в ++i есть только, если i передаётся по ссылке, а не по значению.
                                                  Ответить
                                                  • Питух, я тебе ниже написал инлайн, питух. Инлайн и есть по ссылке, питух. Анскильные С++ питушки, квадратные питушки.
                                                    Ответить
                                            • конпелятор на ура инлайнит ++j и j+1
                                              Ответить
                                              • Превращая j+1 в ++j( j+=1).
                                                Ответить
                                                • Компилятор не инкрементирует j, он инкрементирует result, который не виден в сишном коде как переменная.

                                                  См. листинг ещё раз. Оптимизатор избавляется от ++j, когда оно не нужно.
                                                  Ответить
                                                  • Реально? Квадтратный питух.

                                                    volatile uint64_t i = 0;
                                                      while((i = func_increment(i)) != (1024ul*1024*1024));
                                                    
                                                    .L3:
                                                    	movq	8(%rsp), %rax
                                                    	addq	$1, %rax
                                                    	cmpq	$1073741824, %rax
                                                    	movq	%rax, 8(%rsp)
                                                    	jne	.L3


                                                    Видишь? Патамучто теперь j не просто переменная, а алиас i. Вы, квадратные питухи, дальше своего носа не думаете и поэтому несёте тотальный щит.
                                                    Ответить
                                                • под j+=1 понимается запись результата обратно в память после инкремента значения в регистре. В случае как ты писал j+1 превратится в j+=1 как раз таки из за того, что результат надо записать обратно в память, то бишь в i. То есть превращение j+1 в ++j происходит из за необходимости записать операнд в память, а без этого это совсем разные вещи
                                                  Ответить
                                                • да и былобы нелогично с точки зрения компилятора превращать одно сложение(j+1) в сложение с записью(++j).
                                                  Ответить
                                                  • Вы что такие глупые - это функции нет семантики без инлайна, ибо она всегда инлайнится - а то, о чём вы рассуждаете - жалкие попытки мне что-то доказать.


                                                    Конпелятор не юзает ++j только потому, что по call abi там нельзя. Если бы он мог возвращать j - он был сделал ++j. Но меня не интересует ограничение call abi для функции, которая никогда не будет call.
                                                    Ответить
                                                    • j+1 в инлайне превращается в ++j только из необходимости записать результат и не более, что собсно будет всегда
                                                      Ответить
                                                      • Поэтому пацаны и пишут ++j. А не в инлайне оно превращается в j+1 только из-за необходимости вернуть другой регистр.
                                                        Ответить
                                                        • в не инлайне return ++j и return j+1 рознится минимально хоть и j+1 не приводится в ++j а каждый из них остается самим собой, как было показано выше при откл оптимизациях. В инлайне j+1 сведется в выхлопу аналогичному для ++j лишь по причине инлайновости. Так к чему собсно весь срач на 200+ комментариев?
                                                          Ответить
                                                          • >в не инлайне return ++j и return j+1 рознится минимально хоть и j+1 не приводится в ++j а каждый из них остается самим собой, как было показано выше при откл оптимизациях.
                                                            Ты упорлся, какая нахрен выклеченная оптимизация, питух? Вы меня одалели нести херню.

                                                            >В инлайне j+1 сведется в выхлопу аналогичному для ++j лишь по причине инлайновости.
                                                            В этом и суть, ибо ЭТА ФУНКЦИЯ НЕ ИМЕЕТ ИНОГО КОНТЕКСТА, КРОМЕ ИНЛАЙНА. Тупые питухи.
                                                            Ответить
                                                            • если тебя одалели и заипали то зачем срешся?) по крайней мере мне пытаешся доказать очевидные вещи)
                                                              Ответить
                                                        • > А не в инлайне оно превращается в j+1 только из-за необходимости вернуть другой регистр.

                                                          Курочка про SSA формы и ее аналоги читала?

                                                          А ведь в SSA форме, если i дальше не используется (а оно не используется, т.к. мы видим return), и твой a = ++i, и a = i+1 и даже a = i+=1 имеют абсолютно одинаковое представление (a - временное значение, которое вернет return).

                                                          Поэтому срал компилятор на то, как ты это напишешь, промежуточное представление будет одинаковое. А то, как компилер поступит дальше - зависит уже только от следующих этапов оптимизации.
                                                          Ответить
                                                          • >А ведь в SSA форме, если i дальше не используется (а оно не используется, т.к. мы видим return), и твой a = ++i, и a = i+1 и даже a = i+=1 имеют абсолютно одинаковое представление (a - временное значение, которое вернет return).
                                                            Я об этом, питух писал выше. Конпелятор без оптимизатора не имеет смысла и смотрят на это питухи.


                                                            А вот люди смотря на то, во что это превратит оптимизатор - ибо он гинерит код, а не транслятор, питух.


                                                            Поэтому твоё, питух, ко-ко-ко оставь для тех питухов, что выше по треду.
                                                            Ответить
                                                            • Итак, поскольку компилятор без оптимизатора не имеет смысла, а с оптимизацией у инкремента и у сложения промежуточное представление одинаковое, то нет большой разницы, писать ++i или i+1, поэтому будем писать то, что логичнее.

                                                              Инкремент в правой части выражения пишут только питухи. Не веришь?
                                                              http://lurkmore.to/%2B%2Bi_%2B_%2B%2Bi

                                                              Поэтому ++i будем писать только в левой части выражений, а в правой будем писать i+1.
                                                              Ответить
                                                              • >Итак, поскольку компилятор без оптимизатора не имеет смысла, а с оптимизацией у инкремента и у сложения промежуточное представление одинаковое, то нет большой разницы, писать ++i или i+1, поэтому будем писать то, что логичнее.
                                                                Логично писать тут ++i, ибо это инлайн, квадратный питух. входящий и выходящий аргументы АЛИАСЫ, анскильный, квадратный питух - пэтому для алиасов ret i + 1 = i +=1 = ++i; Питух.


                                                                Какой левой части? Ты что несёшь? Чего не придумаю питушки, лижбы нормально не слиться. ++i - не уб, питух, и всегда возвращает (i + 1), питух.
                                                                Ответить
                                                                • > Логично писать тут ++i, ибо это инлайн, квадратный питух.

                                                                  Вот жеж долбоёб, придумал какую-то питушиную хуйню и оправдывает её какой-то питушиной логикой типа "в огороде бузина, потому что в Киеве дядька"
                                                                  Ответить
                                                                  • Питух - инлайн часть стандарта - одна из особенностей старндарта - это основа, такая же, как call abi. Питух, но куда питухам до этого.
                                                                    Ответить
                                                                    • И причём это?
                                                                      Ответить
                                                                      • Притом, что так написано в иналйн функции. По семантике в инлайн функции, если a = f(a); - а внутри функции и снаружи - алиасы. Т.е. return i + 1; значит i = return i + 1;, что есть инкримент и только питух тут напишет i + 1.
                                                                        Ответить
                                                                        • > По семантике в инлайн функции
                                                                          Покажи нам страницу стандарта, на которой это написано. Не покажешь, царёк куриный? Или ты там вообще свой питушинский стандарт уже написал и его нам цитируешь?
                                                                          Ответить
                                                                        • То есть ты, получается, фактически написал
                                                                          a = ++a?
                                                                          Питушизм как он есть.
                                                                          Ответить
                                                                          • Нет, алиасы выпиливаются. a = (a += 1) - а выпиливается.
                                                                            Ответить
                                                                            • А теперь, дебил, сравни выражение
                                                                              a = a+1
                                                                              и
                                                                              a = (a+=1)
                                                                              второе выражение написал питух, и этот питух - ты
                                                                              Ответить
                                                                              • Питух. Алиасов тут нет. Твой питушрский вариант сокращается до:

                                                                                a = a + 1;

                                                                                А мой до:

                                                                                a += 1;

                                                                                Потом конпелятор твою питушню заменяет на мой вариант. Без разницы как это выглядит в промежуточном представлении - выражение всегда смотрится после сокращения.
                                                                                Ответить
                                                                                • Нет, питух, в твоём коде написано
                                                                                  a = ...
                                                                                  а внутри этого ... написано ++a
                                                                                  то есть у тебя написано
                                                                                  a = ++a
                                                                                  ну или
                                                                                  a = (a+=1)
                                                                                  что одно и то же
                                                                                  Ответить
                                                                                  • a = (a +=1) - питушня выражение. Для нормального выражение сокращается до a +=1, питух.
                                                                                    Ответить
                                                                                    • > a = (a +=1) - питушня выражение

                                                                                      Наконец-то ты сам это признал.
                                                                                      Ответить
                                                                                      • Питух, a и a - алиасы. Ты что такой тупой, а? Ты сравниваешь выражением с уже выпилеными алиасами и выражение с не выпилиными алиасами.

                                                                                        Вы такие смешных, вы уже привыкли жить в обществе питушков, где демагогией и каверканье/перевиранием и подменой понятий вы заставляете питушков вас плюсовать, неся тотальную херню. Авось вы когда-то перестанете это делать.
                                                                                        Ответить
                                                                                  • Тыж должен осилить был сокращение выражений в школу.
                                                                                    Ответить
                                                                    • > инлайн часть стандарта
                                                                      Страницу стандарта мне покажи, цыпленок, на которой написано, что-нибудь про инлайн сишных операторов (не функций, а именно операторов). Ты его поди не открывал ни разу, яйцо куриное?
                                                                      Ответить
                                                                      • Питух, тут есть функция. А оператор в функции - поэтому он наследует поведение функции - питух.

                                                                        Ты уже пропитушился - не пытайся.
                                                                        Ответить
                                                                • сверху же писалось что в инлайне пофиг что ++j что j+1, тада с чего логичней писать ++j?
                                                                  Ответить
                                                              • > Поэтому ++i будем писать только в левой части выражений
                                                                О_о. Ямщик не гони... Может имелось в виду в единственной части выражения?
                                                                Ответить
                                                                • Точно!

                                                                  Спасибо за идею. Надо будет попробовать насобирать синяков и шишек, поставив инкремент слева от присвоения.
                                                                  Ответить
                                                              • > Инкремент в правой части выражения пишут только питухи.

                                                                Не всегда, но здесь не тот случай.
                                                                Ответить
                                                            • > А вот люди смотря на то, во что это превратит оптимизатор - ибо он гинерит код, а не транслятор, питух.

                                                              А не ты ли, курочка, нам тут выше херню порол, и говорил, что ++i писать лучше, ибо перформанс, а i+1 пишут лохи?
                                                              Ответить
                                    • Ты питушня попутала? Как жешь вы, тотальные анскильности, меня одалели. Ты питух понимаешь, что это алиасы? Ты питух понимаешь, что инкримент инлайнится?

                                      Питух, ты понимаешь, что он не может вернуть ++j из-за call abi? Питух.


                                      Питух ты понимаешь, что этот инкримент конпелятор САМ заинлайнит и превратит в return ++j;?
                                      Ответить
                          • Сравни:
                            1. return i + 1;

                            2. return ++i;

                            Второе эквивалентно коду:
                            ++i;
                            return i;

                            Где здесь i = i + 1, superhackkiller1997?
                            Ответить
                            • >как раз инкременты на присваивании и возврате - это питушня полная.
                              >инкременты на присваивании
                              Ответить
                    • незнание - это сила
                      двоемыслие такое двоемыслие
                      Ответить
    • Снимаю шляпу перед гениальным троллем, воплощением принципа «так толсто, что даже тонко», от которого возбурлила половина ГК!
      P.S. А если парень серьёзен, то такого эффекта Даннинга-Крюгера я ещё не встречал.
      Ответить
      • в чем то он действительно прав и в сях шарит, только направить бы это в нужное русло...
        Ответить
        • Это как савантизм, гениальность в одной области замечательно сочетается с кретинизмом в остальных. Когда пациенты не столь агрессивны, её действительно можно обратить на пользу.
          Ответить
      • это не возбурление, это нескучные недели в макдоналдс
        Ответить
      • Любители покормить найдутся везде и всегда. Будь все поспокойнее, не доказывали бы омичу его неправоту, он бы умер от бескормицы и ушёл.
        Ответить
        • > он бы умер от бескормицы и ушёл
          А мы бы поняли, что без него опять настанет скука... Ну и по крайней мере он не вайпает борду как некоторые, а все-таки просто пишет.
          Ответить
          • По меркам говнокода он совсем-совсем не деструктивен.
            Ответить
            • Эм, а я разве говорил, что он деструктивен? Я наоборот защищаю пациента. Чем-то он все-таки доставляет.
              Ответить
              • @LispGovno и его кресто- и хаскелесрачи доставляли больше. Но на безрыбье и рак - рыба
                Ответить
                • да ладно, имхо оч неплохой срач получился, с блекджэком и питушками
                  Ответить

    Добавить комментарий