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?
Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Lupa.cz: Kdy se Estonec přihlásí k české datové schránce?

Kdy se Estonec přihlásí k české datové schránce?

Vitalia.cz: Syfilis: To není „nemoc z lásky“

Syfilis: To není „nemoc z lásky“

120na80.cz: Bylinka pro dobrý sex. Jaká to je?

Bylinka pro dobrý sex. Jaká to je?

Měšec.cz: Co když na dovolené přijdete o kartu?

Co když na dovolené přijdete o kartu?

DigiZone.cz: Hodlá Markíza skončit v DVB-T?

Hodlá Markíza skončit v DVB-T?

Vitalia.cz: Kedlubna, neobyčejná zelenina

Kedlubna, neobyčejná zelenina

120na80.cz: Víte, co je svobodná menstruace?

Víte, co je svobodná menstruace?

Vitalia.cz: Galerie: Strouhanka ze starých rohlíků? Kdepak

Galerie: Strouhanka ze starých rohlíků? Kdepak

Lupa.cz: Samořídicí taxíky jsou tu. Začíná s nimi Uber

Samořídicí taxíky jsou tu. Začíná s nimi Uber

Lupa.cz: Měřičům síly hesla se nedá věřit. Víte proč?

Měřičům síly hesla se nedá věřit. Víte proč?

Root.cz: Xiaomi má vlastní notebook podobný Macu

Xiaomi má vlastní notebook podobný Macu

Vitalia.cz: Proč mu to dává? Copak už může kaši?

Proč mu to dává? Copak už může kaši?

Měšec.cz: Se stavebkem k soudu už (většinou) nemusíte

Se stavebkem k soudu už (většinou) nemusíte

DigiZone.cz: Vláda schválila digitální vysílání ČRo

Vláda schválila digitální vysílání ČRo

Měšec.cz: Test: Výběry z bankomatů v cizině a kurzy

Test: Výběry z bankomatů v cizině a kurzy

DigiZone.cz: Prima a vznik slovenského kanálu

Prima a vznik slovenského kanálu

DigiZone.cz: Skylink přepracoval web

Skylink přepracoval web

DigiZone.cz: ČTÚ červenec: rušení trochu vzrostlo

ČTÚ červenec: rušení trochu vzrostlo

Lupa.cz: Elektronika tajemství zbavená. Jak s ní začít?

Elektronika tajemství zbavená. Jak s ní začít?