Здравствуйте, greenpci, Вы писали:
G>да, ладно. std::string нужен для управления памятью и ничего лишнего. Это минимализм, товарищь. Тот самый, который является идеалом создателей гугла. В книжках пишут, что stl включает в себя только то, чем пользуются наибольшее количество программистов. Пихать все подряд в один класс — это антипатерн, который запрещен на всех языках. Поэтому все вынесено в разные блоки.
Во-первых, это бездумная ссылка на авторитетов, которая, как паттерн поведения, устарела еще до Просвещения. Ну, гугл, и что? Нам, современным людям, нужно объяснение, почему это плохо. Объяснения я не увидел.
Во-вторых, нет слова «антипаттерн», вас кто-то обманул. Неявная теория за этим словом стоит такая: есть книжка GoF и там перечислены паттерны. Они хорошие и их надо употреблять. А есть всякие паблики морозовы. Они плохие и их употреблять не надо. Потому и антипаттерны. Есть, кстати, более изощренная версия этой теории: что паттерн это просто обобщение, а в книжке GoF перечислены как плохие, так и хорошие паттерны, но нейтрально, без указания кто из них кто. Что наводит на вопрос, почему банда скрыла такую ценную информацию от народа. А на самом деле, наши взгляды просто меняются и то, что вчера казалось хорошим, сегодня кажется плохим. Я уж молчу, что все это в контексте какой-то цели, которая у вас с гуглом может быть разная.
Так вот, про цели и объяснения. Что значит «минимализм»? Ничего лишнего в бинарях? Это C++, он статически линкуется, главное, дайте исходники. Я вас уверяю, что если никто не вызовет String::Split, этот код в конечный продукт не попадет. Ничего лишнего в головах? Ну так он там и так есть, поскольку есть в ECMAScript. Или, может быть, в хайлоудных проектах гугла ни одна универсальная реализация не годится, ибо подправленная реализация даже с выигрышем в миллисекунду дает общий профит? И поэтому гугл-wannabe программисты в говноконторах так старательно следуют этим правилам? У меня для них плохая новость: вряд ли программисты с допросвещенческим майндсетом нужны в гугле.
BDA>>А это очень важный звоночек. Он звенит, когда программисты перестают заниматься чем-то полезным (для непрограммистов) и начинают страдать херней, раздуваясь от ЧСВ.
G>А на каком языке такого нет? В джава скрипте что-ли? Они на всех языках этим занимаются. Самый чистый язык в этом плане, это Си. Все остальное плодородная почва для "технических игр". Вы бы видели что происходит на дот нете. Там, каждые пол года выпускают новый подход (к параллелизации например) и каждый, кто выучил очередной подход, начинает гордиться и пихать его везде, куда не надо.
Дело не в том, где такого совсем нет. Дело в том, что платят за результат (который сам на 3/4 очковтирательство, но это неважно). И программист, ориентированный на результат, сталкивается с тем, что во всех приличных языках в системной библиотеке есть нужный ему код, а в этом языке — нет. Что делает язык не очень подходящим для использования программистами, ориентированными на результат. О чем и речь.
BDA>>Во-вторых, шаблоны пошли вразрез с тем, что добавлял Страуструп. Вместо инкапсуляции алгоритмов под капот, чтобы не запинаться при работе над частной задачей, все кишки вытащили наружу и шагу ступить нельзя, чтобы не попасть в какой-нибудь a.begin(), a.end(), b.end().
G>Это компенсируется стабильностью. Опытный программист обучается обходить грабли и использует это умение много лет. Да, порог вхождения выше, зато, когда вошел, выходить не надо еще много лет, в отличии от того же дот нета.
Перефразаирую: да, дерьмо, но зато они его не исправляли много лет. От себя добавлю: и не собираются.
BDA>>Дальше — хуже. Сокращенный синтаксис стал черезвычайно многословным. static_cast<T>(o) вместо (T*) o и прочие бла-бла-бла. Шаблоны стали использоваться для чего угодно помимо обобщения. В библиотеке, претендующей на
G>это потому, что static_cast это антипатерн. Так и было задумано, чтобы его реже использовали и он резал глаза.
Опять антипаттерн. Ну ладно, а какой кастинг не антипаттерн? Только не говорите, что все — они и без указателей нужны, а уж с указателями-то просто must have.
BDA>>штандартность (бусте) встречаются трюки типа использования наследования для достраивания функционала (less или как там его). Не в реализации, нет! В юзерском коде! Производительность всего этого дела неявно падала все
G>я читал про разные тесты коней в вакууме, где доказывалось, что дот нет такой же быстрый, как и Си плюс плюс. А теперь запустите и закройте Студию десять раз, а потом Qt Creator. Разница очень существенная.
Я тут одному товарищу рассказывал уже, но он мне не поверил. Сильно подозреваю, не осилил драйвера или держит какой-нибудь MacAfee. Поставьте себе не откровенно плохой SSD размером на полтерабайта, установите на него систему, файл подкачки, поставьте побольше памяти и у вас все, включая фотошоп, будет запускаться настолько быстро, насколько возможно. В частности, разницы между QtCreator'ом и студией вы не увидите.
Кроме того, есть, знаете ли, разница в функционале между первым и вторым.
BDA>>Единственное преимущество, которое у плюсов остается, это ВЕНДОРОНЕЗАВИСИМОСТЬ. С Джавой связываться — тащить ее на целевую платформу, а ни хостеры, ни виндовые юзеры ее очень не любят. Шарп — ну, понятно, до недавнего времени это был evil Microsoft (что дальше с ним будет — увидим).
G>а сколько всего уже написано на плюсах, особенно бесплатного. Жадные и богатые корпорации обажают экономить и брать все забесплатно. А скрутить все части в один продукт легко даже на плюсах.
Много раз слышал это утверждение, но на практике оно, чаще всего, означает стопицотый велосипед, который делает то, что FCL умела с первой версии. Если же речь идет о чем-то узкоспециализированном, то есть, вещах с малым инпутом и большой обработкой внутри, никто не мешает собирать ее в модуль и дергать откуда угодно.
BDA>>Резюме: стоит хорошему языку вырваться на волю, и конец этой груде мусора.
G>Для этого нужно очень много времени и высокие затраты без быстрой отдачи. В современном мире это все сложнее и сложнее. Все хотят денег прямо сейчас. Теперь никто не даст очередному "Страуструпу" сидеть и ваять новый язык.
Страуструп, по-моему, это делал в рамках прикладной задачи. Богатыри, не мы, и т.д. и т.п.