Hlavní navigace

IBM a sedm trpaslíků (třetí část)

30. 11. 2010
Doba čtení: 21 minut

Sdílet

Dnes budeme pokračovat v popisu počítačů vyráběných jedním z „trpaslíků“ v době, kdy vznikaly první a druhé generace mainframů. Jedná se o společnost Remington Rand (později Sperry Rand), která kromě minule popsaného počítače UNIVAC I komerčně nabízela i jeho vylepšenou variantu UNIVAC II.

Obsah

1. Od UNIVACu I k UNIVACu II

2. Technologie, na kterých byl založen sálový počítač UNIVAC II

3. Formát dat a instrukcí zpracovávaných počítačem UNIVAC II

4. „Přepínač zpětné kompatibility“

5. Opravdoví programátoři sice píšou svoje programy přímo ve strojovém kódu, ale kdo to zaplatí?

6. Grace Hopper a vývoj vyšších programovacích jazyků na počítačích UNIVAC

7. Programovací jazyky A-0 (system) a MATH-MATIC

8. Programovací jazyky B-0, FLOW-MATIC a COBOL

9. Odkazy na Internetu

1. Od UNIVACu I k UNIVACu II

V předchozí části seriálu o historii výpočetní techniky jsme se zaměřili na popis sálového počítače UNIVAC I vyráběného v první polovině padesátých let minulého století společností Remington Rand. Jednalo se o první komerčně dostupný počítač, jehož aritmeticko-logická jednotka i řadič byly zkonstruovány především z elektronek (cca 5600 kusů) a polovodičových diod (v počtu větším než 18000 kusů), zatímco operační paměť byla vytvořena z akustických zpožďovacích trubic naplněných rtutí. Tento počítač byl i přes relativně vysokou frekvenci hodinového signálu 2,25 MHz poměrně pomalý – za jednu sekundu dokázal vykonat průměrně pouze 1905 operací. To se může zdát v dnešní době superskalárních procesorových jader zvláštní (protože v jednom hodinovém taktu mohou tyto procesory vykonat více než jednu instrukci), ovšem u počítače UNIVAC byl hodinový signál použit pro posun jednotlivých bitů mezi operační pamětí, pracovními registry a aritmeticko-logickou jednotkou. Základní aritmetická operace sčítání či odčítání mohla být provedena rychlostí 0,525 milisekund, což odpovídá zmiňované průměrné rychlosti 1905 operací za sekundu.

Obrázek 1: Počítač UNIVAC – v popředí je vidět jeho řídicí panel, za ním dva osciloskopy, v pozadí řadič a ALU a po pravé straně páskové jednotky typu UNISERVO.

Tento počítač byl z komerčního hlediska velmi úspěšný, ovšem poměrně záhy se ukázalo, že pro některé úlohy jsou jeho technické parametry nedostatečné – především se jednalo o malou kapacitu operační paměti a celkově nízkou výpočetní rychlost. Právě kvůli malé kapacitě operační paměti byla většina programů navržena takovým způsobem, že se z několika magnetických pásek postupně načítala vhodně uspořádaná data, která se po zpracování ukládala na další magnetickou pásku, takže operační paměť sloužila především jako vyrovnávací paměť, popř. paměť pro ta nejdůležitější často používaná data. Přitom se mohlo využívat jedné v té době unikátní vlastnosti UNIVACu – jednotky s magnetickými páskami mohly páskou pohybovat jak dopředu, tak i dozadu. Ovšem některé úlohy nemohly být dostatečně efektivně tímto způsobem řešeny. Z tohoto důvodu, samozřejmě v souladu se zaváděním nových technologických novinek v oboru číslicové techniky, začali konstruktéři ve firmě Remington Rand pracovat na novém typu počítače, který dostal jméno UNIVAC II. Jedním z požadavků bylo dodržení zpětné kompatibility s původním UNIVACem I, protože od roku 1952 vznikla pro tento počítač již poměrně velká řada programů, které mohly být jednoduše zpracovány na novém výkonnějším stroji.

Obrázek 2: Dobová reklama na počítač UNIVAC II.

2. Technologie, na kterých byl založen sálový počítač UNIVAC II

