LINUX.ORG.RU
ФорумTalks

Чем так плох С++?


0

0

Постоянно натыкаюсь на форуме на высказывания типа "...разочаровался в С++...", "...ненавижу С++...", "...убить бы того,
кто его придумал..." и т.п. Сам только начинаю изучать С++, и хотелось бы знать недостатки С++, послушать здоровую критику, потому как не понимаю, почему в последнее время все обозлились на него. На гугле и в википедии ничего толкового не нашел, только теоритические высказывания, вытекающие из стандарта языка. А хотелось бы послушать практикующих опытных программистов, потому как эта нелюбовь, IMHO, приходит с опытом. И кстати, также наталкиваюсь на подобные высказывания в сторону ООП. "...разочаровался в ООП, посматриваю в сторону функционального программирования...".
Не ради флейма, хочу понять причины.

нашел где спрашивать :)))

m57
()

А это похоже по принципу практической ценности языка. Чем больше на нём написано успешных как с коммерческой так и с др. сторон проектов, тем более он не любим на ЛОРе. И наоборот, языки интересные только с точки зрения чистого искусства вызывают множественные оргазмы.

1-я група (в которых "разочаровались")
1. Java
2 PHP
3. C++

2-я группа (от которых писают кипятком)
1. Пролог
2. Лиспоподобные

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

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

Т.е. если сказать проще, ЛОРовцы с жиру бесятся? :)
Или действительно есть приличные недостатки, которые заставляют смотреть в сторону других языков?

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

А Бэйсик? Бэйсик где? Особенно визуал от майкрософт!!! :)

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

Частичная специализация шаблонов классов у C++ в зачаточном состоянии, для функций вообще только полная :-)

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

> в Девелопмент есть флейм "Красивый код на С++".

А можно ссылочку на этот флейм? В поиске не смог найти

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

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

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

>Т.е. если сказать проще, ЛОРовцы с жиру бесятся? :)

Ты знал! :)

З.Ы. Но это не отменяет факт, что жаба и вижуалвасик - гуано. :)

anonymous
()

Моё мнение такое: это красивый, удобный, мощый и пр. язык, но становится он таким э-э-э в голове, только после того как прочитано несколько толковых обучающих книг. Новичкам читать Страструпа я бы не рекомендовал причём совершенно, поскольку дядечка пишет таким манером, что его совершенно невозможно читать с нулевой подготовкой. Я бы порекомендовал читать одновременно что-нибудь фундаментальное, где все по косточкам (The Deitels) и плюс вот это http://books.dore.ru/bs/f1bid510.html т.к. помимо основ хорошо бы овладеть прогрессивными техниками. Ну и про STL до кучи почитать и держать настольную книгу где т.ж. всё по косточкам. И мир засияет новыми красками.

eg0_dist0rti0n
()
Ответ на: комментарий от anonymous

не это детсад, нужен какой-нибудь флейм где vsl обсирает с++, с использованием слов: типизация, полиморфизм, императивщина, ублюдочный, Хиндли-Милнер, ленивый, лямбда исчисление, функтор, рекурсия, функциональный стиль, Y комбинатор ,сложность алгоритма, замыкание, континуэйшен ,неявный параллелизм ,доказательство корректности, рекуррентный, ДСЛ итп....

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

>не это детсад

Ну извините, не так давно на ЛОРе, пришел, когда Професора уже забанили :( Сам буду рад ссылке на что-то подобное...

anonymous
()
Ответ на: комментарий от eg0_dist0rti0n

>Новичкам читать Страструпа я бы не рекомендовал причём совершенно

Правильно! Александреску должен стать первой книгой начинающего сппшника! :) (Ну или Саттер, но это все же не то...)

anonymous
()
Ответ на: комментарий от r_asian

>Ответь за редиску!!!!! :-)

Предлагаю так же обсудить, чем Гном хуже КДЕ. Ну или что выбирают русские физики.

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

Это не интересно, давай лучше устроим досрочные выборы президента. Выдвигаю кандидатуры Алксниса и Поносова. :-)

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

ну вы скажете тоже - александреску !
это в последнюю очередь
начинать надо вот с этого - Marshall Cline , С++ ФАК
что касается разочарования в плюсах , то как я подозреваю , это связано с национальными особенностями профессии программиста применительно к России - обьективными причинами , конечно , а не субьективными :-)
мы не занимаемся фундаментальными разработками типа операционных систем
мы мало занимаемся разработками крупных инструментальных пакетов
в основном - я сужу по москве - народ пашет на бизнес и делает то , что ему говорят
это рутинное быдло-кодерство , в котором все меньше места остается для плюсов
отсюда и разочарование ...

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

Блин, начинается вода.
Но вобщем все понятно, всем спасибо.
Я знал, что он безупречен :)
Буду изучать дальше...

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

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

А кто про Труп Страуса вообге говорил? Пернул не в тему!

anonymous
()
Ответ на: комментарий от wanderer

izuchai. polezno znat' neskol'ko yazykov. A tam uvidish gde chto primenyat.

anonymous
()

