vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2021-08-30 01:14 pm

Краткая история кодировок

Вначале были точки и тире, и морзянка витала над бездною. Аналого-цифровое преобразование текста в сигнал выполнялось рукой передающего телеграфиста, обратное аналого-цифровое - ухом принимающего. Вопрос кодировки не стоял.

5-bit

В 1830х годах в электрическом телеграфе Кука и Уитстона было применено 5-битное кодирование букв латинского алфавита посредством стрелок, поворачивавшихся под действием магнитного поля. Понятно, почему пять бит: необходимый минимум, чтобы передать 26 латинских букв.



К 1870-м годам Эмиль Бодо переизобрёл велосипед, и пятибитная кодировка массово пошла в народ. К 1900-м годам Дональд Мюррей придумал переносить текст через перфоленту, и добавил коды переключения регистров, чтобы передавать не только буквы, но и цифры и знаки препинания.



6-bit

Кодировка Мюррея была вполне компактной, но потребности росли. Народ хотел передавать не только новостные сообщения, но и газеты целиком. Большие-маленькие буквы, типографские символы, разметку текста и прочие ништяки. В 1928 году придумали и к 1950-м стали массово применять шестибитную кодировку.



Когда появились компьютеры, к ним быстро приспособили всё наработанное к этому времени телеграфное оборудование: телетайпы, перфораторы и прочее. Многие ранние компьютеры начинали с шестибитных байтов. К примеру, на БЭСМ-6 имена в объектных файлах была представлены в 6-битном коде TEXT. В машинном слове помещалось восемь символов, чего было вполне достаточно по тем временам.

7-bit

Проблема с шестью битами в том, что в них не удаётся без свистоплясок уместить минимально нужное количество символов, хотя бы от печатной машинки. В 1960-х годах получил распространение и был утверждён стандарт ASCII, ставший с тех пор "таблицей умножения" для всех компьютерщиков.



8-bit

Одних латинских букв маловато будет. Большинство европейских языков, даже основанных на латинице, имеет массу других букв. Не говоря уже про кириллицу, греков, армян, грузин и прочих обособленцев. Довольно быстро возникла идея расширить семибитный ASCII другими буквами для разных языков. На настоящий момент известно несколько сотен таких кодировок.


Unicode

Довольно скоро стало понятно, что 8-битное представление символов не решает задачу. Во-первых, китайские, японские и корейские иероглифы остались за бортом. А также арабские, индийские и другие языки. Во-вторых, даже для тех кто поместился в 8 бит, встаёт проблема перекодировок. Всякая программа, даже тривиальная сортировка строк, обязана знать и уметь перекодировать все кодировки, а их количество продолжает расти.

Решение пришло из проекта Plan 9. Дадим каждому символу 32 бита, но упакуем их компактно в 8-битные байты. Получилась кодировка UTF-8, на которую в последние пятнадцать лет все и перешли.

В 32-битном пространстве можно не стесняться. Народ продолжает запихивать в Unicode всё более и более забавные символы.


[personal profile] dijifi 2021-08-30 10:35 pm (UTC)(link)
Удивительно что стрелочные телеграфы были разработаны одновременно, а практически стали использоваться даже раньше чем азбука Морзе.
ircicq: (Default)

[personal profile] ircicq 2021-08-30 10:40 pm (UTC)(link)
Код Морзе - оптимизация. Естественно, что к ней пришли после использования кода фиксированной длинны
Edited 2021-08-30 22:43 (UTC)

[personal profile] dijifi 2021-08-30 11:01 pm (UTC)(link)
Точно? По википедии первый коммерческий электрический телеграф все-таки стрелочный и многоканальный. И экспериментальные установки, начиная со статического электричества, тоже многоканальные.

Забавно что первоначальная опубликованная идея электрического телеграфа 1753 года — один провод на букву, то есть по-современному one-hot encoding
Edited 2021-08-30 23:05 (UTC)

[personal profile] dijifi 2021-08-30 11:22 pm (UTC)(link)
В том же 1837 когда Морзе и Вейл встретились, стрелочный телеграф начал всерьёз работать на железной дороге.
juan_gandhi: (Default)

