Příchod hackerů: Sněhurka a osmý bit

Lukáš Erben 9. 2. 2016

Jeden byte má osm bitů. Poučka, kterou se dnes jistě děti dozvídají již na základní škole. Nebylo tomu ale tak vždy. První počítače pracovaly s nejrůznějšími délkami slova a pěti či šestibitovým kódováním znaků.

Standardy jsou skvělá věc, někdy vás ale přeci jen až příliš omezují. Když se na přelomu 40. a 50. let objevily první počítače, existovaly standardy binárního kódování vyvinuté pro telegrafní komunikaci. Ten vůbec první navrhl Francouz Emile Baudot již v roce 1870 a o čtyři roky později si jej nechal patentovat (nejednalo se sice o první pětibitové kódování – s tím přišel v podobě vlastní šifry Francis Bacon o tři století dříve, byl to ale první strojový binární pětibitový kód).

Baudotovo kódování nabízelo 2 sady (písmena a číslice) po 32 znacích. To v původní i řadě pozdějších variant znamenalo možnost kódovat základní písmena latinské abecedy (bez rozlišení na malá a velká, deset číslic a pár dalších základních interpunkčních a jiných znaků. Systém nejprve vylepšil Donald Murray v roce 1901, když přidal například kontrolní a řídící znaky. Další drobné změny přineslo kódování Western Union, z nějž byl v roce 1930 vytvořen první skutečný standard v podobě ITA2 – International Telegraph Alphabet No. 2.

Děrná páska s „Baudotovým“ pětibitovým kódováním.

Od Baudota k ASCII

Když se ve druhé polovině 40. a počátkem 50. let objevily první počítače, byl „Baudot“ (v podobě ITA2) jediným zavedeným standardem, a tak není divu, že po něm řada konstruktérů sáhla. Pětibitový kód je ale poměrně omezující množstvím znaků, které v něm lze vyjádřit. Navíc v situaci, kdy nejcennější „komoditou“ prvních počítačů byla paměť, nebyl ideální volbou. Některé z raných systémů v USA proto používaly čtyřbitové (BCD) kódování čísel v desítkové soustavě a šestibitové kódování „grafických“ znaků (abecedy a speciálních znaků) podle standardu, který zavedla armáda (Fieldata). Ani v tomto „duálním“ kódování ale obvykle nebyl prostor pro rozlišení malých a velkých písmen – to přinesl až první „velký“ standard v roce 1963 v podobě (dodnes používaného) sedmibitového ASCII.

ASCII bylo navrženo jako standard pro přenos (zejména dálnopisný) – původně se zvažovalo využít šestibitové kódování s „posunem“ podobně jako u Baudotova kódování (tím se efektivně zdvojnásobí počet kódovaných znaků). Další variantou byl osmibitový kód, ten by měl výhodu v možnosti přenést dvě čtyřbitově kódované číslice nebo jeden osmibitový znak, nicméně byl nakonec zamítnut ze dvou důvodů – za prvé i úspora jediného bitu dávala na přelomu 50. a 60. let smysl, za druhé osmibitový zápis (podporovaný například na děrných páskách) bylo možné využít pro paritní (kontrolní) bit. Bylo tedy zvoleno sedm bitů – dostatek pro základní písmena velké a malé latinky, číslice, speciální a také velký počet řídících znaků. Dost pro angličtinu, málo pro ostatní jazyky. Osmibitové kódování ale bylo takřka za rohem a s ním i možnost doplnit základní sadu ASCII o další znaky – a přinesl jej právě System/360. Nepředbíhejme ale.

ASCII tabulka z manuálu k tiskárně (1972)

Byte, aby se to nepletlo

S označením byte přišel Werner Buchholz, když v roce 1956 pracoval na rané fázi návrhu „superpočítače“ IBM Stretch. Počítač totiž umožňoval adresovat paměť po bitech a zároveň variabilní délku pole instrukce i vlastního znaku – jeho délka byla kódována přímo v instrukci (smyslem bylo využít co nejefektivněji paměť i výpočetní výkon, bylo ale potřeba jasně odlišit, kdy je řeč o bitu a kdy o znaku či číslici – tedy několika bitech. V IBM používali termín bite (kousek), což se ale s bit snadno pletlo, a tak Buchholz navrhl záměrně slovo bite zkomolit na byte. Jenže stále tu byly čtyř a šestibitové bajty, z nichž vycházela z dnešního pohledu podivná šířka slova, s níž počítače v padesátých letech pracovaly (jednalo se typicky o násobky šesti – 12, 18, 36 bitů). Počítače s větší šířkou slova mohly pochopitelně zpracovávat přesnější výpočty (a byly tak často určeny spíše pro vědecké účely).

A osmým bitem se odlišit

Příběh toho, jak se vlastně stalo, že IBM System/360 přišel jako první s osmibitovým kódováním, vyprávěl po letech Gene Amdahl v rozhovoru pro Institut Charlese Babbage. Na počátku vývoje System/360 vypracoval výbor expertů v IBM tajnou zprávu Spread Report (dnes je pochopitelně dostupná online), která shrnovala požadavky a cíle, kterých by s novou platformou mělo být dosaženo. Zvláštní ale bylo, že řada lidí z konstrukčního týmu, včetně šéfkonstruktéra Amdahla Spread Report nečetla, protože byl podle všeho udržován v přísném utajení i před vlastními zaměstnanci. Amdahl a jeho kolegové tak znali jen závěry a požadavky, které ze zprávy vycházely. To vedlo ke sporům o to, jakou architekturu by vlastně nová platforma měla mít.

Chtěl jsem jít cestou 24/48 bitových slov, což by nám umožnilo pracovat buď se šesti nebo s osmi bity. Ale to bylo samozřejmě verboten (sic). Když jsem ten návrh přednesl, tak Fred [Brooks] prohlásil, že to nepřichází v úvahu. Bránil jsem se a prohlásil: „Nemyslím si, že v opačném případě můžeme efektivně pracovat s plovoucí desetinnou čárkou.“ Na to odvětil „Musíme si promluvit s nejvyšším vedením, já tohle nemohu rozhodnout.“ A tak jsme se ocitli v kanceláři Boba Evase – jen my tři. Bob sepsal na tabuli pozitiva a negativa a v případě 8bitového bajtu dal váhu 60 % – jednoduše proto, že se tím odlišíme od ostatních dodavatelů.“

Gene Amdahl v rozhovoru pro Institut Charlese Babbage.

Podle Amdahla bylo rozhodnutí výboru Spread použít osmibitové bajty paradoxně chybou. Kdyby System/360 pracoval s tradiční architekturou 6/24/48 bitů (namísto 8/16/32), mohl být podle něj lepším vědeckým systémem – nabízejícím vyšší výkon pro přesné výpočty. Jenže IBM nechtělo stavět vědecké počítače. Chtělo stavět počítače pro podniky, pro průmysl a chtělo se odlišit. Osmibitové kódování navíc mělo i některé další výhody, související s dálkovým přenosem dat – na počátku šedesátých let jej začalo poprvé používat AT&T pro úvodní fázi digitalizace páteřních telefonních sítí.

IBM nicméně pro svůj osmibitový znakový kód vytvořilo poněkud nepraktický a časem až neuvěřitelně roztříštěný standard EBCDIC (Extented Binary Coded Decimal Interchange Code), který sice navazoval na šestibitové kódování BCD a kód děrných štítků, ale to jej zároveň předurčovalo k tomu, aby nepřekročil hranice své domovské platformy. Z dnešního pohledu se může zdát nepochopitelné, že IBM, přestože bylo členem výboru ustanovujícího ASCII, použilo v případě System/360 vlastní poněkud obskurní kódování. Důvody to ale byly čistě praktické – ASCII nebylo v té době podporováno na stávajících periferiích a vyvinout periferie nové by bylo příliš časově a finančně náročné. EBCDIC byl oproti tomu zpětně kompatibilní.

Příklad kódovací tabulky EBCDIC

Osmibitové kódování a bajt se nicméně uchytily – a masově rozšířily zejména díky nástupu osmi a později šestnácti a dvaatřicetibitových procesorů pro osobní/domácí/mikro počítače v sedmdesátých, osmdesátých a devadesátých letech. Základem kódování znaků se nicméně stala sada ASCII, případně její rozšířené varianty a v posledních letech zejména Unicode. Přesto, kdyby Gene Amdahl prosadil počátkem 60. let „svou“, možná bychom dnes pojmu „osmibit“ vůbec nerozuměli.

Vývoj rozšíření ASCII vs. UTF-8 (Unicode) na webu v čase.

Odkazy

Našli jste v článku chybu?
DigiZone.cz: Kauza technik: oficiální vyjádření Novy

Kauza technik: oficiální vyjádření Novy

DigiZone.cz: Skylink v 1. polovině srpna ukončí 12 207

Skylink v 1. polovině srpna ukončí 12 207

Měšec.cz: Nový sazebník mBank radost nedělá

Nový sazebník mBank radost nedělá

120na80.cz: Bonbon si schovejte na přistání

Bonbon si schovejte na přistání

Měšec.cz: Investice do drahých kovů - znáte základní chyby?

Investice do drahých kovů - znáte základní chyby?

Podnikatel.cz: Fotogalerie: Jesenka už má skoro 50 let

Fotogalerie: Jesenka už má skoro 50 let

DigiZone.cz: Hra o trůny: natáčení 7. řady posunuto

Hra o trůny: natáčení 7. řady posunuto

120na80.cz: Jaké plavecké pomůcky vaše dítě ochrání?

Jaké plavecké pomůcky vaše dítě ochrání?

Podnikatel.cz: Nereaguje na výzvu ČOIky, zaplatí milion

Nereaguje na výzvu ČOIky, zaplatí milion

Měšec.cz: Kdy může jít na mateřskou otec či prarodiče?

Kdy může jít na mateřskou otec či prarodiče?

Měšec.cz: Zelená karta – kde neplatí povinné ručení?

Zelená karta – kde neplatí povinné ručení?

Lupa.cz: IT scéna po brexitu: přijde exodus vývojářů?

IT scéna po brexitu: přijde exodus vývojářů?

Měšec.cz: Kurzy platebních karet: vyplatí se platit? (TEST)

Kurzy platebních karet: vyplatí se platit? (TEST)

Lupa.cz: Japonská invaze. Proč SoftBank kupuje ARM?

Japonská invaze. Proč SoftBank kupuje ARM?

Vitalia.cz: Jak na domácí zmrzlinu?

Jak na domácí zmrzlinu?

DigiZone.cz: Přechod na DVB-T2? Kolem miliardy...

Přechod na DVB-T2? Kolem miliardy...

Měšec.cz: Co s reklamací, když e-shop krachuje?

Co s reklamací, když e-shop krachuje?

Lupa.cz: EU začala prověřovat bezpečnost open-source

EU začala prověřovat bezpečnost open-source

Vitalia.cz: Patří maso do dětského jídelníčku?

Patří maso do dětského jídelníčku?

Měšec.cz: Na návstěvě: call centrum Global Assistance

Na návstěvě: call centrum Global Assistance