Pravděpodobně nejdůležitější změnou, která ve velké míře ovlivnila vlastnosti počítače UNIVAC II, byla náhrada technologie akustických zpožďovacích linek zkonstruovaných Eckertem za paměť s feritovými jádry (core memory). Díky tomuto technologickému pokroku bylo možné řádově zvýšit jak kapacitu operační paměti z jednoho tisíce na deset tisíc slov (120000 znaků, tj. v dnešních jednotkách cca 87 kB), tak i urychlit přístup k datům, který musel původně být u akustické paměti prováděn sériově (přesněji řečeno bit po bitu), protože bity v tomto typu paměti neustále „kroužily“ v uzavřené smyčce tvořené vlastní trubicí naplněné rtutí, piezoelektrickými měniči (senzory), synchronizačními obvody a zesilovači.

Obrázek 3: Titulní stránka manuálu k počítači UNIVAC II.

Spolu s přechodem na zcela novou technologii záznamu informací v operační paměti se ztratil i původní význam osciloskopů, které byly nedílnou součástí UNIVACu I – již minule jsme si řekli, že každý osciloskop mohl sledovat signál kolující v jedné z akustických zpožďovacích linek a dokonce bylo možné na řídicím panelu vybrat libovolné slovo ležící v operační paměti, které zkušený operátor dokázal snadno z obrazovky osciloskopu přečíst. Paměť s feritovými jádry navíc nepotřebovala téměř žádnou údržbu, na rozdíl od paměti se zpožďovacími akustickými linkami, jejichž válce naplněné rtutí bylo zapotřebí pravidelně „ladit“ a navíc tyto paměti vyžadovaly poměrně vysokou okolní teplotu, což technikům znepříjemňovalo pracovní podmínky.

Obrázek 4: Blok feritové paměti z počítače UNIVAC II.

Počet polovodičových diod použitých pro konstrukci UNIVACu II zůstal přibližně stejný jako u UNIVACu I (více než 18000 kusů), ale celkový počet elektronek se nepatrně snížil z 5600 kusů na cca 5200 kusů, což souvisí jak se změnou technologie operačních pamětí (viz již zmíněné synchronizační obvody a zesilovače, které mohly být nahrazeny logikou typu „1 z n“ sestavenou především z polovodičových diod), tak i s tím, že se v tomto počítači, jako v jednom z prvních sálových počítačů druhé generace vůbec, objevily i tranzistory. Počet tranzistorů dosahoval pouze 1200 kusů (tj. 4,5× méně než elektronek), i když se ke konci padesátých let začaly objevovat počítače zkonstruované pouze z polovodičových prvků, tj. z diod a tranzistorů (pravdou však zůstává, že v jedné elektronce – skleněné baňce – bylo možné mít hned několik různých prvků, například dvě triody, triodu a pentodu atd., takže například klopný obvod mohl být sestrojen pouze z jedné elektronky, která tak mohla nahradit několik tranzistorů). Výpočetní rychlost byla oproti předchozímu modelu teoreticky zdvojnásobena, prakticky však počítač dokázal provést průměrně 3000 operací za sekundu namísto původních 1905 operací.

Obrázek 5: Replika prvního tranzistoru z roku 1947.

3. Formát dat a instrukcí zpracovávaných počítačem UNIVAC II

Již v úvodní kapitole jsme si řekli, že sálový počítač UNIVAC II byl navržen takovým způsobem, aby byl v co největší míře zpětně kompatibilní se svým předchůdcem UNIVAC I. Oba typy počítačů dokázaly zpracovat stejné typy údajů, a na tomto místě je nutné říci, že se jednalo o zcela unikátní formát, který nebyl nikdy dříve ani později u dalších počítačů (ani u dalších typů UNIVACů) použit, zejména z toho důvodu, že způsob uložení čísel a instrukcí nebyl úsporný. To sice bylo akceptovatelné v době, kdy byla cena ALU a řadiče vyšší než cena relativně malé operační paměti, ale u novějších počítačů se tato vlastnost již považovala za nepřijatelnou, což vlastně platí dodnes. Připomeňme si, že minule popsaný počítač UNIVAC pracoval se slovy, které měly šířku dvanácti znaků, přičemž každý znak byl uložen v šesti bitech (bylo tedy rozeznáváno celkem 64 znaků). Pokud se pracovalo s numerickými údaji, byla čísla uložena stejně jako znaky, přičemž se z původních šesti bitů využívaly pouze bity čtyři (horní dva zónové bity byly v tomto případě vynulovány).

Obrázek 6: Postupný vývoj základních prvků elektronických počítačů (poznámka: integrovaný obvod z roku 1967 obsahoval 22 tranzistorů a zhruba stejné množství pasivních elektronických členů).

