Клуб нелюбителей C++

В своё время я посмотрел массу языков программирования (и продожаю смотреть), на некоторых — что-то писал, хотя бы реализацию известной американской считалочки. И мне всегда казалось, что C++ — самый уродливый, нелогичный и жуткий из всех языков. Оказалось — не казалось. Очень хорошая статья «За что я не люблю C++» Алексея Борескова — лишнее тому доказательство.
6 марта 2008 22:18

ivank (ivank.ru)
7 марта 2008, 00:40

Статья - гавно. Есть три утверждения:
1. C++ - не объектно-ориентированный язык. Это явная ложь или не понимание, того что есть ООП. Делегирование, и наличие reflection (ну и вообще метаинформации), ни в коем образе не являются необходимыми требованиями. Давайте ещц duck typing вспомним, ага?
2. На С++ не могут писать C программисты, без предварительного обучения. Логично, на Java, C#, Haskell, Perl, подставить по вкусу он тоже писать не умеет. За 25 лет можно много наворотить.
3. Если не знать, что некоторая библиотека делает "под полой", то результат может оказаться весьма небыстрым. В общем-то следствие простое - знай как работают библиотеки, на которые ты полагаешься.
3.5 (следствие) STL - небыстрая библиотека, да есть такое. Именно поэтому все, кто пишет высоконагруженный код рано или поздно от неё отказываются в пользу самописанных библиотек. Или делают свою perfomance-orientied версию STL (типа EASTL). У нас пошли по второму пути. Часть design flaws, из-за которых STL нельзя сделать быстрее обещают исправить в C++09.

Да, C++ ужасный язык, но в своей нише (высокопроизводительный код с нетривиальной логикой) - он один из лучших. Вероятно, есть _немного_ лучше (OCaml, который я очень люблю, D, может Objective-C), но в силу исторических причин, им не занять уже его места. Да, C++ "уродливый, нелогичный и жуткий" тоже в силу исторических причин, а не потому что его делали садисты.

ivank (ivank.ru)
7 марта 2008, 00:49

Это я к тому, что не любить C++ за перечисленные недостатки, это то же самое, что винить Perl за то, что нельзя сделать hash с perect-hashing в целях эффективности (или что ключём в хэше обязана быть строка, что часто неудобно), или что яве нужна JVM, и вообще у неё уродский JNI. Для каждой задачи есть свой инструмент, и C++ один из самых эффективных. Если кто-то пытается совать его во все дыры - сам себе злобный буратино.

(комментарий от 01:47 прошу стереть)

FX Poster (blog.fxposter.org)
7 марта 2008, 04:46

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

bolk (bolknote.ru)
7 марта 2008, 10:28, ответ предназначен ivank (ivank.ru):

В итоге, вы согласились почти со всеми положениями статьи. Я, наверное заметно, не считаю, что статья гавно. Она написана человеком, который умеет писать (на его счету несколько книг и статей) и давно в теме (15 лет программирования на C++ на момент написания статьи).

Комментарий сотру чуть позже — разберусь что глючит, у меня тут переход на другую площадку, всяческие падения постоянно идут.

Daevaorn (daevaorn.myopenid.com)
7 марта 2008, 10:40

Известный старый баян, который уже даже не веселит. Обычно его вспоминают те, кто не знает что сказать против С++, поскольку его не знают сами и им кажется что автор то знает, а это далеко не так.(к хозяину блога не относится:))

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

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

Не зачет в общем.

dkrnl.livejournal.com (dkrnl.livejournal.com)
7 марта 2008, 11:40

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

bolk (bolknote.ru)
7 марта 2008, 11:55, ответ предназначен Daevaorn (daevaorn.myopenid.com):

Если вы считаете, что автор «не осилил» C++, то попробуйте посмотреть на его статьи и книги ;) Очень вряд ли это так :)

bolk (bolknote.ru)
7 марта 2008, 12:02, ответ предназначен dkrnl.livejournal.com:

Ну почему же, вяжутся. STL и Python там в разных контекстах.

zencd.livejournal.com (zencd.livejournal.com)
7 марта 2008, 12:39

"с С++ я столкнулся 15 лет назад" != "15 лет программирования на C++"

Требование "Язык должен быть таким, чтобы программисты на С могли легко на него перейти" звучит нелепо (и чем автор занимался 15 лет..) в свете двух других, более важных: а) бинарной совместимости с программами на Си, б) компилируемости текстов на Си.

После обеда ещё почетайу :)

bolk (bolknote.ru)
7 марта 2008, 12:59, ответ предназначен zencd.livejournal.com:

Требование «язык должен быть таким, чтобы программисты на С могли легко на него перейти» в статье выдвигается от автора языка, это же легко понять.

barbudos.myopenid.com (barbudos.myopenid.com)
7 марта 2008, 14:23

