УНИВЕРСИТЕТСКИ РЕЧНИК - ОСНОВНИ ПОНЯТИЯ

КОД

 

Кодовете са загадка,

игра като всяка друга игра.

Алън Тюринг

 

Понятия и термини като код, шифър, кодиране, „разбиване“ на код са доста популярни и често пъти се използват в литературата, киното и всекидневната реч. В съвременен контекст, дигитални технологии и медии не биха могли да съществуват, ако липсваше кодиране на информацията с помощта на символи и цифри. От тази гледна точка, трудно може да бъде транслирана или предадена каквато и да e информация, без надеждното ѝ кодиране. Кодът, най-общо казано, представлява набор от знаци, базирани на определена азбука.

 

Терминът код е възприет от английския език, където се е появил през 1303 г. с произход от старофренски и латински. Терминът се синонимизира с шифър, криптиране. Понятието код се използва полутерминологично в различни сфери като: дрескод, баркод, код на цветовете, код за достъп, медицински код, код за пожар, пощенски код, генетичен код, ДНК код; както и по-широко: код в писмената комуникация, лингвистичен код, продуктов код. Във всекидневния език често се срещат и словосъчетания, където код се използва в значение на ‘кодекс’ като: етичен код, код на поведение. Думата широко се използва в названия на книги и филми като например: „Кодът на Да Винчи“, „Игра на кодове“, „Кодът“. В базата данни на електронната книжарница „Амазон“ са налични около 900 книги от различни жанрове имащи отношения към „кода“.

 

В специализирания сайт за технологии „techtarget“ значението на кода се разглежда в два аспекта: използване в програмирането (често срещан термин за обозначаване на отделен език за програмиране); и приложение в криптографията. В криптографията кодът притежава техническо и общо значение. От техническа гледна точка, кодът е заместване на една дума или фраза с друга дума, число или символ, с основна цел – скриване същността на оригиналната фраза. Например в индустрията при въвеждане на нов продукт му се дава кодово наименование, за да се скрие истинското му, пазарно име. Кодът означава още ‘вид тайно писане’, включващо определени шифри. „Разбиването“ на код обикновено се свързва с търсене на начин да се прочете едно или серия криптирани съобщения, без предварително да бъде известен ключът за дешифриране на смисъла му.

 

Популярни в практиката кодове са: морзов код, при който всяка буква, цифра или символ се заместват с помощта на поредица от точки и тирета; шифърът на Цезар, в който се използват 26 различни символа за означаване на всяка буква от азбуката; „истински“ кодове, при които всяка дума се замества с кодирана дума или число, съгласно специален ключ под формата на книга за кодиране. Известният код „Енигма“, използван по време на Втората световна война от разузнавателните и военни служби в Германия представлява сложен шифър. Той включва и специална машина за кодиране на съобщенията, като всички машини от този тип са идентични, а при изписване на някоя буква, тя автоматически се кодира с друга буква, появяваща се на екрана. Тази машина използва няколко въртящи се ротора, дефиниращи по електромеханичен път осветяване на буквите, след което се изпращат по радио на определен адрес. Кодовото наименование се е превърнало в практика при подготовка на военни операции. От тази гледна точка, кодът често пъти се смесва с шифъра.

 

Кодът, съгласно идеите на Лотман, директно ни ориентира към изкуствено въведен език. Езикът, от своя страна, се разглежда като код плюс история. Предаването на информация в структури без памет гарантира висока степен на идентичност. Ако си представим предаващият и приемащият тестове с еднакви кодове и напълно лишени от памет, то тогава разбирането между тях ще бъде идеално, но ценността на предаваната информация ще е минимална, а самата информация – изключително ограничена. В случая може да се каже, че двамата идеално ще се разбират, но няма да има теми по които да разговорят.

 

Лев Манович, при описание на характеристиките на новите медии, въвежда термина „транскод“ за цифрово кодиране и модулна организация на информацията. Компютризацията трансформира медията в компютърни данни. Транс-кодът въздейства на всички културни категории и понятия както на равнище значение, така и на ниво език. Тоест, налице е процес на трансформация на култури. Друг анализатор като Джерън Ланиер (един от най-известните изследователи на света на виртуална реалност) смята че компютърният код е популярен език, активно използван от хората за описание и изследване на динамичните аспекти на реалността, която, от своя страна, е доста комплексна, за да бъде дефинирана само с помощта на уравнения.

 

Развитието на информационната теория е невъзможно без усъвършенстване на теорията на кодирането. Основният проблем, който възниква при кодиране на канала, е как да се конструира кодът така, че да се компенсира неизбежният шум, наличен във всички реални информационни мрежи. Без изградена система за засичане на грешки, сложните дигитални системи ще се превърнат в нещо неуправляемо. Теорията на кодирането изследва проблемите за надеждно предаване на информация по определен комуникационен канал. Обикновено при трансфер на съобщенията възникват изкривявания поради наличие на шумове от най-различно естество. Целта на теорията е да открие начини за елиминиране или ограничаване на количеството на грешките по време на трансмисията. Исторически, теорията за кода е провокирана от разработките на Клод Шенън   в „Математическа теория на комуникацията“ и от публикацията през 1950 г. на Ричард Хаминг „Кодове за откриване и коригиране на грешки“.

 

В компютърните технологии, терминът код се използва за означаване на програма, написана на определен език (като съществува базов и обектен код). От специалната мрежа на „Волфрам алфа“ може да се изведат следните характеристики за термина „код“: а/ кодът представлява мрежа от правила и принципи; б/ системата за кодиране се използва за трансмисия на съобщения, изискващи сбитост, краткост и секретност. В компютърната наука кодът означава символично подреждане на данни или инструкции в компютърната програма.

 

Един от най-известните кодове е международният цифров стандарт за издаване на книги, известен като ISBN, където номерът на всяка книга се означава с помощта на 10 цифри. Първите 9 цифри съдържат информация за книгата и езика на който е издадена. Последната цифра е предназначена за откриване на грешки. Тоест, ако някой допусне грешка при въвеждане на последната цифра, компютърът може да бъде програмиран да улавя грешката. ISBN кодът е един от най-опростените кодове. Този код се използва до 2006 г., като от 2007 г. се въвежда нов стандарт от 13 цифри. Първата група е префиксна, втората група е свързана със страната, района и езика, следващите две групи имат отношение към издателя, формата и типа на изданието. Последната цифра отново по математически начин валидира останалите.

 

Теорията на кода изследва процесите по коригиране на грешки и намира приложение за решаване на проблеми, свързани с трансмисия на данни по един комуникационен канал, който е лишен от перфектност. Бинарният код се дефинира като опростена форма на компютърен код и програмирани данни. Представя се изцяло с помощта на двоична система от цифри, състояща се от верига последователни нули и единици. Машинният код използва мрежи от бинарни цифри за създаване на инструкции. Един от видовете кодове е наречен ASCII код или Американски стандарт за кодиране обмена на информация, който може да бъде във формата на 7 или 8 битов код; както и разширен бинарен код, развит от компанията IBM, съдържащ 256 символа.

 

Друг тип код е известният т. нар. „генетичен код“, при който за „запис“ на наследствена информация се използват четири основни символа: А (Аденин), G (Гуанин), C (Цитозин), T (Тимин). Тази своеобразна азбука служи за описание на целия ДНК код. Кодът съдържа последователност от „думи“ с по три букви, наричани понякога триплети или кодони, с които се кодират аминокиселините. Налице са 64 възможни комбинации от поредица, кодирани с три букви нулеотиди, като от 64 кодона, 61 представят аминокиселините и 3 са стоп сигнали.

 

Терминът код се дефинира по различен начин, но има три основни сфери на дейност, които кореспондират с понятието: а/ код за коригиране на грешки, който е свързан с подобряване на надеждността на информацията при налични канали с излишно количество шум, което се постига чрез на техниката редундантност; б/ компресиране на данни, като целта е ефективно кодиране на източника на информация, така че да заема колкото е възможно по-малко място; в/ криптография, която се занимава с безопасността, конфиденциалността и секретността на комуникацията при използване на ненадеждни канали.

 

