stringtranslate.com

Код

В коммуникациях и обработке информации код представляет собой систему правил для преобразования информации — такой как буква , слово , звук, изображение или жест — в другую форму, иногда сокращенную или секретную , для общения через канал связи или хранения на носителе информации . Ранним примером является изобретение языка , которое позволило человеку посредством речи сообщать другим то, что он думал, видел, слышал или чувствовал. Но речь ограничивает диапазон общения расстоянием, которое может передать голос, и ограничивает аудиторию теми, кто присутствовал при произнесении речи. Изобретение письма , которое преобразовало устную речь в визуальные символы , расширило диапазон общения в пространстве и времени .

Процесс кодирования преобразует информацию из источника в символы для коммуникации или хранения. Декодирование — это обратный процесс, преобразующий символы кода обратно в форму, понятную получателю, например, английский или/и испанский.

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

Теория

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

Прежде чем дать математически точное определение, вот краткий пример. Отображение

— это код, исходный алфавит которого — множество , а целевой алфавит — множество . Используя расширение кода, закодированная строка 0011001 может быть сгруппирована в кодовые слова как 0 011 0 01, а они, в свою очередь, могут быть декодированы в последовательность исходных символов acab .

Используя термины формальной теории языка , точное математическое определение этого понятия выглядит следующим образом: пусть S и T — два конечных множества, называемых исходным и целевым алфавитами соответственно. Код — это полная функция, отображающая каждый символ из S в последовательность символов над T. Расширение , является гомоморфизмом в , который естественным образом отображает каждую последовательность исходных символов в последовательность целевых символов.

Коды переменной длины

В этом разделе мы рассмотрим коды, которые кодируют каждый исходный символ (открытый текст) кодовым словом из некоторого словаря, а конкатенация таких кодовых слов дает нам закодированную строку. Коды переменной длины особенно полезны, когда символы открытого текста имеют разные вероятности; см. также энтропийное кодирование .

Префиксный код — это код со «свойством префикса»: в системе нет допустимого кодового слова, которое является префиксом (началом) любого другого допустимого кодового слова в наборе. Кодирование Хаффмана — наиболее известный алгоритм для получения префиксных кодов. Префиксные коды широко называются «кодами Хаффмана», даже если код не был создан алгоритмом Хаффмана. Другими примерами префиксных кодов являются коды вызова стран , части стран и издателей ISBN и вторичные коды синхронизации, используемые в стандарте беспроводной связи UMTS WCDMA 3G.

Неравенство Крафта характеризует наборы длин кодовых слов, которые возможны в префиксном коде. Практически любой однозначно декодируемый код типа «один ко многим», не обязательно префиксный, должен удовлетворять неравенству Крафта.

Коды исправления ошибок

Коды также могут использоваться для представления данных способом, более устойчивым к ошибкам при передаче или хранении. Этот так называемый код исправления ошибок работает, включая тщательно созданную избыточность с сохраненными (или переданными) данными. Примерами являются коды Хэмминга , Рида–Соломона , Рида–Мюллера , Уолша–Адамара , Бозе–Чоудхури–Хоквенгема , Турбо , Голея , алгебраические геометрические коды , коды с низкой плотностью проверки на четность и пространственно-временные коды . Коды обнаружения ошибок могут быть оптимизированы для обнаружения пакетных ошибок или случайных ошибок .

Примеры

Коды в общении, используемые для краткости

Кабельный код заменяет слова (например, «корабль» или «счет-фактура» ) более короткими словами, что позволяет отправлять ту же информацию меньшим количеством символов , быстрее и с меньшими затратами.

Коды могут использоваться для краткости. Когда телеграфные сообщения были последним словом в быстрой дальней связи, были разработаны сложные системы коммерческих кодов , которые кодировали полные фразы в отдельные рты (обычно пятиминутные группы), так что телеграфисты стали знакомы с такими «словами», как BYOXO («Вы пытаетесь улизнуть от нашей сделки?»), LIOUY («Почему вы не отвечаете на мой вопрос?»), BMULD («Вы скунс!») или AYYLU («Нечетко закодировано, повторите более четко»). Кодовые слова выбирались по разным причинам: длина , произношение и т. д. Значения выбирались в соответствии с предполагаемыми потребностями: коммерческие переговоры, военные термины для военных кодов, дипломатические термины для дипломатических кодов, любые и все из вышеперечисленного для шпионских кодов. Кодовые книги и издатели кодовых книг множились, включая одну, выпущенную в качестве прикрытия для американской Черной палаты, которой руководил Герберт Ярдли между Первой и Второй мировыми войнами. Целью большинства этих кодов была экономия на стоимости кабеля. Использование кодирования данных для сжатия данных предшествовало компьютерной эре; ранним примером является телеграфный код Морзе , где более часто используемые символы имели более короткие представления. Такие методы, как кодирование Хаффмана, теперь используются компьютерными алгоритмами для сжатия больших файлов данных в более компактную форму для хранения или передачи.

