Другие языки программирования и технологии

Какие, по вашему мнению, основные недостатки у C++ ?

Хотелось бы и о C услышать)
Рома Торощин
Рома Торощин
2 616
С++ заявлен трупом страуса как язык, претендующий на универсальность, так что предъявлять буду по полной.
1. Язык завязан на текстовый препроцессор, являющийся совешенно другим языком. Например, модульность в этом языке поддерживается только через препроцессор.
2. Любая реализация языка расширяет его, превращая в диалект, что доказывает синтаксическую неполноту языка.
3. Нет рефлексии при строгой типизации - существенный минус.
4. RTTI языком поддерживается лишь отчасти, реализация весьма убогая и тормозная. Ъ-псилюлюсник гнушается использовать этот механизм именно в силу убогости реализации.
5. Неоднозначная семантика языка. Одна и та же конструкция при определённых условиях выполняется по-разному. Благодаря данному фактору, макаки-кодыры считают C++ крутым языком: просто никто из них не в состоянии запомнить все нюансы (тысячи их! ) применения конструкций языка. Сила, братцы, не в сложности и замутности инструмента, а в соотношении (выразительность * функционал * простота) , если опустить такие факторы, как модель и парадигма программирования.
6. Отсутствие сборщика мусора при объектной ориентированности языка - очень существенный недостаток. Приходится постоянно дописывать конструкторы копий (и горе тому, кто таки забудет это сделать) и конструкторы с параметрами для конструкций вида

MyObjectType SomeMethod()
{
return MyObjectType(value1, value2);
}

для того, чтобы произошла оптимизация возврата по значению. Причём уверенным в том, что она таки произойдёт, быть никогда нельзя. Остаётся лишь уповать. А ведь возвраты по значению обширно используются при перегрузке операторов, например.
8. Монструозный язык шаблонов ломает мозг и убивает всякое желание работать с ними. Хотя и не спорю, что средство, в общем-то мощное, но тут девять: не поддерживается метапрограммирование. Несовременность (которая имела мето уже при рождении языка, гляньте Smalltalk и Modula-2) заставляет реализовывать кривую пародию метаконстукций макросами и шаблонами (других средств просто нет) , для этой цели совершенно не предназначенными, что превращает код в кровавое, непонятное месиво. Практически каждому программисту C++ в практически каждом проекте приходится делать такие вот конструкции-уроды.
10. Вообще крайне невыразительный язык.
11. Исключения поддерживаются языком лишь отчасти, причём реализация, по традиции, убога и тормознута, а семантика - противоречива, неполна и просто уёбищна. К тому же, напрочь отсутствует констукция finally.
12. Куча ненужных в этом языке элементов C навроде void *. С - отличный интсрумент, мне он нравится, но вот незадача: C++ -совершенно другой язык с другой парадигмой, стандартная сишная библиотка, например, там ну никуда не впилась.

Ну вот так вот примерно про С++, для начала :)
Александр Бжицкий
Александр Бжицкий
9 617
Лучший ответ
у С++ -это то что его некоторая часть нуждается в переработке.
Саня Темиртау
Саня Темиртау
9 229
Неудачная попытка сделать высокоуровневый язык из низкоуровневого.
Монструозный синтаксис.

А с Си все нормально. Главное везде его не пихать (8
имхо - слишком большой разброс стандартов.
для примера (относится только к С++-программерам) , сколько вы знаете способ объявления символьной строки?
и ведь все они вполне корректны и работают.
так же не всегда удобна система "файлов-заголовков". но это уже мнение меня, как человека, который пишет на C# :)
про MFC (относится к Мелкомягкой Визуал Студии) вообще говорить не буду - это удобно, только опять же слишком геморно.