První znak ve slovu byl vyhrazen pro uložení znaménka, což znamená, že rozsah zpracovávaných čísel byl roven –99 999 999 999 až +99 999 999 9­99. Tento formát uložení čísel nebyl v žádném případě úsporný, protože pro uložení jedenácticiferného čísla se znaménkem bylo použito celkem 72 bitů, které by při použití binárního kódu v dvojkovém doplňku postačovaly pro uložení čísel v rozsahu –271 až 271-1, tj. -2361183241434­822606848 až 2361183241434­822606847 (což jsou 22ciferná čísla, nikoli čísla pouze 11ciferná). Ovšem formát UNIVACu na druhou stranu vedl ke zjednodušení konstrukce aritmeticko-logické jednotky a taktéž ke značnému zpřehlednění psaní programů, které se v té době ještě tvořily na papíře ve strojovém kódu (nikoli v assembleru). Ve slovech o šířce dvanácti znaků byly uloženy i instrukce a to po dvojicích – každá instrukce tedy měla délku šesti znaků, i když to v některých případech nebylo nezbytné.

Obrázek 7: Instalace UNIVACu u zákazníků v jejich výpočetním centru.

To je ostatně patrné i z následující tabulky s ukázkami několika instrukcí, které jsme si již popsali minule (třetí znak instrukce – zde nulový – však dostal v případě UNIVACu II nový význam):

Instrukce Význam
B00XXX přenos slova z adresy XXX do registru A a X
L00XXX přenos slova z adresy XXX do registru LX
C00XXX uložení obsahu registru A do paměti na adresu XXX
A00XXX přičtení obsahu paměti z adresy XXX k registru A (X je použit pro přenosy)
Q00×xx pokud jsou registry L a A rovny, naplň registr CC číslem XXX – neboli proveď skok v následujícím tak­tu
000×xx SKIP (odpovídá instrukcím typu NOP)
900×xx STOP (zastavení programu a indikace tohoto stavu na řídicím panelu počítače)

Obrázek 8: Řídicí panel počítače UNIVAC II (reklamní fotografie).

4. „Přepínač zpětné kompatibility“

Povšimněte si, že na počítači UNIVAC I je pouze první znak instrukce použit pro zápis jejího kódu (jedná se o prefixy B, L, C, A). Poté jsou v instrukčním kódu uloženy v podstatě pouze výplňové znaky 00 a následuje tříznaková adresa jednoho z operandů, který je načten či ukládán do operační paměti, která měla u UNIVACu I rozsah adres 000–999. Tento formát dat i instrukcí byl u počítače UNIVAC II do značné míry zachován, ovšem některé instrukce byly rozšířeny o možnost adresování slov v rozsahu až 10000 adres (0000–9999) oproti původním 1000 adresám (při pohledu na předchozí tabulku je zřejmé, že toto rozšíření bylo velmi jednoduché) a navíc instrukce začínající znakem V mohly přenášet celý blok slov (1 až 9 slov), namísto pouhé dvojice slov.

Obrázek 9: Jeden z prvků počítače UNIVAC II – polovodičové diody umístěné na vyměnitelném modulu.

Aby byla zpětná kompatibilita zaručena v co největší míře, byl počítač UNIVAC II vybaven přepínačem, který (na obvodové úrovni) měnil chování některých jeho funkčních bloků. Pokud byl tento přepínač přepnut do polohy „kompatibility“, považoval se vždy třetí znak instrukce za znak „0“, což mj. znamenalo omezení rozsahu adres na původní hodnotu 000 až 999. Taktéž programový čítač po překročení hodnoty 999 automaticky přešel na hodnotu 000, protože některé původní aplikace s tímto chováním počítaly (programátoři například poměrně často vytvářeli samomodifikující se programy, v nichž se měnila adresa instrukcí – poslední tři znaky instrukce, protože UNIVAC I neměl například indexové registry ani podporu pro nepřímé adresování).

Obrázek 10: Některá periferní zařízení UNIVACU II: UNITYPER II v popředí, řídicí panel a jednotky UNISERVO II v pozadí (poznámka: jedná se pravděpodobně o reklamní fotografii, takže slečna na obrázku není skutečná operátorka a určitě ne programátorka, protože programátoři s vlastním počítačem vůbec nepřišli do styku – své programy vytvářeli na speciálních papírových formulářích, které byly přepisovány a nahrávány na magnetické pásky).

5. Opravdoví programátoři sice píšou svoje programy přímo ve strojovém kódu, ale kdo to zaplatí?

