Prečo v EBCDIC písmená idú neporiadku?

Štandard ASCII bol prijatý v roku 1963 a dnes sotva niekto používa kódovanie, ktorého prvých 128 znakov by sa od ASCII líšilo. Napriek tomu do konca minulého storočia sa aktívne používal EBCDIC – štandardné kódovanie pre mainframe IBM a ich sovietske klony ES EVM. EBCDIC zostáva hlavným kódovaním v z/OS – štandardnom OS pre moderné mainframe IBM Z.

To, čo okamžite udiera do očí pri pohľade na EBCDIC, je to, že písmená nie sú za sebou: medzi I a J a medzi R a S zostali nevyužité pozície (na ES EVM sa medzi týmito medzerami distribuovali znaky cyrilice). Koho mohlo napadnúť kódovať písmená s nerovnými rozstupmi medzi susednými písmenami?

Prečo v EBCDIC písmená idú neporiadku?

Samo označenie EBCDIC („Extended BCDIC“) naznačuje, že toto kódovanie – na rozdiel od ASCII – nebolo vytvorené na zelenej lúke, ale na základe šesťbitového kódovania BCDIC, ktoré sa používalo od IBM 704 (1954):

Prečo v EBCDIC písmená idú neporiadku?

Priama spätná kompatibilita neexistuje: pohodlnou vlastnosťou BCDIC, ktorá sa stratila pri prechode na EBCDIC, bolo to, že číslam 0—9 zodpovedajú kódy 0-9. Napriek tomu už existovali medzery v siedmich kódoch medzi I a J a v ôsmich kódoch medzi R a S v BCDIC. Odkiaľ sa teda vzali?

História (E)BCDIC začína súčasne s históriou IBM – dlho pred elektronickými počítačmi. IBM vznikla zlúčením štyroch spoločností, z ktorých technologicky najpokročilejšou bola „Tabulating Machine Company“, založená v roku 1896 Hermanom Hollerithom – vynálezcom tabulátora. Prvé tabulátory jednoducho počítali počet perforovaných kariet, ktoré boli prebodnuté na určitom mieste; ale v roku 1905 Hollerith začal výrobu desiatkových tabulátorov. Každá karta pre desiatkový tabulátor pozostávala z polí ľubovoľnej dĺžky a čísla zapísané v týchto poliach v bežnej desiatkovej forme sa sčítavali cez celú kôpku. Rozdelenie karty na polia sa určovalo spojom vodičov na prepínačovej doske tabulátora. Napríklad na tejto perforovanej karte Holleritha, uchovávanej v Knižnici Kongresu, je jasne vyrazené číslo 23456789012345678, neznámo ako rozdelené na polia:

Prečo v EBCDIC písmená idú neporiadku?

Najpozornejší si mohli všimnúť, že na karte Holleritha je 12 radov pre otvory, hoci pre čísla stačí desať; a v BCDIC sa pre každú hodnotu najvyšších dvoch bitov používa len 12 kódov z 16 možných.

Samozrejme, nie je to náhodná zhoda. Pôvodne Hubbell plánoval ďalšie riadky pre „špeciálne značky“, ktoré sa nesčítavali, ale len sa počítali — ako v najprvších tabuľovačoch. (Dnes by sme ich nazvali „bitovými poľami“.) Okrem toho bolo možné medzi „špeciálnymi značkami“ nastaviť group indicators: ak sa pri tabuľovaní vyžadovali nielen konečné sumy, ale aj medzičasy, tabulátor sa zastavil, keď zistil zmenu niektorej z group indicators, a operátor musel prepísať medzičasy z digitálneho displeja na papier, nulovať displej a obnoviť tabuľovanie. Napríklad pri počítaní účtovných bilancií mohla skupina kariet zodpovedať jednému dátumu alebo jednému kontrahentovi.

Do roku 1920, keď už Hubbell odišiel do dôchodku, sa dostali do používania „tlačiace tabuľovače“, ktoré sa pripájali k teletajpu a mohli samy tlačiť medzičasy bez nutnosti zásahu operátora. Zložitým problémom teraz bolo určiť, k čomu sa vzťahuje každé z vytlačených čísel. V roku 1931 sa IBM rozhodla pomocou „špeciálnych značiek“ označiť písmená: značka v 12. riadku znamenala písmeno od A do I, v 11. — od J do R, v nultom — od S do Z. Nový „alfabetický tabuľovač“ mohol tlačiť názov každej skupiny kariet spolu s medzičasy; pritom nepreklápaný stĺpec sa premenil na medzeru medzi znaky. Všimnite si, že S sa označuje kombináciou otvorov 0+2, zatiaľ čo kombinácia 0+1 sa pôvodne nepoužívala z obavy, že dva otvory vedľa seba v jednom stĺpci môžu spôsobiť mechanické problémy v čítačke.

Prečo v EBCDIC písmená idú neporiadku?

Teraz sa na tabuľku BCDIC môžeme pozrieť z trochu iného uhla:

Prečo v EBCDIC písmená idú neporiadku?

Okrem toho, že 0 a medzera sú prehodené, vyššie dva bity určujú „špeciálnu značku“, ktorú sa od roku 1931 prepichovala v perforovanej karte pre zodpovedajúci symbol; a nižšie štyri bity určujú číslo, ktoré sa prepichuje v hlavnej časti karty. Podpora symbolov & - / Pridala sa do tabuliek IBM v 30. rokoch 20. storočia a kódovanie týchto znakov v BCDIC zodpovedá prebiehajúcim kombináciám otvorov. Keď bola potrebná podpora ešte väčšieho počtu znakov, začali sa ako dodatočná "špeciálna značka" vyraďovať rady 8 - takto mohlo byť v jednom stĺpci až tri otvory. Takýto formát perforovaných kariet prežil takmer nezmenený až do konca storočia. V ZSSR ponechali IBM-ovské kódovania latinky a interpunkcie, a pre písmená cyrilice vyraďovali hneď niekoľko "špeciálnych značiek" v radoch 12, 11, 0 - neobmedzujúc sa na tri otvory v jednom stĺpci.

Keď sa vytváral počítač IBM 704, nad kódovaním znakov pre neho sa dlho neuvažovalo: vzali kódovanie, ktoré sa už vtedy používalo v perforovaných kartách a len 0 "dali na miesto". V roku 1964, pri prechode od BCDIC k EBCDIC, zostali spodné štyri bity každého znaku nezmenené, hoci trochu prehodili horné bity. Takto formát perforovaných kariet, ktorý si vybral Hollerith na začiatku minulého storočia, ovplyvnil architektúru všetkých počítačov IBM, vrátane IBM Z.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster