Hlavní navigace

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?

9. 2. 2016 11:54

maxlink (neregistrovaný)

Článek pěkný, děkuji.
Myslel jsem jsem si, že si na nový layout zvyknu, ale fakticky mě drtí to, že při čtení neustále koukám do té tmavší mezery mezi sloupek zpráviček a obsah článku, je to až nepříjemné, nemohu se soustředit na text, nevím, prostě něco je špatně, nevím jestli to mám takto sám, ale nevím co mám dělat.

Můžeme s tím něco udělat? Max


Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

120na80.cz: Bojíte se encefalitidy?

Bojíte se encefalitidy?

Lupa.cz: Babiš: E-shopů se EET možná nebude týkat

Babiš: E-shopů se EET možná nebude týkat

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?