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

    +103

    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
    #include <iostream>
    #include <string>
    #include <boost/foreach.hpp>
    
    int main(int argc, char* argv[]) {
      std::string str = "Boost FOREACH!";
      char ch;
      if (boost::foreach_detail_::auto_any_t _foreach_col11 = boost::foreach_detail_::contain( ( str ) , (true ? 0 : boost::foreach_detail_::or_( boost::foreach_detail_::and_( boost::foreach_detail_::not_(boost::foreach_detail_::is_array_( str )) , (true ? 0 : boost::foreach_detail_::is_rvalue_( (true ? boost::foreach_detail_::make_probe( str ) : ( str )), 0))) , boost::foreach_detail_::and_( boost::foreach_detail_::not_( boost_foreach_is_noncopyable( boost::foreach_detail_::to_ptr( str ) , boost_foreach_argument_dependent_lookup_hack_value) ) , boost_foreach_is_lightweight_proxy( boost::foreach_detail_::to_ptr( str ) , boost_foreach_argument_dependent_lookup_hack_value)) )) ) ) {} else if (boost::foreach_detail_::auto_any_t _foreach_cur11 = boost::foreach_detail_::begin( _foreach_col11 , (true ? 0 : boost::foreach_detail_::encode_type( str , boost::foreach_detail_::is_const_( str ))) , (true ? 0 : boost::foreach_detail_::or_( boost::foreach_detail_::and_( boost::foreach_detail_::not_(boost::foreach_detail_::is_array_( str )) , (true ? 0 : boost::foreach_detail_::is_rvalue_( (true ? boost::foreach_detail_::make_probe( str ) : ( str )), 0))) , boost::foreach_detail_::and_( boost::foreach_detail_::not_( boost_foreach_is_noncopyable( boost::foreach_detail_::to_ptr( str ) , boost_foreach_argument_dependent_lookup_hack_value) ) , boost_foreach_is_lightweight_proxy( boost::foreach_detail_::to_ptr( str ) , boost_foreach_argument_dependent_lookup_hack_value)) )) ) ) {} else if (boost::foreach_detail_::auto_any_t _foreach_end11 = boost::foreach_detail_::end( _foreach_col11 , (true ? 0 : boost::foreach_detail_::encode_type( str , boost::foreach_detail_::is_const_( str ))) , (true ? 0 : boost::foreach_detail_::or_( boost::foreach_detail_::and_( boost::foreach_detail_::not_(boost::foreach_detail_::is_array_( str )) , (true ? 0 : boost::foreach_detail_::is_rvalue_( (true ? boost::foreach_detail_::make_probe( str ) : ( str )), 0))) , boost::foreach_detail_::and_( boost::foreach_detail_::not_( boost_foreach_is_noncopyable( boost::foreach_detail_::to_ptr( str ) , boost_foreach_argument_dependent_lookup_hack_value) ) , boost_foreach_is_lightweight_proxy( boost::foreach_detail_::to_ptr( str ) , boost_foreach_argument_dependent_lookup_hack_value)) )) ) ) {} else for (bool _foreach_continue11 = true; _foreach_continue11 && ! boost::foreach_detail_::done( _foreach_cur11 , _foreach_end11 , (true ? 0 : boost::foreach_detail_::encode_type( str , boost::foreach_detail_::is_const_( str ))) ) ; _foreach_continue11 ? boost::foreach_detail_::next( _foreach_cur11 , (true ? 0 : boost::foreach_detail_::encode_type( str , boost::foreach_detail_::is_const_( str ))) ) : (void)0) if (boost::foreach_detail_::set_false( _foreach_continue11 )) {} else for ( ch = boost::foreach_detail_::deref( _foreach_cur11 , (true ? 0 : boost::foreach_detail_::encode_type( str , boost::foreach_detail_::is_const_( str ))) ) ; ! _foreach_continue11 ; _foreach_continue11 = true) {
        std::cout << ch;
      }
      std::cout << std::endl;
      return 0;
    }

    Конечно, это не совсем говнокод, но... я офигел когда посмотрел во что превращается простой BOOST_FOREACH

    Запостил: rudvil, 03 Мая 2010

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

    • Как же крив и убог этот ваш цэпп, :-!
      Ответить
      • Поссал на сраного пэхэпешника, С++ бест!
        Ответить
    • показать все, что скрытоА не использовать ли нам bbcode?
      жирный — жирный
      курсив — курсив
      подчеркнутый — подчеркнутый
      перечеркнутый — перечеркнутый
      мигающий — мигающий
      цвет — цвет (подробнее)
      размер — размер (подробнее)
      some code
      (подробнее)
      Ответить
    • И что? BOOST не осилил?
      Просто медленно компилируется, и что?
      Да и не так уж и медленно компилируется, что-бы плакать...
      Ответить
      • Буст говнище редкостное, говнее только его прототип STL.
        Ответить
        • Что в нем говняного? Конкретно минусы перечисли.
          Ответить
          • Шары то подними к началу странички и смотри.
            Ответить
            • Нет там минусов. Это как раз пункт *Дольше компилируется. И больше ничего. Без прочих последствий.
              Ответить
              • Ах да, забыл что в С++ нечитаемые портянки это в порядке вещей.
                Ответить
                • Чувак, это не нужно читать. Это спратано за макросм или за билиотеками. Главное, что быстро работает.
                  Ответить
                  • Прикрой говно газеткой - оно все равно вонять будет.
                    Нужно будет срочно поправить какой-то баг, и вот ты уже по самую макушку в абсолютном дерьмище.
                    Ответить
                    • Просто школота сама никогда такие баги в глаза не видела, но свое авторитетное мнение высказать всегда желает.
                      Ответить
                      • Просто школота такие баги исправлять не умеет. Вот и высказываются, мол говно прикрытое газетой.
                        А нужно просто иметь мозг, что-бы это исправить.
                        Ответить
                        • Просто школота любит прикидываться профессионалами и пытаться учить жизни. Безуспешно.
                          Ответить
          • Плюсы:
            *Оптимизирован по скорости выполнения.
            *Гибок.
            *Удобен в использовании, если ты знаешь С++.
            Минусы:
            *Дольше компилируется.
            *Внутрь лучше не заглядывать (минус, не имеющий веса).
            Ответить
            • >*Оптимизирован по скорости выполнения.
              Такой говняной кодогенерации, как темплейты с++ еще поискать надо

              >*Гибок.
              Уебишен - более точная характеристика

              >*Удобен в использовании, если ты знаешь С++.
              Удобен если ты не знаешь ничего кроме С++

              >*Дольше компилируется... в говнокод

              >*Внутрь лучше не заглядывать (минус, не имеющий веса).
              Вот это поворот событий, вот оно как оказывается! Да ты поди в своей разлюбимой венде сидишь за тремя фаерволами - а все потому что внутри гавно, но это не важно, так?
              Ответить
              • буст хорошая штука, если хочешь кроссплатформенности, и не тяжёлую\ самописную либу
                Ответить
                • >буст
                  >не тяжёлую

                  Взаимоисключающие параграфы.
                  Да и кроссплат не с++'ом единым... как говорится.
                  Ответить
                  • >>буст
                    >>не тяжёлую

                    >Взаимоисключающие параграфы.

                    Нда? Напомни-ка мне, какой размер рантайма у большинства либ буста?
                    Ответить
                    • Немалый, да плюс рантайм самого плюса.
                      Ответить
                      • Вообще-то 0 (ноль) байт. И рантайм плюсов крошечный и расшарен между другими программами. Чего не сказать про жабу, дельфи, vb, пистон, дотнет и прочих толстопузов.
                        Ответить
                        • да,отлично,вкомпиляй весь буст в свой код,те же яйца только в профиль
                          Ответить
                          • Ты вообще понимаешь, что такое буст? c++ видел вообще? Там почти всё во время компиляции отрабатывает, а в бинарник ничего лишнего не попадает.
                            Ответить
                            • Ну сделал ты класс:
                              template<int MaxCountElementInStack>
                              class Stack
                              {
                              ...
                              };
                              И чё получил?
                              Допустим ты используешь стек с параметром Stack<10>, Stack<11>, Stack<12>... Stack<1000>
                              То что ты получишь? 990 классов реализаций стека в екзешнике?
                              Ну ты и загнул. Ничего лишнего...
                              Ответить
                              • И? Если программист считает нужным выжать больше скорости за счёт раздувания бинарника - почему бы и нет? Бывает, что это оправдано.

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

                                    Я понимаю, что для морд к аксессу, которыми ты себе зарабатываешь на доширак лишние три инструкции (да ещё с доступом к памяти) это пустяки. Но для рендеринга, матмоделирования и других жадных до CPU задач - это важно.
                                    Ответить
                                    • Ты сейчас похож на человека, который говорит: "Подайте мне копеечку."

                                      Из-за каких-то жалких 3 инструкций заводишь целый шаблон, а затем 990 экземпляров одного класса, раздувая экзешник...
                                      Ответить
              • Просто скажите, что вы не знаете С++, поэтому он вам не нравится и закончим на этом.
                Ответить
                • Просто скажи, что ты не знаешь ничего кроме С++, чтобы объективно сравнить и выкинуть это поделку куда подальше .
                  Ответить
                  • Просто скажи, что ты ничего не писал кроме гибкого кросплатформенного вычисления факториала, и этого будет достаточно.
                    Ответить
                    • Просто скажи, что ты завидуешь прошаренным людям (которые даже факториал умеют вычислять гибко и кросплатформенно с твоих же слов) а ты - нет
                      Ответить
                    • Баттхерт с++ного гомосека
                      Ответить
    • >простой BOOST_FOREACH
      Чем-же он прост?
      Лишь в конечном исполняемом екзешнике и простоте использования.
      Ответить
      • Не ожидал увидеть такого монстра под этим макросом...
        Ответить
        • Это С++, сынок.
          Надо быть готовым к любому говну в коде когда дело качается плюсов.
          Ответить
        • Ещё есть std::for_each.
          Можешь его использовать...
          Ответить
        • От неожиданности наложил в штаны и выложил это на говнокод?
          Ответить
          • Такому говницу здесь самое место.
            То что С++ стал популярен - лишь случайность.
            Те, кто кроме C++ ничего другого не знают - просто не понимают, что мучаются, оттого плачут, колятся, но продолжают жрать кактус. Кто знает чуть побольше чем всего лишь жалкий C++, писать на этом позорище невообразимо противно.
            Ответить
            • Не цитируй придурка Лугового.(с)
              Ответить
            • Ага, с++ паскаль говно, с++ говно, на си долго, потому говно, ассемблер не кроссплатформенен, туда же, c# тем более, java - тормозное говно ну и т.д. Видели уже, из языков останутся только коммон лисп, хаскель и смолток.
              Ответить
              • только коммон лисп, хаскель и смолток.

                ХОТЕТЬ!
                Ответить
              • ФОРТ ВА ВВСЕ ПОЛЯ!
                Ответить
              • А что ви таки имеет пrотив коммон лисп, хаскель и смолток?
                Ответить
                • За них редко платят. Ну и лисп тяжело читается.
                  Ответить
                  • Редко, но метко))))
                    Раз в полгода зарплату получил сумму в N-значимых разрядов и гуляй))
                    Ответить
                    • Если бы раз в полгода. Хотя где-то видел вакансию лисп-программера за 90 т.р. в месяц, то ли Мск, то ли СПб.
                      Ответить
        • >под этим макросом...

          Это не макрос - это хер собачий. В унылом С++ нельзя написать настоящий макрос: ТрупСтрауса забыл спиздить эту фичу в втюхать в свой "шедевр", и скорее всего он вообще не знал что такое макры, для таких и препроцессор чудом кажется.
          Ответить
          • Можете показать пример настоящего макроса и как им удобно пользоваться в нормальных языках?
            Ответить
            • Например такой http://www.lispworks.com/documentation/HyperSpec/Body/m_loop.htm
              Ответить
              • Какие-то это граматики напоминает:
                name-clause::= named name
                variable-clause::= with-clause | initial-final | for-as-clause
                with-clause::= with var1 [type-spec] [= form1] {and var2 [type-spec] [= form2]}*
                main-clause::= unconditional | accumulation | conditional | termination-test | initial-final
                Так жеж можно свой язык написать. О_о
                Ответить
                • А что в этом такого, сударь?
                  Да именно так и надо подходить к делу:
                  есть задача - есть заточенный под нее язык, маленький, простой и логичный, на котором без труда может формально описать описать задачу, даже тупенькая секретутка, а не ломать голову в каком месте ты пропустил точку с запятой.
                  Ответить
                  • Так можно и С++ компилятор реализовать с таким подходом на Lisp. %)
                    Ответить
                    • То то я думаю к чему это:
                      «Любая достаточно сложная программа на C или Фортране содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины языка Common Lisp[1]»
                      «…в том числе и сам Common Lisp», а теперь понятно.
                      Ответить
                    • Нахрена мне язык, на котором можно компилятор своего языка написать?
                      Мне нужно попроще, например С++.
                      Ответить
                      • Так, что нафих твой Common Lisp.
                        Ответить
                        • >>нужно попроще, например С++.
                          С таким подходом тебе лучше в пещере жить, фиговым листом жопу вытирать, да подножным кормом питаться, а хули - проще некуда
                          Ответить
    • Где здесь С++? Это каша.
      Ответить
      • Гарантирую, что это С++, причем в самой обыкновенной форме. Только так на нем и программируют.
        Ответить
        • Так на нём программируют только идиоты., которые по нормальному не умеют.
          Ответить
          • Имею ввиду, что на С++ можно программировать и нормально.

            >Это каша.
            А это каша. Да. Но можно же делать это нормально. Язык свободный. Мультипарадигменный.
            Ответить
            • >Мультипарадигменный.
              ложь и провокация. с++ изгадил все парадигмы за которые попытался ухватиться, в итоге получили то что получили то есть говно
              Ответить
            • Имею ввиду, что на С++ можно программировать и нормально.

              обожди, тут еще не решили _зачем_ на цэ++ программировать :)
              Ответить
    • Еебось вся эта фигня генерится из-за того, что begin и end - член-функции. А были бы свободными, можно было бы их вызывать и на сишных массивах.

      Ну и ещё нет auto :)
      Ответить
      • Еебось
        какое точное описание С++
        Ответить
        • Тебя, что, задевает С++? Может получил когда-то от него душевную травму?
          Видимо тебя в детстве родители заставили написать компилятор С++ на контролёр х51 и теперь ты до конца дней срешь кирпичами, написав его.
          Ответить
          • Чепуха, этот балбес не в состоянии реализовать компилятор плюсов. Как, впрочем, и любой другой.
            Ответить
            • 1.Кому этот компилятор нужен будет
              2.Даже если нужен то кода там сто тонн
              Ответить
            • Ну нужно сказать, что и я врятли в состоянии его написать один в соответствии со стандартом. Уж очень уж там много мелких особенностей...

              А templаte - отдельная проблема. Очень неординарная вещь. С ним придётся прилично повозиться.
              Ответить
    • пардон, господа, что вмешиваюсь в вашу дискуссию. Однако не могу понять выпадок в сторону С++ - какова же альтернатива ему, не обладающая "говнистостью", по вашему мнению?
      Ответить
      • +1
        Ответить
      • А в каком контексте замену искать?

        Если речь про программирование микроконтроллеров то замена ему Plain C, Forth (возможно придется новый язык создать).

        Если веб, то тут пока PHP основную долю занимает, правда уже начинает терять проценты в пользу Python, Ruby.

        Распределенное приложение? Erlang вне конкуренции.

        Так может С++ вообще не нужен был никогда?
        Ответить
        • Это все верно. Я согласен. А что насчет обычных десктопных приложений, бизнес-приложений? Я, конечно, понимаю, что веб завоевывает все больше позиций, но все-таки... Или, например, серверное приложение на чем бы лучше написать?
          Ответить
          • С# для окошек тебе в руки.
            Ответить
          • C#, Java
            Ответить
            • ммм... а какие преимущества перед C++? (хочется услышать подтверждения фразы "Так на нём программируют только идиоты., которые по нормальному не умеют." http://govnokod.ru/3151#comment24037)
              Ответить
              • >а какие преимущества перед C++?
                Легче программировать.
                Ответить
                • >Легче программировать.

                  Это понятие довольно субъективное. Кроме того, оно не оправдывает того, что на C++ "программируют только идиоты".
                  Ответить
                  • Java is designed to be understandable by brain-damaged people
                    Ответить
                    • специальные возможности для людей с ограниченными возможностями Ы
                      Ответить
              • А значит разработка длится меньше.
                Ответить
              • Гораздо меньшая стоимость разработки системы.

                В это входит большая скорость разработки и меньшая стоимость сопровождения.
                Ответить
          • >А что насчет обычных десктопных приложений, бизнес-приложений?
            Да хоть на Java, хоть на Haskell, хоть F# - все зависит от конкретной задачи.

            >серверное приложение
            Аналогично (тут может и эрлангу предпочтение стоит отдать).
            Ответить
        • >Plain C
          Будто бы это удобно. Конечно С++ подходит для встроенных систем. Иной раз покупка более дорогого контроллера обойдется дешевли, чем поддержка сишного кода на более слабом контроллере дорогим медленно работающим программистом.
          Дальше все микроконтролеры на С++ перейдут. Вот увидите.
          Опять же для длительных математических расчетов не плохо С++ подходит.

          >Forth
          Он тоже для математических расчётов, но устарел.
          Ответить
          • >Дальше все микроконтролеры на С++ перейдут. Вот увидите.

            Поживем - увидим. Вполне возможно, что этому на руку сыграет засилье быдлокодеров (и жителей Индии, занятых в аутсорсинге), да вот только качество кода останется тем же.

            >Опять же для длительных математических расчетов не плохо С++ подходит.

            Это тоже, между прочим, фанатизм.
            Плюсовый код плохо поддается распараллеливанию, а то что удалось по тридам распихать еще и семафорить надо, абсолютно необязательный оверхед (в отличие от функциональных языков в которых распределенность "из коробки")

            >Forth Он тоже для математических расчётов, но устарел.

            Форт, как и Лисп, языки, хорошо подходящие к метапрограммированию, как к основному предназначению, со всеми вытекающими.
            Ответить
            • Вы так говорите, будто бы в функциональных языках семофорить не нужно. Нужно, только это не нужно делать вручную.
              Ответить
              • Это минус?
                Ответить
                • И да и нет.
                  Компилятор не всегда засимофорит оптимально. Человек тоже не всегда оптимально.
                  Но у человека есть больше шансов, хотя напрячся придётся.

                  >семафорить надо, абсолютно необязательный оверхед
                  Просто вы сказали, что получаем не обязательный оверхед. А мы получаем его в обоих случаях. Как с функциональными языками, хоть без них. Семофорить нужно везде.
                  Ответить
                  • Оверхед в длительности разработки.
                    Ответить
                    • Я об этом уже говорил.

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

                    Если человек, что называется "не шарит", то у него шансы 0.00
                    Ответить
                    • Да. Мы таких на работу не берём. :)
                      Ответить
                    • >не шарит
                      Хотя если он не шарит, то наверное ерланг и лисп тоже не вдупляет.
                      Ответить
                      • О том и речь. Профи сам решит, что использовать в качестве инструмента, неважно лисп это будет или си, в итоге будет оптимально решенная задача.
                        Ответить
        • >Распределенное приложение? Erlang вне конкуренции.
          Опять же на С++ можно написать более быструю реализацию, хотя писать ручками.
          Ответить
          • Для 90% приложений копеечный выигрыш в скорости погоды не сделает.
            Ответить
            • Для приложений, расчитывающих что-то годы - сделает.
              Ответить
              • Хотя это как раз те самые 10 %, а то и меньше.
                Ответить
          • >Опять же на С++ можно написать более быструю реализацию, хотя писать ручками.

            ололо пока ты будешь это пейсать ктото получит баблосы за прогу слабаную на VB наколенке (Максимка Прохоров, например) и полетит на сейшеллы
            Ответить
        • Хотя в перспективе функциональные языки могут более подходить для оптимизации и распределенных вычислений, чем что-либо.
          Ответить
      • Будущее за Vala (и им подобным).

        За компилируемым в натив C#-подобным язычком.
        Ответить
        • обоснуй
          Ответить
          • от обоснуя слышу.
            Ответить
          • синтаксис C#'а - в 100000000000000 раз логичнее и проще, чем у с++, с такой же отдачей при этом (и большей).

            а натив рулил всегда (кроме выделений памяти).
            Ответить
            • смотря что считать отдачей...
              скорость разработки на C# быстрее всего лишь на проценты...
              единственный плюс C# (ящитаю) это то что можно посадить студента и не бояться что он напорет боков дальше своей песочницы, отсюда сэкономленные нервы руководителя...
              но если вдруг нам нужна производительность, C# будет долго и упорно портить нервы не только разработчикам и руководителю...
              допустим сейчас я не могу вспомнить ни одной более-менее серьезной игры на С# и не думаю что появится что-то серьезное в ближайшие годы... а С++ опять набирает силы, так как
              iPhone - ObjC, C++
              Android - java, С++
              Windows Phone - C#, C++
              XBox360 - C#, C++
              PS3 - C++
              PSP - C++
              Wii - C++
              Bada - java, C++
              Maemo - C++
              PalmPre - C++
              Symbian - C++ (хоть и урезанный)
              у нас для всего этого один! движок на С++...
              Ответить
              • Вау. Сколько у меня потенциальных работ!
                Ответить
              • Спасибо, за коммент. Всё расставляет на свои места.
                Ответить
              • С++, С++... Смотри, не обкончайся, ни в одной из этих областей не написать прогу даже на 100к (деревянных, о зеленых президентах даже речь не идет)
                Ответить
                • у тя инет вообще есть?? почитай...
                  100к приносит нормальная казуалка изданная на 3-4 порталлах... я уже много раз слышал о том что на питоне и шарпе их можно печь как пирожки, но выходят теже сроки но более высокие системные требования + секс со сторонними библиотеками, которые не любят издатели...
                  Ответить
                  • > но выходят теже сроки но более высокие системные требования + секс со сторонними библиотеками

                    моно можно вкомпилировать статически в один экзешник.
                    моно можно сконфигурировать, чтобы занимала чото-то где-то 4 мб всего (т.е. ненужные либы стрипятся).

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

                для всего того же (кроме пары пунктов) можно запустить моно, при этом не пиша велосипеды (а я уверен, что половина вашего движка - велосипед)
                Ответить
                • ну у нас есть еще ограничения на 30 фпс и 24мб памяти для iPhone... для других платформ другие... чем мне здесь поможет моно?
                  любой движок это велосипед... даже если он на С# или Java или даже на Brainfuck...
                  Ответить
                  • моно под айфон статически компилируется, поэтму не думаю что там в скорости сильный оверхед. насчёт памятине знаю

                    The current default minimal mono install requires less than 4 MB of disk space and 4 MB of memory (plus disk and memory required by the operating system and programs running on mono)

                    как я понял, 4 мб - это минимум, выше - память под само приложение.
                    + эта инфа на их сайте судя по всему устаревшая, под моно 1.x, поэтому хз как щас.
                    Ответить
            • >C#'а - в 100000000000000 раз логичнее и проще
              Так уж и в 100000000000000 раз?!!!!111111
              Ответить
              • Даже еще больше. Цифра уменьшена в целях избежать травмирования слабой психики плюсеров - они не знают, что те же самые задачи можно решать в означенное количество раз проще.
                Ответить
                • правильно, чем проще язык, тем проще индусам и китайцам перехватывать ваши заказы...
                  напиши хоть один более менее взрослый шаблон, и поймешь что псикика у плюсеров покруче твоей будет...
                  Ответить
                  • >напиши хоть один более менее взрослый шаблон,

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

                        Тебе об этом и говорят уже сотый пост, что С++ говноязык, имеющий к НАСТОЯЩЕМУ метапрограммингу лишь незначительное и косвенное отношение, но ты блядь, как дебил, все про одно: "шаблоны, шаблоны, шаблоны рулят, шаблоны быстрее ассемблера" - нахуй запущенная шаблонизация головного мозжечка.
                        Ответить
                        • >>плохо что ты этим не пользуешься
                          Схуяли?
                          Ответить
                          • > НАСТОЯЩЕМУ метапрограммингу
                            пример плз... хоть посмотрю как люди живут...
                            Ответить
                            • Простейщий пример из немерле, введение в язык нового оператора (попробуй проделать тоже самое в плюсах)
                              macro @while (condition, statements)
                              syntax ("while", "(", condition, ")", statements) 
                              {
                                def loop = Nemerle.Macros.Symbol(Util.tmpname("while_"));
                                <[ 
                                  $(PT.Name.Global("_N_break") : name) :
                                  {
                                    def $(loop : name)() : void
                                    {
                                      when ($condition)
                                      {
                                        $(PT.Name.Global("_N_continue") : name) :
                                        {
                                          $statements 
                                        }
                                        $(loop : name)()
                                      }
                                    }
                                    $(loop : name)(); 
                                  }
                                ]>
                              }
                              Ответить
                              • да в С++ такого нет... хотя оператор while есть...
                                пример использования можно накидать, ну или хотя бы рассказать где это может пригодиться... я понимаю, что Nemerle является функциональным языком и очень глупо с вашей стороны сравнивать разные парадигмы программирования, но все же мне очень интересно...
                                Ответить
                                • >>да в С++ такого нет... хотя оператор while есть...

                                  Это и есть главная прелесть метапрограммирования - создать новое, выразив его через базовые вещи.

                                  >> глупо с вашей стороны сравнивать разные парадигмы

                                  Ты же постоянно орешь тут про шаблоны С++, выдавая их чуть ли не за божественные творения, но это далеко не так, пример выше показывает их ограниченность.

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

                                      Из разряда "зачем нам ЯП в машинных кодах надо програмить"

                                      >>яве и шарпе
                                      Reflection тоже считается причастным к метапрограммированию.
                                      Нет смысла для этого использовать шарп- уже давно существуют и F# и Nemerle, и под JVM есть функциональные языки.
                                      Ответить
                                      • Reflection это рантайм... для С++ников важен компайлтайм... хорошая программа на С++ выдает ошибки на стадии компиляции, в рантайме она просто работает... пользователи очень не любят когда программа делает то что им не нужно...
                                        Ответить
                                        • В таком случае Форт идеально подходит - редко когда некорректно написанные проги проходят компиляцию.
                                          Ответить
                                • >да в С++ такого нет...
                                  А оно нужно?
                                  Ответить
                                  • >А оно нужно?
                                    чтото мне кажется что ты школьничек никера не понимаешь в функциональном программировании и тем более в DSLях
                                    Ответить
                              • Похоже на какашку и непонятную хуйню.
                                Я с дуба рухнул реализовывать самостоятельно while? У меня в С++ while есть и уже оптимизированный, а вы пользуетесь костылями.
                                Ответить
                              • Это не намного лучше, чем BOOST_FOREACH, только вот FOREACH делает достаточно сложную вешь - проход по произвольному контейнеру. А тут такая простейшая конструкция, как while превращаеться в такую какаху. Ну нафих такое говно.
                                Ответить
              • Школьник не знает про экспоненциальную форму, поэтому лепит столько нулей.
                Ответить
                • экспоненциальная форма не так показательна, как много нулей
                  Ответить
        • Вот она твоя вала:
          http://ru.wikipedia.org/wiki/Vala
          ГовноГовном.
          Ответить
          • Обоснуй.

            Приводит в ужас промежуточная трансляция в си? Да ты уебок.
            Ответить
            • А польза с этого какая? При промежуточной трансляции мы только потеряем производительность.
              Ответить
              • Не факт что потеряем, ну может самую малость. Всяко лучше, чем писать гигабайта говна на плюсах.
                Ответить
                • А чем лучше писать гигабайт говна на vala?
                  Ответить
                  • Схуяли?
                    Язык-то повыше уровнем, чем быдлоцпп
                    Ответить
                    • Я почему-то не доверяю языкам-препроцессорам и промежуточной трансляции. С таким же успехом можно транслировать в бейсик для интерпретатора.
                      Ответить
                      • Если это покажет лучший результат, то не похуй ли?
                        Ответить
                        • Приведи доказательства и профлинки. Я голословно тоже могу сказать, что я крут.
                          Ответить
                          • А я не доверяю всякой с++ швали. Так что ты первый пруфы приводи.
                            Ответить
                            • Я доверяю моему анальному господину Баллмеру.
                              Ответить
                              • Ну вот и нечего говорить, что получишь с него оптимизацию. Говно язык.
                                Ответить
                                • Хоть плюсы и минусы мне приведи его, если не можешь доказать его оптимальность.
                                  Ответить
              • > При промежуточной трансляции мы только потеряем производительность.

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

                Так вот, что там делает компилятор - не должно волновать, ибо на выходе будет то же самое. Я вот чего-то не вижу жалоб по поводу того, что компилятор промежуточно выдаёт .o-файлы. А это ведь такой же промежуточный слой, как и си-код.

                Какая разница для программиста?

                К тому же, для си сделаны лучше оптимизации. Поэтому у трансляции в си такие плюсы:

                1) 100% кроссплатформенность
                2) лучшая оптимизация на любой платформе
                3) нет ненадобности писать компиляторо-зависимые фронтенды к бэкендам (к гцц напр.)
                4) отсутствие времени на отладку, борьбу с багами на уровне машинного кода в случае, если делать собственный компилятор - и так далее.

                Я не понимаю, почему люди боятся трансляции в си. Видимо, недостаточно "круто", "игрушечно". Писькомеры, иопта.
                Ответить
                • >100% кроссплатформенность
                  Ты это своей бабушке скажи, когда будешь компилить на 16 битную, 32 битную и 64 битную платформу.
                  Ответить
                  • лол! и чего же там некроссплатформенного?
                    Ответить
                    • сайзофни интца, говорят же тебе
                      Ответить
                      • Сайзофнул тебе интца, проверь.

                        На самом деле у проблемы есть решение: не использовать инт. Есть ещё одно решение: вообще никогда не использовать инт.

                        Что же тогда использовать? А использовать int32_t, int64_t, int16_t, uint32_t, uint64_t, uint16_t --- вот это всё. Пускай на 32-битной машине int64_t будет эмулироваться двумя регистрами, зато он вместит требуемый нам диапазон значений.
                        Ответить
                        • показать все, что скрытоvanished
                          Ответить
                        • >>А использовать int32_t, in
                          а теперь пойди найди мне c99 расшщирения в 16ти битном компиляторе
                          Ответить
                          • показать все, что скрытоvanished
                            Ответить
                            • и какая там модель памяти? Как ведут себя указатели?


                              большинство 16ти разраядного кода написано под всякие borland c, которые (по причине выпуска в середине 90-х) не умеют c99
                              Ответить
                              • показать все, что скрытоvanished
                                Ответить
                                • >>указатели только ближние
                                  тогда у нас либо не получится хранить указатель на функцию (что портит стандрт как мне кажется), либо у нас tiny model размер с гулькин хуй один сегмент, и я не очень понимаю что там можно написать насях. Загрузчик для MBR?

                                  >> теоретически 16-разрядный код может быть и за пределами x86. Мало ли в мире архитектур...

                                  Сомневаюсь что в 2K18 кому-то интересны такие архитектуры. x86-то интересен только ради обратной совместимости. Хотя конечно где-то могут работать какие-нить станки с ЧПУ или оборудование конца 80-х, но я не очень уверен что под них пишут _новый_ софт
                                  Ответить
                                  • показать все, что скрытоvanished
                                    Ответить
                                    • Именно AVR или AVR32?

                                      Но вообще я не копегаген в эмбеддед (у нас тот вроде Борманд любитель всякой мелкотни). Я знаю только про армы, mipsы и атомы, не исключено что где-то кто-то юзает 8бит.

                                      Хотя я не очень понимаю зачем.
                                      Ответить
                                      • > не очень понимаю зачем
                                        Энергопотребление, цена. Ты же не будешь ставить i7 в ёлочную гирлянду? Хотя эту нишу походу отберут мелкие 32-битные армы.

                                        Ну и ардуинщики же -- всё-таки порог вхождения у авр на порядок ниже чем у армов.
                                        Ответить
                                        • А нельзя в гирлянду FPGA?

                                          Так 8 бит действительно используют ардуинщики?
                                          Вау.
                                          Ответить
                                          • > в гирлянду fpga
                                            А тортики ты лазером нарезаешь?

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

                                                Современные гирлянды, даже самые китайские, умеют сложно мигать, по разным программам. В них есть чип. Обычно он выглядит как размазанная по плате пластмассовая сопля, (это, видимо, маленькие танзисторы залиты каким-то пластиком?), но иногда он прямо осязаемый, чёрный жучок с ножками.
                                                Ответить
                                                • Если это транзисторы, то очень маленькие, нарисованные на silicon.

                                                  Интересно, а может быть там asic?
                                                  Ответить
                                  • А вот для x86 16-битный конпелятор, имхо, сейчас не имеет смысла. Весь действительно необходимый 16-битный код помещается в пару страничек асма.
                                    Ответить
                                    • В учебных целях полезно. Учить (ну точнее начинать изучение) асм всё таки лучше на чем-то простом вроде Z80 или x86 real mode.
                                      Ответить
                              • DMC умеет конпелять под DOS:
                                -m[tsmclvfnrpxz][do][w][u] set memory model
                                    s: small code and data		m: large code, small data
                                    c: small code, large data		l: large code and data
                                    v: VCM				r: Rational 16 bit DOS Extender
                                    p: Pharlap 32 bit DOS Extender	x: DOSX 32 bit DOS Extender
                                    z: ZPM 16 bit DOS Extender		f: OS/2 2.0 32 bit
                                    t: .COM file			n: Windows 32s/95/98/NT/2000/ME/XP
                                    d: DOS 16 bit			o: OS/2 16 bit
                                    w: SS != DS				u: reload DS
                                Правда не все флажки работают. И ещё дополнительно нужно устаналивать либы и улититы.

                                Сконпелял пустую программу main(){}, а DMC выдал COM-файл почти на 6 Кб. Судя по тому, что он юзает EXE2BIN он сперва конпеляет в EXE. Не знаю, сколько сегментов он юзает, но он там чото мутит с сегментными регистрами, все call'ы и jmp'ы near. И в COM-файле много лапши и говна:
                                13E7:0100 EB01          JMP	0103                               
                                13E7:0102 90            NOP	                                   
                                13E7:0103 FA            CLI	                                   
                                13E7:0104 B8A611        MOV	AX,11A6                            
                                13E7:0107 050F00        ADD	AX,000F                            
                                13E7:010A B90400        MOV	CX,0004                            
                                13E7:010D D3E8          SHR	AX,CL                              
                                13E7:010F 8CC9          MOV	CX,CS                              
                                13E7:0111 03C1          ADD	AX,CX                              
                                13E7:0113 8ED8          MOV	DS,AX                              
                                13E7:0115 8C067A01      MOV	[017A],ES                          
                                13E7:0119 26            ES:	                                   
                                13E7:011A 8B1E2C00      MOV	BX,[002C]                          
                                13E7:011E 891EA201      MOV	[01A2],BX
                                Ответить
                    • Ну как, нашёл ответ на свой вопрос?
                      Ответить
                • >а не писькомера, кем большинство с++ников являются
                  а ты подумай, кто здесь сейчас что-то меряет в посте выше?
                  Ответить
    • >std::
      сдохни. написать "using namespace std;" нельзя было? или буст уже мозги окончательно высосал?
      Ответить
      • зачем?
        Ответить
        • Что-б ты спросил.
          Ответить
        • Что-бы лишних конструкций небыло необходимости писать.
          Ты каждый раз пишешь std::, а это лишнее, если один раз напишешь: using namespace std;
          Ответить
          • Ты читал вообще пост? Это всё не человек писал, а макрос развернулся.
            Ответить
      • сам умри. я давлю это "using namespace std" где только вижу. в тот нэймспейс столько всего напихано, что иногда просто и не знаешь что же реально вызывается/выполняется.

        млин пять буков им лень напечатать. или typedef описательный добавить.
        Ответить
        • +100500
          а вообще от этих 5 символов профита больше, так как интелисенс выведет список...
          Ответить
          • ctrl+Space нажать тяжело? Легче набрать std:: Ну ну.
            Ответить
    • Что тут спорить-то? С++ для дрочеров. Не для нормальных людей.
      Ответить
    • stl всё время мне вставляет палки в колёса. О чем это говорит?
      Что С++ говно.
      Ответить
      • В stl все колёса квадратные. О чем это говорит?
        Что С++ говно.
        Ответить
      • О том, что ты чайник-неосилятор. Мне stl помогает.
        Ответить
    • показать все, что скрытоС++ для гиков с комплексами и для энертного дерьма.
      Ответить
    • С++ - тот же VHDL для плис. Такое же дерьмо.
      Ответить
    • По статистике С++ники в дурку попадают чаше других программистов. Может статистика по Common Lisp при при этом выше, но покрайней мере по Common Lisp её просто нет. Возможно язык недостаточно популярен.
      Ответить
      • ссылочку можно?
        Ответить
      • Видел я этих программистов С++ в нашем отделе. 35 летние, часто пьющие неудачники. Друг с другом не разговаривают, редко бреются и моются. Одни. Зато неслабо воротят шаблонами, что даже становится страшно. Кодогенерация, метапрограммирование. Бррр...

        Я пишу на С#, молодой и уже есть девушка. Уезжаю в Москву.
        Ответить
        • >>>Зато неслабо воротят шаблонами
          шаблоны - полное говно, обычный синтаксический сахар, бездумно (и через анус) засунутый в язык

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

            WUT? И как же ты заменишь шаблоны другими средствами языка (си), диабетник?

            >это все мимо си-плюс-плюса, ибо ни нормального оптимизатора не прикрутишь, ни дсл'ей не напишешь

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

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

                Раз никак, то шаблоны - это НЕ синтаксический сахар.

                >А вот чистый си оптимизируется хорошо

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

                  Ты дурак. Вменяемой и равноценной замены нет. И если бы ты знал что шаблоны раскрываются обычной синтаксической подстановкой то чушь бы не нес.

                  >Ну ещё бы, ведь вся рутинная работа за компилятор проделана человеком.

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

                    Ну ёпта, а я о чём? "синтаксических сахар" - это возможность языка, без которой можно обойтись ценой чуть большей писанины.

                    >пиздуй

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

                      template - когда их оформляешь - столько приходится писать, что пиздец. Так, что хуй.
                      Ответить
                      • >template - когда их оформляешь - столько приходится писать, что пиздец

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

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

                        Мне похуй, что тут вякнул малограмотный обсос.
                        Ответить
                        • Малограмотный ущерб здесь ты, причем ты это подтвердил. Дважды. Если слил, так имей смелость свалить из треда.
                          Ответить
                        • >Тебе, бляденышу, сказали уже, что "шаблоны раскрываются обычной синтаксической подстановкой"
                          Это ложь. Ссылку давай?
                          Ответить
                          • >Тебе, бляденышу, сказали уже, что "шаблоны раскрываются обычной синтаксической подстановкой"
                            Если бы ты хоть что-то в этом понимал, то не вякал бы. Знал бы, что это не так.
                            Ответить
                            • >Тебе, бляденышу, сказали
                              >Тебе, бляденышу, сказали
                              >Тебе, бляденышу, сказали
                              >Тебе, бляденышу, сказали
                              >Тебе, бляденышу, сказали
                              >Тебе, бляденышу, сказали
                              Ответить
                            • http://ru.wikipedia.org/wiki/Шаблоны_C++

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

                                И? Все это знают, ибо читали мануал к языку. Или для тебя это новость?
                                Ответить
                                • Это была новость для тебя. Кто тут вопил во всю свою обкончанную Страуструпом глотку что темплейты не используют синтаксическую подстановку? Уж не ты ли?
                                  Ответить
                                  • Нет.
                                    Ответить
                                  • >Кто тут вопил ... что темплейты не используют синтаксическую подстановку?

                                    И не я. Кстати, тебе бы поучиться мысли выражать. Шаблоны - они работают как (сюрприз!) шаблоны. Я думал, это очевидно.

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

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

                                      этот высер даже упоминаться не должен в треде в котором прозвучали слова Лисп и Форт
                                      Ответить
                                    • "дозарезу" разве не надо запятыми выделять?
                                      Ответить
        • >>>Уезжаю в Москву...
          подметать двор
          Ответить
        • >>>Я пишу на С#

          только один этот недоязычек осилил и решил мАскву покорять? не слабое чсв
          Ответить
        • >>>35 летние, часто пьющие неудачники.

          ололо посмотрим на тебя в твои 35, молодой C#-програмер
          Ответить
          • ОйОйОй. Угадал твой возраст? :p
            Ответить
            • да мне 35, я прогер на Цэ++, троль, лжец и девственник - в общем жизнь удалась
              А ты все еще хочешь программировать на Цэ++?
              Ответить
          • Из запоев хоть выходишь?
            Ответить
        • А у нас молодой коллектив, много девушек.
          Кодим на чистом C, ЧСХ!
          Ответить
          • А девушки то как? Остановитесь на этом пункте поподробнее.
            Ответить
            • В большинстве своем хороши!
              Но поскольку я выгляжу в точности как описан программист на C++ (хоть и не программирую на C++), то мы друг другом не интересуемся!
              Ответить
              • Чёрт. Неужели меня ждёт тоже самое?
                Хотя у меня ситуация хуже. Я программирую, приемущественно, на С++... :D

                >то мы друг другом не интересуемся!
                У нас тоже они есть, но интереса друг к другу нет.

                А у вас девушки выглядят, как С++ программисты?
                У нас нет.
                Ответить
                • Черт, и правда, по крайней мере, я не видел, чтоб они брились! Надо прояснить и остальное!
                  Ответить
              • /////////////////////////////////////////
                Первым делом первым делом самолеты
                Ну а девушки а девушки потом.
                /////////////////////////////////////////
                О С++ поговорили, теперь пора и о девушках. :)
                Ответить
                • И о Лужкове!
                  Ответить
                  • казалось бы, причем тут лужков?)
                    Ответить
                  • Шизафазия?
                    Ответить
                    • Без фазии!
                      Ответить
                      • Дак как у вас с девушками то? Поподробней товарищ. Мы ждём подробного отчёта. =)
                        Ответить
                        • Вроде в посте четко сказано - не дают
                          Ответить
                          • Вот буквально в данный момент ситуация, на работе я и девушка.
                            Мы только что вдвоем...
                            наладили автотесты, поговорили про тонкости распределения ресурсов в нитях и потоках и обсудили новую систему сборок.
                            И обратно каждый к своей работе:)
                            Ответить
                            • >наладили автотесты
                              Лучше бы наладили контакты. Или они не красивые?
                              Ответить
                              • Я именно контакты налаживал - переписываю наш модуль, ответственный за общение с сетями:)))))
                                Красивая... Но копипейстом грешит!
                                Ответить
                                • ББПЕ! Особенно, если из копипастеров.
                                  Ответить
    • С++, всё-таки, говно.
      Ответить
      • есть предложение считать С++ точкой отсчета говнокодности языков, типа:
        говнокодность Basic = 10 говнокодностей С++ - значит басик в 10 раз хуже С++
        и наоборот
        Java = -2 C++ по шкале говнокодности - значит жабка лучше ц++ в 2 раза
        Ответить
        • Идея норм, вот только тормозная жаба никак не может быть лучше С++
          Ответить
          • У Java есть jit и она кросплатформенная. А жалкие плюсы прибиты гвоздями к архитектуре, а бутстрапить ц++ на новой платформе - ад и ужас
            Ответить
            • >А жалкие плюсы прибиты гвоздями к архитектуре

              К какой?

              trollface.jpg
              Ответить
              • Запусти бинарник под вин64 на спарке в солярисе. Не смог? Таки прибито гвоздями.
                Ответить
                • А зачем я буду бинарник запускать? Это всё равно, что кеш jit-компилятора скопировать на машину с другим процом.

                  Алсо, а жабомашина или дотнетомашина под под спарки вообще есть? А если openbsd вместо солярки?
                  Ответить
                  • Реализовать ВМ != компилятор говноязыка с двумя плюсами, даже долбоеб должен это понимать.
                    Ответить
                    • А не надо ничего реализовывать с нуля, просто дописать кодогенератор для ещё одной архитектуры. Объём работ одинаковый что для ВМ, что для компилятора. Ну кроме того факта, что ВМ нахер никому не уперлась, силы на неё тратить.
                      Ответить
                      • >ВМ нахер никому не уперлась, силы на неё тратить.

                        Да что ты. То, что ты в говнокодерской сфере крутишься - твои половые проблемы и на всеобщее обозрение выносить не стоит. А кому то нужен не быдлоязычок С++ а куда более вменяемые и имеющие jit языки
                        Ответить
                        • Дотнетомашину для армов в студию. И чтоб работало всё, что работает на армах у плюсов - то есть всё вообще.
                          Ответить
                          • С какой стати тебе кто-то что-то должен делать?
                            Тебе, ебанату, ведь "ВМ не уперлась", так что иди фапни на свой канпелятор С++
                            Ответить
                            • Да, мне не упёрлась. И никому не упёрлась. Я это к тому, что все эти высеры про то, что языки, компилируемые в байткод (читай, интерпретируемые) более переносимы, чем c++ - пиздёж. На самом деле типичные поделия на сишарпе/жабе гвоздями прибиты к определённой версии фреймфорка и ВМ, которые полноценно портированы на две-три архитектуры и ОС.
                              Ответить
            • >У Java есть jit
              потому она всегда тормозит, пока не прогреется

              >и она кросплатформенная.
              лол
              Ответить
              • По верёвочке бежит.
                Верёвочка лопнула
                И jit'а прихлопнула.
                Ответить
                • Про JIT и песня есть. Гологубу понравится
                  https://www.youtube.com/watch?v=r67lhwSgLyY
                  Ответить
                  • А про AOT есть?
                    Ответить
                  • Обнаружен карикатурный портрет гологуба: https://imgur.com/a/sUI0Hou
                    Ответить
                    • Thanks for thumbnail album with single thumbnail, bro!
                      Ответить
                      • Por favor, bro.
                        Ответить
                        • испанцы тоже говорят "пожалста" в ответ на "спосибо" или это какля с русского?


                          Англичане говорят "you are welcome", раньше вроде говории "I am not at all".

                          Нидеры говоря "graag gedaan", или еще "tot uw dienst"
                          Ответить
                          • Погуглил, вроде отвечают de nada = нема за що.
                            Ответить
                            • ne nada
                              Ответить
                              • Джвадцать вариантов:

                                https://www.fluentu.com/blog/spanish/youre-welcome-in-spanish/
                                Ответить
                            • Я от латиносов ни разу не слышал "de nada", они "por favor" говорят.
                              Ответить
                              • Интересно. Возможно, лексика зависит от региона.
                                Ответить
                                • Правда я был только в Доминикане. Скоро буду в Аргентине — проверю.
                                  Ответить
                                  • Собираешься в Патагонию или не в такие ебеня?
                                    Ответить
                                    • Туда тоже хотел. Но пока хз как своими силами организовать туда поездку и без 100500 деняк. Ты не знаешь?
                                      Ответить
                                      • Знаю. Релоцируйся в Аргентину, а оттуда в патагонию близко
                                        Ответить
                                        • https://cs13.pikabu.ru/post_img/2023/05/28/11/1685297190180257707.jpg

                                          Ты не понел. Как живя в Аргентине организовать поездку по топовым местам?

                                          Это тоже самое, что живя в 1024--динске посетить Камчатку. Близко же, хуле.
                                          Ответить
                                          • А что не так?

                                            Сибирь там, Урал, Владивосток, всё вроде рядом, что в той части России. Сел, да поехал
                                            Ответить
                                            • Если ни дома,
                                              Ни денег не жаль -
                                              Что ж тут поделать.
                                              Если решил уезжать -
                                              Уезжай,
                                              Незачем медлить.

                                              Кто здесь любил тебя,
                                              Кто тебя знал -
                                              Все не помеха.
                                              Вышел из дома,
                                              Пришёл на вокзал,
                                              Сел и поехал.

                                              Стрелки, как белки,
                                              Навстречу летят
                                              С ветки на ветку.
                                              Люди и звери
                                              Подходят к путям -
                                              Брось им монетку.

                                              Полка, футболка,
                                              Вагон-ресторан,
                                              Карты, потеха.
                                              Вышел на станции,
                                              Хлопнул стакан,
                                              Сел и поехал.

                                              Так пересёк ты
                                              Свой Божий мирок,
                                              Вжился, пригрелся.
                                              Так и доехал
                                              До райских ворот -
                                              Кончились рельсы.

                                              Вышел, размялся,
                                              Спросил сигарет -
                                              Просто для смеха.
                                              Взял на перроне
                                              Обратный билет,
                                              Сел и поехал.
                                              Ответить
                                              • можно так еще
                                                https://www.youtube.com/watch?v=RRLZLLH7xQU
                                                Ответить
                                        • Не плачь по мне, Аргентина
                                          Ответить
                                  • Докладываю. Они на «gracias» отвечают «gracias».
                                    Ответить
                                    • О, ты в аргентине

                                      Как там новый призеднт, который живет с сестрой и четырьями клонами своей покойной собаки?
                                      Ответить
                                      • Я ещё и со старым не успел познакомиться.
                                        Ответить
                                    • Грациозно.
                                      Ответить
                                  • Проверил. Они не говорят ни так, ни так.

                                    Вроде "bueno" могут сказать, если меня не глючит. А так в основном молчат и улыбаются.
                                    Ответить
                          • А в немецком можно, не ломая голову, ответить bitte, т. е. буквально пожалуйста. Но если надо подчеркнуть, что ты не развалился, то можно ответить kein Problem или nicht zu danken.
                            Ответить
                  • A German nursery is to be renamed after its current branding of the “Anne Frank kindergarten” was deemed to be too political.

                    After 50 years of association with the famous Jewish name, the kindergarten in the village of Tangerhütte said that it wanted a more “diverse” identification.

                    Going forwards it will now be known as “world explorer kindergarten”.

                    literary-hitler.jpg
                    Ответить
    • Хороший, годный С++ срач XD
      Ответить
    • Давно такого не видел на говнокоде. Знатно посрались. :)
      Ответить
    • кто-нибудь заметил в коде boost_foreach_argument_dependent_lookup_ hack_value

      > hack

      Сами авторы буста признают, что хаки и говно.
      Ответить
    • Я в pure C с десятком макросов тоже могу сделать generic-итератор по коллекциям любого типа, лол.

      В жопу такой "высокоуровневый язык", лол.
      Ответить
      • сделай!
        или за слова отвечать не привык?
        Ответить
        • Так уже сделано всё.

          Все ссылочные типы моего "C-boost"'а через type-punning приводятся к базовому типу (структура базового типа лежит вверху layout'а каждой структуры). Базовый тип содержит функцию-диспетчер, работающую с сообщениями (простые целочисленные значения) - (функция-диспетчер winapi'шного окна ведёт себя подобным образом). В общем, любой объект, который подтип базового типа, может принимать сообщения.
          А дальше:

          #define CF_JOIN(x, y) CF_JOIN_AGAIN(x, y)
          #define CF_JOIN_AGAIN(x, y) x ## y
          
          #define _CF_FOREACH(line, vname, list) \
              cfIterator CF_JOIN(it, line); \
              cfIterator_Begin(& CF_JOIN(it, line), (cfList*)list); \
              while(cfIterator_HasNext(& CF_JOIN(it, line))) { \
                  cfIterator_Next(& CF_JOIN(it, line), vname);
          
          #define CF_FOREACH(vname, list) _CF_FOREACH(__LINE__, vname, list)
          
          #define CF_END_FOREACH }


          Понимаешь, сука? Итератор посылает сообщения объекту (через макрос CF_SEND в функциях cfIterator_HasNext и cfIterator_Next). А там уже у каждого объекта своя реализация сообщений cfList_Count_MSG и cfList_Get_MSG.

          К слову, в итераторе есть специальное кеширующее поле, которым пользуется класс LinkedList, чтобы сохранять текущий нод.

          К слову, итератор - fail-fast, при изменении версии контейнера во время итерирования выкинется исключение (легче сделать исключения в си, чем становиться с++-гомосексуалом).
          Ответить
          • vname имеет тип Variant, это структура, которая через union'ы пакует все базовые типы Си.

            используется так:

            cfVariant v;
            CF_FOREACH(&v, container)
            {
                /* в v запаковано значение. */
            }
            CF_END_FOREACH;
            Ответить
          • >>>>В общем, любой объект, который подтип базового типа, может принимать сообщения.

            Это точно Си? Т.е. свой ООП с блекджеком и деффачками?
            Ответить
            • typedef struct
              {
                  int x, y;
              } Point2d;
              
              typedef struct
              {
                 Point2d base;
                 int z;
              } Point3d;
              
              Point3d p;
              int x = ((cfPoint2d*)&p)->x;
              Ответить
              • Тьфу на тебя. Разочаровал.
                Ответить
                • Чем?
                  Ответить
                  • Где инкапсуляция, полиморфизм и нормальное наследование?
                    Ответить
                    • Вверху это какбэ наследование полей как делается.

                      Истинный ООП юзает сообщения, они у меня есть. Базовый класс такой:

                      typedef struct _cfObject cfObject;
                      struct _cfObject
                      {
                          cfint m_refCount;
                      
                          void(*m_dispatch)(cfObject* self, cfVariant* res, cfMessageId msg, cfArgList args);
                      
                          #ifdef CF_LINUX
                          pthread_mutex_t* m_syncBlock;
                          #endif
                          #ifdef CF_WINDOWS
                          CRITICAL_SECTION* m_syncBlock;
                          #endif
                      
                          struct _cfPtrList* m_weakRefs; /* @fix Try to refactor to reduce cfObject's size. */
                      };


                      Все "типы"-потомки должны хранить вверху своих структур вот так:

                      typedef struct
                      {
                          cfObject m_base;
                      } MyCoolClass;


                      Всё, терь MyCoolClass может отвечать на сообщения (функцию m_dispatch видишь?), только в конструкторе надо сначала проставить функцию-диспетчер.
                      И никакой ебаный с++ не нужен, ололо.

                      Инкапсуляция, ящитаю, не долнжа быть совсем уж fool-proof. Всё реализуется на основе соглашений. А соглашение такое, что поля с префиксом m_ нельзя трогать.

                      Полиморфизм реализуется через отправку сообщений функции m_dispatch (как в смолтоке).

                      Что значит "нормаьлное наследование"? Семантически оно у меня есть. Синтаксически нет проверок на тайп-паннинг.
                      Ответить
                      • И что только не сделают люди, чтоб не учить Лисп XD
                        Ответить
                      • >>>И никакой ебаный с++ не нужен, ололо.
                        ++
                        Ответить
                        • Тем у кого ололо - С++, действительно, не нужен.
                          Ответить
                          • Всегда не мог понять сколько и в каком порядке нужно писать "о" и "л" в слове ололо, а может быть и не в нём.
                            Ответить
                            • И вообще это почему-то всегда ассоциировалось с телефоном: Оло?
                              Ответить
                      • Что-то мы отошли от темы. Хотелось бы увидеть generic-итератор по рекурсивной структуре данных.
                        Ответить
                        • это уже ручками, через вложенные CF_FOREACH'и.

                          я не претендую на то, чтобы из си сделать ФЯ.
                          Ответить
                          • Как раз претендуешь!
                            >>>>>могу сделать generic-итератор по коллекциям любого типа, лол.

                            Ты писал???? Оказывается все не так просто в твоем "высокоуровневом си"
                            Ответить
                            • В множество коллекций любого типа входит рекурсивные структуры данных. А раз по ним нельзя итератор пустить, то ты таки сфейлил
                              Ответить
                              • под "типом" понималось иное
                                Ответить
                                • И что понималось под типом?
                                  Переменная? О_о
                                  Ответить
                                  • Для ООП-дрочеров работы Черча, Карри, Хиндли и Милнера - пустой звук
                                    Ответить
                                    • Ты это про меня?

                                      Карри, Хиндли-Милнер и прочие, конечно, молодцы, но для практики их изыскания малопригодны (выведение типов не особо нужно, без каррирования легко обойтись и то дэ).

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

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

                        атата =) а кто тут у нас говорил что смолток для говнокодеров, а? =))))))
                        Ответить
                        • какбэ идея слать сообщения - это в смолтоке правильно сделано (унифицирует сразу overriding функций и вызов интерфейсных методов + динамика). но в остальных моментах я не соглашуся.

                          вот например в ВизуалБейсике мне нравится декларативная подписка на события. но это не умаляет его говённости.
                          Ответить
                          • >но в остальных моментах я не соглашуся.

                            на то он и первый ооп язык, чтобы идеи обкатать
                            Ответить
                          • Очень хорошо сделано. Мне нравится. :)
                            Ответить
                          • Да уж, охрененный архитектурный прием, для того чтобы в векторе от одного элемента к другому перейти, будет проводится диспатчинг сообщения и вызов функции по указателю. Наверное очень быстро будет работать.
                            Ответить
                            • >и вызов функции по указателю
                              Будто бы это так долго, что я успею поесть....
                              А вообще твои виртуальные функции - тот же вызов по указателю, а то и хуже.
                              Ответить
                              • >Будто бы это так долго, что я успею поесть....

                                Ты может и нет, а я да.

                                >А вообще твои виртуальные функции - тот же вызов по указателю, а то и хуже.

                                В c++ для итерирования по контейнеру не используются виртуальные функции. Ну, обычно.
                                Ответить
                                • >Ты может и нет, а я да.
                                  Хотелось бы на это посмотреть.

                                  >В c++ для итерирования по контейнеру не используются виртуальные функции.
                                  Зато твои эти виртуальные функции понапиханы у тебя во все дыры в твоем С++.
                                  Ответить
                            • Переход по указателю на функцию + switch-таблица + вызов функции-реализации. Да, офигеть как долго (сколько там в наносекундах?).
                              Зато компилируется не три часа.

                              если бы знал, что там ещё делает с++-компилятор under the covers, при твоей паранойее "тормозов" тебе толлько и на ассемблере кодить.

                              В дотнете для foreach'а энумераторы делаются через реализацию интерфейса IEnumerator, а интерфейсные методы вызываются там через такой же диспатчинг.

                              в objc так же должно быть. в java наверняка так же.
                              Ответить
                              • Дело не в наносекундах, а в отношении времени, затраченном на "прибавить константу к адресу" / "пройти свитч + вызвать функцию + прибавить константу к адресу". И глупо получать оверхед на такой простой операции, как проход по списку.

                                Про компилируется 3 часа - пиздежь и провокация. По крайней мере в STL, не знаю как в буст.

                                Вот поэтому дотнет и сливает при обработке больших объемов данных.
                                Ответить
                                • > И глупо получать оверхед на такой простой операции, как проход по списку.

                                  оверхед там милипиздрический, objc весь построен на этом.
                                  Ответить
                                  • Objc - это тот, на котором гуишечки в макосе дергаются?

                                    Конечно, для итерирования по коллекции объектов это все сойдет, там много не нужно, но для простой обыденной обработки массивов/списков, это слишком накладно.
                                    Ответить
                                    • лолес, для "простой" (т.е. какое-нибудь декодирование видео?) обыденной обработки массивов/списков я буду обарщаться к средствам си, т.е. сразу память + индексы.
                                      Ответить
                                      • зато в 95% остального времени буду юзать красивое, православное, защищённое от многих ошибок си-ООП.
                                        Ответить
                                        • И кто тут из нас гнал про обобщенное универсальное решение?

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

                                            я гнал не про это, а про то, что всё реализуется достаточно просто. необязательно разрывать себе мозг извращённой фантазией трупа страуса.

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

                                  троллинг же. C# тормозит только на стартапе. в моно можно применить aot. в java сделали демона, благоаря которому стартап как у натива.

                                  выйди из анабиоза.
                                  Ответить
                                  • > в java сделали демона, благоаря которому стартап как у натива.

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

                                        Короче, джава сосет хуя у шарпа. Sad, but true.
                                        Ответить
                                        • а что тут sad-то
                                          Ответить
                                          • Да не причем.


                                            Вообще забавно: двадцать лет питушки врали нам что благодаря JITу можно нанять анскильных программистов и они сделают всё хорошо, и всё равно когда тебе нужен нормальный перформанс, ты берешь плюсы, сишку, или хотя-бы Rust.
                                            Ответить
                              • >в java наверняка так же.
                                Не знаешь - молчи в тряпочку.
                                Ответить
                                • for (Enumeration e = v.elements() ; e.hasMoreElements() ;) {
                                           System.out.println(e.nextElement());
                                  
                                       }


                                  Как без диспатчинга тут обойтись - я не знаю.
                                  Ответить
                              • В С++ просто вызов статической (по желанию виртуальной, но редко) функции operator++().
                                И где скорость твоего диспатчингого метода?

                                Зачем пользоваться Си, если сам делаешь такие тормозные вещи, типа диспатчинга?
                                Ответить
                                • С вашими объектно ориентированными желаниями нужно писать на ооп языке, типа С#, а уж никак не на Си.
                                  Ответить
                                  • И C# быстро компилируется, как раз, как вам нравится.

                                    В С++, если не пользоваться всякими медленно компилирующимеся фичами - компилируется с той же скоростью.
                                    Ответить
                                    • И да, GCC тормозит при компиляции, в отличии от тру компиляторов.
                                      Ответить
                                      • а где список труЪ компиляторов и бенчмарки?
                                        Ответить
                                        • В гугле. Даже Микрософстский компилер сделает GCC по скорости компилирования раз в 10, как минимум.
                                          Ответить
                                          • Им просто лень собирать винду 7 дней, как например делают это с Gentoo, вот они и оптимизировали свой компиль.

                                            Лень - дорога к прогрессу.
                                            Ответить
                                            • а может все наоборот? и некросовт выкинул большую часть оптимайзера?
                                              Ответить
                                • >> В С++ просто вызов статической (по желанию виртуальной, но редко) функции operator++().

                                  в foreach'е?
                                  Ответить
                                  • В иттераторе - operator++(), что почти тоже, что и for_each.
                                    А в бууст_фориче для массивов просто проход по индексам.
                                    Для сложных объектов бууст_форич использует также иттератор.
                                    Ответить
                                    • Это возможно за счёт, того, что вовремя компиляции boost_foreach определяет правильный, наиболее оптимальный подход к контейнеру за счёт шаблонов. В результирующий код поподает обычный простой цикл. Никакого диспатчинга поэтому и нет.
                                      Ответить
                                      • Шаблоны прилично оптимизируют, если их с головой использовать.
                                        Ответить
                                      • > Это возможно за счёт, того, что вовремя компиляции boost_foreach определяет правильный, наиболее оптимальный подход к контейнеру за счёт шаблонов. В результирующий код поподает обычный простой цикл. Никакого диспатчинга поэтому и нет.

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

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

                                            компайл-тайм-полиморфизм мне нахрен не упёрся. не настолько туп
                                            Ответить
                                            • а мне он нужен, так как вызовы виртуальных функций довольно тяжелые на всяких консолях и не только (http://assemblyrequired.crashworks.org/2009/01/19/how-slow-are-virtual-functions-really/), ну и при компайл тайм полиморфизме функции чаще становятся инлайнами (цифры там же)... так что недостатков у него нет...
                                              Ответить
                          • >вот например в ВизуалБейсике мне нравится декларативная подписка на события.

                            Это как?
                            Ответить
          • Типичный пример "ООП головного мозга". Это даже хуже чем писать на С++.
            Ответить
            • > Типичный пример "ООП головного мозга".

              Лол! ООП головного мозга это когда ООП суётся во все поля, т.е. туда, где он нахрен не нужен.

              А я это сделал, потому что надо. с++ - говно, остальные йезыги или тянут рантаймы и зависимости по хуй знает сколкьо, или кривы, малодокументируемы и хуёня. Остаётся праведный си.

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

                но нет, они у меня как в Аде, простыми константами целочисленными.
                Ответить
                • >они у меня как в Аде, простыми константами целочисленными.

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

                    У меня исключения - это _исключительный_ случай, т.е. ты думал, что файл есть, а его хопа, и нет. Исключительная ситуация, ахтунг! И блок для обработки.

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

                    Доп. информация выводится в stderr.
                    Ответить
                    • >Доп. информация выводится в stderr.
                      И что ты с ней потом делаешь? Читаешь и распихиваешь по переменным и используешь в обработке исключения?
                      Ответить
                      • см. ниже
                        Ответить
                        • ок.
                          Ответить
                          • Кстати, если уж так сильно приспичит, то информацию наверх можно пропихнуть через tls.
                            Ответить
                            • Так делают в нормальных С++ исключениях, только это скрыто от программиста.
                              Ответить
                              • id текущего исключения при размотке стека у меня как раз в tls и хранится
                                Ответить
                            • Вообще, всё что вы делаете в С++ скрыто от программиста, а вы всё делаете своими руками.

                              Вы зря тратите время заказчика.
                              Ответить
                              • А он есть этот самый заказчик?
                                Ответить
                              • > всё что вы делаете в С++ скрыто от программиста, а вы всё делаете своими руками

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

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

                                            хаха, среди апологетов с++ два лагеря: 1) бравирующие школьники 2) программисты низшего и среднего звена, у которых нет выбора

                                            Ты откуда вот? Почему в тебе столько любви?
                                            Ответить
                                            • я уже писал... ищите в коментах...
                                              я отношусь к людям которые не останутся без работы когда китайцы освоят C# и Java аутсорс...
                                              Ответить
                                            • А ты какого звена программист? Или школьник? Что конкретно делаешь?
                                              Ответить
                                            • Не пизди, я на LISPе пишу.

                                              Бравирующий школьник
                                              Ответить
                                    • тот, кто понял суть, отправился к психотерапевту
                                      Ответить
                                  • +1
                                    Ответить
                                  • Я легко, могу сказать, в какие строчки ассемблера выльется код на С++ с объектной структурой любой сложности.
                                    Просто нужно потратить день и разобраться с этим.
                                    Ответить
                                    • Просранный человекодень - да, это так си-плюсово.
                                      Ответить
                                      • говнокодер - это человек которого не заботит качество его продукта... задумайтесь...
                                        Ответить
                                      • Один день из жизни, а не из проекта. И с чего вы взяли, что просранный? Он пройдёт с толком. Реально нужно понимать, что получаешь. В гейм деве, встроенных девайсах, и математических длительных вычислениях - точно нужен специалист, понимающий, что наделает его компилятор и как его обуздать.
                                        Ответить
                                        • В С# понять что наделает твой компилятор может и можно, но обуздать - врятли.
                                          Всё равно 99% от выполнения приложения потратися на сборку мусора. :D
                                          Ответить
                                          • бред обдолбанного плюсера такой бред
                                            Ответить
                                            • бред обдолбаного бейсекира такой бред
                                              Ответить
                                      • вот мужик который пишет на шарпе http://igoro.com/archive/gallery-of-processor-cache-effects/ и его заботит производительность его программ, так как он понимает что когда компилятор сможет выполнять его работу, он останется без денег... никак не могу понять, почему шарписты в СНГ до сих пор этого не понимают...
                                        Ответить
                      • stderr - та же глобальная переменная.
                        Ответить
                  • > имя файла не существующего передать наверх

                    во-первых, зачем это надо? чтобы в самом верхнем стекфрейме напечатать "такой-то файл не найден, извините"? так это выводится без проблем через stderr сразу там, где возбуждается исключение.

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

                    прогонять имя файла выше имхо говнокод.
                    Ответить
                  • Люблю язык Ада. Жаль, что язык Рая пока не появился.
                    Ответить
          • Чувак, ты жёсткий парень. Я тебя теперь уважаю. Ты мой кумир. =)
            Ответить
      • за одно сделай list comprehensions, type inference, tail call optimization, но это все лишь на одном препроцессоре! Полноценный функциональный язык писать нельзя.
        Ответить
        • Ладно уж. Не грузи его так. Пускай хоть generic-итератор по коллекциям любого типа. Я буду пользоваться. Жду. :)
          Ответить
        • > Полноценный функциональный язык писать нельзя.

          Я и не претендую :)
          Ответить
        • Тут в принципе можно обойтись маленьким рантаймом ФЯПа и уже его бутстрапнуть.
          Ответить
        • >tail call optimization
          Нахуй это нужно? Самому нужно оптимизировать хвостовую рекурсию, а не давать на откуп компилятору, который может и не справиться.

          Вообще нахуй рекурсию. Она всегда эмитируется через циклы и более эффективно.
          Ответить
          • Еще одно С++ное уебише в треде. Вам выблядкам мозг прям при рождении ампутируют? Или его просто нет?
            Ответить
            • Чувак! Не похож ты на луговского. Твои жалкие потуги смешны. А ты уёбещен.
              Тот, хотя-бы производил впечатление интелекта выше среднего.
              У вас интелект - олигофрена.
              Ответить
          • Вообще оптимизация хвостовой рекурсии есть во всех нормальных языках, в том числе С++ и Си.
            Ответить
        • >list comprehensions, type inference
          Умные люди, а что это такое? Объясните, плс.
          Ответить
          • list comprehensions - генерация списков (однозначно не переводится)
            type inference - автовыведение типа

            зы подробности в гугле
            Ответить
    • Тред нереально крут. :)
      Ответить
    • Вы что-ли белены объелись?
      Ответить
    • Толи вы говна въебали?
      Ответить
    • Да школота просто нихрена не умеет С++ом пользоваться, вот и бузит.
      Ответить
    • *Достаёт ведро попкорна и садится в зрительный зал.*
      Ответить
      • Чего отсиживаешься, то? Лучше-бы с нами посрал.
        Ответить
    • Спрашиваю умных людей. =)
      Вообще в этих функциональных языках часто используется рекурсия.
      В результирующем экзешнике её не будет?
      Могу я ожидать переполнения стека из-за рекурсии функционального языка?
      Ответить
      • Большая часть рекурсивных вызовов преобразовывается к циклам. Но набыдлокодить можно и тут, к сожалению.
        Ответить
    • О как надрочили:
      http://govnokod.ru/best/comments?time=ever
      Ответить
    • Этот тред нужно наплюсовать, только за то, что здесь достаточно жарко.
      Ответить
    • Не пользуйтесь BOOST_FOREACH, если приперло. Не пользуйтесь STL.
      Ответить
      • В новом стандарте (и некоторых компиляторах) появились нормальные лямбды, так что форыч перепишут в более эстетичный вид.
        Ответить
        • >В новом стандарте (и некоторых компиляторах)
          этот страх и ужас с++0х??

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

                пруф?
                Ответить
      • Шило на мыло
        Ответить
      • В стандарте C++1x обещали for_each встроенный в язык. Может быть даже в С++0х сделают. Покрайней мере планировали в С++0х и даже планируют добавить в С++ сборку мусора.
        Ответить
        • итить-колотить
          шизофазия в терминальной стадии, поциент неизлечим
          Ответить
          • У вас на лицо все признаки критического аутизма и нарушения социального взаимодействия с людьми.
            Этот человек хотел сказать, что:
            В новом стандарте С++0х введут в язык новую языковую конструкцию for_each и гарбидж коллектор. А если не введут, то введут во время принятия следующего стандарта. Что не понятного?
            Ответить
            • Давно пора в С++ завести сборку мусора.
              Ответить
              • Не думал, что такое уг как с++ можно сделать еще более унылым и говнистым.
                Ответить
              • это приведет в С++ кучу школоты, от которой мы упорно уходили все это время... для школоты есть C#, Java, ПоХаПе, пусть там и тусуются...
                Ответить
                • +1
                  Ответить
                • Скорее бы это случилось :) Как же охота чтоб С++ получил по заслугам.
                  Ответить
                  • языки без GC не можешь асилить?
                    Ответить
                    • Я писал на ассемблере когда тебя еще в проекте не было. Однако, отлично С++ мозги промывает, плюсники себя чуть ли не илитой чувствуют, но на деле говнокодеры говнокодерами.
                      Ответить
                      • Плюсники считают, что управляют генерацией экзешника, чуть ли не как на ассемблере, ну по крайней мере, как на Си уровне, а то и лучше (за счет шаблонов).
                        Ответить
                      • ну, вообще-то, у нас достаточно ума чтоб сначала познать С++, а потом устроиться на работу, и мы имеем полное право этим гордиться, тем более что это не каждому подсилу, как показывает этот тред...
                        Ответить
                        • Прозябать в нищите, получая гроши за С++?
                          Да уж, многим такое не под силу. Гордись этим каждую секунду своей серенькой жизни.
                          Ответить
                          • С++ это искусство! мне хватает на хлеб, масло, колбасу, красную икру и на суши по выходным...
                            конечно мне обидно, что обезьяны, которые не подходят нам на должность скриптовиков, получают в аутсорсе з/п соизмеримую с моей... но мне приятно то, что приходя на собеседование в любую аутсорс контору, мне предлагают должность не ниже чем лид проекта и зп в 2-2.5 раза больше чем я получаю сейчас... поменять искусство на обезьяний труд можно в любой день моей жизни, и естественно, когда нибудь я это сделаю...
                            Ответить
                            • >и естественно, когда нибудь я это сделаю...
                              И жизнь станет серой и унылой. Не торопитесь.
                              Я тоже так думаю. =)
                              Ответить
                            • Вот же вы заебали со своим С++!
                              Один обсирает, второй чуть ли не дрочит! И ЧСВ немереное.
                              Ответить
                              • я уже писал... мы имеем право иметь ЧСВ over9000, потому что мы знаем С++...
                                Ответить
                                • Вы имеете право в жопу друг с другом долбиться
                                  Ответить
                                  • мы скоро вас, обезьян, долбить будем... а то зажрались, память дешевая, процы мощные...
                                    Ответить
                                    • C++ - довольно таки примитивное, но монстровое поделие, полное исторически сложившихся нелепых нагромождений. Человек, который хорошо в нем ориентируется - это хорошее зубрилко а не хороший программист. Умение героически преодолевать трудности, которые создает твой собственный инструмент, вместо того, чтобы решать непосредственно прикладную задачу, в современно мире ценится разве что только среди прыщавых сосок. Работодатель же это сомнительное умение не ценит, и совершенно справедливо.

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

                                        это миф из разряда "в C# нет утечек памяти"... скорость разработки на С# точно такая же как и на С++, единственная разница в профессионализме исполнителя, и именно из-за этого разработка станет более дешевой, и именно на этом сориентирована вся рекламная компания вокруг С# (можешь пересчитать сколько раз тут упоминалось что С# проще)...
                                        а так все одно и тоже искать баги, оптимизировать, рефакторить надо в любом языке (даже в ПоХаПе)...
                                        Ответить
                                        • >а так все одно и тоже

                                          Так хули ты, тогда орешь что С++ илитный?
                                          Ответить
                                          • ты же его ниасилил..))
                                            Ответить
                                            • Голословная хуйня.
                                              Ты его тоже не осилил, пока ты сортир драил, услышал как прогеры в курилке С++ обсуждали и решил тут так же выебнуться, инфа 100%.
                                              Ответить
                                              • тебя даже в сортир с С++никами не пускают... прикинь какое у них ЧСВ, если даже к ним в сортир попадают только избранные...
                                                Ответить
                                                • Зато тебя пустили его языком вылизывать.
                                                  Ответить
                                                  • С++систы со своим братом такого не сделают. Лучше это они предложат бейсекиру.
                                                    Ответить
                                                    • >С++систы
                                                      Звучит как сотонисты. Так оно и есть. :D
                                                      Ответить
                                                    • Ты немного ошибся: это плюсеры драят толчки у "бейсекиров".
                                                      Ответить
                                                      • А заодно защеку берут
                                                        Ответить
                                                        • даже в этом треде заметно что С++ники на уровень выше в интеллектуальном развитии, так не опускаются до детсадовских оскорблений... делайте выводы...
                                                          Ответить
                                    • это у вас, с++обезьян, всё тормозит и глючит. не то что си.
                                      Ответить
                                      • я уже кидал ссылку про С и С++... поищите...
                                        а вообще я очень уважаю С, но я понимаю преимущества С++ перед ним...
                                        Ответить
                                        • Да ты, еблан, просто Си не осилил. Умишком не вышел арифметику указателей понять, теперь сиди подрачивай свои пидорские итераторы.
                                          Ответить
                                          • pushkoff уже приводил. Вот твоя арифметика указателей:
                                            http://blog.gamedeff.com/?p=84

                                            А именно в строке:
                                            typedef TT * iterator;
                                            А дальше в цикле используется для прохода по массиву, типа
                                            iterator i;
                                            i++;

                                            Приэтом это является итераторам и может использоваться в стандартных алгоритмах STL, типа сортировки, копирования и прочее.
                                            Ответить
                                          • в качестве диплома писал ОС на С...
                                            смотрю тебя сильно напрягает то что я умнее... я знаю людей которые умнее меня, и вместо того чтоб их унижать, я учусь и развиваюсь, чтоб хотя бы не отставать и среднестатический С++ник поступает также... но вот среднестатический явист или шарпист или ПоХаПешник после недели работы считает себя чуть ли не пупом земли, требуя огромных зарплат и новых должностей, из-за этого цена продукта растет а качество падает... я ни разу не встретил ни одного русскоязычного блога о шарпе в котором человек описал, что беспокоится о количестве памяти или производительности своих программ на шарпе, при этом каждый второй англоязычный блог этим кишит... пересчитай всех своих друзей шарпистов которые знают что такое рефлекшн (reflection)... хватило пальцев одной руки? странно, они же профессионалы, и могут заткнуть за пояс любого С++ника, а пишут как индусские программисты на С (но у индусов хоть оправдание есть, в С этого нет)... уметь программировать и знать 20 разных фреймворков - это разные вещи... задумайся...
                                            Ответить
                                            • Блять, какой же ты клинический идиот, хоть сейчас в музей! Когда ты успел выдумать, что я пишу исключительно на C# и под .Net? Да ты, уебан, просто не можешь допустить мысли, что ты осилил только один С++ (еще не доказано, что осилил), а есть кто-то, кто в совершенстве владеет десятком различных технологий и языков.
                                              Ответить
                                              • если ты так крут, то чего ты такой нервный? я вот крут и спокоен...
                                                Ответить
                                                • Каждый, кто здесь последним подписывает коммент - получает +1 от неизвестного гостя.
                                                  Ответить
                                        • +1
                                          Ответить
                                      • Глючит как раз у Си, где ошибки сам все находишь.
                                        Ответить
                                        • > Глючит как раз у Си, где ошибки сам все находишь.

                                          юзай валгринд, и ни одна ошибка не пройдёт мимо.

                                          с++виндузятники о таки продвинутых технологиях не слышали?
                                          Ответить
                      • Сразу бы уж сказал: "я писал на лиспе, когда ассемблера еще в проекте не было"?
                        Школьники совсем обнаглели нынче.
                        Ответить
                  • Чего? Завидуешь нам, потому что не знаешь С++? Завидуешь языку?
                    А нам же лучше. Пусть школота набежит, а у профессионалов будет больше работы и бабла.
                    Ответить
                    • Это ты, что ли, профессионал? Кодер на С++ это даже не программист - обычный ботан, выучивший примерное расположение костылей в плюсах, таких в детстве чморят все кому не лень, но в один не прекрасный они вдруг решают стать программистами: мол, я вам покажу чего стою; и идут дрочить в свой канпелятор.
                      Ответить
                      • В общем жалкое зрелище.
                        Ответить
                      • Со мной так и было... :(
                        Ответить
                      • Согласен, вот ПоХаПешники все настоящие альфа-самцы.
                        Ответить
                        • Угу) самцы подвида гомодрилов)
                          Ответить
                        • ПоХаПе может выучить даже имбицыл
                          пруф здесь http://lurkmore.ru/95%25_населения_—_идиоты
                          Ответить
                • >это приведет в С++ кучу школоты
                  Это полезная вещь и для некоторых задач ускоряет работу приложений. Тк позволяет освобождать память в отдельном потоке, когда проц не загружен работой, например ожидает файла с диска.

                  Хотя при правильном проектировании - он загружен всегда.

                  На крайний случай обычный оптимизированный delete, также может освобождать память в отдельном потоке.
                  Ответить
                  • >он загружен всегда
                    Для соответствующих задач, естественно. И загружен именно полезной работой, а не перевыделением памяти и копированием мегамассива в мегамассив форичем.
                    Ответить
                  • может возникнуть проблема если деструктор должен быть привязан к треду, типа освобождение объектов СОМ... в отдельный поток можно вынести освобождение блока памяти, но тут по моему фрилист покруче будет, так как О(1) почти всегда...
                    Ответить
                    • FreeList? Это где про этот патерн можно почитать? Чую профит.
                      Ответить
                      • это список свободных блоков определенного размера... это не паттерн...
                        техника чем-то напоминает пул...
                        профит есть если часто выделять и освобождать блоки одинакового размера...
                        Ответить
                        • Тоесть их можно использовать для будующих выделений памяти и для этого их "кешируют" в списке свободных блоков?

                          А "указатели" на эти списки расположены в отсортированном по размеру элементов списка "массиве"?
                          Ответить
                          • все зависит от реализации, можно сделать один список для всех, но лучше разделить блоки по группам, перегрузить new для объектов, которые будут выделяться таким образом, и прокешировать в статических членах класса указатель на список блоков нужного им размера... тогда new будет работать за O(1) если списке его размера будут блоки, а если не будет, то запрашивать блок у глобального диспетчера...
                            Ответить
                            • Можно подумать что в GC такое нельзя реализовать.
                              Ответить
                              • пример или пруф, ибо я не знаю как это сделать допустим на С#...
                                Ответить
                                • Что ж ты так? C# это же так просто после С++. Неасилил что ли?
                                  Ответить
                                  • я попросил пример... а осилил или нет покажет пример... в данный момент я действительно незнаю как управлять памятью в C#... прикрутки типа методов Init() и Close(), можете не постить...
                                    Ответить
                              • Да, только тебе придется реализовать полностью весь интерфейс GC.
                                Ничего плохого, но и ничего хорошего.
                                Ответить
                    • >может возникнуть проблема если деструктор должен быть привязан к треду
                      Тогда new для таких объектов перегружать...
                      Ответить
                    • > может возникнуть проблема если деструктор должен быть привязан к треду, типа освобождение объектов СОМ...

                      COM - говноархитектура Майкрософт, поэтому 100% для сборщика мусора с++ Маййкрософт для своего компилятора введут костыль для таких случаев. В дотнете же сделали такие костыли.
                      Ответить
            • Давно хотел себе сборщик мусора. :)
              А их раздают с лозунгом: "Сборщик мусора в каждый дом"?
              Ответить
              • у меня есть такой) но его почему то называют пылесос :)
                Ответить
                • Школьник? Пора спать. Время то не детское.)))
                  Ответить
                  • Сейчас порномультики досмотрю и баиньки
                    Ответить
                    • АХАХА! +101
                      Ответить
                    • Опять своё бойАНиме сморишь... Оно же всё одинаковое. Как его можно смотреть? Оно штампует имбицилов.
                      Ответить
    • a kto-to hotel udalit' guest acsess.
      it's just like paradise!
      capcha 6665 agreed
      Ответить
    • Итс фор лулз!!!111
      Мега тред.
      С++ VS ВсеВсеВсе.
      ВсеВсеВсе выигрывает! Даже мой визуал бейсик. С++ дерьмецо.
      Ответить
      • EPIC WIN?
        Ответить
      • >ВсеВсеВсе выигрывает!

        Не вижу. Быдлокодеры на всём_всём_всём (CamelCase для пидоров) только орут как стая мартышек и не в состоянии привести реальных аргументов. Придираться к раскрытию макросов - это вообще бред.
        Ответить
        • Макросы это вообще не самая сильная сторона языка.
          Макросы вообще вредны языку.
          Их использование - верный признак говнокода.
          Ответить
          • >Их использование - верный признак говнокода.

            слишком толсто
            пруф будет?
            Ответить
            • Одно дело макросы 'напейсать' в си - другое в том же лиспе
              Ответить
    • Вот вы сейчас смеётесь, а мне не смешно было, когда я пользовался бустом...
      Ответить
      • звучит как >>когда меня ебал негр с метровым зуем
        XD))
        Ответить
    • олололо
      с++ говно
      PHP рулит и в этом никто не сомневается.
      Ответить
    • Автар rudvil стал незаметен в этом треде.
      Ответить
      • Строго похуй
        Ответить
      • Да ну, на... и так уже 267 комментов, большинство из них ниочем, вот сейчас отвечаю, наверняка ещё умников 50 появится...
        Ответить
        • После этого останется 49.
          Налетай! Засирай!
          Ответить
    • Спорите тут, мол Common Lisp крут, а реально максим прохоров напишет прогу на коленке на висуал бесике за 5 минут и уедет на канары, а ты будешь дрочить своим Common Lispом сто лет, как и на С++.

      Ты вообще хоть рубль на своем Common Lisp заработал?
      Ответить
    • STL

      «Алгоритмы + структуры данных = программы» — Н. Вирт.

      А. Степанов когда-то придумал, что алгоритмы и структуры данных должны быть порознь. Идея посетила его голову, когда он находился в состоянии бреда, вызванного отравлением грибами. Тем не менее, с появлением С++ и шаблонов в нём, идея оказалась воплотима, и была разработана библиотека STL, позже вошедшая в Стандарт.
      Ответить
      • не сметь приводить в пример этого пидора вирта!!!
        Ответить
    • Не понимаю, почему бы Сишникам не использовать С++?
      В него почти полностью входит Си. Просто стал чуток типобезопаснее.
      Можно также невозбранно пользоватся longjmp, malloc, не пользоваться классами и шаблонами.
      Стало просто больше возможностей.
      Ответить
      • Стало больше костылей и уродства. Если ты этого не заметил - сочувствую, но ты неизлечимый говнокодер
        Ответить
        • Они повышают твою безопасность. Типы более подконтрольнее. Тяжелее выстрелить в ногу.
          Если что-то делаешь кривое, то отдельно нужно длинную строку написать, что-бы согласиться.
          Что-то типа пароля проверки на вменяемость, а когда таки напишешь, то увидев это уродство - откажешся от него и напишешь нормально без говнокодства.
          Ответить
          • >>>> то увидев это уродство - откажешся от него и напишешь нормально без говнокодства.

            удивительно, но разработчикам буста это не помешало наговнякать
            Ответить
            • Ну там это, что-бы не приходилось общаться напрямую с говном самому и не писать его самостоятельно. for_each то с перделками и шлюхами хочется... Ничего не поделаешь...
              Ответить
            • >удивительно, но разработчикам буста это не помешало наговнякать
              Так от всего не защищает просто.
              Ответить
      • Не знаю, как сейчас, но лет 10 назад чтобы написать ядреный код, приходилось выпиливать из С++ все, кроме С:)
        Why bother?
        Ответить
        • Сейчас в С++ ценится удобство использования... код с грамотными шаблонами будет не медленнее аналога на С, но намного удобнее...
          Ответить
          • Пример кода фстудию с "грамотными шаблонами" которые "будет не медленнее аналога на С, но намного удобнее..."
            Ответить
            • http://blog.gamedeff.com/?p=84
              Ответить
              • Ты привел ссылку на высер малограмотного долбоеба. Если для тебя он авторитетен - прими мои соболезнования.
                Ответить
                • вообще-то это Борис Баткин... ты можешь попробовать пройти собеседование этого "малограмотного долбоеба" и почувствовать себя говном...
                  Ответить
                  • Он побоится. А вообще, видимо, он проводит собеседование на уровне оптимизации и С++ костылей?
                    Ответить
                    • http://blog.gamedeff.com/?p=64
                      Ответить
                      • Читал недавно.
                        Из вопросов только кватернионы не знаю. Но если нужно будет, то как-нибудь разберусь...
                        Ответить
                        • Ну да, в школе вам не рассказывали про кватернионы.
                          Ответить
                          • У него не школа а спец. интернат для особо си-приплюснутых.
                            Ответить
                      • в си давно можно инлайнить, не поверишь.
                        Ответить
                        • В Си++ тоже.
                          Ответить
                        • в универсальной функции сортировки им очень сложно воспользоваться, так как функция принимает указатель на функцию сравнения, то есть и вызывать она ее будет по указателю... поэтому инлайн может и есть, но в данном примере неприменим...
                          Ответить
                      • Кстати, а где можно про кватернионы хорошую статью почитать?
                        Ответить
                        • хорошую незнаю... про кватернионы есть статья в википедии, да и в гугле полно инфы на русском... довольно качественный код есть в nvmath (входит в состав nvidia sdk)...
                          Ответить
              • Хороший приём.
                Ответить
          • Как может сейчас ценится удобство С++?? Из криокамеры сразу на говнокод?? Еще -цать лет назад появились языки на порядки удобнее этой говноподелки.
            Ответить
            • как можно спорить о С++ с человеком, который не понимает С++... у нас разные понятия удобства... для меня удобством является то что я получаю то что хочу и как хочу... с менеджментом памяти у меня проблем нет... зато первый же аргумент о преимуществах яв и сшарпов о сборке мусора, с матом разбивается о стену перед релизом, так как в них есть утечки памяти, и найти их гораздо сложнее чем в С++, а еще сложнее исправить... я понимаю что многие из вас на это забивают, но допустим у нас у явистов есть требования о размерах используемой памяти...
              вот можно еще почитать http://blog.gamedeff.com/?p=43
              Ответить
              • Как у течки памяти? Я думал в С# они не возможны? Как это вообще возможно со сборкой мусора?
                Ответить
                • да че их слушать, ща загонят что вселенная вообще на плюсах напейсана, клиника, хуле
                  Ответить
                  • >вселенная вообще на плюсах напейсана
                    А ты первый раз слышишь? Видно в институте не учился и философию не проходил... Об этом ещё Платон говорил.
                    Ответить
                • любой не используемый в данный момент блок памяти называется утечкой... на них можно просто не обращать внимания, так как они никому не мешают, тем более что намного проще и дешевле докупить памяти, чем найти хорошего разработчика... с этим лозунгом в сердце живут все шарписты и явисты, вот только это не комплимент, а камень в свой же огород...
                  Ответить
                  • >любой не используемый в данный момент блок памяти называется утечкой
                    Утечкой называют память, которая не прикаких обстоятельствах не может быть освобождена до завершения программы, но не используется.
                    А в данном случае эта память освободится, если понадобится.
                    Ответить
                    • Да все все поняли, зачем к словам придираться.
                      Ответить
                  • нет, утечка это когда память никогда не возвращается.

                    в сишарпе и в яве хорошие сборшики мусора, а все проблемы - по незнанию.

                    мнго памяти съедается на стартапе, потому что менеджер памяти делает это специально, потому что он видит, что в системе её ещё дохера. поэтому выделение памяти в них в некоторых случаях десяток раз быстрее происхоит, чем у с++, т.к. не нужно вызывать системные функции, ибо несколько десятков мб УЖЕ в нашем распоряжении. а выделение памяти под объекты - это краеугольный камень ООП-прогарммирования, и тут-то с++ сливает без костылей.
                    Ответить
                    • > т.к. не нужно вызывать системные функции
                      сори, но вы читали хоть что нибудь о менеджерах памяти?? какие системные функции?? проблемы менеджеров памяти в поиске свободных блоков а не в системных функциях... системные функции вызываются при выделении хипа (очень большого блока памяти, для множества объектов) и не зависят от языка программирования, они в любом случае вызовутся в любой программе...
                      Ответить
                      • ну так вот в сборщиках мусора с компактирующей кучей выделение объекта - одна операция, сдвиг указателя вперёд. память при сборке дефрагментирована, поэтому никакие старпёрские "свободные блоки" искать не надо.

                        про системные функции - ну я посмтоянно вижу злоупотребления...
                        Ответить
                        • при первом проходе, да... все менеджеры так делают... абсолютно все... на всех языках... но чем дальше, тем больше памяти начинают занимать последствия фрагментации... я надеюсь ты не веришь в легенду о том что освобожденный участок адресного пространства вдруг резко исчезает или коллапсирует... подумай что наступает после того как указатель достигает конца, а в середине есть участки памяти которые никому не нужны...
                          Ответить
              • >с менеджментом памяти у меня проблем
                А я забываю писать delete и все переодически это делают. Как после этого их нет? Есть и налицо.
                Ответить
                • и их видно простейшими тулзами, которые входят даже в поставку студии... любой более-менее вменяемый программист добьется их отсутствия...
                  Ответить
                  • Какие тулзы для С++ посоветуете?
                    Желательно бесплатные.
                    Хотя ломанные тоже сойдёт. :D
                    Ответить
                    • для начала http://msdn.microsoft.com/en-us/library/d41t22sb(VS.80).aspx
                      мне этого всегда хватало...
                      недавно вышло обновление vld (2.0), сам не пользовался но хвалят...
                      под iPhone есть своя тулза она показывает расход памяти во времени.
                      Крутыми и платными не пользовался около 2 лет, поэтому названий уже не вспомню...
                      для статического анализа лучшей считается PVS Studio (http://www.viva64.com/pvs-studio/) на хабре и в блоге интела есть примеры использования...
                      Ответить
                • Слезай с травы, пересаживайся на таблетки для памяти.
                  Ответить
                  • Не. Я собираюсь вживить себе чипы Fast RAM c дополнительным встроенным калькулятором.
                    Ответить
                • Есть "умные указатели"
                  Ответить
    • Этот BOOST_FOREACH довольно удобен.
      То что он раскрывается в мега конструкцию - ничего плохого.
      В результирующий экзешник ничего лишнего не поподёт.
      Например для массива будет обычный цикл for от константы до константы. В чем вообще проблема, то?
      Ответить
      • Проблемы нет пока это гамно работает - вылезет баг все по пизде пойдет
        Ответить
        • Говно в С++ любит всплывать. => Доказательство того, что вселенная написана на С++.
          Ответить
          • Да. В реальной жизни говно тоже всплывает.
            Ответить
    • Судя по тому, что данный код замусорен конструкциями вида
      true ? 0 : foo
      это продукт исключительно машинной генерации, или особо увесистой макросной конструкции.
      Ответить
    • Скорее второе, т.к. я увидел этот макрос с помощью netbeans'ского "macro expansion".
      Ответить
      • А на макрос в первозданном виде слабо было посмотреть?
        В бусте сам макрос форича занимает 44 кб, вместе со всеми классами, что он использует.
        Ответить
        • Да собственно вот он 44 кб заголовочный файл:
          http://www.boost.org/doc/libs/1_38_0/boost/foreach.hpp
          Но реально дела обстоят ещё и хуже, тк туда инклудятся прочие h файлы:
          #include <cstddef>
          #include <utility> // for std::pair
          #include <boost/config.hpp>
          #include <boost/detail/workaround.hpp>
          #include <boost/mpl/if.hpp>
          #include <boost/mpl/assert.hpp>
          #include <boost/mpl/logical.hpp>
          #include <boost/mpl/eval_if.hpp>
          #include <boost/noncopyable.hpp>
          #include <boost/range/end.hpp>
          #include <boost/range/begin.hpp>
          #include <boost/range/rend.hpp>
          #include <boost/range/rbegin.hpp>
          #include <boost/range/iterator.hpp>
          #include <boost/range/reverse_iterator.hpp>
          #include <boost/type_traits/is_array.hpp>
          #include <boost/type_traits/is_const.hpp>
          #include <boost/type_traits/is_abstract.hpp>
          #include <boost/type_traits/is_base_and_derived.hpp>
          #include <boost/iterator/iterator_traits.hpp>
          #include <boost/utility/addressof.hpp>
          # include <new>
          # include <boost/aligned_storage.hpp>
          # include <boost/utility/enable_if.hpp>
          # include <boost/type_traits/remove_const.hpp>
          Ответить
          • И больше мне не говорите, что С++ нормальный язык, если реализация форича требует такой дрочки.
            Ответить
    • С++ вкусный, просто вы не умеете его готовить.
      Ответить
      • спасибо, уже вдоволь наелись этого говна
        Ответить
    • Уважаемые, вас послушать - так все кодят на лиспе и яве. И получают за это по 90 т.р. в месяц (где-то в комментах цифру видел). Я понимаю, ни один язык не лишен недостатков и требует своей специфики задачи. Но пару вещей я тут так и не увидел. Кто-нибудь может подытожить и набросать список из 5-6 пунктов, который бы объяснял, чем же так не угодил С++? ну, как бонус, хотелось бы еще подобный список для альтренативы С++ увидеть :)
      Ответить
      • Комменты не читал, много больно. Но вот это привлекло внимание:
        > вас послушать - так все кодят на лиспе и яве.
        Узнаю /ц/тардов Нульчана, ох, узнаю.
        Ответить
    • Всем чмоке в этом чате!
      Ответить
    • показать все, что скрытоХороший... хороший был ресурс.
      Ответить
    • Писать на С++ - это "закат Солнца вручную".
      Ответить
      • Это соль всего треда, что-бы не пришлось перечитывать.
        Ответить
      • Ты просто слабак, признай.
        Ответить
      • Зато вы на своих С# и ему подобных языках просто не имеете такую фичу. Вы будете беспомощно наблюдать, как Солнце закатится само-собой к ночи. Максимум, что вы можете - строить небоскрёбы.
        А мы можем это посредине дня сделать вручную. Пускай мы спотеем. От жары пот испарится и мы обгарим. Пусть С++ не напомнит нам, что мы не одели термозащитный костюм с последовавшим сгоранием заживо.
        Но зато мы можем хоть как-то, а вы нет. В этом сила С++. Многообразие тяжёлых, но непревзойдённых возможностей.
        Ответить
        • Пока ты тут просираешься Максимы Прохоровы получают 90к за басики и трахают бап.
          Ответить
          • Да хоть получают 90к за бап и трахают басиков.
            Ответить
            • а я прочитал так: "бахают трапов"
              Ответить
              • Ачо, трапы тоже люди. Кроме того, может, прохорову это и нравится? Бейсик он же любит.
                Ответить
    • Заебись, развели тут срач...
      Ответить
    • А где здесь С++?
      Ответить
    • А не пошли бы вы все... в школу?
      Ответить
    • Я уже предвижу, как на лукоморье однажды создадут статью про говнокод и там будет написано, что: "Однажды ГдеЗдесьСиПлюсПлюсеры до того обнаглели, что создали для себя отдельный тред и дохуя там насрали. Началили так срать и поливать всех вокруг своим говном С++, что у самих залило уши и они уже никого не слышали. Стали ему поклоняться и даже "догодались", что на нём написана вся вселенная. Схуяли?(с)".
      Ответить
      • Вообще то это вы создали тред, что-бы С++ников обоссать, так что не надо.
        Ответить
        • >так что не надо.

          не надо их жалеть ))))
          абсыкаем по полной!
          Ответить
      • "Схуяли?(с++)"
        Ответить
        • Вы, С++систы, везде видите С++? Что с вами?
          Наверное, когда они видят девушку, то любуются её иерархией классов, множественным наследованием, методами, помеченными ключевым словом virtual, указателями*, const_cast<тип>(var), перегруженным operator new() и прочими С++ ными костылями, а потом удивляются, почему она им не даёт. Схуяли?(с++)
          Ответить
          • Всем известно что девушки дают только функциональщикам.
            Ответить
          • Я C++ не знаю, поэтому любуюсь буферами, и оцениваю реализацию портов ввода-вывода...
            Ответить
    • ОНЕМЕ ХАЯБАЛО
      Ответить
    • Ах. Ох. Ай. Доставай свою плёточку. Давай детка С++. Ай. Кончай. Ай. Я уже кончил.
      Ответить
      • Это основной смысл этого треда, что-бы вам не пришлось лишний раз это читать.
        Ответить
      • ЗЫ: Я отибал С++.
        Ответить
      • Просто найдите себе нормальную тёлку. У вас какая-то не верная сексуальная ориентация С++систы.
        Ответить
      • >Давай детка С++
        Она не дала.
        Ответить
      • >Кончай. Ай. Я уже кончил.
        Epic Fail.
        Ответить
        • А так и происходит со многими С++ проектами. Они начинаются, делается куча велосипедов, и программист ждёт окончания дописи своего проекта, но выдыхается и кончает. А проект так и остаётся не законченым или не доведённым до ума, тк даже отладка требует уйму времени.
          Ответить
    • Так и хочется зайти суда и запостить вам С++никам картинку с толстым и длинным зуем, как символ того, что может ваш грёбанный язык и символ того, к чему вы должны стремиться, что бы вам давали девушки.
      Ответить
      • Девушки не дают клиническим далбаебам-с++никам, даже если у них толстый и длинный. Хотя обычно мелкий и не стоит.
        Ответить
    • Не страдайте фигнёй. Учите язык D. В 100 раз лучше С++, хотя функциональные языки не догонит.
      Ответить
      • Еще сыроват. И вообще имеет какие-то невнятные свистелки-перделки, да и сфера применения не ясна.
        Ответить
    • Common Lisp очень лаконичен:
      http://lisper.ru/articles/icfpc-2009-virtual-mashine
      (Как написать виртуальную машину для ICFPC-2009 на Common Lisp)
      В 100-ню строк пишут интерпретирующую и компилирующую виртуальную машину.
      Помоему профит очевиден. Никакой Максим Прохоров со своим визуал бейсиком не напишет это за пару часов. На визуал бейсик это будет в пару тысяч строк. Я уеду на канары, а максимка будет ждать следующей работы, хоть и не долго, а С++ будут до посинения дрочить своё прошлое творение, превысив все допустимые сроки сдачи.
      Ответить
      • Во братуха! Поддердиваю всеми чистями тела! Lisp это действительно мощнейщая вещь никакие Басики с ним не сравнятся!
        Ответить
    • Я начинающий программист и знаю Си. Я прочитал эту полемику, но разнообразность мнений меня запутала.
      Может быть вы подскажите: на каких языках мне стоит научиться программировать в этой жизни и почему? Минусы тоже можете указывать, для полноты картины.
      Ответить
      • Чтоб втянуться в кодинг в функциональном стиле можно изучить Схему (Лисп)
        Логическое программирование - Пролог (альтернатив нет)
        Скриптовые языки - Питон, Руби
        Системное программирование - Си хорошо подходит (для всяких микроконтроллеров еще Форт)
        Прикладное - C#, Java

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

        ооп и функциональщина - это подходы, это семантика, а не синтаксис. упираться в синтаксис - для говнокодеров.

        heil orthodox c! 14/88
        Ответить
    • Вооо наговнокоментили)))))
      Ответить
      • самый обыкновенный с++ срач
        Ответить
      • Ну есть и хорошие комменты. Притом стоит их почитать последователям всех языков и задуматься.
        Ответить
        • Хорошие каменты такие хорошие

          >>Схуяли?(с++)
          >>это у вас, с++обезьян, всё тормозит и глючит. не то что си.
          >>Баттхерт с++ного гомосека
          >>Вы имеете право в жопу друг с другом долбиться
          >>Насри себе в рот
          >>Да ты уебок
          Ответить
          • Да. Да. Это они. А как вы догfдались? :D
            Ответить
          • Ну я такие комменты пропускаю мимо глаз. Читаю только стоящие.
            Ответить
      • Это не мы, это луговской прибегал, топик засрал.
        Ответить
    • Вот жеж школоты, то понабежало.
      Ответить
      • Вот жеж школоты, то понабежало.
        "Вот же школоты-то понабежало"

        Двойка тебе, школоло. Завтра родителей в школу.
        Ответить
    • Я императивщик со стажем, любимый язык С++. Почитав этот эпический тред, я задумался. Понял, что жизнь идёт мимо меня. Смотрю в сторону функциональных языков.

      Я так понимаю, функциональные языки больше подходят для решения некоторых типов задач, типа молотилки данных:
      Трансляция, классификация данных, ммм... 1)Прошу привести конкретные области или ваши проекты, для которых функциональные языки больше всего подходят, чем императивные?
      2)Может они не будут делать это максимально быстро, зато я буду разрабатывать проекты максимально быстро, я верно понимаю?
      3)Для каких областей функциональные языки подходят плохо? Я так понимаю, для GUI? Приведите ещё примеры?
      Ответить
      • Фу. Предатель!
        Ответить
      • Одним говнокодером стало больше...
        Ответить
        • Что, мудачок, не осилил функциональщину?
          Тебе и не светит - для этого нужен мозг, не распидарасенный императивом.
          Ответить
        • У тебя в мозгу гигантская раздолбанная дырка, после того, как тебя поимел императивный язык.
          Ответить
      • Теперь тебе будут довать девушки. Готовся морально и физически. Мускулы хоть подкачай, что-ли. От С++ исхудал и ослаб наверное...
        Ответить
        • Уж хаскеллист бы ему попу бы надрал XD
          http://s.lurkmore.ru/images/c/c7/Z150_03.jpg
          Ответить
      • >>2)Может они не будут делать это максимально быстро, зато я буду разрабатывать проекты максимально быстро, я верно понимаю?

        Нет. Не верно, не надо искать серебряных пуль - надо решать задачу наиболее подходящим инструментом: на Лиспе драйвер не написать, С++ не подходит для метапрограминга.
        Ответить
      • Иуда. Не получишь ты свои 30-ть серебряников за предательство.
        Ответить
      • Ты в С++ просто нихуя не вкурил. Циклики и функции небось только знаешь, ушлёпок.
        Ответить
    • 1)В сторону каких функциональных языков мне следует смотреть с точки зрения практики? Приведите сравнение(основные плюсы и минусы)?
      Меня больше интересуют языки, продолжающие развиваться. Те, для которых появляются новые компиляторы. Те, что генерируют производительный код, пусть даже в небольшой ущерб удобству и возможностям. Меня не интересует лёгкость обучения. Ну для начала меня больше интересует платформа Windows. Пока меня больше интересуют не трансляторы, а именно компиляторы, тоесть по возможности не JIT и не MSIL компиляторы, хотя это не так важно. Ну и для удобства начинания какая-нибудь гуёвая IDE.

      Я смотрю в сторону F# (он же OCaml + перделки и шлюхи .NET Framework), какой-то из диалектов Lisp (Видимо Схема?), Erlang (распределённые вычисления и многоядерное программирование) и Nemerle. 2) Правильно я смотрю?

      3)Erlang, видимо не так актуален, тк задачи его уровня крайне редки. Ещё он использует порты для общения с внешним миром, что тоже не так приятно. Видимо он генерирует не самый оптимальный код для компьютеров простых смертных, у которых нет десятка ядер?

      4)Если Lisp, то выбирать какой диалект?

      Вообщем жду советов. =)
      Ответить
      • А кто тебе посоветует то, тут одни С++ ники, дрочеры, пидары и школье.
        Ответить
      • >Меня больше интересуют языки, продолжающие развиваться
        на текущий момент хаскелл - авангард функционального программирования
        Ответить
        • Haskell, при всех достоинствах, для новичка неподъемен.
          Ответить
      • >>Ну для начала меня больше интересует платформа Windows.
        >>Пока меня больше интересуют не трансляторы, а именно компиляторы
        >>Если Lisp, то выбирать какой диалект?

        Common Lisp и его реализация от Steel Bank (SBCL http://www.sbcl.org/)
        Ответить
    • C# имеет один существенный недостаток (все системы со сборкой мусора его имеют):
      http://www.gotdotnet.ru/blogs/mihailik/3588/10842/
      А именно, финализатор (жалкое подобие деструктора) может вызываться во время сборки мусора, но это сборка мусора может так и не произойти до завершения программы, а это значит, что важные захваченные ресурсы могут долгое время не освобождаться и в таких случаях эта работа ложится на программиста.
      Это почти тоже самое, что заставлять программиста вызывать delete вручную, особенно в свете исключений, возникающих в С# по поводу и без повода.

      В С++ такой траблы нет, хотя это не оправдание, тк у него есть другие.))
      Ответить
      • Фтопку тогда компы вообще, а все ЯП - гуано в принципе.
        Ответить
      • Мда.

        Вася имеет мерседес, но у мерседеса сломан прикуриватель.
        Гена имеет запорожец и у него таких проблем нет.
        Ответить
        • А Петя ездит на автобусе, в котором можно получить пизды за одну лишь мысль закурить...
          Ответить
      • Единственно можно отметить, что к каждому процессу добавляется дополнительный поток финализации, и процесс можно подвесить, если с помощью блокировок заблокировать этот поток, и крах потока финализации ведёт начиная с .NET Framework 2.0 к краху всего приложения, в предыдущих версиях будет рестарт потока.
        Ответить
        • можно ещё лочить классы, веселье гарантированно
          Ответить
          • Давай-те придумаем, как ещё можно сломать С#? :D
            Ответить
            • я вот подумал, а что если сделать поток не стандартным способом, а через P/Invoke (CreateThread т.е.), и скормить этому потоку ссылку на какой-нибудь managed-объект, а затем заставить работать сборщик мусора. сборщик мусора вовремя сборки ведь останавливает потоки, но только те, о которых он знает (т.е. которые System.Threading.Thread) (или нет?). и в общем в нативном потоке надо объект ппытаться повредить. чо будет, интересно.

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

              > Additionally, if (a) the structure is located on the stack, and (b) the structure contains only blittable types, then if you pass a structure to an unmanaged function by-reference, the structure will be passed directly to the unmanaged function, without an intermediate unmanaged memory copy. This means that you may not need to specify the Out attribute to see changes made by unmanaged code.

              Получается, что мы получаем указатель в пределах managed-стека? Можем ли мы из unmanaged-кода пойти вверх по managed-стеку и покуралесить?
              Ответить
              • > Получается, что мы получаем указатель в пределах managed-стека? Можем ли мы из unmanaged-кода пойти вверх по managed-стеку и покуралесить?

                Проверил, можно!
                В общем, на стороне managed-кода:

                using System;
                using System.Runtime.InteropServices;
                
                namespace HackTest1
                {
                    struct DummyStruct
                    {
                        public int a;
                        public int b;
                    }
                
                    class Program
                    {
                        [DllImport("unmanaged", CallingConvention = CallingConvention.Cdecl)]
                        static extern void hack(ref DummyStruct ds);
                
                        static void Main(string[] args)
                        {
                            f(12);
                
                            Console.ReadKey();
                        }
                
                        static void f(int value)
                        {
                            DummyStruct dummy;
                            dummy.a = 10;
                            dummy.b = 20;
                
                            hack(ref dummy);
                
                            Console.WriteLine(value);
                        }
                    }
                }


                На стороне С:

                void hack(int* p)
                {
                    *(p + 2) = 13;
                }


                > hacktest1.exe
                13
                10

                > mono hacktest1.exe
                12
                10

                Т.е. я смог изменить значение аргумента managed-метода. Также я смог менять локальные переменные, следующие за структурой DummyStruct.
                Ответить
                • Это был... всем печально известный C#...
                  :)
                  Ответить
                • Хотя по другому и быть не могло. Если бы они сделали для не манеджет кода отдельный стек, то производительность продолжила бы падать... Компромис между безопасностью и скоростью...
                  Ответить
                  • В основном для маршалинга между нативным кодом и clr каждый раз выделяется память в неуправляемой куче, структура копируется туда и ссылка в нативный код даётся только оттуда. Но для оптимизации для struct& сделали исключение, не очень безопасное...
                    Ответить
      • >его имеют
        Кого имеют?
        Ответить
      • >финализатор может вызываться во время сборки мусора
        Я даже больше скажу. Тк это происходит в другом потоке, а в Виндовс вытесняющая многозадачность, то финализатор может вызватся в то время, когда какие-нибудь данные используются, и их испортит, если он их изменяет.
        За этим дополнительно придётся следит с помошью синхронизации.

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

        Мне интересно, как эта проблема решается? Вообще имеет ли решение?
        Неужели не использовать финализаторы, а делать это вручную?
        Ответить
      • С# неприятен отсутствием const.
        void f(TypeName Obj)
        {
             TypeName Obj1=Obj;
              Obj1.Change();
              //После этой операции изменён Obj1 и Obj, тк с точки зрения С++ такой способ передачи - передача по ссылке&.
        };

        Обходится конечно легко.
        Путём выделения из кучи нового объекта, если есть конструктор копирования. Не приятно, конечно.
        void f(TypeName Obj)
        {
             TypeName Obj1=new TypeName(Obj);
              Obj1.Change();
              //После этой операции изменён только Obj1.
        };

        Вот так вот потеря производительности на пустом месте.
        Помоему вот это тоже нормально:
        void f(int Obj)
        {
             int Obj1=new int(Obj);
              Obj1=7;
              //После этой операции изменён только Obj1.
        };
        Ответить
        • *Помоему вот это тоже нормально для С#.
          Ответить
        • > С# неприятен отсутствием const.

          частично для этого можно использовать struct's
          Ответить
        • >>int Obj1=new int(Obj);
          нет такого конструктора
          и вообще value-типы всегда передаются по значению
          Ответить
          • >>int Obj1=new int(Obj);
            >нет такого конструктора

            зато есть очень ценное "int i = new int();"
            Ответить
            • и что с того?
              я понял) ты - кэп
              Ответить
              • при чём тут кэп?
                ирония моего поста риторически вопрошае, нахрен интегеру пустой конструктор.
                наверное для default(T).
                костылизм.
                Ответить
    • Нахуйрим тыщу коментов?
      Ответить
    • ХУЯСЕБЕ!
      Ответить
    • Жаль до тыщи не дошли
      Ответить
    • Жмем
      Ответить
    • 1000
      Ответить
    • Пыщ
      Ответить
    • http://s001.radikal.ru/i196/1110/30/c6bbb07cd272.jpg
      Ответить
    • продолжайте дискуссию, рабы!
      Ответить
    • ПИЗДЕЦ!

      Ребяа, кончайте кодить, вы уже тут почти все ебанулись головой апклаву.

      И да, давайте дохуярим до тысячи.
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • В Южной Корее робот насмерть раздавил мужчину. Робот работает уже пять лет — но он принял человека за ящик с овощами
      Ответить
    • В Астрахани больше 20 человек отравились метадоном, трое умерли. По одной из версий, наркотик перепутали с мефедроном

      Друзья, всегда просите своего диллера четко проговаривать название вещества. "ф" и "т" легко перепутать
      Ответить
      • Этот видимо ещё и картавил. Именно поэтому я не покупаю наркотики у «усских националистов».
        Ответить

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