LINUX.ORG.RU

Почему многие кодеры считает С++ недоделкой?


0

2

Смотрю конференции разработчиков на ruby, python. Очень часто проскакивает стеб в адресс С++. Называют недоделкой, псевдо объектно ориентированным и т.п. Почему? Как вообще оценивается степень объектно-ориентированности языка? И почему такая любовь к С++ ?



Последнее исправление: Genesis_39 (всего исправлений: 1)

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

> Ну вообще говоря в том то и особенность Лиспа, что сказанной информации достаточно. Смотри на «100 разработчиков разных уровней», что сразу отметает Лисп, так как в нем больше 10 запутаются

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

Вот если у вас есть 50 млн, готовы вложить около 30 в проект на лиспе? ;)


если предметная область проекта к этому располагает - то да, но опять же - если будет проще написать часть кода на ObjС, например, то не вопрос

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

фигурируешь не объектами, а, в лучшем случае, классами

C++ - классно ориентированный язык :)

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

> как бы CL - тоже не «голый», да и к примеру из него легко можно использовать тот же Qt
ссылку на нетухлый биндинг пожалуйста

anonymous
()

Невозможно в адекватное время изучить все грани и тонкости плюсов, чрезмерно сложен. Дурацкий синаксис. В последнем стандарте количество ключевых слов медленно но верно подходит к сотне. ООП тоже сомнительно.

tensai_cirno ★★★★★
()

Проблема С++ в том, что он не прививает дисциплину кодирования.

Тут гораздо лучше проявляет себя Java.

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

Плюсы при халатном кодировании могут утечками всю оперативу пожрать, если что.

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

>Я всегда считал C++ за образец объектно-ориентированного программирования

что какие-то скриптовые языки смеют упрекать его в неполноценном ООП?

Я за свой опыт работы с C++ я бы и на секунду не променял его ни на bash, ни на perl.



facepalm.png Открой для себя ruby, python хотя бы.

anonymous
()

И, кстати, плюсую. Синтаксис у плюсов как ядерная война. Шаблоны эти с тысячами <<<<<>>>>>, virtual blah = 0. Слов что ли жалко? И это ещё цветочки. Будет вообще такое:

[](int x, int y) { return x + y; }

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

УМВР. А ты просто Убунтуоидный гномер. У них всегда кеды «не работают».

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

Уж лучше новые слова, чем ещё 100500 символов непонятного вида.

anonymous
()

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

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

Это на сервере можно сказать «памяти давно много», а когда на декстопе из тех же 4 гигов какой-нибудь эклипс пожрёт гиг с гаком это вам не шутки. И гуй у жабы тормозной.

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

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

#define FALSE 0
#define TRUE 1
LongLiveUbuntu ★★★★★
()

Работая с С++, возникает ощущения его недоделанности. Например, заводим мы private static member типа const std::vector<std::string>. А проинициализировать его негде. В java для этого есть статический блок, в C# - статический конструктор вроде, а в С++ тупо негде.

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

Да ну нафиг. Даже в сях есть stdbool.h, определяющий тип bool (который может принимать только значения 0 или 1). Но дефайны эти есть, без них - никуда.

С другой стороны, чем может быть «встроенный логический тип», как не int_32 (int_64 в 64-битных системах)?

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

Вот видишь как оно выходит.

Ну а что на счет условных операторов? Ведь по-прежнему уродство выходит.

Что будет, если я напишу в условном операторе, скажем вот так?

if(flag = someValue)
{
  doIt();
}
else
{
  doNotIt();
}
LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

Для Ъ, пропускающих сообщения. C++ использует true/false. Нет там макросов.

Что будет, если я напишу в условном операторе, скажем вот так?


Получишь ворнинг.

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

-Werror makes all warnings into errors, preventing compilation (see
also -Wfatal-errors).

Хотя если код (свой или используемый) сыпет ворнингами, то это будет сложнее.

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

Возможно, #pragma что-то может, но я не в курсе.

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

угребищный синтаксис, без костылей типа буста плюсы - херня.

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

спасибо за исповедь, бро

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

Я представить не могу корпоративную систему с кучей бизнес-логики на плюсах. Оно будет ТАК течь, что далеко за границей неюзабельности.

инженеры IBM смотрят на Вас как удобрение и качают головами :)

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

Проблема С++ в том, что он не прививает дисциплину кодирования.Тут гораздо лучше проявляет себя Java.

хахаха :) индусокод никогда не видели?

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

Работая с С++, возникает ощущения его недоделанности. Например, заводим мы private static member типа const std::vector<std::string>. А проинициализировать его негде.

и правильно что негде, нефиг наркоманские решения продвигать в релиз

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

Между прочим препроцессор ТАКОЙ шедевр проигнорирует

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

Компилятор будет ругаться: т.к. посчитает, что вы могли один знак = пропустить, лучше написать так: if((flag = someValue)) - и ругани не будет.

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

А вообще нужно приравнять такие конструкции к error.

С фига ли гости понаехали? Эти конструкции встречаются часто, поэтому они ошибками не считаются (но компилятор предупреждает - вдруг вы не хотели присваивание делать, а хотели проверить a == b).

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

>ты читать умеешь, нигер?

переход на личности характеризует тебя не с лучшей стороны

тащемта, это была метафора

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

>ты читать умеешь, нигер?

переход на личности характеризует тебя не с лучшей стороны

тащемта, это была метафора

не, ну ты точно читать не умеешь :) прежде чем обвинять других в отсутствии понимания метафор научитесь сам их понимать

для спецодарённых: это не переход на личности

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

> a lisp с чего вдруг стали считать ООЯП?

CL - вообще мультипарадигменный язык, тут он значительно переплюнул С++

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

До сих пор не могу нигде найти ответа и на лоре тоже спрашивал уже. Вот если я пишу на С++, то могу ли я заявлять, что на самом-то деле я пишу на Лиспе в стиле С++ и с парадигмой С++?

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

> Вот если я пишу на С++, то могу ли я заявлять, что на самом-то деле я пишу на Лиспе в стиле С++ и с парадигмой С++?

нет, для того же С++, например, есть реализация лиспа на шаблонах - это же не значит, что лисп - подмножество С++

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