V předchozím textu jsme si popsali formát instrukcí počítače UNIVAC I, který byl z důvodu zpětné kompatibility použit i v počítači UNIVAC II. Vývoj programů pro tyto počítače byl poměrně složitý a především zdlouhavý a drahý, protože celý algoritmus se nejprve popsal vývojovým diagramem (kresleným samozřejmě ručně na papíry) a po ručním přezkoumání, zda algoritmus skutečně bude pracovat v pořádku, se provedl jeho přepis přímo do strojového kódu – assembler, neboli automatický programový prostředek pro transformaci zdrojového kódu využívajícího symbolické adresy a symbolické názvy instrukcí do strojového kódu, nebyl k dispozici. Přepis do strojového kódu se prováděl na papírové formuláře, které byly následně buď vyděrovány na děrné štítky (přístup preferovaný z historických důvodů především firmou IBM) nebo přepsány na magnetické pásky (přístup firmy Remington Rand). Až poté operátoři program i s daty připravili jako dávkovou úlohu, která musela počkat na své zpracování do doby, kdy byl k dispozici potřebný výpočetní čas, což však také mohlo trvat i několik týdnů.

Obrázek 11: Hledání chyby v blocích počítače UNIVAC II bylo zajisté dobrodružnou záležitostí.

Pokud z nějakého důvodu došlo při návrhu programu nebo při jeho přepisu k chybě, muselo se celé kolečko opakovat. Navíc se v celém procesu od vytvoření programu až po jeho úspěšný běh vyskytovalo velké množství lidí (analytici, programátoři, operátoři, technici, lidé starající se o výměnu a archivaci magnetických pásek atd.), kteří mohli kvůli nějakému opomenutí do procesu tvorby a spuštění programu vnést nějakou chybu, která se projevila až následně při kontrole dat, nebo v horším případě až při stížnostech zákazníků. Mimochodem: zajímavé bylo, že operátoři a technici byli většinou přímo zaměstnanci firmy Remington Rand, která tyto pracovníky svým zákazníkům pronajímala i s vlastním počítačem (outsourcing tedy není ve světě IT vůbec nic nového, spíše naopak). I kvůli vysokému počtu pracovníků byla každá chyba, která se v programu nebo v průběhu zpracování objevila, velmi drahá.

Obrázek 12: Základní pomůcky programátorů počítače UNIVAC I a II před vznikem vyšších programovacích jazyků – šablona pro tvorbu vývojových diagramů a tabulka kódů znaků.

Pro ilustraci nároků na lidské zdroje je v následující tabulce vypsán počet pracovníků doporučovaných pro obsluhu jednoho počítače UNIVAC II v jednosměnném, dvousměnném a třísměnném provozu. Jedná se o doporučení vydané samotnou firmou Remington Rand. Nejde přitom o zbytečnou přezaměstnanost, protože počítač bylo žádoucí mít vzhledem k jeho vysoké ceně (více než 1 500 000 dolarů, popř. měsíční pronájem za cca 30 000 dolarů) neustále vytížený. Na tomto místě je možná vhodné si připomenout, že UNIVAC II dokázal za jednu sekundu vykonat pouze cca 3000 základních aritmetických operací nebo manipulací se symboly (znaky), takže i rychlost zpracovávání dat byla z dnešního pohledu velmi nízká:

Profese Jednosměnný provoz Dvousměnný provoz Třísměnný provoz
Supervisors 5
Analysts 8
Programmers 20
Clerks 5
Librarians 1
Operators 2 4 6
Engineers 4 6 9
In-Out Oper 2 4 6
Tape Handlers 1 2 3

Obrázek 13: Vývojový diagram sloužil jako základ pro tvorbu strojového kódu.

6. Grace Hopper a vývoj vyšších programovacích jazyků na počítačích UNIVAC

„Very few [people involved in data processing] were symbol oriented; very few of them were mathematically trained.“
Grace Hopper vysvětluje, proč je vhodné programovat počítače UNIVAC ve vyšším programovacím jazyku.

Jedním z klíčových zaměstnanců firmy Remington Rand byla od roku 1949 i slavná Grace Hopper (čtenáři, kteří dávají přednost přechylování cizích příjmení, nechť si v dalším textu doplní chybějící -ová). Tato programátorka dříve pracovala s reléovými elektronickými počítači, například na počítači Mark II. Právě při hledání chyby v jednom programu, který byl provozován na tomto stroji (programy byly „zadrátovány“, nikoli uloženy v paměti), objevila Grace, že v kontaktu jednoho relé je chycená můra – „bug“, kvůli níž kontakt nesepínal. Od té doby se v jejím týmu všechny chyby v programu označovaly slovem „bug“ a Grace později začala používat nové slovo „debug“ pro proces odstraňování těchto chyb. Ovšem vraťme se do doby, kdy Grace Hopper pracovala u firmy Remington Rand (Sperry Rand). V této době se jí totiž podařilo vytvořit první překladač na světě nazvaný jednoduše A-0, který dokázal transformovat symbolicky zapsané matematické výrazy do strojového kódu počítačů UNIVAC.

