LINUX.ORG.RU
ФорумTalks

[размышления]Так ли убог C++ как его малюют?

 


0

4

Стандартный набор аргументов хаяльщиков C++ следующий:

небезопасный, нет сборщика мусора; можно попортить память и сидеть много лет под дебаггером.

В любых более-менее серьезном проекте, не важно какой язык Java/C++/Lisp/whatever, пишут документацию и тесты (лисперы ведь пишут тесты, правда?). Так что у ошибок вида delete NULL и пр. нет шансов. А если какой-то тест падает - то тем проще найти и исправить: какая-нибудь JAVA просто многозначительно промолчит и в релиз войдет бага.

шаблоны == синтаксический сахар, ООП сложен и для гиков.

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

Мое ИМХО: ругают C++ исключительно ниасиляторы, продвигая вперед тем самым маркетинговые машины всяких Java c .NET-ами. А создание действительно качественного софта, будь то C++/Java/.NET, соизмеримы как по деньгам, так и по срокам. Другое дело что ынтерпрайз порой клал на качество... среднее и низкое качество на Java/.NET наверное выходит дешевле.

Ы?


Ответ на: комментарий от runtime

> зачем вообще для С++ выпускают новые стандарты?

Затем, что этого требует индустрия, которая пользует плюсы, а вовсе не для того, чтобы «идти в ногу со временем». C#, «идущий в ногу со временем», превратился в синтаксический (и не только) винегрет.

one_more_hokum ★★★
()
Ответ на: комментарий от mono

2. Eclipse

Это не считается самипонимаетепочему.

1. Vuze

Когда я вижу это слово, я вспоминаю utorrent и мне становится смешно.

на десктопе ее сложно использовать

Ну вот и я о том же, ни профессионального, ни десктопного софта на ней нет и не предвидится.

RealSiberianMan
()
Ответ на: комментарий от one_more_hokum

> Затем, что этого требует индустрия, которая пользует плюсы

Именно это и называется «идти в ногу со временем» - у индустрии возникают требования к языку, соответствующий комитет их реализует. В последние годы комитет С++ слишком много чешется, и новые фичи в язык добавляются с большим запозданием, или не добавляются вообще.

runtime ★★★★
()
Ответ на: комментарий от RealSiberianMan

>Это не считается самипонимаетепочему.

не знаю.

Когда я вижу это слово, я вспоминаю utorrent и мне становится смешно.

У Vuze есть пользовательская база, этого достаточно.

Ну вот и я о том же, ни профессионального, ни десктопного софта на ней нет и не предвидится.

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

mono ★★★★★
()

> Другое дело что ынтерпрайз порой клал на качество... среднее и низкое качество на Java/.NET наверное выходит дешевле.

О чем спорить? Программисту Java/.Net платят больше, чем на C++. Потому последний удел любителей «интересных проектов».

Pavel
()

>ругают C++ исключительно ниасиляторы, продвигая вперед тем самым маркетинговые машины всяких Java c .NET-ами

+много

Zhbert ★★★★★
()
Ответ на: комментарий от runtime

> 1) В С++ и его библиотеках набралось слишком много мусора и неудачных решений, которые никто выкидывать не собирается (да это уже и невозможно; к тому же, если из С++ выкинуть мусор, мы получим D, который уже есть).

Да, но есть и много альтернатив: тот же (ставший уже пресловутым) Qt хотя бы. Можно и не есть кактус.

А что касается D: много ли под него либ/биндингов? на многие ли платформы есть к нему компиляторы? «Не читал, но» имхо для продакшна ему еще предстоит многое сделать. А я больше вопрошаю «почему люди считают что C++ не подходит для продакшна?»

LORd
() автор топика
Ответ на: комментарий от Legioner

Я не утверждаю, что на Java/.NET нельзя создавать хороший софт, я лишь выразил мысль, что разработка хорошего софта на Java соизмерима по затратам с разработкой хорошего софта на C++. Или вы утверждаете, что на плюсах вообще ничего стоящего создать нельзя? http://www2.research.att.com/~bs/applications.html

LORd
() автор топика
Ответ на: комментарий от mono

да даже это не обязательно, пример - S.T.A.L.K.E.R., тормозила и падала, и каждый новый патч менял формат save-файлов. но какая популярность.

