C ++ 20 Завершено


C ++ 20 получил окончательное одобрение, и стандарт будет опубликован к концу года. Итак, языки растут, и у C ++, похоже, нет тормоза, чтобы его замедлить.

C ++ – странный язык. Всякий раз, когда Бьярн Страуструп объясняет C ++, я думаю, что это хорошо спроектированный, простой в использовании и, что более важно, понятный язык. Затем мне нужно посмотреть на некоторый код C ++, написанный другим программистом, обычно демонстрационный или библиотечный код, и я думаю: «Что это за язык!». C ++ вырос так, что есть по крайней мере два способа сделать все, и как только вы отойдете от ядра языка, он становится очень чуждым.
Помня об этом, я подхожу к новым функциям, представленным в C ++ 20. Похоже, что наибольшее значение имеют модули, которые представляют собой другой уровень инкапсуляции. Модуль можно импортировать, и для использования доступны только явно экспортированные в нем имена. Хорошо, но я не думаю, что мне это действительно нужно. Как выразился Херб Саттер:
«Модули представляют собой новую альтернативу файлам заголовков, которые обеспечивают ряд ключевых улучшений, в частности, изолируют эффекты макросов и позволяют создавать масштабируемые сборки».
Хорошо, теперь мы можем избавиться от заголовков? Жаль, что мы не начали с модулей.
Вторая важная вещь – это сопрограммы. Я доволен темами, но меня обижают в таком низком уровне. Сопрограммы очень похожи на другие языки, которые не так легко сочетаются с потоками. Сопрограмма – это функция, которую можно приостановить и возобновить позже. Причина, по которой это часть языка, а не библиотека, заключается в том, что это функция без стека, которая хранит свое состояние где-то еще, а не в стеке. Вы можете использовать сопрограммы для создания асинхронных задач, генераторов и ленивых функций. Вы можете дождаться сопрограммы и уступить ее, находясь в сопрограмме – как в Python.
Единственная другая важная особенность – это «концепция». Звучит хорошо, но вы знаете, что это будет непросто, когда вы узнаете, что это расширение идеи шаблона. Это еще одна из тех хороших простых идей, когда вы впервые с ней сталкиваетесь. Затем вы натыкаетесь на какого-нибудь эксперта по шаблонам и думаете: “Это все еще C ++?” и “как это работает?” Концепции позволяют указывать ограничения для параметров шаблона, которые можно проверить во время компиляции. Это кажется достаточно невинным и лишь немного увеличивает сложность и позволяет вам контролировать использование шаблонов, но я думаю, что он, вероятно, будет больше всего использоваться мастерами шаблонов.
Суть в том, что теперь мы можем начать думать, как использовать модули для управления видимостью имен в классах, данных и функциях. Очевидно, что использование сопрограмм станет способом вынюхивать тех программистов, которые, скорее всего, будут чувствовать себя более комфортно в Python или JavaScript.
Так что, когда пыль начинает оседать, комитет ISO ускользнул от того, что начал работу над C ++ 23 ….

Майк Джеймс, главный редактор, является полиглотом команды программистов I, начиная с Fortan, который остается фаворитом. Он является автором книг JavaScript Jems: The Amazing Parts, Programmer’s Python: Everything is an Object и Programmers Guide To Kotlin, опубликованных I / O Press как часть библиотеки I Programmer Library. I / O Press также опубликовал его бестселлер QBasic: The Language of DOS.


Добавить комментарий