Кіріспе
Ақпаратты басқа формаға немесе бейнелеуге түрлендіру ережелерінің жүйесі.
Байланыс және ақпаратты өңдеу саласында код – бұл әріп, сөз, дыбыс, кескін немесе қимыл сияқты ақпаратты байланыс арнасы арқылы жіберу немесе сақтау құралында сақтау үшін, кейде қысқартылған немесе құпия түрде, басқа формаға түрлендіру ережелерінің жүйесі. Оның алғашқы мысалы – тілдің пайда болуы, ол адамға ойлаған, көрген, естіген немесе сезінгенін сөйлеу арқылы басқаларға жеткізуге мүмкіндік берді. Бірақ сөйлеу байланыс ауқымын дауыстың жете алатын қашықтығымен және сөйлеу кезінде қатысушылармен шектейді. Жазудың пайда болуы, сөйлеу тілін көрнекі символдарға айналдыру арқылы, байланыс ауқымын кеңістікте және уақытта кеңейтті. Кодтау процесі ақпарат көзін байланыс немесе сақтау үшін символдарға түрлендіреді. Декодтау – кері процесс, кодталған символдарды алушыға түсінікті формаға, мысалы, ағылшын немесе/және испан тіліне түрлендіреді. Кодтаудың бір себебі – сөйлеу немесе жазу арқылы қарапайым тілдің қолдануы қиын немесе мүмкін емес жағдайларда байланысты қамтамасыз ету. Мысалы, семафор, онда сигнал беруші ұстаған тудың орналасуы немесе семафор мұнарасының қолдары хабарламаның бөліктерін, әдетте жеке әріптер мен сандарды кодтайды. Алыста тұрған адам туларды түсіндіріп, жіберілген сөздерді қайта жасай алады.
Теория
Ақпарат теориясы мен компьютерлік ғылымда код әдетте, кейбір бастапқы әліпбидегі символдарды басқа мақсатты әліпбидегі кодталған тізбектер арқылы бірегей түрде көрсететін алгоритм ретінде қарастырылады. Символдар тізбектерін бастапқы әліпби бойынша бейнелеу үшін кодты кеңейту, кодталған тізбектерді біріктіру арқылы жүзеге асырылады. Математикалық тұрғыдан нақты анықтама беру алдында, мынадай қысқаша мысал келтірейік. Келесі бейнелеу – код, оның бастапқы әліпбиі жиынтық, ал мақсатты әліпбиі жиынтық. Кодты кеңейтуді пайдаланып, 0011001 кодталған тізбегін кодтық сөздерге топтастыруға болады: 0 011 0 01, ал олар өз кезегінде бастапқы символдар тізбесін acab деп декодтауға болады. Формалды тіл теориясының терминдерін қолданып, осы ұғымның нақты математикалық анықтамасы былай беріледі: S және T екі шекті жиынтық болсын, олар тиісінше бастапқы және мақсатты әліпбилер деп аталады. Код – бұл S жиынтығының әрбір символын T жиынтығындағы символдар тізбегіне бейнелейтін толық функция. Кодтың кеңейтімі – бастапқы символдар тізбегін мақсатты символдар тізбегіне бейнелейтін гомоморфизм.
is a code, whose source alphabet is the set and whose target alphabet is the set Using the extension of the code, the encoded string 0011001 can be grouped into codewords as 0 011 0 01, and these in turn can be decoded to the sequence of source symbols acab. Using terms from formal language theory, the precise mathematical definition of this concept is as follows: let S and T be two finite sets, called the source and target alphabets, respectively. A code is a total function mapping each symbol from S to a sequence of symbols over T. The extension of , is a homomorphism of into , which naturally maps each sequence of source symbols to a sequence of target symbols.
Ұзындығы өзгермелі кодтар
Бұл бөлімде біз әрбір символды (ашық мәтінді) белгілі бір сөздіктегі кодтық сөзбен кодтайтын кодтарды қарастырамыз, ал мұндай кодтық сөздердің тізбектелуі кодталған жол береді. Айырмалы ұзындығы бар кодтар, әсіресе, ашық мәтін символдарының әртүрлі ықтималдықтары болғанда тиімді; сондай-ақ энтропиялық кодтауды қараңыз. Алдыңғы код – «алдыңғы қасиеті» бар код: жүйеде басқа жарамды кодтық сөздің алдынан (бастау) тұратын жарамды кодтық сөз болмайды. Хаффман кодтамасы – алдыңғы кодтарды құрудың ең белгілі алгоритмі. Алдыңғы кодтар көбінесе «Хаффман кодтары» деп аталады, тіпті кодты Хаффман алгоритмі жасалмаған жағдайда да. Алдыңғы кодтардың басқа мысалдары – елдік телефон кодтары, ISBN-нің ел және баспагер бөлімдері, сондай-ақ UMTS WCDMA 3G сымсыз стандартында қолданылатын екінші синхрондау кодтары. Крафт теңсіздігі алдыңғы кодта мүмкін болатын кодтық сөздер ұзындығының жиынтығын сипаттайды. Бірден көпке дейін бірегей түрде кодталатын кез келген код, міндетті түрде алдыңғы код болмаса да, Крафт теңсіздігін орындауы керек.
Қателерді түзету кодтары
Кодтар деректерді беру немесе сақтау кезіндегі қателерге қарсы тұру үшін де қолданылуы мүмкін. Осы, қателерді түзейтін код, сақталған (немесе жіберілген) деректерге мұқият есептелген артық ақпарат қосу арқылы жұмыс істейді. Мысалдарға Хамминг кодтары, Рид-Соломон, Рид-Мюллер, Уолш-Адамард, Бозе-Чаудхури-Хоккенгем, Турбо, Голай, алгебралық геометрия кодтары, төмен тығыздықпен тепе-теңдік тексеретін кодтар және кеңістік-уақыт кодтары жатады. Қателерді анықтайтын кодтар жарылыс тәрізді немесе кездейсоқ қателерді анықтауға бапталуы мүмкін.
Байланыс кодтары қысқалық үшін қолданылады
Кабельдік код сөздерді (мысалы, кеме немесе инвойс) қысқа сөздермен алмастырады, бұл бірдей ақпаратты аз таңбамен, жылдамырақ және арзанырақ жіберуге мүмкіндік береді. Кодтар қысқалық үшін қолданылуы мүмкін. Телеграф хабарлары қашықтықтан жылдам байланыс құрудың ең жетілген тәсілі болған кезде, толық сөз тіркестерін бірнеше таңбаға (әдетте бес минуттық топтарға) кодтайтын күрделі коммерциялық код жүйелері жасалды, соның салдарынан телеграфшылар BYOXO ("Біздің келісімнен бас тартуға тырысасың ба?"), LIOUY ("Менің сұрағыма неге жауап бермейсің?"), BMULD ("Сен - жаман адамсың!"), немесе AYYLU ("Кодталмаған, анығырақ қайталаңыз.") сияқты "сөздермен" таныс болды. Кодты сөздер әртүрлі себептермен таңдалды: ұзындығы, айтылуы және т.б. Мағыналары қажеттіліктерге сәйкес таңдалды: сауда келіссөздері үшін сауда терминдері, әскери кодтар үшін әскери терминдер, дипломатиялық кодтар үшін дипломатиялық терминдер, ал барлық алдыңғылары тыңшылық кодтары үшін қолданылды. Код кітаптары мен код кітаптарын шығарушылар көбейді, соның ішінде бірінші және екінші дүниежүзілік соғыстар арасында Герберт Ярдли басқарған американдық қара палатаның жасырын орны ретінде жұмыс істегендер де болды. Бұл кодтардың көпшілігінің мақсаты – кабельдік шығындарды азайту. Деректерді қысу үшін деректерді кодтауды қолдану компьютерлік дәуірге дейін пайда болды; телеграфтың Морзе коды оның алғашқы мысалы, онда жиі қолданылатын таңбалардың қысқаша белгілері болды. Қазір компьютерлік алгоритмдер үлкен дерек файлдарын сақтау немесе беру үшін ықшамдау үшін Хаффман кодтау сияқты әдістерді қолданады.
Таңба кодтамалары
Таңба кодтамалары мәтіндік деректерді бейнелеу тәсілдері болып табылады. Белгілі бір таңба кодтамасы нақты бір таңбалар жиынтығымен (ол бейнелейтін таңбалардың жиынтығы) байланыстырылуы мүмкін, бірақ кейбір таңбалар жиынтықтарының бірнеше таңба кодтамасы болады, сондай-ақ керісінше де болуы мүмкін. Таңба кодтамаларын бір таңбаны бейнелеу үшін қажетті байттар санына қарай топтастыруға болады: бір байттық кодтамалар, көп байттық (немесе кең) кодтамалар және айнымалы ендік (немесе айнымалы ұзындықты) кодтамалар. Ең алғашқы таңба кодтамалары бір байттық болды, оның ең белгілі мысалы – ASCII. ASCII қазір де қолданылуда, мысалы, HTTP тақырыптарында. Дегенмен, бір байттық кодтамалар 256 таңбадан артық таңбаларды модельдей алмайды. Қытай, жапон және корей тілдері сияқты үлкен таңбалар жиынтығын қажет ететін жазбалар көп байттық кодтамамен көрсетілуі тиіс. Алғашқы көп байттық кодтамалар тұрақты ұзындықты болды, яғни әрбір таңба бір байттан артық болғанымен, барлық таңбалар байттардың бірдей санын ("сөз ұзындығы") пайдаланды, бұл оларды іздеу кестесі арқылы декодтауға ыңғайлы етті. Соңғы топ – айнымалы ендік кодтамалар, көп байттық кодтамалардың ішкі жиынтығы болып табылады. Олар үлкен таңбалар жиынтығын тиімді бейнелеу үшін күрделірек кодтау және декодтау логикасын пайдаланады, сонымен қатар жиі қолданылатын таңбалардың бейнелеуін қысқартады немесе артқа қарай үйлесімділік қасиеттерін сақтайды. Бұл топқа Unicode таңбалар жиынтығының UTF-8 кодтамасы кіреді; UTF-8 – Интернеттегі мәтіндік медианың ең көп таралған кодтамасы.
Генетикалық код
Биологиялық организмдерде олардың қызметін және дамуын бақылауға қолданылатын генетикалық материал болады. Бұл ДНК, ол гендер деп аталатын бірліктерден тұрады, олардан хабаршы РНК (мРНҚ) түзіледі. Одан кейін генетикалық код арқылы ақуыздар синтезделеді, онда төрт түрлі нуклеотидтің үштік тізбектері (кодондар) жиырма түрлі аминқышқылының біріне айналдырылады. Кодондар тізбегі ақуыз молекуласын құрайтын аминқышқылының сәйкес тізбегін анықтайды; ал тоқтату кодоны деп аталатын кодон тізбектің аяқталуын сигналдайды.
Гёдель коды
Математикада Гёдель коды Гёдельдің толық еместік теоремасын дәлелдеудің негізі болды. Бұл жердегі идея математикалық жазбаларды табиғи санға бейнелеу (Гёдель нөмірлеуін қолдану) болды.
Басқа
Түстерді пайдаланатын кодтар бар, мысалы, жол жүрісінің сигналдары, электрлік резисторлардың номиналдық мәнін көрсету үшін қолданылатын түс коды немесе белгілі бір түрдегі қоқысқа арналған қоқыс жәшіктері (қағаз, шыны, органикалық және т.б.). Маркетингте купон кодтары (көбінесе интернеттегі) сатушыдан тауар сатып алғанда қаржылық жеңілдік немесе қайтару үшін қолданылады. Әскери ортада, корнет дауысы арнайы дыбыстармен әртүрлі мақсаттар үшін қолданылады: күнің белгілі бір уақыттарын көрсету, жауынгерлерге шайқас алаңында команда беру және т.б. Есту және көру қабілеттеріндегі кемшіліктерге байланысты коммуникация жүйелері, мысалы, саңырау адамдар үшін қол тілі және көзі көрмейтін адамдар үшін Брайль әліпбисі, қозғалыс немесе сезімдік кодтарға негізделген. Музыкалық ноталар – музыканы кодтаудың ең көп таралған жолы. Кейбір ойындардың өздерінің кодтау жүйелері бар, мысалы, шахмат нотациясы.
Криптография
Криптография тарихында кодтар бір кезде байланыстың құпиялылығын сақтау үшін жиі қолданылған, бірақ қазір олардың орнына шифрлар пайдаланылады. Нақты хабарларды жасыру мақсатындағы құпия кодтар, маңызды мәселелерден бастап (әскери, дипломатия, бизнес, тыңшылық сияқты) қарапайым нәрселерге дейін (махаббат, ойындар) кез келген түрдегі шығармашылықпен жасалған кодтама болуы мүмкін: гүлдер, ойын карталары, киім, жаңбыршамшалар, бас киімдер, әуендер, құстар және т.б. Мұндағы жалғыз талап – хабар жіберуші мен алушы екі жақтың да мағынасы туралы алдын ала келісімі болуы керек.
Кодтар мен қысқартулар
Акронимдер мен аббревиатураларды кодтар деп қарастыруға болады, және белгілі бір мағынада барлық тілдер мен жазу жүйелері адам ойының кодтары болып табылады. Халықаралық әуе көлігі қауымдастығының әуежай кодтары – әуежайларды белгілеу үшін және багаж таңбаларында қолданылатын үш әріпті кодтар. Теміржолдарда да станция кодтары қолданылады, бірақ олар көбінесе ұлттық болып табылады, сондықтан бірдей код әртүрлі елдердегі әртүрлі станциялар үшін қолданылуы мүмкін. Кейде кодты сөз өздігінен дербес мәнге ие болып (және мағынаға) жетеді, ал бастапқы сөз тіркесі ұмытылып қалады немесе кем дегенде кодты сөзге тағайындалған нақты мәнін жоғалтады. Мысалы, "30" журналистикада "хабардың соңы" деген мағынада кеңінен қолданылды және басқа да контекстерде "соңы" дегенді білдіру үшін пайдаланылды.