|
Программирование >> Полиморфизм без виртуальных функций в с++
те области, в которые так и не смог проникнуть С, и поддержать программистов, которые ранее пе входили в сообщество С и С++. 6.5.3.2. Расширенные наборы символов Поддержка ограниченных наборов символов в языке С++ - всего лишь взгляд в прошлое. Более интересная и трудная задача - поддержка расширенных наборов символов, в которых число символов больше, че.м и коде ЛЗСП. Здесь есть два важных вопроса: □ как поддержать ма1П1пуляцин с расширеппыми набора.чп! си.мволов? □ как позволить употребление расипфеппых наборов и исходных текстах програм.м па С-Н-? Первую проблему комитет по стандартизации С ре1пил путем опрсдслепия типа wchar t для представления многобайтных символов. Кроме того, был введен тип wchat t [ ] для многобайтных строк, а функции семейства printf расширили для ввода/вывода типа wchar t. В С++ wchar t стал мастояппьм типом (а пе просто синонимом для другого типа, определеипого в С с помоп1ью typedef), стандартный класс wstring был введен для строк символов типа wchar t, и эти типы были поддержаны средствами потокового ввода/вывода. Таким образом, поддержан только один тип широких символов . Если про-гра.м.мисту нужно больп1е типов, скажем, для японских си.мволов, строк японских символов, символов иврита или составлешЕых из них строк, то существует, по крайней мерс, два альтернативных подхода. Можно отобразить такие символы в общепринятом, достаточно большом наборе (скажем, Unicode) и написать код, работаюптй с этим набором, а пе с wchar t. Допустимо также определить классы для каждого вида си.мволов и строк, паггри.мер Jchar, Jstring, Hchar и Hstring, и добиться, чтобы каждый из них правильно работал. Такие классы должны генерироваться из o6niero шаблона. Мой опыт показывает, что оба подхода уместны, хотя любое решение, затрагиваю1цее интернационализацию и разные наборы символов, становится наилучшим поводо.м для споров и эмоциональных оценок. Не .менее сложен вопрос о том, стоит ли - и если да, то как - разрешить расширенные наборы си.мволов в исходных текстах програм.м па С++. Разумеется, мне хотелось бы употреблять датские названия яблока, дерева, лодки и острова в программах, оперирующих такими понятиями. Разрешить их в комментариях нетрудно, те.м более что ко.ммептарии иа других языках встречаются доволыю часто. Допустить же символы из расширенных наборов в именах идентификаторов сложнее. В цело.м в программах па С и C+-I- я бы разрешил употреблять датские, японские, корейские, да и любые другие идентификаторы. Технически здесь ист ini-чего трудного. Локальный компилятор С, написанный Ке1юм Томпсоном (Ken Thompson), допускает в идентификаторах любые символы из набора Unicode. С другой стороны, могут возникнуть проблемы, связанные с переноси.мостью и способностью понимать чужие программы. Технически проблему пере[юсимости вполне можно решить. Однако английский нфает важную роль как международный язык общения профаммистов и, очевидно, не стоит отказываться от этого без серьезных причин. Для большинства программистов систематическое использование иврита, китайского, корейского и т.д. будет означать непреодолимый барьер для понимания программ, написанных другими людьми. Даже .мой родной датский язык для среднего англоговорящего программиста - проблема. Пока комитет по С++ не принял окончательного решения по этому вопросу, но ду.маю, что сделать это придется, и любое возможное решение вызовет ожесточенные споры. Глава 7. Заинтересованность и использование Одни языки создаются для решения задачи, другие - для доказательства той или иной точки зрения. Деннис Ричи 7.1. Рост интереса к С++ С++ проектировался, чтобы служить интересам пользователей. Это пе был академический эксперимент по созданию идеального языка программирования. Не являлся С++ и коммерчески.м продуктом, имеющим целью обогатить своих создателей. Поэтому у языка должен были быть приверженцы (см. табл. 7.1).
За двенадцать лет число пользователей С++ в среднем удваивалось каждые се.мь с половиной месяцев. И это еще осторожные оценки. Определить точное число пользователей С++ всегда было нелегко. Во-первых, такие реализации, как GNU С++ (G++) и Cfront, передаются в университеты, где на них работают студенты (неизвестно, сколько именно). Во-вторых, многие компании - и поставщики.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |