printУлучшения языка C

printИстория развития C++

Язык C++ возник в начале 1980-х годов, когда сотрудник фирмы Bell Laboratories Бьёрн Страуструп придумал ряд усовершенствований к языку C для собственных нужд. До начала официальной стандартизации язык развивался в основном силами Страуструпа в ответ на запросы программистского сообщества. В 1998 году был принят международный стандарт языка C++, а в 2003 году в стандарте были сделаны исправления неточностей и внесены небольшие изменения. Например, была введена разница между формами операции new T и new T() (см. тему new и delete).
В 2005 году к STL были добавлены новые классы и шаблоны (регулярные выражения, хэш-таблицы, кортежи, массивы фиксированного размера) и функции для генерации случайных чисел. Эти расширения должны были войти в предыдущий стандарт языка, но разработчики решили сделать провести дополнительное обсуждение и согласование перед стандартизацией. Большая часть нововведений была взята из библиотеки boost.
В 2011 году в стандарт языка С++ были внесены изменения, упрощающие написание программ, добавлены параллелизм и лямбда-выражения, которые стали необходимостью в современных языках программирования.
В 2011 году был принят также новый стандарт языка С, в котором также добавлен параллелизм. Стоит отметить, что некоторые кардинальные изменения в языке С, которые появились еще в стандарте 1999 года, не нашли отражения в новом стандарте С++ (например, массивы переменного размера, указание номера элемента массива при инициализации, комплексный тип). Напротив, в стандарт С99 добавлены возможности из С++ или их аналоги, позволяющие минимизировать изменения при копировании кода (например, объявление переменных в любом месте программы, макросы, генерирующие вызов нужной функции в зависимости от типа аргумента).
В 2014 году был разработан очередной стандарт C++, который немного увеличил удобство языка (см. константы), добавил некоторые обобщения (см. лямбда-выражения здесь и тут) к революционным изменениям, которые были сделаны в стандарте 2011 года.
В стандарт 2017 было решено добавить параллельные версии алгоритмов, работу с файловой системой, дополнительные атрибуты для управления предупреждениями при компиляции.
В стандарте 2020 также было сделаны существенные изменения в языке: добавлены модули, сопрограммы, концепции, операция трёхзначного сравнения, constinit и consteval. В библиотеку были добавлены диапазоны и классы для представления части строки или вектора, работу с датами и часовыми поясами. К сожалению, в новый стандарт не попало предложение Б.Страуструпа и Г.Саттера об унификации вызовов методов и функций: можно писать как x.size(), так и size(x).
loading