Пока сталкером кормили, вышел FarCry, в котором графика была лучше, чем в сталкере на тот момент. А через год после сталкера вышел Crysis. Сталкер, не смотря на мощнейшую базу («Пикник на обочине» - о-го-го же!), вообще скучнее и примитивнее даже фаркрая оказался.

mv ★★★★★
()
Ответ на: комментарий от kranky

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

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

LORd
() автор топика
Ответ на: комментарий от RealSiberianMan

> расчитанного на пользователя (т.е. не энтерпраиз говно и прочая бухгалтерия).

ЛОР же! (шутка)

На конечного пользователя - только серверный софт. На десктопе жаба не прижилась.

svu ★★★★★
()
Ответ на: комментарий от RealSiberianMan

>Можете привести несколько примеров неплохого софта на жабе, расчитанного на пользователя

Tuxguitar, Sunflow, Azureus.

kranky ★★★★★
()
Ответ на: комментарий от RealSiberianMan

>Когда я вижу это слово, я вспоминаю utorrent и мне становится смешно.

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

kranky ★★★★★
()
Ответ на: комментарий от runtime

> Именно это и называется «идти в ногу со временем» - у индустрии возникают требования к языку

Как слегка работающий в этой самой «индустрии», имею заявить, что более консервативного и поросшего мхом существа (за редким-редким исключением), чем «индустрия» сложно найти.

one_more_hokum ★★★
()
Ответ на: комментарий от yoghurt

Только вот FarCry проходится за неделю, если по два часа в день.

Точно! То ли дело залипший триггер в сталкере! :) Ну или гарантированный вылет игры в определённом месте, которое нужно кровь из носу посетить ради продолжения сюжетной линии. А патч пока выпустят... Нет, за неделю никак не пройти.

mv ★★★★★
()

Аргументы деццкие. Единственный реальный аргумент в Ъ-энтерпрайзе - это сколько денег прожирает разработка на этом языке.

mv ★★★★★
()
Ответ на: комментарий от LORd

Да я про последний параграф в первом сообщении. Платить за хороший софт будут редко, разве что военные для какого-нибудь марсохода. А 99% софта пишутся с куда более свободными допущениями. Да, он не хороший, он так себе, но это тот софт, который везде и решает все задачи. И оказывается, что на Java софт такого качества писать проще, чем на С++. Поэтому его пишут на Java, а вовсе не из за того, что С++ чем то сложен. Нет там ничего сложного.

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

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

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

Legioner ★★★★★
()

ругают C++ исключительно ниасиляторы

ну это и ежу понятно

jtootf ★★★★★
()

> ругают C++ исключительно ниасиляторы

Осилил, не ругаю, но использовать отказываюсь.

archimag ★★★
()
Ответ на: комментарий от Legioner

И оказывается, что на Java софт такого качества писать проще, чем на С++. Поэтому его пишут на Java, а вовсе не из за того, что С++ чем то сложен. Нет там ничего сложного.

То есть бывают простые языки программирования, бывают сложные, а бывают и Java?

mv ★★★★★
()
Ответ на: комментарий от LORd

> Да, но есть и много альтернатив: тот же (ставший уже пресловутым) Qt хотя бы. Можно и не есть кактус.

Согласен, если Qt рассматривать как [почти] стандартную библиотеку С++, то ситуация очень сильно улучшается. Но есть несколько но: не стоит забывать, что в Qt используется дополнительный препроцессор, а это уже не ванильный С++; Qt хватает не для всех случаев жизни.

А что касается D: много ли под него либ/биндингов? на многие ли платформы есть к нему компиляторы? «Не читал, но» имхо для продакшна ему еще предстоит многое сделать.

К сожалению, у D сейчас свои, по большему счёту организаторские проблемы, но есть шанс, что их преодолеют. Насчёт биндингов - C'шный код может быть использован как родной, следовательно, особых проблем взаимодействия с чужим кодом быть не должно. Но до продакшена D ещё далековато, да.

А я больше вопрошаю «почему люди считают что C++ не подходит для продакшна?»

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

runtime ★★★★
()

Чем больше пользуюсь C++, тем больше его недолюбливаю. Но заменить, в сущности, нечем. Большая часть проблем тут проистекает не из языка, а из того, как народ его использует. Часто порождают монстров...

