Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #65, АПРЕЛЬ 2006 г.

эволюция

КРИС КАСПЕРСКИ АКА МЫЩЪХ

Спецвыпуск: Хакер, номер #065, стр. 065-022-4


стандартизацией языка с++

занимается множество различных «инициативных» групп, основной «костяк» которых составляют ISO, IEC, JTC1, SC22 и WG21. Вместе они образуют единый комитет, который так и называется — «ISO/IEC/JTC1/SC22/WG21 The C++ Standards Committee». Его формальная глава — ISO, псевдообщественная организация, которая продвигает коммерческие решения своих создателей в качестве международных стандартов.

www.open-std.org/jtc1/sc22/wg21/ — главная страница комитета. Здесь можно подписаться на рассылку, узнать новости, поживиться различными сопроводительными материалами, но текста самого стандарта нет — он распространяется только на платой основе в печатном виде, причем бумага делается отнюдь не из конопли, а из деревьев. Бесплатно можно заточить только черновую версию, так называемый draft: www.open-std.org/jtc1/sc22/wg21/docs/papers/2001/n1316/body.pdf. Для «простых смертных» программистов, не озабоченных сертификацией своего компилятора, она вполне пригодна.

Как вариант, можно воспользоваться европейским ECMA-стандартом на язык C++/CLI, где практически слово в слово копируется полная версия стандарта на С++ (поэтому стандарт нарвался на множество упреков и нападок). Стандарт за номером 372 (www.ecma-international.org/publications/standards/Ecma-372.htm) — наш. В отличие от буржуазной ISO, Европа раздает полные версии стандартов с одной хапки, не требуя за это ни денег, ни даже традиционной регистрации. Однако, пользуясь ECMA-372, необходимо быть готовым к любых неожиданностям и несовпадениям с ISO/IEC С++ (поэтому дальше по тексту упоминается только ISO/IEC, а ECMA используется как заначка).

Согласно ISO/IEC, стандарт, которым описывается новый С, получил номер 14882, за которым идет год, в котором был принят этот стандарт. В настоящее время самой ходовой версией является стандарт от 1998 года, обозначаемый как ISO/IEC 14882:1998 (далее по тексту «старый стандарт»). Последняя редакция принята в 2003 году (новый стандарт), она реально поддерживается только несколькими компиляторами, и то криво. Следующий стандарт выйдет примерно в 2007-2010 году и будет содержать кучу нововведений.

Списка изменений комитет не ведет и тем самым вынуждает нас сравнивать различные версии стандарта самостоятельно, вычитывая и сверяя порядка 750-ти листов на английском. Правда, в Сети можно найти неофициальный перечень изменений, подготовленный третьими лицами: www.acceleratedcpp.com/authors/koenig/c++std/revisions.pdf. Здесь обнаруживается целых 300 страниц изменений, большую часть которых составляет чисто «редакторская» правка, устраняющая разночтение в формулировках. Ковыряться в этой навозной куче — неинтересное и неблагодарное занятие. По существу, что нового появилось в стандарте? Берешь какой-нибудь компилятор, наиболее полно поддерживающий новый стандарт (например EDG C++ Front End), и читаешь What's new (можно слить с www.edg.com/cpp_ftrs.html).

изменения

Назад на стр. 065-022-3  Содержание  Вперед на стр. 065-022-5