Obrázek 14: Program napsaný ve strojovém kódu počítačů UNIVAC I a UNIVAC II (viz též třetí kapitolu i předchozí díl tohoto seriálu).

Jednalo se vlastně o revoluční myšlenku – namísto ručního „překladu“ programů (reprezentovaných většinou vývojovým diagramem) do strojového kódu se pro tuto činnost mohl použít vlastní počítač, který si tak program sám pro sebe připravil. Po první verzi překladače A-0 vznikly i jeho vylepšené verze, především překladač A-2, který byl poměrně intenzivně na UNIVACu používán. Grace Hopper vydala v roce 1952 článek o tomto překladači, což zajímavě koresponduje s rokem 1954, kdy byl vytvořen a představen první překladač Fortranu (tento jazyk se ovšem, na rozdíl od A-0 a A-2, používá po mnoha úpravách a vylepšeních dodnes). Grace Hopperová pokračovala v návrzích dalších programovacích jazyků, především jazyka B-0 a taktéž jeho pokračovatele FLOW-MATIC a v neposlední řadě i COBOLu. Posléze se Grace vrátila k práci pro námořnictvo USA, kde po mnoha letech služby získala (jako první žena) hodnost kontradmirála v záloze.

Obrázek 15: Velmi malá část vývojového diagramu složitějšího programu pro počítače UNIVAC I a UNIVAC II. Povšimněte si především příkazů pro ovládání páskových jednotek a taktéž zápisu absolutních adres 000–999 u některých stavů diagramu.

7. Programovací jazyky A-0 (system) a MATH-MATIC

Programovací jazyk A-0, neboli Arithmetic Language version 0, byl vytvořen v letech 1951 až 1952 pro počítač UNIVAC I a později byl upraven pro použití na počítači UNIVAC II. Jednalo se o poměrně přímočarý překladač (bez kontroly chyb), který transformoval aritmetické a řídicí příkazy do strojového kódu. Z tohoto překladače vycházela i jeho vylepšená verze A-2, jejíž upravená varianta byla nabízena pod názvem MATH-MATIC. V programech napsaných v MATH-MATICu byly všechny programové řádky očíslovány, podobně jako tomu bylo o mnoho let později v BASICu. Jak je pro programovací jazyky, jejichž autorem je Grace Hopper, typické, používají se namísto různých symbolů převážně klíčová slova a sekvence slov s přesným významem (JUMP TO SENTENCE atd.). Jednotlivé příkazy jsou ukončeny tečkou, podobně jako věty v běžném textu.

Obrázek 16: Titulní stránka manuálu k programovacímu jazyku FLOW-MATIC.

Následuje ukázka čtyř vzájemně nesouvisejících programových řádků napsaných v MATH-MATICu – jedná se postupně o příkaz pro načtení hodnot tří proměnných, podmíněný příkaz, volání podprogramu umístěného na řádcích 4 až 8 (s implicitním návratem) a počítanou programovou smyčku s počitadlem J, které se zvyšuje od jedničky do dvaceti s krokem 1:

(1) READ A B C .
(20) IF X > Y JUMP TO SENTENCE 8 .
(12) EXECUTE SENTENCE 4 THRU 8 .
(6) VARY J 1 (1) 20 SENTENCE 11 THRU 15 .

Obrázek 17: Program napsaný v programovacím jazyku FLOW-MATIC.

Druhý demonstrační příklad je již plnohodnotným programem, který dokáže vypočítat průměr a odchylku z deseti hodnot uložených v poli. Na tomto příkladu je možná patrné, že již před více než 57 lety bylo možné programovat na vcelku vysoké úrovni (a výsledný program je dokonce čitelnější, než by tomu bylo v případě některých „moderních“ programovacích jazyků):

(1) READ-ITEM X(10) IF SENTINEL JUMP TO SENTENCE 11 .
(2) SUM = 0 .
(3) SUMSQUARES = 0 .
(4) VARY I 1 (1) 10 SENTENCE 5 THRU 6 .
(5) SUM = SUM + X(I)
(6) SUMSQUARES = SUMSQUARES + X(I)^2 .
(7) MEAN = SUM / 10 .
(8) VARIANCE = SUMSQUARES / 10 - MEAN ^ 2 .
(9) WRITE AND EDIT FOR UNIPRINTER MEAN VARIANCE .
(10) JUMP TO SENTENCE 1 .
(11) STOP .