Deleted
()

Эти рассуждения, с кучей «если ...», подобны тому как после голливудского боевика рассуждать: ну может же повести герою, разве всегда без промаха стреляют? И потом еще раз ему повезло. А там он вона как прыгнул, и потому промазали. А в том эпизоде разве так не бывает, что стреляющему мошка в глаз влетела? ..., и так 100 раз. В итоге - весь фильм - ну чистая правда?

А если на кубике выпадет 6, то почему бы и во второй, и в третий раз, и в пятый, не выпало 6? Что мешает? Да ничего, значит, делаем вывод - плевое дело?

А создание действительно качественного софта, будь то C++/Java/.NET, соизмеримы как по деньгам, так и по срокам

Большая такая неправда :) Просто с потолка. Как ни тужься, то такой длительной отладки на Java/.NET, как с С/С++ не потребуется.

И еще, пояснение на пальцах. Если аккуратно ходить, то перила на лестницах не нужны.

ругают C++ исключительно ниасиляторы, продвигая вперед тем самым маркетинговые машины всяких

Кто-то ругает, а большинство на нем просто не пишут. Потому что - невыгодно, вот и весь маркетинг.

Другое дело что ынтерпрайз порой клал на качество

Есть такое: Можем написать: дешево, быстро, качественно. Выберите 2, но только 2 пункта.

3 сразу - не бывает. Потому что живем мы - в реальном мире, а не в мире голливудского боевика. В действительности ресурсы - всегда ограничены. И если выбрать качество - то чем-то придется пожертвовать. Бизнесу же важны и деньги, и время (потому что конкурент ждать не будет) Вот поэтому выбираются более безопасный ЯП и средства разработки - они позволяют достичь 2,5: дешево, быстро и 0,5 качественно.

Потому что дорога ложка к обеду.

Учитывая то, что большинство форумных фанов С++ ничего больше пары утилиток не написало, то и там где требуется некое качество - с ресурсами тоже туго, нет программистов на С++, нужной квалификации, в достаточном количестве.

Skynin
()
Ответ на: комментарий от svu

>Мне не хватает фантазии представить плохой код приличного размера, который не падает и не тормозит

У меня хватает =)) закрыт браузером сейчас. Стройная система костылей и подпорок. Но есть места довольно хорошо написанные... и подпорки ставились довольно хорошо... посему работает сносно, но с целом не разгребаемая куча мусора.

Если код тормозит терпимо и не падает хотя бы минут 15(а при удвоении оперативы может выжить пол часа), то при определенном наборе фич и хорошей рекламе у игры может быть успех =)

F457 ★★★★
()

По-моему, вполне приличный язык. Да еще и объектно-ориентированный. Но т.к. в моих задачах никогда не было нужды в «объектном ориентировании», я всегда пользовался С. Так что ничего конкретного ни pro, ни contra С++ сказать не могу...

Eddy_Em ☆☆☆☆☆
()

Чему Вы удивляетесь, если пропаганда довела до того, что даже тут на ЛОРе уже боятся указателей. Конечно, enterprise весь пишется в Кашмире и Дели на других языках.

maxkit
()
Ответ на: комментарий от Skynin

> Если аккуратно ходить, то перила на лестницах не нужны.

В моем понимании «качественный софт» - это по сути хорошо документированный код с тестами. И не важно, какой язык выбрали для разработки. При таком подходе (все-таки я так понимаю это де-факто стандартный подход в промышленном программировании) серьезные ошибки, которые сегфолят программу — очень большая редкость, и тут вопрос более филосовский: - пусть падает, или - пусть живет дальше с unexpected behavior.

Я бы переформулировал вашу фразу как «если ходить по улицам в западной европе, нужно ли на всякий случай носить с собой аптечку и огнетушитель»?

Большая такая неправда :) Просто с потолка. Как ни тужься, то такой длительной отладки на Java/.NET, как с С/С++ не потребуется.

Опять же: все зависит от подхода к разработке и ожидаемому качеству. Неужели XP+TDD+DDD на C++ намного сложнее чем на Java/.NET?

LORd
() автор топика
Ответ на: комментарий от Skynin

> Большая такая неправда :) Просто с потолка. Как ни тужься, то такой длительной отладки на Java/.NET, как с С/С++ не потребуется.

