LINUX.ORG.RU
ФорумTalks

За что не любят C++?


0

0

Достаточно часто всплывает эта тему, а почему не любят - никто не объясняет. Может где-то FAQ есть на эту тему?

Итак, за что не любят язык C++?

За плюсы.

Deleted
()

Приходилось слышать, что, если не нужно ООП, проще обойтись С, а если нужно - оно лучше реализовано в Objective C, но насчет последнего хз, сам не пользовался

wingear ★★★★
()

наверное потому что не Ъ. за это же не любят похапе, яву, дотнеты разные всякие. и за это же любят питон, си и лисп :D

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

Да и на Си это ООП реализуемо. GTK+ тому пример.

hibou ★★★★★
()

Напишу что именно мне не нравится в C++:

1) Отсутствие стандарта на name mangling. В результате один и тот же код, собранный разными компилятрами (а иногда и разными версиями одного компилятора), получается не совсместим по ABI.
2) Невозможность выносить шаблоны из заголовочных файлов. Это было в стандарте, но из-за очень высокой сложности реализации пришлось убрать.
3) Некоторые вещи очень сложны и неинтуитивны. В результате получаем кучу граблей, аккуратно присыпанных листвой =).
4) Куча граблей с кроссплатформенностью. Как это ни странно звучит. С++ успешно унаследовал все эти грабли от Си.

...

Deleted
()

"Компилируется медленно". И вообще, судят о недостатках ООП по FoxPro.

question4 ★★★★★
()

> Итак, за что не любят язык C++?

Итак, за что не любят толстых троллей, не осиливших C++?

Bioreactor ★★★★★
()

За то, что в С простреливаешь одну ногу, а в плюсах - обе :-)

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

> 1) Отсутствие стандарта на name mangling. В результате один и тот же код, собранный разными компилятрами (а иногда и разными версиями одного компилятора), получается не совсместим по ABI.

Вообще-то стандарт на ABI есть уже несколько лет как.

> 3) Некоторые вещи очень сложны и неинтуитивны.

Вот это - единственная реальная претензия. Правда, она стоит всех остальных.

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

> Вообще-то стандарт на ABI есть уже несколько лет как.

А на манглинг?

Т.е. если я соберу библиотеку в ICC, с классами и шаблонами (с конкретными специализациями), то я смогю её без проблем подключить к программе, собранной GCC? Вроде раньше такое получалось только со включением разных "режимов совместимости"...

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

>> Вообще-то стандарт на ABI есть уже несколько лет как.

> А на манглинг?

Да, и на него, как часть ABI. http://www.delorie.com/gnu/docs/gcc/gcc_110.html

> Т.е. если я соберу библиотеку в ICC, с классами и шаблонами (с конкретными специализациями), то я смогю её без проблем подключить к программе, собранной GCC? Вроде раньше такое получалось только со включением разных "режимов совместимости"...

Про ICC ничего сказать не могу, но сам ABI был изначально разработан для Itanium, так что наверняка Intel его поддерживает :)

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

>Куча граблей с кроссплатформенностью. Как это ни странно звучит. С++ успешно унаследовал все эти грабли от Си.

Господин Миронов Иван, назовите мне хоть одно средство разработки, где полностью решены проблемы с кроссплатформенностью?

Deleted
()

ООП можно реализовать даже на асме, было бы же желание.

По поводу Ц++... Стандарт типа. Промышленный.

Deleted
()

Не умеют кодить, вот и не любят. Остальным - по барабану, на чём кодить :)

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

> Господин Миронов Иван, назовите мне хоть одно средство разработки, где полностью решены проблемы с кроссплатформенностью?

Полностью - вообще нигде =). Но во всяких явах, перлах и пайтонах этих проблем заметно меньше, чем в C/C++.

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

>ООП можно реализовать даже на асме, было бы же желание.

Уже давно какбэ.

dikiy ★★☆☆☆
()

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

Begemoth ★★★★★
()

>Итак, за что не любят язык C++?

Размер кода по сравнению с Си уменьшается ну процентов на двадцать-тридцать в лучшем случае. При этом он сложнее Си минимум раз в десять и требует тщателного предварительного проектирования что нивелирует его достоинство в размере кода.

Absurd ★★★
()

2 pierre - спасибо за ссылку.

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

C - микроконтроллеры, нормальный язык, быстрый, простой, вездеживущий,

FoxPro - (Visual)(не к ночи будет помянут, БД) - дурной язык, но из-за некоторых моментов вполне себе имеющий нишу (или имеющий в нише?), ну и макроподстановки там рулят :)

PHP - пара страничек на уровне "Hello world с классами",

bash - давайте расскажите после него, что C++ - сложный и не для людей :), писал чуть-чуть скриптов

perl (w/o language), правил чуть-чуть скриптов, лучше бы писал...

java (то ещё говно, причём тормозное в плане разработки) - пара утилит для работы.

На что предлагаете посмотреть, чтобы понять, что C++ - страшный язык? :)

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

> Да и на Си это ООП реализуемо. GTK+ тому пример.

Сколько костелей это поделье подпирает? И как они тормозят?

> Отсутствие стандарта на name mangling

Грустно, но это пробелма реализации

> Невозможность выносить шаблоны из заголовочных файлов

А оно надо? в рамках раздельной компиляции это по моему не нужно

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

Ну это везде так :)

> оно лучше реализовано в Objective C, но насчет последнего хз, сам не пользовался

оно там другое

> Да, и на него, как часть ABI. http://www.delorie.com/gnu/docs/gcc/gcc_110.html

Это же по моему стандрат gcc

Ох. Еще можно кучу писать...

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

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

> Oberon, Limbo, Ada

На что предлагаете посмотреть, чтобы оценить использование этих языков для практических целей?

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

>На что предлагаете посмотреть, чтобы понять, что C++ - страшный язык? :)

D. После него написание cpp-кода будет сопровождаться стонами и страшными матюками.. :)

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

> D

опять же - пример серьезного проекта на D

> написание cpp-кода будет сопровождаться стонами и страшными матюками.. :)


возможно в вашем случае написание любого кода этим и сопровождается, но это говорит только о вас

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

Сменя языка в любом случае приводит к некоторым стонам.

Да, D не плох. Но он уже потерял часть черт С++

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

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

Разумеется, настоящие мужчины не стонут от отсутствия делегатов и foreach, настоящие мужчины молча сжимают зубы и годами ждут новых стандартов, а пока обвешиваются с ног до головы шаблонами и макросами. =)

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

> Разумеется, настоящие мужчины не стонут от отсутствия делегатов и foreach

В D я бы стонал от ограничености платформы и плавающего стандарта...

Извините, он не дорос до уровня стабильности даже питны

ЗЫ: Хотя я очень восхищен этим языком, и он мне очень нравится

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

> foreach

LOL, если бы ты знал про auto( и что макрос реализующий foreach с ним занимает пару строк ), то не писал бы таких глупостей

> делегатов


суровый .NET-ец? :) а теперь объясни почему ты без них жить не можешь

> а пока обвешиваются с ног до головы шаблонами и макросами. =)


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

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

> Ну auto пока еще даже не в стандарте :(

в gcc/mingw он относительно давно присутствует, в icc вроде тоже( читал, что есть - но не проверял ), а вот любителям visual прийдется ждать осени и релиза visual 2010

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

ну а что делать то?

у меня проект кросплатформенный. и пишут под винду с помощью вижуала

namezys ★★★★
()

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

На D написан порт Morrowind.

Если я правильно понимаю, то с выходом нового стандарта язык очень преобразится и станет ещё более выразительным и мощным, и быстрым (Ссылки на временные объекты/Семантика переноса). Но это так, рассуждения дилетанта.

А про делегаты - вот не понимаю я этой фишки, чем это от функторов отличается-то?

2 namezys - вот выйдет осенью - там и видно будет :) Только сдаётся мне, что стандарт будет называться c++0A :)

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