Учитывая, что языки программирования - это инструменты, которые надо применять в зависимости от поставленной задачи и способов её решения, такие вопросы у меня лично всегда вызывают ассоциацию дискуссии "Почему дрель лучше отвертки?"
> Не надоело подобные клоунские темы-клоны создавать?
Это первая, которую я создал - пока не надоело. Не печатать же с нуля текст? Как-то не по-опенсорцному получится... А вообще интересно и противоположные мнения почитать.
За то что по хорошему коду на С++ можно как по отпечаткам пальцев однозначно определить программиста, по каким книжкам он изучал С++, и сколько ему примерно лет, т.к моды в мире С++ быстро меняются.
>firefox тормозит из-за Javascript внутри а openoffice просто криво написан, возьми тот же мелкософтный офис - он гораздо быстрее
Ну IE7 не тормозит, например, как и MSO, да. Просто у MS очень специфический и трудоемкий стиль написания на C++. По сути от оригинального ++ там нет ничего - Memory management свой, ABI+RTTI свой, исключения свои(SEH). А отрисовка гуя в MSO, говорят, на асме.
> Фича в том что они походу умеют дефрагментировать кучу, чего ++ не позволяет хоть ты обперегружайся.
Нет. Не умеет он такого
> Что может физически помешать сделать отрисовку гуя на асме?
А зачем? а ты предстаивл, как это лазить по HDC и тд на асме?
Да и на таких задачах человек не сделает лучше компилятора. Человек не сможет учесть взаимодействие более чем 20 команда в уме. иначе ему придется делать очень объемные вычесления
Давно известно, что асм имеет смысл только на вычеслительных задачах, и то не всегда
Несколько лоет назад видел в блоге сотрудника майкрософт где он статисткой по коду бравировал. *.asm кода там довольно много было.
>> Всегда умели. Есть там такая функция - GlobalLock(). Я думал она deprecated, однако же она достуна даже из .NET.
>Так. расскжаите что она делает. Как она может дефрагментировать кучу? и какую? там их многО, и еще они разных типов
Она блокирует подвижный чанк памяти и возвращает указатель. После использования этот чанк надо разблокировать при помощи GlobalUnlock(), указатель при этом становится невалидным.
>> Однако векторизовать надо ручками, компилятор тут не поможет.
>Давно из анабиоза? они давно это умеют
Для этого компилятор должен понимать что компилируемый код собственно делает.
> Несколько лоет назад видел в блоге сотрудника майкрософт где он статисткой по коду бравировал. *.asm кода там довольно много было
Все равно не верю. Пару кусочков если только
> Она блокирует подвижный чанк памяти и возвращает указатель. После использования этот чанк надо разблокировать при помощи GlobalUnlock(), указатель при этом становится невалидным.
И как это к куче относится? Вообще эта функция дает возможность получить доступ к какому-то блоку, фактически отмэпив его в виртаульное пространство.
Где тут особый MM, который не является частью идиологии C++.
Я например в свое время писал такой код. На стеке создавался объект, который обеспечивал перехват new для определенного типа объектов и помещал их в заранее выделеный кусок памяти (скажем пару метров). Далее работал алгоритм, который создавал туеву кучу таких объектов. Эти объекты не где не удалялись, а грохолись всем скопом сразу после выхода из этого куска кода. При этом создание множество объектов не фаргментировало память (а это было возможно, так как создавались множество других объектов при этом уже обычным образом).
И при чем тут что-то сильно отличное от идеалогии С++? В ваших словах я слышу только не понимания возможностей языка. Да, MSO сидят очень токовые люди, и выжимаю очень много. Они умеют писать красиво, и делать интересные решения в коде. Но пишут они на С++. А не на каком-то мифическом внутреннем языке "С++ + MS"
> Для этого компилятор должен понимать что компилируемый код собственно делает.
Вы плохо знаете возможности оптимизации. Векторизацию тот же gcc вставляет в такие неожиданные места, где ты и не подумал бы. А уж простейшие вещи он легко находит
>не знаю, как там у МС, не был, но вот в кедах тоже как-то плавно всё, но "марАСМом" тут и не пахнет
Кеды я ставил, они просто не работают. Причем стабильная 3-я ветка, да. Как я понял для кед самое кошерное это сидеть на генте в транке и следить за багфиксами.
извини, но это толсто, я сидел на 3.5.9, потом перешёл на 4.1.3, сейчас 4.2.4, конечно в 4.1 ветке бывали проблемы, но небольшие, потом и вовсе никаких
>Где тут особый MM, который не является частью идиологии C++.
Он там во всем. В С++ объект должен быть размещен по фиксированному адресу раз и навсегда.
>Я например в свое время писал такой код. На стеке создавался объект, который обеспечивал перехват new для определенного типа объектов и помещал их в заранее выделеный кусок памяти (скажем пару метров).
Паттерн проектирования "Детонатор".
>Но пишут они на С++. А не на каком-то мифическом внутреннем языке "С++ + MS"
Возьми болванку для написания произвольного расширения win32, например кодека к DirectShow. Там ты увидишь массивную инфраструктуру подобную жабской и полное отсутствие стандартных плюсовых инклудов. Для писанины под это вообще любой статический императивный язык сгодится, тот же Паскаль например. Возможно, с препроцессором для минимизации бойлерплейта.
>Вы плохо знаете возможности оптимизации. Векторизацию тот же gcc вставляет в такие неожиданные места, где ты и не подумал бы.
Ручной оптимизации критических мест это не отменяет.
Потому-что единственный ЯВУ, который компилится нативный код и имеет такое количество библиотек.
И, млин, чёртовы менеджеры, чтобы они подохли, не делают офигенные круглые глаза, при слове C++, как например при слове ocaml.