если коротко: сpp болтается как говно в проруби - и не там, и не там. своей ниши фактически нету. более того, писать на говне, болтающемся в проруби как минимум не эстетично.

p/s а если серьёзно, то ты поймёшь чем плохи плюсы, юзая их на практике. желательно чтобы было с чем сравнить, например smalltalk

asgard
()
Ответ на: комментарий от r_asian

>Патрик - не гражданин РФ!

Он космополит и принадлежит всему миру. Распространяясь с каждой копией всем известного Дистрибутива.

anonymous
()
Ответ на: комментарий от asgard

> p/s а если серьёзно, то ты поймёшь чем плохи плюсы, юзая их на практике. желательно чтобы было с чем сравнить, например smalltalk

Вот и я про то, что понимание убогости какого-либо инструмента приходит только с практикой.

А что насчет ООП? Чем плоха парадигма?

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

> А что насчет ООП? Чем плоха парадигма?

что значит плоха ?
на то она и парадигма , чтоб ООП :-)
плюсы хороши тем , что ООП в нем реализовано фундаментально
эта ООП-практика по-любому закаляет программиста , выковывает такие навыки , которые потом пригодятся где угодно
если тебе даже и прийдется отказаться от плюсов , ты никогда не пожалеешь , что прошел эту школу

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

C++ плох единственной вещью - в руках программиста с руками из жопы и пулей в башке недостаточно строгая типизация языка и порой неоднозначный синтаксис позволяет писать некачественный и бажный код.

Такому программисту надо давать язык, который больно бьет по рукам за косые выверты. В руках нормального программиста C++ прекрасный и мощный язык. Просто надо прекрасно понимать что ты делаешь, и чем то или иное делание чревато.

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

> космополит

Нет такой страны, граждане которой именуются подобным образом, к тому же русским по белому написано:


Статья 81
2. Президентом Российской Федерации может быть избран гражданин Российской Федерации не моложе 35 лет, постоянно проживающий в Российской Федерации не менее 10 лет.


В пролёте твой Патрик, по всем параметрам кроме возраста (он ведь 66-го года кажется) даже если его за особые заслуги сделают гражданином РФ.

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

>А кто про Труп Страуса вообге говорил? Пернул не в тему!
Что в переводе на русский означает "Мне представляется неуместным, то что Вы соблаговолили упомянуть основателя языка". Так да? Я поясню: автор топика задавался вопросом: откуда проистекает нелюбовь к С++. И обратился с этим к широкой общественности, за пояснениями. Основываясь на собственном предшествующем опыте, а также на опыте моих хороших знакомых, я посчитал нужным ему ответить. Поскольку на мой взгляд, неприятие с++ зачастую возникает постольку, поскольку человек начинающий изучение языка с полного незнания, случается начинает именно с трудов глубокоуважаемого создателя языка. При этом эти труды малопригодны для изучения с нуля. И неприятие возникает именно при попытке усвоить столь трудноусваиваемый материал. Надеюсь я прояснил свою позицию по данному вопросу. Если же уделить некоторое внимание тому, в какой форме была сформулирована Ваша реплика, то должен заметить, что подобный способ ведения дискуссий представляется мне достаточно контрпродуктивным, в связи с чем у меня к автору будет небольшая аллегорическая просьба, а именно: придушить мой XXX губами.

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

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

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

То что вы рассказали - это не "высказывание о том, что C++ говно", это "высказывание ламера о том, что C++ говно".

anonymous
()
Ответ на: комментарий от kto_tama

>плюсы хороши тем , что ООП в нем реализовано фундаментально

поясните пожалуйста, если не затруднит

cvb
()
Ответ на: комментарий от anonymous

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

Приведите нам пожалуйста примеры таких языков.

hibou ★★★★★
()

> хотелось бы послушать практикующих опытных программистов, потому как эта нелюбовь, IMHO, приходит с опытом.

Вряд ли тебе кто-то это объяснит, кроме твоего опыта.

> хотелось бы знать недостатки С++

Этих недостатков очень и очень много, но каждый из них встречается нечасто. Какой бы недостаток ты не привел, тебе скажут, что в 99.9% случаев он не сказывается. Но в реальной программе ты натыкаешься на эти грабли много раз и как правило, в тех частях, которые предназначены для интенсивного реиспользования в других частях программы. Соответственно, получается кривое решение _в_основании_, после чего программа начинает расползаться.

Апологеты сейчас закидают меня тухлыми яйцами и попросят привести пример. Я его не приведу, т.к. этот пример занимает не одну тысячу строк кода, писанного под прессом многих страниц ТЗ. На хелловорлдах все языки практически одинаковы.

Кроме того, гибкость. В наши дни редко встречаются проекты, ведущиеся по схеме waterfall, все больше agile-методик. А тут C++ встает костью в горле, т.к. очередная маленькая хотючка заказчика способна поставить раком всю стройную архитектуру, любовно вылизанную к текущему моменту. И это играет даже бОльшую роль. Т.к. достаточно большой проект можно сделать неплохо даже на C++, при фиксированных требованиях, но на практике никто никогда не даст времени на вылизывание, а живет проект продолжительное время, в течение которого он обрастает новыми требованиями, на которые никто не расчитывал N лет назад при проектировании.

