Особенности национального языка в программном коде [Олег Иванович Цилюрик] (pdf) читать постранично, страница - 2

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

работы с текстовой информацией,
отличной от англоязычной. Сначала мы рассмотрим здесь вопросы локализации в языке C. Затем
то же повторно будет рассмотрено на языке C++. Это классика … и POSIX API. И только затем
вернёмся коротко к обзору современных (более поздних) языков программирования.
Основной упор далее будет сделан не на словесные описания, а на иллюстрации на примерах
фрагментов кода, которые не нуждаются в особых пояснениях. Соответственно, этот материал не
рассчитан на тех, кто первоначально изучает язык C (или C++, или любой другой), а предполагает
уже достаточно обстоятельное знание языков.
Во второй части рассматриваются вопросы работы с регулярными выражениями в языке C.
Совершенно естественно, что они в полной мере могут быть применимы и в C++. Затем повторно
будет рассмотрена специфика исключительно C++. И далее, как и раньше — более современные
языки.
В примерах здесь использованы только очень простые, вплоть до тривиальных, образцы
регулярных выражений. Это сделано сознательно для упрощения, и объясняется это тем, что
предметом нашего рассмотрения является не составление регулярных выражений и их синтаксис,
а поведение самих регулярных выражений с Unicode строками, когда понятия символ и байт
перестают быть тождественными.
Всё последующее изложение построено на стандартах POSIX и использовании исключительно
операционной системы Linux. К Windows, из-за совершенно отличного там представления
локализованных строк (Unicode, UTF-16), всё сказанное не относится вообще … кроме, разве что,
самых общих фактов о структуре строчных данных.

Разметка и код
Цитируемые из сторонних источников фрагменты в тексте выделяются курсивным шрифтом.
Протоколы выполнения команд и листинги программных кодов выделяются моноширинным
шрифтом. В примерах выполнения команд, как это часто делается, вывод программы (системы) на
терминал показывается обычным шрифтом, а пользовательский ввод с терминала пользователем
— жирным шрифтом.
Архив всех представленных в тексте примеров кода (с прилагаемыми файлами протоколов сборки,
изменений, выполнения, тестирования), чтобы не восстанавливать их из текста, может быть
свободно скачан по ссылкам в блоге автора: http://mylinuxprog.blogspot.com/2016/09/cc.html.
В примерах, как это часто делается в публикациях, вывод программы (системы) на терминал
показывается обычным шрифтом, а ввод с терминала пользователем — жирным шрифтом, иначе
в показанных потоках вывода крайне сложно уследить, что является исходными сроками, а что
результатами сопоставления с образцом.

Пара слов про авторские права
В заключение — относительно авторских прав. Ничто из представленного в этом тексте не
заимствовано ни из каких источников. Все представленные варианты решений — авторские, со
всеми возможными их ошибками и неточностями. Весь этот текст и все сопутствующие ему
программные коды предоставляется под лицензией Creative Commons Attribution ShareAlike
(«общественное достояние»), что означает:
... допускается копирование, коммерческое использование произведения, создание его
производных при чётком указании источника, но при том единственном ограничении, что
при использовании или переработке разрешается применять результат только на
условиях аналогичной лицензии.

Проблемы локализации (вместо предисловия)
Вселенная – некоторые называют её Библиотекой –
состоит из огромного, возможно, бесконечного числа
шестигранных галерей, с широкими вентиляционными
колодцами, ограждёнными невысокими перилами. Из
каждого шестигранника видно два верхних и два нижних
этажа – до бесконечности.
Хорхе Луис Борхес «Вавилонская Библиотека»
Предметом рассмотрения этих настоящих заметок являются вопросы использования
национальных языков (русского, арабского, китайского … любых отличных от английского) в
программном коде, главным образом для операционной системы Linux или подобных. Основное
внимание будет уделено традиционным языкам C/C++ (классика жанра), но и беглому обзору
состояния дел в современных, более новых языках программирования (Python, Go, Rust, Kotlin…)
будет также бегло уделено некоторое внимание.
Как очень скоро будет показано и станет понятно, что после внедрения в IT-практику представлений
(символов) Unicode, особенности использования самых разнообразных языков нивелировались и
становятся единообразными (алфавитных или иероглифических систем, или даже систем
специальных символов, таких как: математических или нотных символов). Важно чтобы такой набор
символов (алфавит) отображался в кодировке Unicode! Поэтому во всём дальнейшем мы можем и
будем везде употреблять термин «национальный язык» применительно не только к русскому
языку, но расширенно — к любому языку: арабскому, китайскому, японскому …, более того, даже к
языкам специальной нотации, например, к языку математических символов.
Вопрос использования национального языка в программном коде