Если просто взять с улицы 10-х вчерашних студентов, одному сказать «ты тимлидер иниипет, забацайте ка мне ...», то места для C++ нет, согласен.

LORd
() автор топика
Ответ на: комментарий от mv

Не понял, откуда такой вывод. У Java меньше неочевидных моментов, чем у С++. В этом плане Java проще. В каких то случаях может быть сложнее.

В плане сложных языков могу назвать хаскель. Он сложнее и С++ и Java. Потому что там всё по-другому. А так и С++-ник может писать на джаве с минимальным временем переучивания, и наоборот.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Не понял, откуда такой вывод.

Твоя цитата?

И оказывается, что на Java софт такого качества писать проще, чем на С++. Поэтому его пишут на Java, а вовсе не из за того, что С++ чем то сложен.

«На Java пишут, потому что она проще C++, а не потому, что C++ сложен.» ;)

mv ★★★★★
()
Ответ на: комментарий от mv

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

Legioner ★★★★★
()
Ответ на: комментарий от mono

>>> под виндой есть .NET

Который, впрочем, тоже не особенно быстро летает и запускается.

сам по себе - нет, но MSO 2007 работает заметно быстрее, чем OOo.


Чо-чо - типа MSO 2007 написан на дерьмонете?
С чего ты это взял?

Ilshat
()
Ответ на: комментарий от Karapuz

Неужели даже модный Ribbon нативный?

mono ★★★★★
()
Ответ на: комментарий от Karapuz

не знал.. не знал. т.е 2010 им пришлось с нуля на .NET переписывать?

mono ★★★★★
()
Ответ на: комментарий от mono

пруф - википедия


Б****, там так многабукф. Ткни меня носом где про .NET и MSO 2010 написано?

Приложение на .NET категорически не может запускаться за 1 секунду, а у меня Word2010 запускается за 1 сек. Так что не знаю-не знаю

Karapuz ★★★★★
()
Ответ на: комментарий от mono

> попробуй поставить его без .NET.

Он даже в wine ставится совершенно без проблем

Ilshat
()
Ответ на: комментарий от mono

Я вот абсолютно верю что Finereader 10 написан на .NET от корки до корки. Причем еще 9 был на .NET, тормозил адски. 10 уже меньше тупит, так вот он в ГОЛОМ виде 90Мб оперы потребляет. И при распознавании на двухядерном проце запускает 2 дочерних процесса по 200Мб каждый, так что по памяти легко к 600-900Мб потребление подходит. Вот это .NET

А нативный Word 2010 жрет 12Мб, как и 2007, и 2003, и 2000, и Word XP

Karapuz ★★★★★
()
Ответ на: комментарий от mono

> MSO 2010 на .NET :) пруф - википедия (там тоже пруф есть на эту строчку).

Враньё - полностью нативный.
Читаем официальные требования - http://office.microsoft.com/ru-ru/products/HA101810407.aspx

«Для использования драйвера отправки на печать в OneNote® и интеграции со службами Business Connectivity Services необходимы компоненты Microsoft® .NET Framework 3.5 и (или) Windows® XPS.» - вот и все упоминания о дерьмонете.

Ilshat
()

К C++ у меня следующие притензии:

1. Сложная отладка. Желающим поспорить предлагаю сделать первичную диагностику проблемы:

Segmentation fault.
Есть идеи? GDB иногда спасает, но при срыве стека становится бесполезным. Пошаговая отладка может продолжаться до пенсии.

2. Много шансов напортачить по глупости, и да, сидеть в дебаггере. Пример:

#include <QtCore/QVariant>
QVariant f()
{
  result = blah-blah-blah;
  // return result;
}

GCC такое скомпилирует, в некоторых версиях даже warning не выведя, но на вызове упадёт. Пара седых волос гарантирована.

3. Убогая стандартная библиотека. То, что в Python делается без единой внешней зависимости, в C++ требует подключения сотен мегабайт сторонних библиотек. Либо написания своих велосипедов.

4. Очень плохая стандартизация. Дважды переносил код под оффтопиком: MinGW -> VS, Borland C++ -> VS. Оба раза чуть не поседел.

Мой выбор - Python, но, увы, не всегда переход возможен((

Divius ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.