474 подписчика
Призраки в твоём компьютере
Вчера мы уже писали об аномалиях в программах и том, как избежать их.
Все такие аномалии в основном являются багами, лексическими и логическими ошибками, а также недоработкой при создании каких-либо языков программирования.
И всё же, в формате “городских легенд” и слухах можно услышать о так называемых “призраках” в коде — фрагментов синтаксиса, которые никто не писал и не понимает, как он работает и за что отвечает.
Конечно же, все такие рассказы возникли в начале компьютерной эры и чаще были следствием человеческих ошибок и невнимательности, а также стыка технологий на границе аналоговых и компьютерных методов. Такой была и история-прародитель таких баек — “призраки в Unicode”
Unicode - это стандарт кодирования символов, который включает в себя знаки почти всех письменных языков мира. Он был предложен в 1991 году некоммерческой организацией “Консорциум Юникода” и стал преобладающим стандартом в Интернете.
Unicode позволяет закодировать очень большое количество символов из разных систем письменности, таких как китайские иероглифы, математические символы, буквы греческого алфавита, латиницы и кириллицы, символы музыкальной нотации, делая ненужным переключение кодовых страниц.
При запуске Unicode, он поглотил в себя старые стандарты языков, такие как JIS X 0208. Это был основной стандарт японских кодировок, и вышел он в 1978 году. Но после его выхода люди обратили внимание на необычное явление: часть добавленных символов не имела явного происхождения. Было непонятно, что они обозначают и как их читать. Такие символы получили название «призраки».
Вот они: 妛挧暃椦槞蟐袮閠駲墸壥彁
Символы-призраки долгое время оставались загадочным и почти забытым явлением, но в 1997 году началось исследование их происхождения.
Согласно стандарту JIS, для каждого символа должен быть указан источник, однако даже если такая запись имеется, она часто не содержит конкретной информации: обычно в ней просто упоминается документ, из которого был взят символ.
Можно было бы предположить, что название поможет в поиске происхождения символов. Однако стоит отметить, что одним из наиболее распространённых «источников» для призраков был «Обзор национальных административных районов» — полный список всех японских топонимов.
Несмотря на сложности, расследование происхождения символов-призраков оказалось в целом успешным. Исследователи поговорили с каталогизаторами, которые участвовали в создании стандарта, и выяснили, что некоторые символы появились случайно в процессе каталогизации как ошибки.
Например, 妛 — это ошибка, возникшая при попытке записать «山 над 女». Эта фраза встречается в названии определённого места и, таким образом, подходила для включения в стандарт, но поскольку тогда ещё невозможно было напечатать целый составной символ, каталогизаторы напечатали 山 и 女 по отдельности, вырезали их и состыковали на листе бумаги. При копировании место стыка двух маленьких кусочков бумаги выглядело как чёрточка — и её по ошибке добавили к символу. Корректный символ добавили в JIS и Юникод гораздо позже — и он до сих пор не отображается на большинстве сайтов.
В итоге только для одного символа не нашли ни точного источника, ни какого-либо исторического прецедента: это символ 彁. Исследователи так и не знают, сканирование какого именно документа послужило основой для такого знака.
Итак, в 1978 году из-за серии незначительных ошибок возникло несколько символов. Ошибки оставались необнаруженными достаточно долго, поэтому символы закрепились в стандарте. Таким образом, эти призрачные символы, присутствуют в каждом компьютере на планете, скрываясь в малоизвестных областях таблиц символов. Ну а доказательством этого служит тот очевидный факт, что при прочтении этого поста вы их видите — сайты и мессенджеры их визуализируют.
Ставь ❤️ если статья понравилась!
3 минуты
8 мая 2024