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

В чем заключается сложность C++?

Не первый раз... не первый дестяок раз слышу что c++ сложный язык - и никогда не понимал - в чем же его сложность? Во многих школах задачи на нем решают, а если про доп образование - то это же просто царство си++. Или когда говорят что C++ чложный имеют в виду какое то супервысокоуровневое программирование?
Есть несколько причин для утверждения о сложности C++,
Во-первых, в нем очень много разных средств (функций, операторов, стандартных классов, возможности доопределения операций языка для созданных программистом типов и т. п.). Во-вторых, в нем много неинтуитивного, например, то 5/4=1, что "равно" это ==, что последний элемент массива a[n] имеет индекс n-1, и т. п. В-третьих, стенографии, то есть сокращений того, что для начинающих программистов было бы понятнее в более развернутой записи, хотя и ее тоже можно использовать. В-четвертых, в нем очень слабый контроль за действиями программиста (автоматические преобразования типов, отсутствие контроля за выходом индекса за границы массива и т. п.), что позволяет использовать много трюков, но и опасно,
СЯ
Сергей Якухин
52 762
Лучший ответ
Сложный - в смысле на нем можно писать сложные вещи и возложить кучу проверок на компилятор. Понятно, что "Hello, world" на нем написать элементарно.
Михаил Пахомов
Михаил Пахомов
83 338
Сложно проектировать иерархию классов
для больших программ.
ЮБ
Юрий Блинков
68 989
Сложность в уровне: программисту необходимо следить за памятью (временем жизни и освобождением объектов), диапазонами, типами, и т. д.: заботиться обо всем, что в более высокоуровневых языках отдано на управление интерпретатору/компилеру/предоптимайзеру, и прячется в абстракциях).
Больше гибкость и "хакабельность" == выше сложность. Это естественно.
Дмитрий Шмелёв
Дмитрий Шмелёв
85 202
> Или когда говорят что C++ чложный имеют в виду какое то супервысокоуровневое программирование?
Именно. А на C++ только такое и нужно на работе!

Попробуй хотя бы Boost изучить. Первый вопрос - "а что вообще изучать?" В плюсах вместе с Boost'ом и прочими библиотеками столько дерьма, что только в крупных компаниях профессионалы знают, что из этого юзать и как. И без контакта с этими ребятами (вплоть до стажировки) нормально не научиться. Какие уж тут школы.

А управление памятью (new, malloc) уже давно почти не используется. Но, кстати, да, самоучке может не хватить мозгов, что это не должно использоваться - и вот тогда будет порно :)
Даниял Жанбулов да я 1 раз использовал new в своей жизни - когда сам си учил), а так он вообще нужен? есть же вектора, да и массив давно можно делать не значения константной переменной
ООП, например... Его сделали таким "сложным" для того, чтобы легче было писать сложные вещи. В чем сложность в инструментах этого языка. Попробуй поизучай - узнаешь.
Никита Иванов
Никита Иванов
66 479
Даниял Жанбулов А что в ооп такого прям дико сложного? Писал я с использованием этого самого ооп пару прог, ничего криминального не заметил
в том что это надстройка
в огромном количестве всего всякого
РG
Ромиль Gft
30 070
У него излишне сложная и плохо продуманная грамматика, с большим количеством неоднозначностей. В нём слишком много правил, которые при этом настолько запутаны, что иногда прямо противоречат друг другу. Этот язык напичкан лишними и малополезными возможностями, которые лишь дублируют уже имеющиеся или нужны только чтобы обходить проблемы, порождаемые его непродуманностью (которых в других языках в принципе не возникает). Он недостаточно абстрактный, негибкий и небезопасный. Плюс к этому в нём слишком много вещей, которые "определяются реализацией" или приводят к "неопределённому поведению". А ещё у C++ неудобные и такие же непродуманные инструменты разработки.