Сататью писал человек который не грокк С++. Аргументы там детские. Про неявные преобразования вообще смешно. Там есть пример про передачу аргументов по ссылке и по значению (копия). В этом примере автор пишет что мол «если программист надеется через переданный в функцию объект получить какой-то результат (т.е. изменение в объекте), то он надеется совершенно напрасно - будет изменена лишь копия объекта».. такое может полагать только очень наивный новичок. Уже с первых дней бэйсика где было byref и byval мне было понятно чем отличаются эти два м способа. Автор несёт местами наимвную чушь. Всоё непонимание он проэцирует на язык. С++ конечно птичий язык (хотя не более чем перл), но логика в нём есть и если понял логику, то становится всё понятно и легко.
+ С++ выше по уровню чем С, но всё равно достаточно низкоуровневый (в сравнении с многими другими) поэтому писать сложные вещи на нём сложно, а простые нелегко.
Это как про английский язык или про китайский писать мол глупые языки, уродливые...

zencd.livejournal.com (zencd.livejournal.com)
7 марта 2008, 16:22

[[ С++ вообще не различает два существенно РАЗНЫХ понятия - абстрактнывй тип данных (АТД) и объект. ]]

Это автор не различает понятия: тип от инстанса.

Почему-то автор не смог переопределить оператор для struct Vector3D; я написал пример за 5 минут, и без виртуальных таблиц кстати.

[[ в С++ нет интерфейсов ]] - читать про абстрактные классы

[[ объектная модель просто отсутствует ]]

Читаем что же такое есть эта объектная модель - совокупность основополагающих принципов, лежащих в основе объектно-ориентированного проектирования; парадигма программирования, основанная на принципах абстрагирования, инкапсуляции, модульности, иерархичности, типизации, параллелизма и устойчивости. ( http://vmk.ugatu.ac.ru/book/buch/glossary.htm )

Мысленно сравним определение с тем что есть в С++ -- либо ссылка "Объектная Модель" в голове автора линкуется на совершенно отличные данные, либо он лжёт.

Дальше читать устал. Что касается предоставленных нам "целей создания С++", то хорошо бы их ещё проверить на историческую правдивость. Amen.

bolk (bolknote.ru)
7 марта 2008, 17:12, ответ предназначен zencd.livejournal.com:

Спасибо за критику. Вообще, хотелось бы услышать автора в комментариях, попробую ему написать.

bolk (bolknote.ru)
7 марта 2008, 17:15, ответ предназначен zencd.livejournal.com:

Какие смешный скобки вокруг цитат.

Написал автору статьи в аську, появится в онлайн, попрошу его прокомментировать все замечания.

barbudos.myopenid.com (barbudos.myopenid.com)
7 марта 2008, 17:23

Да, кстати, многие придирки к С++.. они скажем так с позиции сегодняшнего дня. По сути это как к старшему поколению придираться, мол не смеются над медведоми не знают что за ктулху такое...

bolk (bolknote.ru)
7 марта 2008, 17:26, ответ предназначен barbudos.myopenid.com:

Подозреваю, хорошие языки существуют уже по сто лет :)

Daevaorn (daevaorn.myopenid.com)
7 марта 2008, 18:05

Объем выхлопа из под пера не характеризует адекватность автора. Увы. Есть такой "писатель" Фаронов, много написал, но еда его собраты дельфины не переваривают ибо не в себе.

А эта статья старая, уже 100 обкритикованная на программистских форумах.

bolk (bolknote.ru)
7 марта 2008, 18:10, ответ предназначен Daevaorn (daevaorn.myopenid.com):

У него (автора) солидное, убедительно резюме.

preprocessor (prepor.ru)
7 марта 2008, 19:44

barbudos, object-c cуществует уже дохрена лет. И, кстати, не только сам язык, но и фреймворк, лежащий в основе Макоси, о чем говорят даже имена классов NS (NextStep)

А вообще вывод только один можно сделать из всего этого. Переходите, друзья, на Мак, тут и Object-C и питон и руби работают вместе с Cocoa (в .NET тоже, но .NET для винды это нифига не тоже самое, что Cocoa для мак).

Угу, я опять про макось :)

p.s. если openid недоступен, ошибка сверху:
Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in /home/u12474/bolknote.ru/www/_blok/openid.inc.php on line 245

Notice: Undefined offset: 1 in /home/u12474/bolknote.ru/www/_blok/openid.inc.php on line 432

bolk (bolknote.ru)
7 марта 2008, 20:27, ответ предназначен preprocessor (prepor.ru):

Вот, блин, сколько можно. Выкинуть что ли эту реализацию с cURL. Я что-то не заметил, что кто-то через HTTPS авторизуется.

Barbudos (barbudos.myopenid.com)
7 марта 2008, 21:01

