История изменений
Исправление zx_gamer, (текущая версия) :
Так называемые «стандарты» C++ после ANSI C++ это ярчайший пример дебилизма.
а) STL. Кто этот кусок говна, а иначе его назвать невозможно, затолкал в язык? Между прочим, его автор А. Степанов заявлял, что ООП — это методологическая ошибка. Именно поэтому там нет интерфейсов, нет нормальных методов, только «универсальные» функции, которым надо передавать 2 итератора. И это лишь одна малюсенькая часть почему STL ужасен.
б) «Магия». В язык не добавляют новых полезных конструкций. Вместо этого пишут функция «std::что-то_там» должна сделать то-то (при том, что в языке нет средств для того, чтобы сделать это). STL, которая никуда не годится (см. п. «а»), становится неотделима от языка. То есть вместо реально нужных возможностей языка, мы имеем какую-то уродливую «библиотеку», работающую на чистой магии.
в) Поломка обратной совместимости. Твари засидающие в ISO считают, что если сказать, что throw в объявлении функции больше не работает — это нормально. Выпилить какой-нибудь класс из STL (например, std::auto_ptr) — нормально. Сказать что цикл «without side effects» — UB — нормально. Причем это будет делаться с таким лицемерием: «ну в более старых стандартах не была описана модель исполнения, так что это всегда UB было».
г) Добавление ненужного хлама. Вот зачем =delete? Конструктор по умолчанию, конструктор копирования, operator= и т.п. нельзя просто private сделать, как всегда и делали? И подобной фигни очень много.
д) Добавление бесполезных (и очень сложных!) спорных решений. Модули, корутины и т.п. Модули вообще ничего не дают (только не позволяют использовать макросы), при том, что их не поддерживает ни одна известная библиотека, а значит это бесполезное усложнение компилятора. Корутины (правда другие, stackfull) можно реализовать библиотечно, например Boost.Coroutine, stackless невозможно отлаживать. И т.д. и т.п.
Поэтому С++ новее ANSI C++ я считаю ложкой меда в бочке дегтя.
Исходная версия zx_gamer, :
Так называемые «стандарты» C++ после ANSI C++ это ярчайший пример дебилизма.
а) STL. Кто этот кусок говна, а иначе его назвать невозможно, затолкал в язык? Между прочим, его автор А. Степанов заявлял, что ООП — это методологическая ошибка. Именно поэтому там нет интерфейсов, нет нормальных методов, только «универсальные» функции, которым надо передавать 2 итератора. И это лишь одна малюсенькая часть почему STL ужасен.
б) «Магия». В язык не добавляют новых полезных конструкций. Вместо этого пишут функция «std::что-то_там» должна сделать то-то (при том, что в языке нет средств для того, чтобы сделать это). STL, которая никуда не годится (см. п. «а») становится неотделима от языка. То есть вместо реально нужных возможностей языка, мы имеем какую-то уродливую «библиотеку», работающую на чистой магии.
в) Поломка обратной совместимости. Твари засидающие в ISO считают, что если сказать, что throw в объявлении функции больше не работает — это нормально. Выпилить какой-нибудь класс из STL (например, std::auto_ptr) — нормально. Сказать что цикл «without side effects» — UB — нормально. Причем это будет делаться с таким лицемерием: «ну в более старых стандартах не была описана модель исполнения, так что это всегда UB было».
г) Добавление ненужного хлама. Вот зачем =delete? Конструктор по умолчанию, конструктор копирования, operator= и т.п. нельзя просто private сделать, как всегда и делали? И подобной фигни очень много.
д) Добавление бесполезных (и очень сложных!) спорных решений. Модули, корутины и т.п. Модули вообще ничего не дают (только не позволяют использовать макросы), при том, что их не поддерживает ни одна известная библиотека, а значит это бесполезное усложнение компилятора. Корутины (правда другие, stackfull) можно реализовать библиотечно, например Boost.Coroutine, stackless невозможно отлаживать. И т.д. и т.п.
Поэтому С++ новее ANSI C++ я считаю ложкой меда в бочке дегтя.