Obrázek 18: Grace Hopper s referenční příručkou jazyka COBOL stojící u páskových jednotek UNISERVO.

8. Programovací jazyky B-0, FLOW-MATIC a COBOL

„Real Programmers don't write in PL/I. PL/I is for programmers who can't decide whether to write in COBOL or FORTRAN.“

Druhým programovacím jazykem, který Grace Hopper i přes určitý odpor svých spolupracovníků (kteří předložený návrh považovali za příliš radikální) vytvořila pro počítače UNIVAC, byl jazyk nazvaný B-0 neboli Business Language version 0. Tento programovací jazyk je však známější pod svým komerčním názvem FLOW-MATIC. Jednalo o jazyk určený převážně pro zpracování dat, provádění bankovních operací, fakturace či výpočty mezd, což je velký rozdíl oproti výše popsaným jazykům A-0 a MATH-MATIC, které byly orientovány zejména na provádění numerických výpočtů. FLOW-MATIC je s velkou pravděpodobností prvním programovacím jazykem, v němž se používala anglická slova mající význam klíčových slov; navíc se jednotlivé příkazy (programové řádky) velmi podobaly jednoduchým anglickým větám, a to i v případě zápisu složitějších podmínek (jazyk původně rozeznával dvacet klíčových slov). V tomto programovacím jazyku se vyskytovaly i příkazy, kterými se daly přímo ovládat jednotlivé páskové jednotky, kterých mohlo být v případě počítače UNIVAC II připojeno až 16. Existovala taktéž podpora pro tvorbu tiskových sestav.

ibm6

Obrázek 19: První zveřejněná publikace o programovacím jazyku COBOL.

Následuje ukázka programu napsaného v programovacím jazyce FLOW-MATIC. Povšimněte si především poměrně složité podmínky na řádku číslo jedna a porovnání výsledku výpočtu s nulou se specifikovaným počtem míst na řádku 14 (ZZZZ znamená porovnání na 4 místa/cifry, ZZZZZ na pět míst atd.):

 0) INPUT  INVENTORY FILE=A
           PRICE FILE=B,
    OUTPUT PRICED-INV FILE=C
           UNPRICED-INV FILE=D,
    HSP D.
 1) COMPARE PRODUCT-NO(A) WITH PRODUCT-NO(B)
    IF GREATER GO TO OPERATION 10;
    IF EQUAL GO TO OPERATION 5;
    OTHERWISE GO TO OPERATION 2.
 2) TRANSFER A TO D.
 3) WRITE ITEM D.
 4) JUMP TO OPERATION 8.
 5) TRANSFER A TO C.
 6) MOVE UNIT-PRICE(B) TO UNIT-PRICE(C).
 7) WRITE ITEM C.
 8) READ ITEM A; IF END OF DATA GO TO OPERATION 14.
 9) JUMP TO OPERATION 1.
10) READ ITEM B; IF END OF DATA GO TO OPERATION 12.
11) JUMP TO OPERATION 1.
12) SET OPERATION 9 TO GO TO OPERATION 2.
13) JUMP TO OPERATION 2.
14) TEST PRODUCT-NO(B) AGAINST ZZZZZZZZZZZZ;
    IF EQUAL GO TO OPERATION 16;
    OTHERWISE GO TO OPERATION 15.
15) REWIND B.
16) CLOSE-OUT FILES C, D.
17) STOP. (END)
ibm6

Obrázek 20: Editor pro zápis COBOLovských programů, na kterém je mj. patrné i rozdělení řádků na jednotlivé části (číslo sekvence, sedmý sloupec, sekce A, sekce B) i omezení délky jednotlivých textových řádků na 72 znaků na řádek.

CS24_early

