Zakaj črke v EBCDIC niso zaporedne?

Standard ASCII je bil sprejet leta 1963 in zdaj komaj kdo uporablja kodiranje, katerega prvih 128 znakov se razlikuje od ASCII. Vendar pa se je do konca prejšnjega stoletja aktivno uporabljal EBCDIC - standardno kodiranje za velike računalnike IBM in njihove sovjetske klone EC računalnike. EBCDIC ostaja primarno kodiranje v z/OS, standardnem operacijskem sistemu za sodobne velike računalnike IBM Z.

Ob pogledu na EBCDIC takoj pade v oči, da črke niso v vrsti: med I и J in med R и S so bile neuporabljene pozicije (na računalniku ES za te intervale razdeljen cirilični znaki). Kdo bi si mislil kodirati črke z neenakimi presledki med sosednjimi črkami?

Zakaj črke v EBCDIC niso zaporedne?

Že samo ime EBCDIC (»Razširjeni BCDIC«) namiguje, da to kodiranje - za razliko od ASCII - ni bilo ustvarjeno iz nič, temveč na podlagi šestbitnega kodiranja BCDIC, ki se uporablja od IBM 704 (1954):

Zakaj črke v EBCDIC niso zaporedne?

Ni takojšnje povratne združljivosti: priročna lastnost BCDIC, ki je bila izgubljena pri prehodu na EBCDIC, je bila, da so številke 0 -9 ustrezajo kodam 0-9. Vendar pa je med njimi vrzeli sedmih kod I и J in v osmih kodah med R и S že bil na BCDIC. Od kod so prišli?

Zgodovina (E)BCDIC se začne sočasno z zgodovino IBM-a - dolgo pred elektronskimi računalniki. IBM je nastal kot rezultat združitve štirih podjetij, med katerimi je bilo tehnološko najnaprednejše podjetje Tabulating Machine Company, ki ga je leta 1896 ustanovil Herman Hollerith, izumitelj tabulator. Prvi tabulatorji so preprosto šteli število luknjanih kart, luknjanih na določenem mestu; toda leta 1905 je Hollerith začel s proizvodnjo decimalno tabulatorji. Vsaka karta za decimalni tabulator je bila sestavljena iz polj poljubne dolžine, številke, zapisane v teh poljih v običajni decimalni obliki, pa so bile seštete po celotnem špilu. Razčlenitev zemljevida na polja je bila določena s povezovanjem žic na povezovalni plošči tabulatorja. Na primer, na tej Hollerithovi luknjani kartici, shranjeno v Kongresni knjižnici je jasno vtisnjena številka 23456789012345678, neznana, razdeljena na polja:

Zakaj črke v EBCDIC niso zaporedne?

Najbolj pozorni so morda opazili, da je na Hollerithovi karti 12 vrstic za luknje, čeprav je za številke dovolj deset; v BCDIC pa je za vsako vrednost najpomembnejših dveh bitov uporabljenih le 12 kod od 16 možnih.

Seveda to ni naključje. Sprva je Hollerith namenil dodatne vrstice za "posebne oznake", ki niso bile seštevane, ampak preprosto preštete - kot v prvih tabulatorjih. (Danes bi jim rekli »bitna polja«.) Poleg tega je bilo mogoče med »posebnimi oznakami« nastaviti skupinske kazalnike: če tabeliranje ne zahteva samo končnih vsot, ampak tudi vmesne, potem se tabulator ustavi, ko zaznal je spremembo v katerem koli od indikatorjev skupine in operater je moral prepisati vmesne vsote z digitalnih tabel na papir, ponastaviti tablo in nadaljevati tabeliranje. Na primer, pri izračunu računovodskih bilanc lahko skupina kartic ustreza enemu datumu ali eni nasprotni stranki.

Do leta 1920, ko se je Hollerith že upokojil, so se začeli uporabljati »tabulatorji za tipkanje«, ki so bili povezani s teletipom in so lahko sami tiskali delne vsote, ne da bi zahtevali posredovanje operaterja. Zdaj je bilo težko ugotoviti, na kaj se nanaša vsaka od natisnjenih številk. Leta 1931 se je IBM odločil uporabiti "posebne oznake" za označevanje črk: oznaka v 12. vrstici je označevala črko iz A za I, v 11. - od J za R, pri nič - od S za Z. Novi "abecedni tabulator" bi lahko natisnil ime vsake skupine kart skupaj z delnimi seštevki; v tem primeru se je neprekinjen stolpec spremenil v presledek med znaki. Prosimo, upoštevajte, da S je označena s kombinacijo lukenj 0+2, kombinacija 0+1 pa prvotno ni bila uporabljena zaradi strahu, da bi dve luknji ena poleg druge v istem stolpcu povzročili mehanske težave v bralniku.

Zakaj črke v EBCDIC niso zaporedne?

Sedaj lahko na tabelo BCDIC pogledate z nekoliko drugačnega zornega kota:

Zakaj črke v EBCDIC niso zaporedne?

Razen tega, da sta 0 in presledek obrnjena, najpomembnejša dva bita določata "posebno oznako", ki je bila luknjana v luknjano kartico za ustrezni znak od leta 1931; najmanj pomembni štirje biti pa določajo števko, vrezano v glavni del kartice. Podpora za simbole & - / je bil dodan IBM-ovim tabulatorjem v tridesetih letih 1930. stoletja, kodiranje BCDIC teh znakov pa ustreza kombinacijam lukenj, ki so bile narejene zanje. Ko je bila potrebna podpora za še večje število znakov, je bila vrstica 8 preluknjana kot dodatna "posebna oznaka" - tako so lahko bile v enem stolpcu do tri luknje. Ta format luknjanih kartic je ostal skoraj nespremenjen do konca stoletja. V ZSSR so pustili IBM-ovo kodiranje latinice in ločil, za cirilične črke pa so v vrsticah 12, 11, 0 naenkrat preluknjali več "posebnih oznak" - ne omejeno na tri luknje v enem stolpcu.

Ko je bil računalnik IBM 704 ustvarjen, niso dolgo razmišljali o kodiranju znakov zanj: vzeli so kodiranje, ki se je takrat že uporabljalo v luknjanih karticah, in ga le »postavili na svoje mesto«. Leta 0, med prehodom iz BCDIC v EBCDIC, so štirje biti nižjega reda vsakega simbola ostali nespremenjeni, čeprav so bili biti višjega reda nekoliko premešani. Tako je format luknjanih kartic, ki ga je Hollerith izbral na začetku prejšnjega stoletja, vplival na arhitekturo vseh IBM-ovih računalnikov, do vključno z IBM Z.

Vir: www.habr.com

Dodaj komentar