September 6th, 2020

Учебник Лафоре, библиография: основополагающие документы

Начало тут: учебник Лафоре, библиография: продвинутый C++.

* * *

1. The C++ Programming Language, Third Edition, автор: Bjarne Stroustrup, издание: Addison Wesley, 1997.

Бьёрн Страуструп (создатель языка C++):
https://ru.wikipedia.org/wiki/Страуструп,_Бьёрн
https://en.wikipedia.org/wiki/Bjarne_Stroustrup
Сайт: https://www.stroustrup.com

Перевод имени «Бьёрн Страуструп» неправилен, но является устоявшимся (об этом сказано в указанной статье русской википедии). На своем сайте Страуструп разъясняет, как правильно произносится его имя. Авторы статьи в русской википедии посчитали правильным вариантом «Бьярне Строуструп». Не удивлюсь, если через некоторое время и этот вариант зарубят. Я, кстати, недавно видел в магазине изданные в бумаге книжки с новым вариантом написания.

В 2013 году вышла четвертая редакция рекомендуемой Лафоре книги. По информации с сайта писателя он учел в новой редакции нововведения стандарта C++11. Как я понял из его пояснений, из-за недостатка места в бумажной книге все или часть упражнений были вынесены в интернет. Кроме того, главы, касающиеся проектирования программ, вообще исключены (их можно прочесть в предыдущей редакции книги).

1. The C++ Programming Language (Fourth Edition), 2013. На русский пока не переведена. Есть только перевод «специального издания», оригинал которого вышел в 2000 году (это исправленный и доработанный вариант третьей редакции): Бьерн Страуструп, «Язык программирования C++. Специальное издание», М.: Издательство «Бином», 2011 (1136 страниц).

Кроме этой книги Страуструп написал еще две показавшиеся мне любопытными книги:

Programming — Principles and Practice Using C++ (Second Edition), 2014. Предназначена для людей, которые никогда не программировали ранее, то есть для начинающих. Есть перевод на русский язык: Бьярне Страуструп, «Программирование: принципы и практика с использованием C++. 2-е издание», М.: ООО «И.Д. Вильямс», 2016 (1328 страниц).

A Tour of C++ (Second edition), 2018. Сжатый обзор стандарта C++ для опытных программистов. Учитывает нововведения C++17 и немного C++20. Есть перевод на русский язык: Бьярне Страуструп, «Язык программирования C++. Краткий курс, 2-е издание», СПб.: ООО «Диалектика», 2019 (320 страниц).

* * *

2. Стандарт: The Final Draft Information Standard (FDIS) for the C++ Programming Language, обозначение стандарта: X3J16/97-14882, где его можно получить: Information Technology Council (NSTIC), Washington, D.C.

Тут всё очень запутано. Попробуем распутать.

Под «Information Technology Council, Washington, D.C.» имеется в виду «Information Technology Industry Council» (по-русски что-то вроде «Совет предприятий из отрасли информационных технологий»):
https://en.wikipedia.org/wiki/Information_Technology_Industry_Council
Сайт: https://www.itic.org
Это американская ассоциация, органы управления которой находятся в городе Вашингтоне.

Эта ассоциация спонсировала создание американского комитета по стандартизации в сфере информационных технологий в 1961 году (его штаб-квартира тоже находится в городе Вашингтоне):
https://en.wikipedia.org/wiki/International_Committee_for_Information_Technology_Standards
Сайт: https://www.incits.org

До 1997 года этот комитет кратко именовался X3 (откуда в вышеупомянутом обозначении стандарта первые две буквы). В 1997 году он был переименован в «National Committee for Information Technology Standards», сокращенно NCITS. В учебнике Лафоре почему-то указана аббревиатура NSTIC... предположу, что это ошибка. С 2001 года этот комитет поменял название на «InterNational Committee for Information Technology Standards» (сокращенно INCITS).

Однако, всё это дела давно минувших дней. По обозначению стандарта видно, что он вышел в 1997 году. Комитет X3/NCITS/INCITS (рабочая группа «X3J16») разрабатывал его на протяжении 8 лет, с 1989 года. С 1991 года — совместно с рабочей группой «WG21» от международной организации по стандартизации «ISO».

В 1998 году этот стандарт был принят на международном уровне и стал известен под обозначением «ISO/IEC 14882:1998» (или «C++98»).

Обозначение актуального на сегодня стандарта по языку C++ — «ISO/IEC 14882:2017» (или C++17). Следующую версию стандарта, разработка которой пока еще не закончена, неофициально называют «C++20».

Где получить стандарт C++. Тут нужно понимать, что правообладателем финальных версий стандартов языка C++ является их разработчик — международная организация по стандартизации (ISO). Эта организация продает упомянутые стандарты у себя на сайте в электронном виде (в формате PDF) за совершенно конские деньги и только на английском языке.
https://ru.wikipedia.org/wiki/Международная_организация_по_стандартизации
Сайт: https://iso.org

Например, стандарт ISO/IEC 14882:2017 можно купить по адресу:
https://www.iso.org/standard/68564.html
за 198 CHF (это швейцарские франки, так как административный центр организации находится в городе Женеве в Швейцарии). В рублях это будет (по текущему курсу ЦБ РФ) примерно 16400 руб.

Однако, общественности доступны бесплатно рабочие версии стандарта, которые постоянно выкладываются на нескольких сайтах. Например, последняя (перед финальной версией) рабочая версия искомого стандарта (C++17) доступна по адресам:
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2017/n4659.pdf
https://github.com/cplusplus/draft/blob/master/papers/n4659.pdf

* * *

3. The Annotated C++ Reference Manual, авторы: Margaret Ellis и Bjarne Stroustrup, издание: Addison Wesley, 1990.

Страуструп у себя на сайте пишет, что эту книжку часто называли аббревиатурой ARM (по первым буквам названия). На английском «arm» означает «рука» или «вооружиться».

Лафоре пишет, что эта книжка использовалась в качестве основополагающего документа до появления вышеупомянутых книг и стандартов (и легла в основу стандарта), а вследствие их появления она устарела. То есть она была устаревшей уже в 2001 году!

Книга была переведена на русский язык: М.Эллис, Б.Строуструп «Справочное руководство по языку программирования C++ с комментариями», М.: Издательство «Мир», 1992 год (445 страниц).