Grace Hopper se později podílela i na vzniku standardu jazyka COBOL (tento jazyk se ostatně používá dodnes, stále na něm závisí mnoho důležitých bankovních aplikací), který vychází právě z jazyka FLOW-MATIC. O tom, že oba zmíněné programovací jazyky mají hodně společného, se mohou čtenáři přesvědčit sami porovnáním předchozího kódu s COBOLovským programem, v němž taktéž můžeme narazit na anglické věty ukončené tečkou, formátováním údajů na zadaný počet desetinných míst atd.:

       $ SET SOURCEFORMAT"FREE"
       IDENTIFICATION DIVISION.
       PROGRAM-ID.  Multiplier.
       AUTHOR.  Michael Coughlan.
      * Example program using ACCEPT, DISPLAY and MULTIPLY to
      * get two single digit numbers from the user and multiply them
      * together
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  Num1                                PIC 9  VALUE ZEROS.
       01  Num2                                PIC 9  VALUE ZEROS.
       01  Result                              PIC 99 VALUE ZEROS.
       PROCEDURE DIVISION.
       DISPLAY "Enter first number  (1 digit) : " WITH NO ADVANCING.
       ACCEPT Num1.
       DISPLAY "Enter second number (1 digit) : " WITH NO ADVANCING.
       ACCEPT Num2.
       MULTIPLY Num1 BY Num2 GIVING Result.
       DISPLAY "Result is = ", Result.
       STOP RUN.
ibm6

Obrázek 21: Program typu „Hello World!“ zapsaný v COBOLu. Tento screenshot ukazuje obrazovku terminálu připojeného k mainframu firmy IBM.

