Proč v EBCDIC jdou písmena za sebou?

Standard ASCII byl přijat v roce 1963, a dnes je sotva někdo, kdo by používal kódování, jehož prvních 128 znaků by se lišilo od ASCII. Nicméně, až do konce minulého století se aktivně používal EBCDIC – standardní kódování pro IBM mainframy a jejich sovětské klony ЕС ЭВМ. EBCDIC zůstává hlavním kódováním v z/OS – standardní operační systém pro moderní IBM Z mainframy.

Co okamžitě udeří do očí při pohledu na EBCDIC – je to, že písmena nejsou uspořádána postupně: mezi I a J a mezi R a S zůstaly nevyužité pozice (na ЕС ЭВМ byly v těchto mezerách rozmístěny znaky cyrilice). Komu mohlo přijít na mysl kódovat písmena s nerovnými mezerami mezi sousedními písmeny?

Proč v EBCDIC jdou písmena za sebou?

Samo označení EBCDIC ("Extended BCDIC") naznačuje, že toto kódování – na rozdíl od ASCII – nebylo vytvořeno na prázdném místě, ale na základě šestibitného kódování BCDIC, které bylo používáno od IBM 704 (1954):

Proč v EBCDIC jdou písmena za sebou?

Přímá zpětná kompatibilita neexistuje: pohodlnou vlastností BCDIC, ztracenou převedením na EBCDIC, bylo to, že číslům 0—9 odpovídají kódy 0-9. Nicméně, mezery o sedmi kódech mezi I a J a osmi kódy mezi R a S v BCDIC už byly. Kde se vzaly?

Historie (E)BCDIC začíná současně s historií IBM – dávno před elektronickými počítači. IBM byla vznikla sloučením čtyř společností, přičemž nejtechnologičtější byla "Tabulating Machine Company", založená v roce 1896 Hermanem Holleritem – vynálezcem tabulátorů. První tabulátory pouze počítaly počet děrovaných karet, které prošly určitým místem; ale v roce 1905 Hollerit začal výrobu desetinných tabulátorů. Každá karta pro desetinný tabulátor se skládala z polí libovolné délky, a čísla zaznamenaná v těchto polích v obvyklé desítkové podobě se sčítala po celé hromadě. Rozdělení karty na pole bylo určováno propojováním drátů na přepínací desce tabulátoru. Například na této děrované kartě Hollerita, uchovávané v Kongresové knihovně, je jasně vyraženo číslo 23456789012345678, neznámo jak rozdělené na pole:

Proč v EBCDIC jdou písmena za sebou?

Nejpozornější mohli zaznamenat, že na kartě Hollerita je 12 řad pro otvory, ačkoliv pro čísla stačí deset; a v BCDIC se pro každou hodnotu dvou vyšších bitů používá pouze 12 kódů z 16 možných.

Samozřejmě, že to není náhodná shoda. Původně Hollerith zamýšlel další sloupce pro "speciální značky", které se nesčítaly, ale prostě počítaly – jako v nejstarších tabulátorech. (Dnes bychom je nazvali „bitovými poli“.) Kromě toho bylo mezi "speciálními značkami" možné nastavit group indicators: pokud při tabulaci bylo potřeba nejen konečných součtů, ale i mezivýsledků, tabulátor se zastavil, když zjistil změnu jakéhokoli z group indicators, a operátor musel přepsat mezivýsledky z digitálních panelů na papír, resetovat panel a znovu zahájit tabulaci. Například při výpočtu účetních zůstatků mohla skupina karet odpovídat jednomu datu nebo jednomu obchodnímu partnerovi.

V roce 1920, kdy již Hollerith odešel do důchodu, se začaly používat "tiskové tabulátory", které se připojovaly k teletype a mohly samy tisknout mezisoučty, aniž by vyžadovaly zásah operátora. Složitost nyní spočívala v tom, určit, k čemu se každé z vytištěných čísel vztahuje. V roce 1931 se IBM rozhodla pomocí "speciálních značek" označovat písmena: značka v 12. řadě označovala písmeno od A do I, v 11. řadě – od J do R, v nulové – od S do Z. Nový "abecední tabulátor" mohl tisknout název každé skupiny karet spolu s mezisoučty; přičemž netransformovaný sloupec se proměnil na mezeru mezi symboly. Všimněte si, že S je označeno kombinací otvorů 0+2, zatímco kombinace 0+1 nebyla zpočátku používána ze strachu, že dva otvory vedle sebe v jednom sloupci mohou způsobit mechanické problémy ve čtečce.

Proč v EBCDIC jdou písmena za sebou?

Nyní na tabulku BCDIC můžete pohlížet mírně jiným pohledem:

Proč v EBCDIC jdou písmena za sebou?

S výjimkou toho, že 0 a mezera jsou prohozeny, dva nejvyšší bity určují "speciální značku", kterou od roku 1931 razili na perforované kartě pro odpovídající symbol; a čtyři nižší bity určují číslo vyražené v hlavní části karty. Podpora symbolů & - / Byly přidány do IBM tabulek v 30. letech, a kódování těchto symbolů v BCDIC odpovídá dírám, které pro ně byly navrtávány. Když byla potřeba podpora ještě většího počtu symbolů, začaly se jako dodatečné "speciální značky" vrtat řady 8 – takto mohlo být v jednom sloupci až tři díry. Tento formát děrných karet zůstal prakticky nezměněn až do konce století. V SSSR byly zachovány IBM kódování latinky a interpunkce, zatímco pro písmena cyrilice se ihned vrtaly několik „speciálních značek“ v řadách 12, 11, 0 – neomezeno na tři díry v jednom sloupci.

Když se vytvářel počítač IBM 704, nad kódováním symbolů pro něj se dlouho nepřemýšlelo: vzali kódování, které se již tehdy používalo v děrných kartách, a pouze 0 „umístili na místo“. V roce 1964, při přechodu od BCDIC k EBCDIC, byly čtyři nejnižší bity každého symbolu ponechány beze změn, i když byly mírně přeskupeny vyšší bity. Tak formát děrných karet zvolený Holleritem na začátku minulého století ovlivnil architekturu všech počítačů IBM, včetně IBM Z.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster