Кіріспе

Мәтін таңбаларын сандармен бейнелеу

Таңба кодтау – графикалық таңбаларға, әсіресе адам тілінің жазба таңбаларына сандарды тағайындау процесі. Бұл процестің арқасында оларды цифрлық компьютерлерді пайдаланып сақтауға, жіберуге және өзгертуге болады. Таңба кодтау құрайтын сандық мәндер "кодтық нүктелер" деп аталады және олар жиынтығы "кодтық кеңістік", "кодтық бет" немесе "таңба картасы" болып табылады. Оптикалық немесе электрлік телеграфпен байланысты алғашқы таңба кодтары жазу тілінде қолданылатын таңбалардың шектеулі жиынтығын ғана көрсете алды, кейде тек үлкен әріптер, сандар және бірнеше тыныш белгілермен ғана шектелді. Қазіргі компьютерлік жүйелердегі деректерді цифрлық түрде бейнелеудің төмен құны, көптеген жазба тілдерінде қолданылатын көптеген таңбаларды көрсете алатын күрделі таңба кодтарына (мысалы, Юникодқа) мүмкіндік береді. Халықаралық стандарттарды қолдана отырып таңба кодтау, мәтінді электрондық түрде бүкіл әлемде алмасуға мүмкіндік береді.

Тарих

