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í.

widgety

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?
Vitalia.cz: Muž, který miluje příliš. Ženám neimponuje

Muž, který miluje příliš. Ženám neimponuje

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

Vitalia.cz: Tohle jsou nejlepší česká piva podle odborníků

Tohle jsou nejlepší česká piva podle odborníků

DigiZone.cz: Sony MP-CL1A: miniaturní projektor

Sony MP-CL1A: miniaturní projektor

Vitalia.cz: Test dětských svačinek: Tyhle ne!

Test dětských svačinek: Tyhle ne!

Vitalia.cz: 5 chyb, které děláme při skladování potravin

5 chyb, které děláme při skladování potravin

Vitalia.cz: Tahák, jak vyzrát nad zápachem z úst

Tahák, jak vyzrát nad zápachem z úst

Lupa.cz: Hackeři mají data z půlmiliardy účtů Yahoo

Hackeři mají data z půlmiliardy účtů Yahoo

Lupa.cz: Další Češi si nechali vložit do těla čip

Další Češi si nechali vložit do těla čip

DigiZone.cz: Ginx TV: pořad o počítačových hráčích

Ginx TV: pořad o počítačových hráčích

Podnikatel.cz: Takhle se prodávají mražené potraviny

Takhle se prodávají mražené potraviny

DigiZone.cz: Na jaká videa se vlastně díváme

Na jaká videa se vlastně díváme

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

DigiZone.cz: Parlamentní listy: kde končí PR...

Parlamentní listy: kde končí PR...

Lupa.cz: Jak levné procesory změnily svět?

Jak levné procesory změnily svět?

DigiZone.cz: Digi Slovakia zařazuje stanice SPI

Digi Slovakia zařazuje stanice SPI

Vitalia.cz: Jsou vegani a vyrábějí nemléko

Jsou vegani a vyrábějí nemléko

Lupa.cz: Aukro.cz mění majitele. Vrací se do českých rukou

Aukro.cz mění majitele. Vrací se do českých rukou

Podnikatel.cz: EET pro e-shopy? Postavené na hlavu

EET pro e-shopy? Postavené na hlavu

DigiZone.cz: Světový pohár v přímém přenosu na ČT

Světový pohár v přímém přenosu na ČT