Съвременният изследовател Стивън Роман разглежда кода като   множество от низове, означени с помощта на специална азбука. Кодът се използва за кодиране на съобщенията. Един от най-изявените автори в областта на кодирането на информацията е Хаминг. Той смята, че информационната теория обръща повече внимание на въпросите за количеството и в този смисъл се използват различни кодове за транслиране на информацията. При кодиране на канала на съобщенията, нараства редундантността, а при кодиране на източника, тази величина намалява. Обикновено източникът на информация се разглежда като случайна, стохастична структура и от това зависи как да се кодира, предаде и след това възстанови информацията. Кодът трябва да бъде конструиран така, че да бъде в състояние да определя грешките. Често пъти в практиката бинарните цифри се групират по четири и тогава се формира шестнадесетичен код. Компютрите използват битове, като всяка група е от 8 бита, например 16- десетичен код е най-подходящ за машинната архитектура. Вече споменатият ASCII е стандартен код за кодиране на източника, представен с букви, цифри и други популярни символи. Морзовата азбука, също е своеобразен код, при който се използват символите „точка“, „тире“ и „пауза“. Морзовият код е пример за сигнална система с три символа.

 

Способностите за откриване и коригиране на грешки може да бъдат реализирани чрез добавяне на някои цифри към съобщението, така че то става по-дълго. Основният проблем е да се осъществи защита от неизбежни грешки и шумове в канала, без да се плаща прекалено висока цена при добавяне на допълнителни символи в дължината на съобщението. Това се реализира с помощта на кодиране на канала. Компресията на съобщенията е изключително важна за ефективното им предаване. При засичане на грешка, обикновено се повтаря съобщението, операцията или действието. В случая действа принципът, че е възможно да се засече грешката само при положение, че са налице някои рестрикции по отношение на това, какво да бъде подходящото съобщение. Тоест, при дизайн на кода, всяка възможна грешка би трябвало да може да се открие. Най-лесният начин да се кодират съобщенията от бинарен тип е да се идентифицират грешките, като се изчислява автоматично броят на символите "1" в съобщението и каква част от тях е получена. В практиката по-дългите съобщения се разбиват на отделни блокове, за да се определи по-лесно грешката, която определя пък от своя страна редундантност (за ниска редундантност ние искаме да използваме дълги съобщения, но високо надеждните кратки съобщения са по-добрият вариант). В случаите, когато бъде засечена грешка, една от възможностите за преодоляването и е изпращане на молба към източника за повторение на процеса отново. Наблюденията показват, че грешки често пъти възникват само в определени места на съобщението и по-малко в други позиции. В случая определена роля играе и така нареченият „бял шум“. Коригиране на грешките е важен процес при използване на системи с памет. За корекции на грешки се използват два модела: интегриране на код в самия хардуер или кодът да стане част от софтуера. Последният подход има предимство, тъй като кодът за корекции може да се бъде въведен в най-важните части или отрязъци от информацията. Един от най-опростените кодове за коригиране на грешки е така наречения троичен код, където всяко съобщение се повтаря три пъти и при приемането му се потвърждава приемането. Подобна система обаче е много неефективна, скъпа и затова се изнамират други методи за кодиране на информацията, така че единична грешка да може да бъде коригирана. Aко две от възможните съобщения не са достатъчно разделени, едното съобщение може да има грешка или грешки и да ги предаде на другото. При кодирането за откриване на грешки при наличие на бял шум, е необходимо да се определи минималната дистанция между отделните съобщения, които ще бъдат наблюдавани. Основната идея при откриване на грешки и коригирането им е, че значимите съобщения трябва да се държат по-далече от пространството с най-вероятни грешки, ако искаме да управляваме грешките успешно. Кодът по дефиниция е унифициран по отношение на защитата и при кодирането няма разлика между съобщението и цифрите за проверка.

 

 

Източници:

Hamming, Richard W. Coding and Information theory.

Second edition.1986 by Prentice-Hall. A Division of Simon & Shuster, Inc.

Rosenberg, Scott. Dreaming in code. Crown publishing group. NY, 2007.

Orsini, Emmanuela. Basic coding and information theory.

CoCoNut, 2016.

Roman, Steven. Coding and Information Theory. New York: Springer-Verlag, 1997.

 

 

Руси Маринов

 

 

 

 

 

Обратно към списъка