[personal profile] juan_gandhi 2021-09-01 02:32 am (UTC)(link)

Fuck, one-hot encoding for the telegraph! Like, like.

[personal profile] dijifi 2021-09-01 07:40 am (UTC)(link)
Так Морзе даже в очереди не стояло

[personal profile] dijifi 2021-09-01 07:41 am (UTC)(link)
Похоже я знаю кто такой C.M. из Ренфру. Есть тут у нас один путешественник по времени.
spamsink: (Default)

[personal profile] spamsink 2021-08-30 11:09 pm (UTC)(link)
обратное аналого-цифровое - ухом принимающего

Прием на слух - очень позднее изобретение. Много десятилетий телеграф с каким-нибудь из морзеподобных кодов (кстати о вопросах кодировки) был ленточный.
spamsink: (Default)

[personal profile] spamsink 2021-08-30 11:28 pm (UTC)(link)
Насчет кодировок: https://en.wikipedia.org/wiki/Morse_code#/media/File:Morse_comparison.svg
ITU ближе к Gerke, чем к Morse.

Что значит "изначально"? Прием морзянки на ленту использовался как минимум вплоть до 1920-х годов; достаточно вспомнить картины с Лениным у телеграфа.


paserbyp: (Default)

[personal profile] paserbyp 2021-08-30 11:34 pm (UTC)(link)
Раньше были соревнования и даже проводились чемпионаты мира по приему и передаче морзянки. Я в глубокой своей юности даже руку сорвал готовясь к соревнованиям по приему и передачи морзянки, но это было так давно… интересно, а сегодня кто-то этим мазохизмом ещё занимается?
Edited 2021-08-30 23:35 (UTC)
spamsink: (Default)

[personal profile] spamsink 2021-08-31 12:04 am (UTC)(link)
Судя по сайту рекордов Гиннесса, в начале 2000-х ещё занимались.

https://www.guinnessworldrecords.com/world-records/fastest-speed-for-a-morse-code-transmission/

Интересно, в какой стране количество рекордсменов Гиннесса на душу населения самое большое? Как бы не в Беларуси.
paserbyp: (Default)

[personal profile] paserbyp 2021-08-31 12:17 am (UTC)(link)
Спасибо!

[personal profile] igrdk 2021-08-31 10:36 pm (UTC)(link)
какая прелесть телеграфа Кука и Уитстона! я в восторге от изобретательности авторов!

строго говоря, он был не 5-битным: из 5 "каналов" одновременно использовались только 2, по одному из которых передавали +1, а по другому -1; и всё из-за ограничения "декодера":

(так передавали букву G)

итого кодировалось максимум 5*4=20 различных знаков (зато практически не требовалось обучение персонала, в отличие той же азбуки Морзе).

я даже не знаю, как назвать такую кодировку... двухсимвольная четырех-с-половиной уровневая? QAM20?
juan_gandhi: (Default)

[personal profile] juan_gandhi 2021-09-01 02:31 am (UTC)(link)

Тема EUC и Shift-JIS не раскрыта. В Японии еще в 90-е на ЖД использовали пятибитную кодировку.

[personal profile] flamedancerii 2021-09-01 03:52 pm (UTC)(link)
> Понятно, почему пять бит: необходимый минимум, чтобы передать 26 латинских букв.
Там не совсем так - каждая стрелка - двунаправленная, код +-2 из 5
https://upload.wikimedia.org/wikipedia/commons/f/fc/Cooke_Wheatstone_Telegraph_2.jpg
26 не помещается :)

P.S.:Прошу прощения за дубль, опередили пока собрался акк на dreamwidth зарегистрировать
Edited (Duplicate comment) 2021-09-01 15:54 (UTC)

[personal profile] dijifi 2021-09-01 04:57 pm (UTC)(link)
Кстати как насчет оптического телеграфа?
Какой код использовал римский император Тиберий передавая сообщения гелиографом с виллы на Капри?
Edited 2021-09-01 17:00 (UTC)

[personal profile] dijifi 2021-09-02 09:33 pm (UTC)(link)
не факт что у индейцев и африканцев было раньше чем у римлян.

Тут — серьёзная вещь: управление империей. То есть место и время известны. Жаль я не историк.