Высокоуровневые языки позволяют достигнуть "приемлемо плохого" качества при более чем приемлемых трудозатратах, и имеют более гладкую кривую роста трудозатрат при повышении требуемого качества. C++ требует астрономических затрат для поддержания проекта в рабочем виде, либо проект превращается в груду дымящихся core-файлами развалин.

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

> Приведите нам пожалуйста примеры таких языков.

Smalltalk, Objective-C, Haskell (последний мне просто нравиццо, хотя тут не в тему ;). Если нужно что-то вроде stl-я, то Objective-C++, -- позволяет взять вкусности из C++, а ООП парадигму реализует свою.

anonymous
()
Ответ на: комментарий от watashiwa_daredeska

> либо проект превращается в груду дымящихся core-файлами развалин

И пахнущих потным gdb-ом ;))

anonymous
()
Ответ на: комментарий от wanderer

> А что насчет ООП? Чем плоха парадигма?

я не говорил, что парадигма плоха. всё зависит от опыта, привычки и конкретной задачи. для чего-то будет удобнее юзать ооп, для чего-то императивщину, что чёрт возьми, ооп != c++

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

> что чёрт возьми, ооп != c++

Вы поаккуратнее с подобными заявлениями, а то щаз прийдут злые анонимузы (в отличии от меня доброго), и начнут бодаццо ;)

anonymous
()
Ответ на: комментарий от asgard

> поясните пожалуйста, если не затруднит

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

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

2watashiwa_daredeska:
Вы написали
>А тут C++ встает костью в горле, т.к. очередная маленькая хотючка заказчика способна поставить раком всю стройную архитектуру, любовно вылизанную к текущему моменту.

Но в любом учебнике по С++, да и в любой литературе, когда рассказывается про ООП, заявляется, что ООП как раз и является панацеей, и что ООП позволяет добавлять новые возможности, наращивать функционал программы без переработки интерфейсов, без ломания всех стурктур и пересоздания их заново...
Может я не так понял вас?

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

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

если взять реализацию ООП в smalltalk и в c++, возникает вопрос о вменяемости Страуструпа, к счастью си шарпа пока невидел

cvb
()
Ответ на: комментарий от anonymous

>То что вы рассказали - это не "высказывание о том, что C++ говно", это "высказывание ламера о том, что C++ говно".
Но я же не знаю чьи мнения взвешивал автор топика. И сколько там ламеров и сколько хакеров писало негативные отзывы. А если задаться вопросом: почему создатель топика вообще интересуется мнением людей уже знакомых с C++, то по всей видимости ответом будет то, что он пытается им овладеть. И в процессе овладевания у него появились сомнения: а на верном ли он пути, стоит ли тратить время на изучения языка о котором многие весьма нелестного мнения и т.п. После непродолжительного обмена мнениями он и написал >>Я знал, что он безупречен :) >>Буду изучать дальше... что только подтверждает моё впечатление о том, что это вопросы новичка. То есть я не стал отвечать в русле "религиозных войн", когда можно необозримо долго спорить например о том, где наиболее _правильно_ реализован механизм наследования - в C++ или SmallTalk. И вообще, мнения по таким пунктам формируются только уже у достаточно опытных кодеров. А поскольку речь идёт о вопросах начинающего изучение, я всего лишь посчитал нужным предупредить о том, какие барьеры могут предстать именно на начальных этапах. И постарался поостеречь от поспешной оценки С++ как скверного языка. Потому что запросто может получиться так, что учит человек по Страструпу, учит, и вдруг понимает, что это гавно. И при этом ему невдомёк, что насколько хорош язык, настолько плох способ подачи материала Страструпом. А такую точку зрения, что "Существуют языки, обладающие не меньшей по сравнению с C++ выразительной мощью и возможностями, и при этом избавленные от многих недостатков C++", я как-то особо даже всерьёз и не рассматриваю, потому что считаю, что если человека перестал устраивать де-факто промышленный стандарт, и ему тот же SmallTalk представляется более мощным, то это уже право человека оставаться при таком мнении. Да, я знаю, что на SmallTalke писалась система управления электропоездами метро(? что ли), где-то... Но моё мнение такое: профи занимающиеся такими задачами не будут тратить время чтобы выяснять, а не гавно ли C++. Но я сомневаюсь что автор слышал именно мнение профи, скорее всего это были те, кто просто неосилил С++.

eg0_dist0rti0n
()

Рулят асм и си. Остальное фтопку. Кроме второй группы, они тоже рулят, но в частностях. Ещё рулит ерланг.

Gharik
()

Ничем он не плох. Я пишу в основном на Си, но файлы с расширением сpp и компилю g++: иногда испльзую некоторые очень полезные штучки из Си++ - код получается понятным, быстрым и компактным. Фанатизмом к конкретному языку не страдаю, хотя если fpc в нужных мне местах будет побыстрее, то перейду на него %)

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

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

как замечательно плюсы позволяют добавлять новые возможности - видно по четырехкратному (емнип) переписыванию движка оперы "с нуля".

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