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

    +170

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    struct Obect: public AbsractPrimitiv
    {
    	float X,Y; 
    	Obect(float x, float y)
    	{
    		X=x;
    		Y=x;
    	};
    	
    	Obect(void)
    	{
    		new(this) Obect(0,0);
    	};
    
    	//...
    	//...
    	//...
    
    private://Требование конвенции. Блок private обязан быть в каждом классе.
    };

    Не вру. Вот вам крест! Написано именно так.

    Запостил: Говногость, 28 Мая 2010

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

    • AbstractPrimitiv как бэ намекает, писала примитивная обезьянка.
      Ответить
    • Obect(void)
      А это что означает? Что конструктор принимает один пустой безымянный параметр?
      Ответить
      • Ты обосранная приметивная обезьяна.
        Ответить
      • Что он не принимает параметров вовсе. Это рудимент доставшийся в наследство от Си.
        Ответить
        • А почему нельзя просто писать Obect()?
          Ответить
          • А чем boo(void) хуже boo()? Тем, что его школота вроде тебя не понимает?

            Ты уверен, что это минус?
            Ответить
          • почему нельзя? можно. обе формы допустимы, но Obect(void) устаревшая
            Ответить
          • Кто сказал, что нельзя?
            Это обфускация от школоты, типа тебя.
            Ответить
            • Сколько раз ты сказал мне "школота"? Выпускной прошёл, теперь можно этим словом на взрослых дядь ругаться? Не шали, а то твоей маме всё расскажу, она тебя накажет.
              Ответить
        • > Это рудимент доставшийся в наследство от Си.

          почему рудимент? если можно возвращать void, почему бы его нельзя и принимать?
          Ответить
          • Больше одного раза в функции принять не получится.
            Всё таки void - это не тип, а отсутствие оного.
            Ответить
      • Ты вообще Си знаешь?
        Ответить
      • Блядь. Зачем я это спросил на говнокоде? Теперь меня опустят.
        Ответить
      • Это значит что ничего не принимает
        Ответить
      • что они ничего не принимает.

        Нормальные люди знают что boo() это синоним boo(void);
        Но это нормальные, которые знают Cи. А которые прямо из детсада пошли на php-дельфи писать -- те в курсе конечно.

        "пустой безымянный".. марштышка бля
        Ответить
        • Начал вроде нормально, но с середины ты опять на говно скатился...
          Ответить
          • Парень, изучи Си, серьзено. Купи ориеллевскую книгу и изучи. Это займет у тебя 2 месяца.

            А программист от макаки тем и отличается, что знает си (хотя писать может хоть на джаве хоть на питоне)
            Ответить
            • Нахер мне это надо, серьзено? Потому что агрессивные анонимы на говнокоде срут?
              Ответить
              • ну... не знаю даже.... что бы не быть дебилом, например
                Ответить
                • Тебе одноклассник сказал, что Си - форева, потому что все хакеры знают Си, да? А за меня не бойся, сишный код прочитать я в состоянии, а больше мне и не надо.
                  Ответить
                  • Как показывает практика -- ты даже C читать не можешь.
                    Но это не страшно: что бы сдать зачот по информатике за 8й класс -- и дельфи прокатит.
                    А после школы пойдешь в макдональдс.
                    Ты уже хеллоу ворлд написал?
                    Ответить
                    • Ты ещё своим говном не захлебнулся, убогий?
                      Ответить
                • Молчи, школота! Вас человек нормально спросил. А вы как будто в школе, лишь бы "подосрать" друг друга.

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

                  Повторю свою мысль. Если вы видите адекатный вопрос, то лучше всего просто дать на него адекватный ответ, а не начинать "понтами раскидываться". Просто будте взрослее.

                  А больше всего меня бесит, когда люди скрываясь за "anonymous"-ом начинают обсирать других.
                  Ответить
              • и агрессивной школотой.
                Ответить
        • > Нормальные люди знают что boo() это синоним boo(void);
          Но это нормальные, которые знают Cи

          не путай мерзкий с++ с православным святотроицким си, сука. в си b() это "b с любым количеством аргументов", что не есть b(void). а вот в с++ это одно и то же, однако в с++ писать b(void) вместо b() считается моветоном, видно что автор хуила, школота и копипаст, нихуя не знает синтаксис.
          Ответить
    • Вот так испражнения...
      Ответить
    • что за поебень?
      struct Obect: public AbsractPrimitiv наследование структур?
      Obect(float x, float y) функции в структурах?
      new(this) Obect(0,0); а это что за высер?
      Ответить
      • struct эквивалентен class с той лишь разницей, что у первого поля по умолчанию в public-е.
        Ответить
        • В догонку:
          > new(this) Obect(0,0); а это что за высер?
          Изучаем матчасть: http://www.cplusplus.com/reference/std/new/operator%20new/
          Ответить
          • А ты уже выучил костыли С++?!
            Ответить
          • > new(this) Obect(0,0);

            А где lvalue ?
            Ответить
            • > А где lvalue ?
              new(this) Obect(0,0);
              ==
              this = new Obect(0,0);
              Ответить
              • Что-то ты чушь спорол.
                Ответить
              • это не одно и тоже
                new(this) Obect(0,0); создаст объект на месте this без выделения памяти,
                а this = new Obect(0,0); создаст в памяти новый объект и вызовет оператор присваивания
                Ответить
                • с++ рвёт мозг. нахуй это нужно?
                  Ответить
                  • Пиздец какой-то. Какой уёбок придумал С++?
                    Ответить
                    • HAMLовая макака || PHPшная обехъянка детектед
                      Ответить
                  • ну, например, создать новый объект на месте старого и сохранить валидными все указатели на него, или же обойтись без лишнего выделения памяти. Можно вообще создать таким макаром объект на стеке, только потом нужно вручную вызвать деструктор.
                    Ответить
                    • > ну, например, создать новый объект на месте старого и сохранить валидными все указатели на него, или же обойтись без лишнего выделения памяти.

                      а если новый объект не влазит в память? или можно только текущего типа?

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

                        можно и другого типа, главное чтобы размер был одинаковый
                        Ответить
                    • этот комментарий:

                      > а если новый объект не влазит в память? или можно только текущего типа?

                      можно disregard, I suck cocks.

                      НАХРЕН "создавать" this в пределах самого класса, если можно ТУПО изменить поля?

                      Т.е. нахрен писать new(this) Object(0, 0) если можно тупо часть конструктора выделить в initFields, и вместо этого говна тупо писать initFields(0, 0)?
                      Пиздец страуструп ебалай какой-то.
                      Ответить
                      • да тут не столько страуструп виноват, сколько скрытые чувства автора к говнецу.
                        Ответить
                  • Замени моск на тот, который не порвётся.
                    Ответить
                • >а this = new Obect(0,0); создаст в памяти новый объект и вызовет оператор присваивания
                  Вообще-то this модифицировать нельзя.
                  Ответить
                  • так думают только макаки
                    Ответить
                    • Стало быть кто-то не дошел и до этой стадии.
                      Ответить
                      • Выписываю вам const_cast на this. Это вылечит вас и угробит программу.
                        Ответить
                        • cout << this << endl;
                          // Нечто с const_cast<> и this
                          cout << this << endl;

                          Покажите мне код, где будут выводиться разные значения ?
                          Ответить
                          • У вас белая горячка? О чём вы?
                            Ответить
                            • Об изменении this. Перечитайте ветку - потом пишите по делу.
                              Ответить
            • Чего не нравиться? Всё время так пишу. Работает, же бля.
              Ответить
        • вот она хваленая "логичность" С++, нечего добавить...
          Ответить
          • вот что бывает, когда PHPшники вырываются из яслей и пытаются лезть в дела взрослых людей
            Ответить
          • ну здесь я вижу логику и даже понимаю страусатрупа - это сделано для совместимости с с-кодом. однако костыль знатный ещё.
            Ответить
      • > new(this) Obect(0,0); а это что за высер?
        Действительно высер и так делать нельзя, хотя компилируется. Так делают любители скрытых проблем на свою задницу.
        Ответить
        • читай про placement new
          Ответить
          • Ты долбоёб. В данном случае это грязный нерабочий хак.
            Ответить
            • хак грязный, но рабочий...
              Ответить
              • не рабочий совершенно. Будет просто бред.
                Ответить
                • это грязный хак для вызова конструктора для объекта, в данном случае для объекта по адресу this.
                  код 100% рабочий, я гарантирую это...
                  вот [url="http://www.prooflink.ru"]пруф[url]

                  P.S. В новом стандатре разрешили вызывать конструкторы из конструкторов...
                  Ответить
                  • >P.S. В новом стандатре разрешили вызывать конструкторы из конструкторов...
                    Я знаю.

                    >код 100% рабочий
                    Код 100% глючный. Сейчас объясню.
                    Ответить
                  • >http://www.prooflink.ru
                    Не инженерный подход...
                    Ответить
                  • >Сейчас объясню.
                    См комменты несколько ниже с объяснениями.
                    Ответить
      • C# головного мозга детектед
        Ответить
    • Я вот непойму. Толи это написало школота, толи безумный профи-задрот.
      Ответить
      • профи такой лажи в названиях не допустил бы...
        Ответить
        • Профи MaxPro спокойно может получить 100штук за такой код. Так, что может и профи.
          Ответить
    • Бля меня типает от таких названий классов типа Obect. Хочется взять и уебать©
      Ответить
      • ты чо пацан, джаву с дотнетом не уважаешь?
        Ответить
        • Я о том, что Obect это типа Object тока с русского?

          Или я не прав, и оно тут чето другое означает?
          Ответить
          • ВНЕЗАПНО захотелось дореволюционный ЯП, чтобы было Объектъ, все дела. Эх...
            Ответить
    • А в России тоже сегодня выпускной? Что-то анонимусов прибавило, много желающих показать себя во "взрослой" жизни.
      Ответить
      • какой выпускной в мае? ты что детсадовец и не знаешь, когда выпускные проводят?
        Ответить
        • сегодня и проводят.
          Ответить
        • поверь, теперь выпускные в мае, школоте даже не надо экзамены сдавать...
          Ответить
      • > А в России тоже сегодня выпускной?
        > тоже
        > тоже
        > тоже

        палишься
        Ответить
    • >new(this) Obect(0,0);
      Как это работает и что делает? И вообще работает ли правильно?
      Ответить
      • я гарантирую это
        Ответить
        • я гарантирую, что так мог напейсать только пидор, которогму не хватает анального секса со своей программой. Он решил поймать новых осщущений.
          Ответить
    • >new(this) Obect(0,0);
      Это не будет работать так, как задумано. Грязный нерабочий хак.
      Ответить
      • будет... хак грязный но рабочий... называется placement new...
        Ответить
        • Раскажите, что в результате такого получим?
          new(this) Obect(0,0);
          Что произойдёт?
          Хуйню получим. Работать правильно не будет.
          Ответить
          • для объекта this вызовется конструктор...
            оператор new(void* ptr) не выделяет память, он на участке ptr, создает объект... но если от этого объекта наследоваться, то получим хуйню, так как этот конструктор затрет vptr если она есть и нужна...
            в мат библиотеках (где не бывает vptr) такой хак используют для создания куч разнообразных конструкторов...
            Ответить
            • >если от этого объекта наследоваться
              Поподробнее объясните этот момент? Что произойдёт?

              Если этот объект имеет предка, то получим хуйню. В данном случае он имеет предка:
              >struct Obect: public AbsractPrimitiv
              1)Конструктор AbsractPrimitiv вызовиться 2 раза подряд. Если там выделялись/резервировались ресурсы, то они остануться заблокированными на всегда, например семафор или выделенная паямть.
              2)Произойдёт лишняя работа, например 2 раза инициализируется таблица виртуальных методов.
              3)В стандарте не сказано, что при создании объекта компилятор не может проводить всякие внутренние работы, например регистрироваться в списках RTTI. Что при повторной регистрации может привести к неопределённому поведению. В стандарте не сказано, как именно нужно реализовывать RTTI, так что это можно сделать по разному. Кроме RTTI компилятор может проводить прочую скрытую от программера работу.
              4)Если в некой функции объявить объект так:
              void f()
              {
                 static Obect(/*...*/);
              };

              То получаем ещё одну говняшку. Во время скрытой работы объект зарегистрирует свой деструктор на вызов во время завершения приложения 2 раза.

              Вообщем не код, а одно сплошное несчастье. И это я не перечислил всех бед, вызванных таким говнокодом.
              Программист должен видеть сокрытое и не делать таких ляпов.
              Ответить
              • Исправление:
                [code=cpp]
                void f()
                {
                static Obect obj(/*...*/);
                };
                [code]
                Ответить
              • вы правы на 100%...
                кроме статической переменной, ее адрес регистрирует не конструктор, поэтому с удалением все будет ок
                и RTTI никаких действий не производит с объектами в конструкторе... таблицы RTTI создаются статически, в объектах хранится указатель на описание класса, он в конструкторе перезапишется на тоже самое значение, vtbl тоже создается в статике, в объект записывается указатель на нее (RTTI и vtbl выдны в таблице экспорта obj файлов)...
                то есть верным остается только первый пункт, и я об этом говорил... поэтому я дописал, что такой хак популярен в некоторых быблиотеках работающих с PODтипами, типа матбиблиотек...
                я еще раз повторю, код - отменное говно, но есть условия в которых он рабочий...
                Ответить
                • таблицы RTTI создаются статически, в объектах хранится указатель на описание класса
                  >vtbl тоже создается в статике, в объект записывается указатель на нее
                  Повторяю. Это в вашей реализации компилятора. В стандарте это не указано и всё может происходить именно так, а может и не так.

                  >vtbl тоже создается в статике, в объект записывается указатель на нее
                  Это далеко не так очевидно при множественном наследовании.

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

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

                  >вы правы на 100%...
                  Судя по тому, что вы сейчас сказали - лишь на 25% :D
                  Ответить
                  • ну, как бе, мы оба согласны в том что это говнокод...
                    Ответить
                    • :)
                      Ответить
                    • C++ это вообще говнокод:
                      http://lj.rossia.org/users/kouzdra/664091.html?nc=66
                      Как только начинаешь использовать кучу - наступает jopa жопа (не java).
                      В момент использования кучи в С++ - его рвут все языки, даже java и OCaml.
                      Ответить
                      • кстати, а compacting gc для с++ можно устроить?
                        Ответить
                        • для С++ можно все, нужно только уметь...
                          Ответить
                          • тогда покажи рабочий копирующий сборщик
                            Ответить
                            • Google.com
                              можешь посмотреть исходники языков в которых это есть...
                              Ответить
                              • ты мне предлагаешь посмотрить исходники компактирующего сборщика, допустим, java, написанного на с++?

                                людская молва не врёт, ты олень.
                                подразумевается компактирующий сборщик, который бы работал для с++, т.е. я делаю в с++ MyCoolObject* o = new MyCoolObject(); и через N секунд указатель o будет указывать в другую память.
                                слабо такое на с++ поиметь?
                                Ответить
                                • Такого не существует.
                                  Ответить
                                • пишешь свой темплейт smart_ptr и вкладываешь в него любую функциональность, абсолютно любую... компактирующий, инкрементирующий, вообще любой, абсолютно любой... он буде указывать на абсолютно любую память, и может меняться с течением времени... все это возможно реально и можете посмотреть как работает в ваших явах/окамлах/шарпах/прочих...
                                  да, нужно писать и возиться... да, нужно хорошо подумать а нет ли пути проще... да, нужно сначала решить, а нужно ли оно вообще...

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

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

                          ты такой дебил что прямо вообще. основная идея статьи - проверить работу с++ с кучей. как ты собираешься тестировать кучу, не обращаясь к куче, олень?
                          Ответить
                          • ты такой дибил что думаешь, что без кучи обойтись нельзя... на С++ new одна из самых редких операций, и она используется там где без нее никак нельзя... а не выделять из хипа по 16 байт на каждый чих, а потом плакать что оно тормозит...
                            этот пример можно написать без использования кучи, и никакая ява и окамл даже близко не подлезет по производительности к С++...
                            С++сом нужно уметь пользоваться... к каждой строке нужно подходить с головой, всетаки не C#/java и тем более не PHP...
                            Ответить
                            • ты олень, я повторю ещё раз: основная идея статьи - проверить работу с++ с кучей. всё. не работу с++ вообще, а работу с++ именно с кучей. вдолби себе в головушку.
                              Ответить
                            • >этот пример можно написать без использования кучи, и никакая ява и окамл даже близко не подлезет по производительности к С++...

                              Плюс использования new в GC языках в том, что думать ненужно лишний раз. Нет необходимости напрягаться в тех местах, где за тебя может напрячся компилятор. Зато можно напрячся над хорошим алгоритмом.

                              Если используешь new, а хороший компилер с GC подумает, да выделит память из пула, а то и из стека. И только в критических ситуациях воспользуеться оптимизированной(уже написанной, не велосипедной) кучи.

                              Попробуй ка в своём С++ переопределить new delete так, что-бы они выделяли память из стека безопасным не хакоподобным образом. Не в жизнь неполучится.

                              В языках со сборкой мусора между прочим тоже, как и в С++ можно не выделять память лишний раз. Лишний раз выделяют только обезьяны.
                              Ответить
                              • ps. Отложенный вызов "деструктора" (финализатора) в системах с GC и в другом потоке меня бесит. Использовать патерн проектирования RAII нельзя. В случае ловли исключений приходиться чутьли не вручную вызывать "деструктор" (метод dispose()); Бред.
                                Если начали делать линивую систему, делающую всё автоматически, то довелибы её до конца и сделали бы деструктор. Память пускай потом освбождает в свободное время, а деструктор вызовет сейчас в этом потоке.

                                Как последствие вышесказанного: Занятые ресурсы, типа открытых файлов или занятых семафоров меня бесят.
                                Ответить
                                • > Отложенный вызов "деструктора" (финализатора) в системах с GC и в другом потоке меня бесит. Использовать патерн проектирования RAII нельзя.

                                  Ну ты странный. Это то же самое, чтос казать "ООП меня бесит. Использовать процедурное программирование нельзя." или "RAII меня бесит. Использовать в java нельзя" или что-то типа того. Это друголй подход, а ты лезешь в чужой монастырь со своим уставом.

                                  > В случае ловли исключений приходиться чутьли не вручную вызывать "деструктор" (метод dispose()); Бред.

                                  А как иначе? Отсекается 99% ёбли с памятью, из-за чего мы имеем 1% неоднозначных случаев типа этого. А ты предлагаешь из-за 1% непрофита поплевать на 99% профита. На лицо признаки олигофрении.

                                  > . Память пускай потом освбождает в свободное время, а деструктор вызовет сейчас в этом потоке

                                  Как ты представляешь себе вызов деструктора в gc-системе без трекинга ссылок? (который происходит при сборке)? Как система может узнать, что нужно деструктить, не определив, что объект не используется?

                                  Нужно дестурктить прям щас - вызывай dispose. В чём проблема? если забудешь это сделать - то ресурс всё равно высвободится при сборке мусора позднее. в с++ у нас будет 100% утечка.
                                  Ответить
                                  • А ты >предлагаешь из-за 1% непрофита поплевать на 99% профита.
                                    Кто просил убирать финализатор? Пускай будет финализатор и деструктор. Финализатор вызывается сборщиком в другом потоке, а деструктор сразу, если его конечно переопределили.
                                    Никакого непрофита не будет.
                                    Ответить
                                  • >Как система может узнать, что нужно деструктить, не определив, что объект не используется?

                                    Признаки гидроцифалии?
                                    Ответить
                                  • >в с++ у нас будет 100% утечка.
                                    Ты путаешь. Не у нас, а у тебя. Про деструкторы почитай что-ли.
                                    Ответить
                                  • >1% неоднозначных случаев типа этого.

                                    Это не один процент, а часто. Любая синхронизация, любой доступ к ресурсу.
                                    Между тем, не нужно говорить, что это мега сложно и не оптимально. С++/CLI это умеет. У него финализатор и деструктор есть. деструктор, если его нет - просто не вызываеться, зато решение перекрывает твой так называемый 1%.
                                    И работает ни чуть не медленее.

                                    Если уж не пользоваться goto, то не пользоваться им до конца.
                                    Если пользоваться хорошим нью, то пользоваться и хорошим delete.

                                    ps: Я леньтяй и не хочу, как мудак сидеть и настраивать пулы, да как мудак сидеть и искать где же я забыл вызвать "деструктор".

                                    Зачем полурешение? Если компилятор может сделать ручную работу за меня, достаточно оптимально и надёжно.

                                    Я или всё делаю вручную и сам слежу, или всё отдаю на откуп компилятору. Пусть сам делает, раз начал.

                                    Всякого рода обезьяны не знают, про проблемы деструктора в С#. Вот что им делать? А они тоже люди. А ведь C# позиционируеться, как язык "доступный" обезьянам. Почему он им полностью не потыкает?
                                    Ответить
                                  • нет в С++ ебли с памятью... ну нет... откуда вы ее нашли? нет там такой проблемы, просто не существует...
                                    Ответить
                                  • > Нужно дестурктить прям щас - вызывай dispose. В чём проблема?

                                    то есть вы и сами знаете что проблема с памятью не решена... в С++ только слово по другому называется (delete)... все тоже самое...
                                    Ответить
                            • > на С++ new одна из самых редких операций, и она используется там где без нее никак нельзя

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

                              спорю: загруженный нонстоп сервер. с++ уже через день будет так дефрагментирован, что будет сначала жутко тормозить, потом вылетать с out of memory exception.
                              Ответить
                              • да, можно сидеть и настраивать мемпулы как мудак, но это будет тот же самый goto, хыхы.
                                Ответить
                        • >интересно почему не был рассмотрен нормальный вариант? без лишних new
                          Заметь. Все языки справились с лишними нью, а С++ не справился.
                          Ответить
                          • а почему эти языки не могут справиться без лишнего new?
                            там даже цифры есть из правильной версии, че-то никто не подошел к ним поближе...
                            Ответить
                            • Потому-что на С++ ты это оптимизировал вручную, вот он и обогнал автоматическую оптимизацию. С++ приходиться долго и муторно(хотя помне не долго), отвлекаясь от решения поставленой задачи на разные мелочи. Я понимаю, что для геймдева С++ пока вне конкуренции, но для прочих повседневных задач - лучше более обезьяние языки, где нужно думать только над алгоритмом, а не над мелочами.
                              Ответить
                              • эту идею я как бы и несу из поста в пост... но они не хотят это осознавать и всегда найдут какой нибудь до костей абсурдный тест...
                                Ответить
                • Какое же ваш С++ дерьмо! Тошнит просто...
                  Ответить
              • Вот такие guest'ы нам нужны ! А не те, которые флудят без дела.
                Ответить
    • Вы и ваш С++ говно.
      Ответить
    • С++ способствует говнокодерам.
      Ответить
    • Блин. И здесь тему засрали...
      Ответить

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