С++ позволял использовать старые наработки на С. Это определило и выбор языка программистами и корявости самого языка, но и отсутствие некоторых важных деталей (дабы не переусложнять и сохранить производительность). претензии к статье в том, что аргументация мягко говоря хромает и производит впечатление, что писал статью человек случайный.
Критика сводится по сути к тому, что С++ видите-ли не даёт сразу мощного.. гм.. набора высокоуровневых инструментов. Мол обманули. Это как ребёнок, ожидавший чего то большего. ну своя ниша у языка и не его вина, что на нём пытаются писать всё, что только можно и не можно.
Автор оспаривает утверждение «Язык должен быть таким, чтобы программисты с С могли легко на него перейти» и впадает в рассуждение, что новые особенности языка понять программистам на С будет сложно. Как будто это новость. Но если воспринять утверждение в иной плоскости перехода на новый язык с учётом багажа опыта и написанных библиотек.. То оказывается что утверждение верно. В общем статья сомнительная. Ну а переход на Мак... Нужно начинать по сути с нуля, винда потому у всех стоит, что даёт совместимость старого ПО на новой версии Оси.А если и переходить на чтото новое, то на линух — бесплатно и законно. А если за деньги, то проще на винде покачто.

zorgg.nudnik.ru (zorgg.nudnik.ru)
8 марта 2008, 11:23

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

Мне как-то посоветовали спрашивать на собеседованиях "Что вам не нравится в С++" (у соискателей на должность С++-программиста). Люди обычно несут как раз вот такую ахинею. "Жопой чувствую, что что-то не так с этим С++, а объяснить внятно не могу".

zorgg.nudnik.ru (zorgg.nudnik.ru)
8 марта 2008, 11:33

Кстати, там куча фактических ошибок в комментариях к коду "примеров, почему С++ сосёт", я не верю, что автор хорошо знает стандарты.

Про "скрытые затраты" вообще бред. OMFG ОКАЗЫВАЕТСЯ КОГДА Я СОЗДАЮ ОБЪЕКТ НА ЭТО ТРАТЯТСЯ РЕСУРСЫ!!!!!!!!!!!! - так, что ли? Строка в том примере передается по ссылке, ничего лишнего не происходит. Я готов утверждать, что сгенерированный любым приличным компилятором иполняемый код не будет уступать по производительности аналогичному коду для любого другого языка, в подавляющем большинстве случаев, будет превосходить. Единственный спорный момент - 0-terminated vs pascal strings, но поскольку автор не указывает, как он планирует использовать строку дальше, этот момент можно считать находящимся за рамками обсуждения.

zencd.livejournal.com (zencd.livejournal.com)
8 марта 2008, 17:48

Objective-C оказался мне интересным - позволяет динамическое изменение типов, при этом (кажется) сохраняя скорость сравнимую с Си, плюс интроспекция.

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

bolk (bolknote.ru)
8 марта 2008, 20:54, ответ предназначен zencd.livejournal.com:

Да, мне самому Objective-C очень нравится, я впервый с ним столкнулся, когда попытался простенькое приложение под Мак написать.

warmland.ru (warmland.ru)
11 марта 2008, 14:17

Причем, что самое главное, компилятор в принципе может обнаруживать лишь ошибки в структуре языка. В то время как набор тестов способен определять ВСЕ ошибки.
После этого пассажа можно бросать чтение.

bolk (bolknote.ru)
11 марта 2008, 14:35, ответ предназначен warmland.ru:

Да, у меня тоже определённые сомнения закрались на этой фразе.

indeyets.livejournal.com (indeyets.livejournal.com)
11 марта 2008, 16:15

http://community.livejournal.com/ru_anti_cpp/

bolk (bolknote.ru)
12 марта 2008, 12:03, ответ предназначен indeyets.livejournal.com:

Спасибо, вот, например, чудесное:
http://community.livejournal.com/ru_anti_cpp/1101.html?mode=reply

id.rambler.ru/users/alphill@rambler.ru/ (id.rambler.ru/users/alphill@rambler.ru/)
30 декабря 2008, 19:13

А по моему С++ очень красивый язык. И я полность согласен с Р. Лафоре, в том, что "уже небольшой опыт общения с С++ позволит вам чувствовать себя гораздо комфортнее, а другие языки программирования будут казаться чересчур прихотливыми и избыточными". Так оно и оказалось. 4-х летний опыт Паскаля и ознакомления (Кстати в поисках достойной замены Паскаля) с другими языками, я абсолютно полностью согласен. Хотя в начале язык казался не просто сложным а элементарно не своим.:) все решаемо впринципе:) Я наконец то почувствовал что такое С++ и вот теперь точно могу сказать, что Паскаль хорош в обучающих целях, хотя мой препод по Разработке ПО и бизнес проектов, написал на нем 5 проектов, которые распостранены по всей России:)

А если не нравится попробуйте С#. Лично мне он нравится больше чем С++ чисто с синтаксической части. Короче красивее. Но я отказался от него из за его еще более абстрагированности.

Так что нефиг хаить С++!!! Это очень красивый язык!

bolk (bolknote.ru)
1 января 2009, 16:51, ответ предназначен id.rambler.ru/users/alphill@rambler.ru/:

Попробуйте посмотреть какие-то действительно красивые языки: JavaScript2, Python, Erlang. Из ряда Pascal/C++/C#, возможно C++ действительно кажется красивым.

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)