Таңба кодтарының тарихы машина арқылы жіберілген таңбалық негіздегі символдық ақпараттың қажеттілігінің қалыптасуын көрсетеді, бұл үшін бір кезде жаңа электрлік құралдар қолданылды. Ең алғашқы кодтар қолмен және жазбаша түрде кодтау және шифрлау жүйелеріне негізделген, мысалы, Бэкон шифры, Брайль, халықаралық теңіз сигналдық жалаулары және қытай телеграф коды үшін қытай таңбаларының 4 таңбалы кодтауы (Ханс Шеллеруп, 1869). Электрлік және электромеханикалық техниканы қабылдаумен бірге, бұл алғашқы кодтар жаңа машиналардың мүмкіндіктері мен шектеулеріне бейімделді. Электрлік түрде берілген ең алғашқы белгілі таңбалық код – Морзе коды, ол 1840 жылдары енгізілді және өзгермелі ұзындықтағы кодтарды жасау үшін төрт «символдан» (қысқа сигнал, ұзақ сигнал, қысқа үзіліс, ұзақ үзіліс) тұратын жүйені қолданды. Морзе кодының кейбір коммерциялық қолданылуы машиналар арқылы болғанымен, ол көбінесе телеграф кілтінде қолмен жасалған және құлақпен оқылған код ретінде қолданылды, сондай-ақ әуесқой радио және авиацияда қолданылады. Көптеген кодтар әр таңба үшін белгілі бір ұзындықта болады немесе белгілі бір ұзындықтағы кодтардың өзгермелі тізбектерінен тұрады (мысалы, Юникод). Таңба кодтау жүйелерінің кең таралған мысалдары – Морзе коды, Бодо коды, Ақпарат алмасудың американдық стандартты коды (ASCII) және Юникод. Юникод – жақсы анықталған және кеңейтілген кодтау жүйесі, ол көптеген бұрынғы таңба кодтауларын ығыстырды, бірақ кодты дамыту жолы бүгінгі күнге дейін жақсы белгілі. Баудот кодын 1870 жылы Эмиль Баудот жасаған, 1874 жылы патенттелген, 1901 жылы Дональд Мюррей өзгерткен және 1930 жылы CCITT тарапынан Халықаралық телеграф әліпбиі №2 (ITA2) ретінде стандартталған. Баудот атауы қате түрде ITA2 және оның көптеген нұсқаларына қолданылды. ITA2 көптеген кемшіліктерге ие болды және көптеген жабдық өндірушілер оны жиі жетілдірді, кейде үйлесімділік мәселелерін тудырды. 1959 жылы АҚШ әскері өзінің Fieldata кодын анықтады, ол АҚШ армиясының Сигнал корпусымен енгізілген алты немесе жеті биттік код. Филдата сол кездегі көптеген қазіргі заманғы мәселелерді шешкенімен (мысалы, машинамен салыстыру үшін реттелген әріптер мен цифрлық кодтар), ол өзінің мақсаттарына жете алмады және қысқа ғұмыр сүрді. 1963 жылы ASCII комитеті (Филдата комитетінің кем дегенде бір мүшесі В. Ф. Лёбберт болған) алғашқы ASCII кодын (X3.4 1963) шығарды, ол қарапайым кодты қолдану арқылы Филдатаның көптеген кемшіліктерін жойды. Көптеген өзгерістер шағын болды, мысалы, белгілі бір сандық диапазондардағы таңбалар жиынтығы. ASCII63 сәтті болды, өнеркәсіпте кеңінен қабылданып, 1967 жылғы ASCII кодын (кіші әріптерді қосып, кейбір «бақылау кодын» түзеткен) ASCII67 де кеңінен қабылданды. ASCII67-нің американдық бағыты еуропалық ECMA 6 стандартында біршама ескерілді. Герман Холлерит 19 ғасырдың соңында халық санағы деректерін талдау үшін перфокарталық деректерді кодтауды ойлап тапты. Бастапқыда әрбір тесіктің орны әртүрлі дерек элементін білдірді, бірақ кейін сандық ақпарат төменгі қатарларды 0-ден 9-ға дейін нөмірлеу арқылы кодталды, ал бағанадағы тесік оның қатар нөмірін білдірді. Кейінірек әр тізбекте бірнеше тесіктерге рұқсат беру арқылы әріптік деректер кодталды. Электромеханикалық кестелеу машиналары карталардың машина арқылы қозғалысына қатысты импульстардың уақытын ішкі түрде көрсетті. IBM электрондық өңдеуге ауысқанда, IBM 603 Electronic Multiplier-мен бастап, перфокарталық кодқа байланысты әртүрлі екілік кодтау схемаларын қолданды. IBM-нің екілік кодталған ондық (BCD) – IBM-нің 1953 жылы 702 және 704 компьютерлерінде, сондай-ақ 7000 және 1400 серияларында, сондай-ақ байланысты шеткі құрылғыларда қолданған алты биттік кодтау схемасы. Сол кездегі перфокарталық кодта тек цифрлар, үлкен әріптер және бірнеше арнайы таңбаларға рұқсат етілгендіктен, алты бит жеткілікті болды. BCD қолданыстағы қарапайым төрт биттік сандық кодтаманы әріптік және арнайы таңбаларды қосуға кеңейтті, оны қазірдің өзінде кеңінен қолданылып жүрген перфокарталық кодтамаға оңай сәйкестендірді. IBM кодтары негізінен IBM жабдықтарымен пайдаланылды; сол дәуірдің басқа компьютерлік өнім берушілерінің өздерінің таңбалық кодтары, көбінесе алты бит, бірақ әдетте IBM жабдықтарында шығарылған таспаларды оқу мүмкіндігі болды. BCD IBM-нің кеңейтілген екілік кодталған ондық алмасу кодын (әдетте EBCDIC деп қысқартылады) алғысы болды, ол 1963 жылы IBM System/360 үшін жасалған сегіз биттік кодтау схемасы, онда үлкен таңбалар жиынтығы, соның ішінде кіші әріптер де болды. 1980 жылдардағы зерттеушілер әмбебап түрде алмастырылатын таңба кодтауларын жасауға тырысқанда, бір жағынан, қосымша таңбаларды орналастыру үшін көбірек биттер қосу қажеттігі сезілді, екінші жағынан, Латын әліпбиінің салыстырмалы түрде кішкентай таңбалар жиынын қолданушылар үшін (компьютер пайдаланушыларының көп бөлігін құраған) осы қосымша биттер сол кездегі қымбат және тапшы есептеу ресурстарын зейінсіз пайдалану болар еді (олар үшін әрқашан нөлге тең болар еді). 1985 жылы орташа жеке компьютер пайдаланушысының дискісінде шамамен 10 мегабайт сақтауға болар еді, және ол көтерме базарда шамамен 250 АҚШ долларына тұрды (жазық саудада сатып алынса, одан да қымбат болды), сондықтан әр битті тиімді пайдалану өте маңызды болды. Соңында табылған компромис – телеграф кодтарына дейін соққан ескі болжамды бұзу, яғни әр таңба әрқашан биттердің нақты тізбесіне сәйкес келуі керек емес. Оның орнына, таңбалар ең алдымен абстрактілі сандар түріндегі әмбебап аралық өкілдікке, атап айтқанда кодтық нүктелерге бейімделеді. Кодтық нүктелер әртүрлі жолдармен және әртүрлі жағдайларға байланысты әртүрлі сандардағы биттермен (кодтық бірліктер) ұсынылатын болады. Кодтық бірліктің ұзындығынан жоғары кодтық нүктелерді кодтау үшін, мысалы, сегіз биттік бірліктер үшін 256-дан жоғары, шешім қабылданушы биттердің тізбесін келесі биттердің жоғарырақ кодтық нүкте ретінде талдануын белгілейтін қашқыш тізбесін енгізу болды.

