Международная организация по стандартизации единогласно одобрила новую версию одного из наиболее популярных в мире языков программирования. Язык C++11, по словам его создателя Бьёрна Страуструпа, будет “более естественным и по-прежнему эффективным” и включит в себя новую стандартизированную модель памяти.

Бьёрн Страуструп начал работать над усовершенствованиями для Cи, которые сначала именовались “C with Classes”, еще в 1979 г. Получившийся в результате язык программирования был назван C++ и в 1998-м опубликован в качестве международного стандарта. С тех пор он широко используется, в том числе в Microsoft Windows 7, Apple OS X и Google Chrome. Среди разработчиков Linux он не столь популярен, тем не менее играет ключевую роль в качестве “языка пингвинов” и использовался при создании KDE.

Теперь, согласно записи от 12 августа в блоге главы комитета ИСО по C++ Херба Саттера, существенный пересмотр был одобрен единогласно. Он пишет: “Новый пересмотр C++, который мы назвали C++0x, стал теперь международным стандартом! Женеве потребуется несколько месяцев, чтобы его опубликовать. Но мы надеемся, что это произойдет в течение года, после чего мы сможем назвать этот язык C++11”.

C++ был создан как универсальный язык программирования, мощный и более простой в использовании по сравнению с Cи благодаря объектной ориентации, говорится в статье, опубликованной 15 августа на сайте The Register. Но, добавляет автор статьи Гевин Кларк, он остается сложным языком, что побудило Джеймса Гослинга из Sun Microsystems создать Java и позволило ему с гордостью утверждать, что Java — это C++ “без пистолетов, ножей и дубинок”.

В “Вопросах и ответах”, обновлённых 13 августа, Страуструп пишет: “C++11 производит впечатление нового языка. Просто его элементы объединены лучше, чем прежде. Кроме того, я считаю, что высокоуровневое программирование стало более естественным, оставаясь по-прежнему эффективным. Если вы рассматриваете C++ всего лишь как улучшенный вариант Cи или как объектно-ориентированный язык, вы неправы”.

“Ваши идеи можно будет реализовать с помощью списков, объектов, классов (например, управления значениями по умолчанию), иерархий классов (таких, как наследуемые конструкторы), шаблонов, псевдоимен, циклов, потоков и т. д., а не одного механизма на все случаи жизни”, — поясняет Страуструп.

Помимо поддержки параллелизма и стандартизированной модели памяти к новым функциям C++11 относятся следующие:

  • лямбда-выражения, которые позволяют локально определять функции в точке ызова;
  • автоматическое определение типа данных и функции decltype;
  • унифицированный синтаксис инициализации;
  • функции deleted и defaulted;
  • новое ключевое слово nullptr, означающее константу “нулевой указатель”.

Доступность

По словам Страуструпа, недавно одобренный стандарт C++11 должен быть опубликован к концу нынешнего года. При этом Страуструп саркастически замечает, что “даже небольшая бюрократическая проволочка могла бы превратить его в C++12”. О том, когда его начнут поддерживать производители компиляторов, не говорится ни слова.