Код: понятие, виды и применение¶
Код — в широком смысле система правил преобразования информации, позволяющая представить данные или сообщение в форме, удобной для передачи, хранения или обработки. Термин применяется в информатике, телекоммуникации, генетике и смежных областях, обозначая как формальные системы кодирования, так и текст программного обеспечения, записанный на языке программирования.
¶Основные понятия кодирования
Кодирование — процесс замены одного представления информации другим по заданным правилам. Код (кодовая система) представляет собой конечный набор символов (алфавит кода) и правила их использования. Основные характеристики кодовой системы:
- Избыточность — отношение числа кодовых символов к числу передаваемых единиц информации. Избыточность обеспечивает обнаружение и исправление ошибок при передаче.
- Однозначность — возможность однозначного декодирования, то есть восстановления исходного сообщения.
- Достаточность — возможность закодировать все элементы исходного алфавита.
Простейшим примером является двоичный код, в котором используются два символа — 0 и 1. Двоичное кодирование лежит в основе всех современных цифровых устройств: в компьютерах электрические сигналы «есть/нет» соответствуют единице и нулю.
¶Виды кодов
¶По назначению
- Информационные коды — служат для представления данных (ASCII, Unicode, коды изображений и звука).
- Канальные коды — обеспечивают защиту при передаче по каналу связи с помехами (коды Хэмминга, свёрточные коды, коды Рида — Соломона).
- Коды сжатия — уменьшают объём данных без потери или с допустимой потерей качества (JPEG, MP3, DEFLATE).
¶По способу построения
- Позиционные коды — значение символа зависит от его позиции (двоичная, десятичная системы счисления).
- Непозиционные коды — значение символа не зависит от позиции (римские цифры).
- Алфавитные коды — каждый элемент исходного алфавита кодируется фиксированным или переменным набором символов (Морзе, Baudot, ASCII).
¶По наличию избыточности
- Без избыточности — минимальная длина кодового слова, ошибки не обнаруживаются.
- С избыточностью — содержат контрольные символы или структуры, позволяющие выявлять и исправлять ошибки.
¶Код в программировании
В информатике под кодом чаще понимают текст программы, записанный на языке программирования. Исходный код (source code) человекочитаем и написан с использованием синтаксиса конкретного языка — Python, C++, Java, JavaScript, Rust и десятков других. Компилятор или интерпретатор преобразует исходный код в машинный — набор инструкций, выполняемых процессором.
Ключевые понятия:
- Исходный код — текст программы на языке программирования.
- Машинный код — двоичные инструкции, понятные процессору.
- Байт-код — промежуточное представление, используемое в виртуальных машинах (Java, C#).
- Открытый и закрытый код — распространяется ли исходный код программного обеспечения свободно (open source) или доступен только разработчику.
Системы контроля версий (Git, Mercurial) позволяют отслеживать изменения исходного кода, координировать работу группы разработчиков и возвращаться к предыдущим версиям.
¶Код в телекоммуникации
Передача информации по каналам связи требует преобразования сообщений в сигналы. Различают:
- Аналоговое кодирование — параметры сигнала непрерывно изменяются (частотная модуляция в радиовещании).
- Цифровое кодирование — сообщение представляется дискретными сигналами (PCM, импульсно-кодовая модуляция, лежащая в основе сотовой связи и цифрового телевидения).
Системы сжатия и защиты данных (шифрование) также основаны на преобразовании кодов: открытый текст переводится в шифротекст по ключу, что обеспечивает конфиденциальность передаваемой информации.
¶Код в биологии
Термин «генетический код» обозначает систему соответствия между последовательностью нуклеотидов в молекуле ДНК и аминокислотами в синтезируемом белке. Генетический код универсален для почти всех организмов, состоит из триплетов (кодонов) и включает 64 кодона, кодирующих 20 аминокислот и сигналы завершения синтеза. Открытие генетического кода выполнено в 1961 году группой учёных под руководством Маршалла Ниренберга.
¶Применение
Кодирование применяется повсеместно: в системах связи (мобильная связь, интернет), хранении данных (жёсткие диски, оптические носители), защите информации (криптография), идентификации (штрих-коды, QR-коды), программировании и биотехнологиях. Штрих-коды EAN и QR-коды используются для автоматизированного учёта товаров; стандарты кодирования звука (MP3, AAC) и изображений (JPEG, PNG) обеспечивают цифровые медиа.
Источники:
- Клод Шеннон. «Математическая теория связи»
- Д. Кнут. «Искусство программирования»
- Р. Хэмминг. «Искусство и наука числа»
- В.М. Курдюмов, Г.П. Башаринов. «Основы теории кодирования»