Кодировки символов

Кодировки символов являются представлениями текстовых данных. Данная кодировка символов может быть связана с определенным набором символов (набором символов, которые она может представлять), хотя некоторые наборы символов имеют несколько кодировок символов и наоборот. Кодировки символов могут быть широко сгруппированы в соответствии с количеством байтов, необходимых для представления одного символа: существуют однобайтовые кодировки, многобайтовые (также называемые широкими) кодировки и кодировки переменной ширины (также называемые переменной длины). Самые ранние кодировки символов были однобайтовыми, наиболее известным примером которых является ASCII . ASCII используется и сегодня, например, в заголовках HTTP . Однако однобайтовые кодировки не могут моделировать наборы символов, содержащие более 256 символов. Скрипты, требующие больших наборов символов, такие как китайский, японский и корейский, должны быть представлены многобайтовыми кодировками. Ранние многобайтовые кодировки имели фиксированную длину, что означает, что хотя каждый символ был представлен более чем одним байтом, все символы использовали одинаковое количество байтов («длина слова»), что делает их пригодными для декодирования с помощью таблицы поиска. Последняя группа, кодировки переменной ширины, является подмножеством многобайтовых кодировок. Они используют более сложную логику кодирования и декодирования для эффективного представления больших наборов символов, сохраняя при этом представления более часто используемых символов короче или поддерживая свойства обратной совместимости. Эта группа включает UTF-8 , кодировку набора символов Unicode ; UTF-8 является наиболее распространенной кодировкой текстовых носителей в Интернете.

Генетический код

Биологические организмы содержат генетический материал, который используется для управления их функциями и развитием. Это ДНК , которая содержит единицы, называемые генами , из которых происходит информационная РНК . Это, в свою очередь, производит белки посредством генетического кода , в котором серия триплетов ( кодонов ) из четырех возможных нуклеотидов может быть переведена в одну из двадцати возможных аминокислот . Последовательность кодонов приводит к соответствующей последовательности аминокислот, которые образуют молекулу белка; тип кодона, называемый стоп-кодоном, сигнализирует об окончании последовательности.

Код Геделя

В математике код Гёделя был основой для доказательства теоремы Гёделя о неполноте . Здесь идея состояла в том, чтобы сопоставить математическую нотацию с натуральным числом (используя нумерацию Гёделя ).

Другой

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

В маркетинге купоны можно использовать для получения финансовой скидки или возврата средств при покупке товара у (обычного) интернет-ритейлера .

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

Системы коммуникации для людей с сенсорными нарушениями, такие как язык жестов для глухих и шрифт Брайля для слепых, основаны на кодах движения или тактильных ощущениях.

Музыкальные партитуры являются наиболее распространённым способом кодирования музыки .

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

Криптография

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

Секретные коды, предназначенные для сокрытия реальных сообщений, варьирующиеся от серьезных (в основном шпионаж в военной сфере, дипломатия, бизнес и т. д.) до тривиальных (романтика, игры), могут представлять собой любой вид образного кодирования: цветы , игральные карты, одежда, веера, шляпы, мелодии, птицы и т. д., единственным требованием к которым является предварительное соглашение о смысле как отправителя, так и получателя.

Другие примеры

Другие примеры кодирования включают в себя:

Другие примеры декодирования включают в себя:

Коды и аббревиатуры

Акронимы и аббревиатуры можно считать кодами, и в определенном смысле все языки и системы письма являются кодами человеческой мысли.

Коды аэропортов Международной ассоциации воздушного транспорта — это трехбуквенные коды, используемые для обозначения аэропортов и багажных бирок . Коды станций также используются на железных дорогах, но обычно являются национальными, поэтому один и тот же код может использоваться для разных станций, если они находятся в разных странах.

Иногда кодовое слово обретает независимое существование (и значение), в то время как исходная эквивалентная фраза забывается или, по крайней мере, больше не имеет точного значения, приписываемого кодовому слову. Например, «30» широко использовалось в журналистике для обозначения «конца истории», а в других контекстах использовалось для обозначения «конца». [1] [2]

Смотрите также

Ссылки

  1. Коган, Хадасс «Так почему бы и нет 29» Архивировано 12 декабря 2010 г. в Wayback Machine American Journalism Review. Получено 3 июля 2012 г.
  2. ^ "Western Union "92 Code" & Wood's "Telegraphic Numerals"". Signal Corps Association. 1996. Архивировано из оригинала 2012-05-09 . Получено 2012-07-03 .

Дальнейшее чтение