Терминология

Бейресми түрде "көрініс кодтауы", "көрініс картасы", "көрініс жинағы" және "кодтық бет" терминдері көбінесе бір-бірін алмастырып қолданылады. Тарихи тұрғыдан алғанда, бір стандарт көріністер тізімін және олардың кодтық бірліктер ағынына қалай кодталатынын анықтаған, әдетте бір көрініс бір кодтық бірлікпен. Дегенмен, көбірек күрделі көрініс кодтаулардың пайда болуына байланысты, бұл терминдердің арасындағы айырмашылық маңызды болды. Көрініс – мағыналық құндылығы бар мәтіннің ең кішкентай бірлігі. Көрініс жинағы – мәтінді бейнелеу үшін қолданылатын элементтердің жиынтығы. Тізім жабық болуы мүмкін, яғни жаңа стандартты жасамайынша қосымшаларға рұқсат берілмейді (ASCII және ISO 8859 сериясының көп бөлігі сияқты); немесе ол ашық болуы мүмкін, қосымшаларға мүмкіндік береді (Unicode және шектеулі түрде Windows кодтық беттері сияқты). Microsoft, SAP және Oracle Corporation сияқты басқа да жеткізушілер өздерінің кодтық беттері жиынтықтарын жариялады; ең танымал кодтық беттер жиынтықтары – "Windows" (Windows 1252 негізінде) және "IBM"/"DOS" (кодтық бет 437 негізінде). Стандартта нақты бет нөмірін көрсетуге болмаса да, көптеген көрініс кодтаулар әлі де олардың кодтық бет нөмірімен аталады; сондай-ақ, "кодтық бет" термині көрініс кодтауларын жалпылама атау үшін жиі қолданылады. "Кодтық бет" термині Unix немесе Linux жүйелерінде қолданылмайды, онда "charmap" артықшылыққа ие, әдетте локальдердің кең контекстінде. IBM-нің Көрініс деректерін ұсыну архитектурасы (CDRA) кодталған көрініс жинағы идентификаторларымен (CCSID) белгіленген объектілерді анықтайды, олардың әрқайсысы әртүрліше "charset", "көрініс жинағы", "кодтық бет" немесе "CHARMAP" деп аталады.

Кейіпкерлер

Кейіпкерді не құрайтыны әр түрлі таңба кодтамаларында әртүрлі болады. Мысалы, диакритикалық таңбалар үшін оларды кодтаудың екі әртүрлі тәсілі бар: оларды бір біріктірілген таңба ретінде (алдын ала құрастырылған таңба деп аталады) немесе бір глифті құрайтын жеке таңбалар ретінде кодтауға болады. Біріншісі мәтінді өңдеу жүйесін жеңілдетеді, ал екіншісі мәтінде кез келген таңба/диакритика комбинациясын пайдалануға мүмкіндік береді. Лигатуралар да ұқсас мәселелер тудырады. Глифтердің нұсқаларын қалай өңдеу керектігі – нақты таңба кодтамасын құрастырғанда жасалуы тиіс таңдау. Араб және еврей жазу жүйелері әртүрлі контексттерде әртүрлі жолдармен біріктірілген графемаларды қамтуы керек, бірақ олар бірдей семантикалық мәнді білдіреді.