9. Odkazy na Internetu

  1. UNIVAC II – Universal Automatic Computer Model II
    http://ed-thelen.org/comp-hist/BRL61-u4.html
  2. UNIVAC I Computer System
    http://univac1­.0catch.com/
  3. UNIVAC I Computer System
    http://univac1­.0catch.com/y­ellowpage.htm
  4. UNIVAC (Wikipedia)
    http://en.wiki­pedia.org/wiki/U­nivac
  5. UNIVAC I (Wikipedia)
    http://en.wiki­pedia.org/wiki/U­NIVAC_I
  6. UNIVAC II (Wikipedia)
    http://en.wiki­pedia.org/wiki/U­NIVAC_II
  7. UNIVAC III (Wikipedia)
    http://en.wiki­pedia.org/wiki/U­NIVAC_III
  8. FLOW-MATIC, COBOL's Roots, Birth of COBOL…
    http://www.inf.fu-berlin.de/leh­re/SS01/hc/pl/co­bol.htm
  9. FLOW-MATIC
    http://en.wiki­pedia.org/wiki/FLOW-MATIC
  10. FLOW-MATIC Manual
    http://archive­.computerhisto­ry.org/resources/tex­t/Remington_Ran­d/Univac.Flow­matic.1957.102646140­.pdf
  11. Grace Murray Hopper
    http://cs-www.cs.yale.e­du/homes/tap/Fi­les/hopper-story.html
  12. Grace Hopper
    http://en.wiki­pedia.org/wiki/Gra­ce_Hopper
  13. Biographies of Women Mathematicians: Grace Murray Hopper
    http://www.ag­nesscott.edu/lrid­dle/women/hop­per.htm
  14. A-0 System
    http://en.wiki­pedia.org/wiki/A-0_programming_lan­guage
  15. Rosetta Code – Category:COBOL
    http://rosetta­code.org/wiki/Ca­tegory:COBOL
  16. COmmon Business Oriented Language
    http://foldoc­.org/COBOL
  17. COBOL Compilers
    http://www-01.ibm.com/sof­tware/awdtool­s/cobol/
  18. Cobol: Not Dead Yet
    http://www.com­puterworld.com/s/ar­ticle/266156/C­obol_Not_Dead_Y­et?intsrc=kc_rfavs
  19. The future's bright … the future's Cobol
    http://features­.techworld.com/ap­plications/3056/the-futures-bright–the-futures-cobol/
  20. COBOL Example Programs
    http://www.csis­.ul.ie/COBOL/e­xamples/defau­lt.htm
  21. Introduction to COBOL
    http://www.csis­.ul.ie/COBOL/Cou­rse/COBOLIntro­.htm
  22. COBOL programming – tutorials, lectures, exercises, examples
    http://www.csis­.ul.ie/COBOL/
  23. Wikipedia: COBOL
    http://en.wiki­pedia.org/wiki/CO­BOL
  24. Humor on Computers, Systems and Programming
    http://www-crypto.htw-saarland.de/we­ber/misc/program­ming.html
  25. OpenCOBOL
    http://en.wiki­pedia.org/wiki/O­penCOBOL
  26. OpenCOBOL.org
    http://openco­bol.org/
  27. OpenCOBOL FAQ
    http://openco­bol.add1tocobol­.com/
  28. TinyCOBOL
    http://tiny-cobol.sourcefor­ge.net/
  29. TinyCOBOL FAQ
    http://tiny-cobol.sourcefor­ge.net/docs/faq/
  30. JTC1/SC22/WG4 – COBOL
    http://ra.dku­ug.dk/jtc1/sc2­2/wg4/
  31. COBOL on COGS
    http://www.co­boloncogs.org/IN­DEX.HTM
  32. Cobol Coders: Going, Going, Gone?
    http://www.com­puterworld.com/s/ar­ticle/266228/C­obol_Coders_Go­ing_Going_Gone_
  33. BUNCH
    http://en.wiki­pedia.org/wiki/BUN­CH
  34. The Colossus That Works
    http://www.ti­me.com/time/ma­gazine/article/0,9171,9­49693–5,00.html
  35. Mainframe computer
    http://en.wiki­pedia.org/wiki/Ma­inframe_compu­ter
  36. United States Census Bureau
    http://en.wiki­pedia.org/wiki/U­nited_States_Cen­sus_Bureau
  37. Slideshow – More Core Memories
    http://spectrum­.ieee.org/com­puting/hardwa­re/slideshow-more-core-memories
  38. UNIVAC I Mercury Delay Line Memory
    http://ed-thelen.org/comp-hist/vs-univac-mercury-memory.html
  39. Digital Number System Part-III
    http://www.asic-world.com/digi­tal/numbering3­.html
  40. Excess-3 – Definition
    http://www.wor­diq.com/defini­tion/Excess-3
  41. Excess-3
    http://en.wiki­pedia.org/wiki/Ex­cess-3
  42. Method of complements
    http://en.wiki­pedia.org/wiki/Met­hod_of_comple­ments
  43. Univac documentation
    http://www.bit­savers.org/pdf/u­nivac/univac1/
  44. UNISERVO
    http://en.wiki­pedia.org/wiki/U­NISERVO
  45. John Mauchly
    http://en.wiki­pedia.org/wiki/Joh­n_Mauchly
  46. J. Presper Eckert
    http://en.wiki­pedia.org/wiki/J­._Presper_Eckert
  47. BINAC
    http://en.wiki­pedia.org/wiki/BI­NAC
  48. Delay line memory
    http://en.wiki­pedia.org/wiki/De­lay_line_memo­ry
  49. Paměť se zpožďovací linkou
    http://cs.wiki­pedia.org/wiki/Pa­měť_se_zpožďo­vací_linkou
  50. Description of the BINAC
    http://www.pa­losverdes.com/las­thurrah/binac-description.html
  51. UNIVersal Automatic Computer
    http://www.thoc­p.net/hardware/u­nivac.htm
  52. IBM 36-bit computers
    http://www.36bit­.org/ibm/
  53. Symbolics 36-bit computers
    http://www.36bit­.org/symbolic­s/
  54. IBM System 360/370 Compiler and Historical Documentation
    http://www.edel­web.fr/Simula/
  55. Who Was Who in IBM's Programming Research? Early FORTRAN Days
    http://www.tra­iling-edge.com/~bob­bemer/PRORES.HTM
  56. Control Data Corporation (CDC) 6600: 1966–1977
    http://www.cis­l.ucar.edu/com­puters/gallery/cdc/6600­.jsp
  57. Control Data Corporation (CDC) 7600: 1971–1983
    http://www.cis­l.ucar.edu/com­puters/gallery/cdc/7600­.jsp
  58. Cray History
    http://www.cra­y.com/About/His­tory.aspx?404;http:­//www.cray.com:80/a­bout_cray/his­tory.html
  59. Cray Historical Timeline
    http://www.cra­y.com/Assets/PDF/a­bout/CrayTime­line.pdf
  60. Company: Cray Research, Inc. (Computer History)
    http://www.com­puterhistory.or­g/brochures/com­panies.php?al­pha=a-c&company=com-42b9d5d68b216
  61. PDP-1 Web Pages
    http://www.pdp-1.org/
  62. PDP-1 Restoration Process
    http://pdp-1.computerhis­tory.org/pdp-1/
  63. Programmed Data Processor
    http://en.wiki­pedia.org/wiki/Pro­grammed_Data_Pro­cessor
  64. Digital Equipment Corporation
    http://en.wiki­pedia.org/wiki/Di­gital_Equipmen­t_Corporation
  65. PDP-1
    http://en.wiki­pedia.org/wiki/PDP-1
  66. Ancient Computing Machinery
    http://www.ee­.ryerson.ca/~el­f/ancient-comp/index.html
  67. Spacewar – The first computer video game. Really!
    http://www3.sym­patico.ca/mau­ry/games/space/spa­cewar.html
  68. Programmed Data Processor-1 Handbook
    http://www.dbit­.com/~greeng3/pdp1/pdp1­.html

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.