Trocha historie - 1. Ÿ st Program torsk‚ ýemeslo patý¡ urŸitØ k nejmladç¡m, pýesto u§ m  za sebou docela pohnutou historii. V pr vØ zahajovan‚m miniseri lu si zavzpom¡n me, jak to vçechno zaŸ¡nalo, pokraŸovalo a k jak neuvØýitelnØ mocnìm n stroj…m nakonec dospØlo. Od "stroj ku" k OOP Prvn¡ poŸ¡taŸe v dneçn¡m smyslu slova spatýily svØtlo svØta pýibli§nØ pýed pades ti lety. I kdy§ z kladn¡ princip z…stal stejnì, zmØnilo se skoro vçe - od samotnìch poŸ¡taŸ… a§ po terminologii, a tak se nelze divit, §e se zmØny nevyhnuly ani programov n¡. Myçlenka star  180 let Vìvoj programov n¡ je neodmyslitelnØ spojen s vìvojem vìpoŸetn¡ techniky, tedy pýedevç¡m poŸ¡taŸ…. Asi prvn¡m vìznamnìm pokusem o takov‚to zaý¡zen¡ byla Difference Engine, jej¡§ zjednoduçenì funkŸn¡ prototyp sestrojil AngliŸan Charles Babbage u§ v r. 1822. ælo o zaý¡zen¡ pro vìpoŸet a tisk hodnot polynom…. Pýi dalç¡m vìvoji tohoto zaý¡zen¡ dospØl r. 1837 ve spolupr ci s matematiŸkou Adou Augustou Lovelanceovou k zaý¡zen¡, kter‚ nazval Analytical Engine a kter‚ lze ji§ oznaŸit za univerz ln¡ Ÿ¡slicovì poŸ¡taŸ se vstupn¡, vìstupn¡ a operaŸn¡ jednotkou. Tento poŸ¡taŸ mØl bìt poh nØn parn¡m strojem (!) a ý¡zen programem zapsanìm na dØrnìch çt¡tc¡ch. Babbage sv…j "analytickì stroj" nikdy nedokonŸil, mj. i proto, §e nebyly k dispozici dostateŸnØ kvalitn¡ materi ly pro tak komplikovan‚ zaý¡zen¡; o Ÿtvrt stolet¡ pozdØji vçak £spØçnØ realizoval podobnì, ale jednoduçç¡ projekt æv‚d George Scheutz. SouŸ st¡ n vrhu analytick‚ho stroje musela samozýejmØ bìt i propracovan  sada instrukc¡. Je zaj¡mav‚, §e - na rozd¡l od prvn¡ch elektrickìch poŸ¡taŸ…, sestrojenìch o sto let pozdØji - ji§ obsahovala mj. podm¡nØnì skok. V minul‚m stolet¡ vçak byla myçlenka automatick‚ho poŸ¡tac¡ho stroje lidem natolik ciz¡, §e nenaçla vìraznØjç¡ odezvu ani ve vØdeckìch kruz¡ch. JeçtØ ve zn m‚ knize Camilla Flammariona "Konec svØta", vydan‚ r. 1893, poŸ¡taj¡ astronomov‚ z 25. stolet¡ dr hu komety týi dny a týi noci, samozýejmØ ruŸnØ. (Flammarion s m byl jedn¡m z vìznaŸnìch astronom… sv‚ doby - a m lokdo numericky poŸ¡t  v¡ce ne§ pr vØ astronomov‚.) Pýitom v t‚ dobØ u§ existoval napý. Hollerith…v dØrnoçt¡tkovì poŸ¡tac¡ stroj, vyvinutì v r. 1888 a velice £spØçnØ vyu§itì pýi sŸ¡t n¡ lidu v USA roku 1890. Myçlenka elektronickìch poŸ¡taŸ… dozr la tØsnØ pýed druhou svØtovou v lkou. V NØmecku si dal takov‚to zaý¡zen¡ patentovat Konrad Zuse roku 1936, nez visle na nØm postavil podobn‚ zaý¡zen¡ r. 1939 v USA John Atanasoff. Je zaj¡mav‚, §e instrukŸn¡ sady Zuseovìch poŸ¡taŸ… neobsahovaly podm¡nØn‚ skoky - Zuse zýejmØ neznal Babbageovy pr ce. Dalç¡ podobn  zaý¡zen¡ byla za druh‚ svØtov‚ v lky zkonstruov na i ve Velk‚ Brit nii; mØla slou§it pýedevç¡m k automatick‚mu ý¡zen¡ protiletadlovìch zbran¡. Tyto stroje se od dneçn¡ch poŸ¡taŸ… liçily v jednom z kladn¡m ohledu: programovaly se zpravidla propojov n¡m funkŸn¡ch blok… nebo maŸk n¡m tlaŸ¡tek. S myçlenkou, §e program (neboli instrukce ý¡d¡c¡ chod poŸ¡taŸe) jsou vlastnØ tak‚ data a lze je ulo§it do operaŸn¡ pamØti (a tedy i mØnit), pýiçel roku 1944 John von Neumann - prvn¡m strojem tohoto typu byl EDSAC, postavenì v r. 1949. Nebudeme daleko od pravdy, prohl s¡me-li, §e na principu poŸ¡taŸ… se od t‚ doby nic podstatn‚ho nezmØnilo. PoŸ¡taŸ m  st le centr ln¡ jednotku, operaŸn¡ pamØœ a nØjak  vstupn¡ a vìstupn¡ zaý¡zen¡. Co se ale vìraznØ zmØnilo, je vìkonnost, cena a zp…sob vyu§it¡ poŸ¡taŸ…. Uv d¡ se, §e za posledn¡ch 50 let klesla cena poŸ¡taŸ… o v¡ce ne§ 5 ý d…, tedy v¡ce ne§ stotis¡ckr t. Pýitom v podobn‚m pomØru narostla jejich vìkonnost. Prvn¡ poŸ¡taŸe se pou§¡valy pouze k vØdecko-technickìm nebo vojenskìm vìpoŸt…m - dnes je najdeme prakticky vçude a neznat alespoå z klady pr ce s poŸ¡taŸem je skoro jako neumØt Ÿ¡st a ps t. Prvn¡ abstrakce: asembler Vraœme se ale k naçemu hlavn¡mu t‚matu, k programov n¡. Chceme-li program (rovnocennì ostatn¡m dat…m) ulo§it do pamØti poŸ¡taŸe, mus¡ bìt zaps n pomoc¡ jednoduchìch, element rn¡ch instrukc¡ a ty mus¡ bìt vyj dýeny Ÿ¡sly. Tyto instrukce - v poŸ tc¡ch programov n¡ stejnØ jako dnes - vyjadýuj¡ nejjednoduçç¡ operace, kter‚ poŸ¡taŸ um¡, tedy pýesuny jednotlivìch datovìch polo§ek, z kladn¡ aritmetick‚ operace s ulo§enìmi Ÿ¡sly atd. Pokud jste si nØkdy zkusili programovat ve strojn¡m k¢du, v¡te, v Ÿem je nejvØtç¡ probl‚m: vçechny adresy v takov‚m programu jsou absolutn¡. To znamen , §e po t‚mØý jak‚mkoli z sahu do programu se zmØn¡ adresy mnoha instrukc¡ a promØnnìch a §e program tor pak mus¡ proj¡t celì program a upravit vçechny odkazy na nØ. Nen¡ týeba zd…razåovat, jak snadno lze pýitom udØlat chybu. Vedle toho mus¡ program tor u§¡vaj¡c¡ strojn¡ k¢d zn t Ÿ¡sla vyjadýuj¡c¡ jednotliv‚ instrukce a architekturu poŸ¡taŸe, a to velmi podrobnØ. Oboj¡ se samozýejmØ poŸ¡taŸ od poŸ¡taŸe liç¡. Nelze se tedy divit, §e se od poŸ tku 50. let zaŸaly objevovat prvn¡ asemblery, programovac¡ jazyky, kter‚ nejen nahradily Ÿ¡seln‚ k¢dy instrukc¡ mnemotechnickìmi zkratkami, ale pýedevç¡m zavedly symbolick‚ adresy. Program tor mohl libovoln‚ m¡sto v programu nebo libovoln  data pojmenovat (pýidØlit jim tzv. identifik tor) a d le se na nØ prostýednictv¡m tohoto symbolick‚ho jm‚na odvol vat. T¡m se neuvØýitelnØ zjednoduçilo nejen psan¡, ale pýedevç¡m oprava a £dr§ba program…. Nic ovçem nen¡ zadarmo - mechanickou pýepoŸ¡t vac¡ "otroŸinu" musel vz¡t na sv  bedra pýekladaŸ, program, kterì ze z pisu v asembleru vytvoýil program ve strojn¡m k¢du. Zde se poprv‚ program tor odpoutal od detail… architektury poŸ¡taŸe a mohl se pýi programov n¡ daleko v¡ce vØnovat ýeçen‚mu probl‚mu. S klidnìm svØdom¡m m…§eme tvrdit, §e asembler znamenal prvn¡ vrstvu abstrakce, vlo§enou mezi program tora a hardware. Brzy mØly n sledovat dalç¡. V t‚to dobØ poŸ¡taŸov‚ho d vnovØku doçlo i k prvn¡ revoluci v organizaci programu: Program toýi zaŸali u§¡vat podprogramy. Jinìmi slovy, nauŸili se rozdØlovat algoritmus na opakovanØ pou§¡van‚ Ÿ sti. Spolu s t¡m se objevily i dalç¡ novinky, a to oddØlenì pýeklad r…znìch Ÿ st¡ programu a knihovny podprogram…. Terminologie To, co dnes bاnØ oznaŸujeme jako asembler, se tehdy vØtçinou nazìvalo "jazyk symbolickìch adres" Ÿi "jazyk asembleru". Pod n zvem "asembler" se zpravidla skrìval pýekladaŸ a nØkdy i sestavovac¡ program, tedy - ýeŸeno dneçn¡ terminologi¡ - linker. Tento vìznam slova asembler dnes u§ nach z¡me sp¡çe jen v (nepoŸ¡taŸovìch) vìkladovìch slovn¡c¡ch. Vyçç¡ jazyky Programov n¡ v asembleru je sice podstatnØ snazç¡ ne§ programov n¡ ve strojn¡m k¢du, ale i tak je obt¡§n‚, zdlouhav‚ a st le vy§aduje znalost architektury poŸ¡taŸe; je to pr ce pro specializovan‚ odborn¡ky. Pýitom vytvoýen‚ programy (ý¡kalo se jim strojovØ orientovan‚) nejsou pýenositeln‚ na poŸ¡taŸe jinìch typ…. Proto se velmi brzy objevila myçlenka probl‚movØ orientovan‚ho programovac¡ho jazyka, kterì by byl nez vislì na poŸ¡taŸi a ve kter‚m by napý. bylo mo§no zapisovat vìpoŸty podobnØ jako v matematice. Revoluce: Fortran Ve skuteŸnosti se takov  myçlenka objevila jeçtØ dý¡ve ne§ poŸ¡taŸe von Neumannova typu - vyslovil ji r. 1945 K. Zuse. Jedn¡m z prvn¡ch £spØçnìch pokus… byl "Operational Compiler", vytvoýenì v r. 1954 na M.I.T. (Laning, Zierler). Obchodn¡ £spØch znamenal vçak a§ jazyk Fortran, vyvinutì u firmy IBM v letech 1954 - 1957 tìmem, kterì vedl J. Backus. Tento tìm si vytkl £kol vyvinout snadno zvl dnutelnì programovac¡ jazyk, kterì povede k efektivn¡mu vìsledn‚mu programu. S odstupem Ÿasu lze tvrdit, §e sv‚ho c¡le dos hl - prvn¡ verzi Fortranu bylo opravdu snadn‚ zvl dnout a jeho pýekladaŸ byl patrnØ jeden z nejefektivnØjç¡ch, jak‚ kdy byly vytvoýeny. Obsahoval ýadu optimalizaŸn¡ch algoritm…, z nich§ nØkter‚ si dokonce spouçtØly £seky pýelo§en‚ho programu, aby mohly co nejl‚pe urŸit alokaci registr…. Tehdejç¡ Fortran obsahoval jen nejnutnØjç¡ programov‚ konstrukce - jeden druh cyklu (s pevnØ danìm poŸtem pr…chod…), jen ne£plnì podm¡nØnì pý¡kaz, z kladn¡ Ÿ¡seln‚ typy, pole, pý¡kazy pro vstup a vìstup. Umo§åoval vçak pou§¡vat pomØrnØ slo§it‚ matematick‚ vìrazy - ostatnØ jeho n zev, odvozenì jako zkratka ze slovn¡ho spojen¡ "Formula Translation", prozrazuje, k Ÿemu byl pýedevç¡m urŸen. Od verze Fortran II bylo mo§no rozdØlit program na nØkolik samostatnØ pýekl danìch Ÿ st¡. Pýesto§e se velice brzy objevily dalç¡ jazyky, stal se Fortran na dlouhou dobu n strojem "skuteŸnìch program tor…" a dodnes je v nØkterìch oblastech intenzivnØ vyu§¡v n. Ovçem v onom roce 1957 znamenalo jeho uveden¡ opravdu revoluci. Nejen§e se uk zalo, §e lze navrhnout vyçç¡ programovac¡ jazyk a k nØmu vytvoýit funguj¡c¡ pýekladaŸ, ale pýedevç¡m bylo zpý¡stupnØno programov n¡ "bاnìm" vØdc…m a in§enìr…m a t¡m byl tak‚ nepý¡mo podn¡cen z jem o pou§it¡ poŸ¡taŸ… v mnoha dalç¡ch oblastech. I kdy§ byl Fortran urŸen pýedevç¡m pro vØdecko-technick‚ vìpoŸty, zaŸali jej z hy program toýi vyu§¡vat i v dalç¡ch oblastech, dokonce i v takovìch, pro kter‚ se v podstatØ v…bec nehodil (napý¡klad i pro "zpracov n¡ hromadnìch dat" - dnes bychom ýekli pro jednoduch‚ datab zov‚ aplikace). Druh  vrstva Fortran (a po nØm i dalç¡ vyçç¡ programovac¡ jazyky) vkl d  vlastnØ dalç¡ vrstvu abstrakce mezi program tora a poŸ¡taŸ. Jinìmi slovy, umo§åuje program torovi vyjadýovat se v¡ce v jazyce probl‚mu, a tedy soustýedit se v¡ce na ýeçenou £lohu a m‚nØ se zabìvat poŸ¡taŸem. Pýedstavuje tak‚ vìraznì krok smØrem k pýenositelnosti. Terminologie Pod¡v me-li se do literatury t‚ doby, zjist¡me, §e v 50. letech a na poŸ tku 60. let "programov n¡" znamenalo strojn¡ k¢d nebo asembler. O programu ve Fortranu se hovoýilo jako o "matematick‚ specifikaci probl‚mu" a o pýekladu jako o "automatick‚m programov n¡". Tehdejç¡ program tor tedy sestavil matematickou specifikaci a poŸ¡taŸ se podle n¡ automaticky naprogramoval. Pýi ladØn¡ se chyby hledaly v matematick‚ specifikaci, nikoli v programu... Prvn¡ konkurence: Algol a Cobol Ve Fortranu z konce 50. let chybØla ýada dnes bاnìch n stroj…: Nebyl k dispozici slo§enì pý¡kaz, £plnì podm¡nØnì pý¡kaz ani cyklus ý¡zenì podm¡nkou. Fortran neumo§åoval definovat vlastn¡ datov‚ typy, neobsahoval n stroje pro pr ci s pamØt¡, nepodporoval rekurzi; zato obsahoval nØkolik druh… pý¡kaz… skoku. Nav¡c vy§adoval pevnou £pravu zdrojov‚ho textu (poplatnou tehdy nejŸastØjç¡mu vstupn¡mu m‚diu, dØrn‚mu çt¡tku) - prvn¡ch pØt znak… na ý dku bylo vyhrazeno pro n vØçt¡, pý¡kazy se zapisovaly od 6. do 72. pozice, ka§dì pý¡kaz musel bìt na samostatn‚m ý dku apod. Bاnì zdrojovì program ve Fortranu byl tedy sice podstatnØ pýehlednØjç¡ ne§ bاnì zdrojovì program v asembleru, ale zcela pýehlednì zpravidla nebyl. Absence slo§enìch pý¡kaz… a £pln‚ho IF nutila toti§ program tory hojnØ pou§¡vat pý¡kazy skoku - ono neblaze proslul‚ GOTO. Jedin‚ logick‚ ŸlenØn¡ programu pýedstavovaly podprogramy. V pr…bØhu Ÿasu se proto objevila r…zn  doporuŸen¡, jak program zapisovat, aby byl pýehlednì, a byly dokonce vytvoýeny n stroje, kter‚ takto umØly hotovì program upravit. (Jeden z nich se nazìval tuç¡m Olympus.) Velmi brzy ovçem zaŸaly vznikat dalç¡ jazyky, z nich§ se zm¡n¡me o dvou - Algolu 60 a Cobolu. Algol 60 vytvoýila spoleŸn  komise evropsk‚ a americk‚ organizace u§ivatel… poŸ¡taŸ…. I kdy§ se k praktick‚mu poŸ¡t n¡ pý¡liç nehodil (neumo§åoval pýeklad programu po Ÿ stech, neumo§åoval pracovat se znaky a znakovìmi ýetØzci, obsahoval nØkter‚ problematick‚ konstrukce, tak§e nebylo snadn‚ napsat dobrì pýekladaŸ, nebyl pýipraven na pr ci se soubory apod.), velice vìraznØ ovlivnil dalç¡ vìvoj programovac¡ch jazyk… a programov n¡ v…bec. Algol 60 toti§ nab¡dl program tor…m mj. slo§enì pý¡kaz, (t‚mØý) £plnì podm¡nØnì pý¡kaz, podstatnØ propracovanØjç¡ pý¡kaz cyklu atd. Uk zal, §e pýed vat parametry podprogram…m lze r…znìmi zp…soby a jakì to m…§e m¡t vìznam. Pýinesl tak‚ rekurzivn¡ vol n¡ podprogram…. Druhìm nepominutelnìm zjevem mezi programovac¡mi jazyky poŸ tku 60. let je Cobol, jazyk pro zpracov n¡ hromadnìch dat vytvoýenì z podnØtu americk‚ho ministerstva obrany. Stoj¡ za zm¡nku, §e jedn¡m z c¡l… bylo vytvoýit jazyk, kterì bude srozumitelnì ekonom…m, obchodn¡k…m a voj k…m, tedy nikoli jen program tor…m a poŸ¡taŸovìm specialist…m. (ælo ovçem o to, aby zm¡nØn¡ lid‚ dok zali program Ÿ¡st, nikoli snad ps t. Jinìmi slovy: c¡lem Cobolu bylo, aby mohl nadý¡zenì snadno kontrolovat sv‚ podý¡zen‚ - pýeŸ¡st si, co poŸ¡taŸ dØl  - a nemusel pýitom poŸ¡taŸ…m rozumØt.) Program v Cobolu se proto velice podob  anglickìm vØt m; je rozŸlenØn do pojmenovanìch odstavc… a sekc¡. Prvn¡ verze dokonce neumo§åovala zapisovat bاn‚ aritmetick‚ vìrazy, vìpoŸty se zapisovaly "slovnØ", pý¡kazy jako ADD A TO B GIVING C. (Tv…rci Cobolu zýejmØ nemØli valn‚ m¡nØn¡ o £rovni ý¡d¡c¡ch pracovn¡k…...) Dalç¡m probl‚mem, se kterìm se Cobol musel vyrovnat, byl pýenos program… mezi r…znìmi poŸ¡taŸi. Americk‚ vl dn¡ a arm dn¡ instituce toti§ podle z kona nesmØly preferovat § dn‚ho dodavatele, a proto pou§¡valy ýadu poŸ¡taŸ… od nejr…znØjç¡ch vìrobc… - probl‚my s pýenositelnost¡ program… byly na denn¡m poý dku. Navr§en‚ ýeçen¡ bylo v podstatØ jednoduch‚: v z hlav¡ programu se v Cobolu specifikuje poŸ¡taŸ, na kter‚m se bude program pýekl dat, a poŸ¡taŸ, na kter‚m pobا¡. Ovçem pýekladaŸ…, kter‚ by znaly tak‚ poŸ¡taŸe od jinìch vìrobc…, zase tak moc nebylo... Cobol pýinesl (a bohatØ vyu§¡val) novì datovì typ, kterì se dnes oznaŸuje jako z znam nebo struktura - skupinu promØnnìch r…znìch typ… ch panou jako jeden celek. Vzhledem ke sv‚ orientaci na zpracov n¡ velk‚ho mno§stv¡ dat tak‚ nab¡dl n stroje pro tý¡dØn¡ soubor… podle dan‚ hierarchie kl¡Ÿ… a prostýedky pro popis tiskovìch sestav. Z program torsk‚ho hlediska nebyl Cobol pý¡liç pýita§livì; jeho prvn¡ verze neobsahovaly napý. mo§nost rozŸlenØn¡ programu na podprogramy, vçechny datov‚ struktury byly glob ln¡ a program tor je musel deklarovat pýedem atd. A hlavnØ - jeho bl¡zkost skuteŸn‚ angliŸtinØ znamenala nepý¡jemn‚ prodlou§en¡ zdrojov‚ho textu, a tak si Cobol brzy vyslou§il povØst jazyka pý¡liç "ukecan‚ho". Pýesto je to dodnes jeden z nejd…le§itØjç¡ch programovac¡ch jazyk…, neboœ v nØm byly naps ny miliony ý dk… program…, kter‚ se dodnes pou§¡vaj¡. Zr n¡: dalç¡ jazyky Prvn¡ programovac¡ jazyky uk zaly z kladn¡ reperto r n stroj…, kter‚ jsou v programech obvykle potýeba: - Datov‚ typy pro re ln  a cel  Ÿ¡sla, znakov‚ ýetØzce, pole, struktury. - VìpoŸet vìraz… zapisovanìch podle matematickìch zvyklost¡, cykly, vØtven¡ programu, vstupn¡ a vìstupn¡ operace. - RozŸlenØn¡ programu na podprogramy a mo§nost oddØlen‚ho pýekladu r…znìch Ÿ st¡ programu. U§ na poŸ tku 60. let bylo jasn‚, §e jedno£Ÿelov‚ programovac¡ jazyky nepýedstavuj¡ dokonal‚ ýeçen¡. Neçlo jen o to, §e jejich poŸet rostl z vratnìm tempem - uv d¡ se, §e napý. u§ v r. 1963 bylo ve Velk‚ Brit nii implementov no pýes 30 r…znìch jazyk… - ale i o to, §e se neust le rozçiýoval prostor pro vyu§it¡ poŸ¡taŸ…. Vìsledkem byla mj. snaha o vytvoýen¡ univerz ln¡ho programovac¡ho jazyka a o maxim ln¡ zefektivnØn¡ program torsk‚ pr ce. Pod¡vejme se alespoå heslovitØ na nØkter‚ dalç¡ programovac¡ jazyky, kter‚ se v n sleduj¡c¡ch letech objevily na sc‚nØ, a na jejich pý¡nos: - V r. 1960 byl publikov n jazyk Lisp, kterì pýivedl na sc‚nu neprocedur ln¡ programov n¡. Naçel vyu§it¡ napý. v oblasti umØl‚ inteligence. - V r. 1964 uvedla firma IBM jazyk PL/I, kterì pýedstavoval zýejmØ prvn¡ alespoå trochu £spØçnì pokus o univerz ln¡ programovac¡ jazyk. ælo o synt‚zu Fortranu, Algolu, Cobolu a prvk… nØkterìch dalç¡ch jazyk…. Mezi jinìm v nØm najdeme n stroje pro pr ci s pamØt¡, pro oçetýov n¡ vìjimeŸnìch stav… a pro paraleln¡ zpracov n¡ (i kdy§ zat¡m jen pro vstupn¡ a vìstupn¡ operace). - V t‚m§e roce se objevil jazyk Basic (Kemeney, Kurtz), dalç¡ z programovac¡ch prostýedk…, kter‚ mØly bìt pokud mo§no srozumiteln‚ i neprofesion l…m. Tak‚ tento jazyk zp…sobil revoluci - pýinesl toti§ prvn¡ programov‚ prostýed¡; k tomu se jeçtØ vr t¡me. - V roce 1967 byl publikov n jazyk Simula 67, kterì uvedl na sc‚nu objektovØ orientovan‚ programov n¡. - O rok pozdØji se objevil Algol 68. I kdy§ by se podle n zvu mohlo zd t, §e çlo jen o novou verzi, byl to zcela novì jazyk, kterì pýinesl mj. n stroje pro paraleln¡ programov n¡ (semafor jako n stroj pro synchronizaci pý¡stupu k syst‚movìm prostýedk…m, paraleln¡ vØta), mo§nost pýetاov n¡ oper tor…, prostýedky pro ý¡zen¡ alokace promØnnìch apod. Jeho osud byl vçak podobnì osudu Algolu 60: nedoŸkal se vØtç¡ho rozç¡ýen¡, ale myçlenky, kter‚ pýinesl, ovlivnily snad vçechny programovac¡ jazyky, kter‚ pýiçly po nØm. - Jazyk Pascal (1971) vznikl jako reakce na neuvØýitelnou slo§itost PL/I a Algolu 68 a byl p…vodnØ urŸen pýedevç¡m k vyuŸov n¡ informatiky. Jeho uveden¡ zp…sobilo takýka pýes noc pýevrat ve vìuce programov n¡ (a v d…sledku toho pozdØji i v program torsk‚ praxi), neboœ Pascal je jednoduchì, snadno zvl dnutelnì a pýitom poskytuje potýebn‚ z kladn¡ n stroje. (Standardn¡ Pascal nem  prostýedky pro paraleln¡ programov n¡, pro oddØlenì pýeklad ani pro oçetýov n¡ chyb, tj. pro pr ci s vìjimkami. Tyto n stroje jsou dnes nezbytn‚ pro skuteŸn‚ programov n¡, nejsou vçak zpravidla potýebn‚ v z kladn¡ vìuce informatiky. Standardn¡ Pascal nenab¡z¡ ani prostýedky pro objektov‚ programov n¡; jejich vìznam na poŸ tku 70. let jeçtØ nikdo nech pal - nejen program toýi, ale i teoretici mysleli jeçtØ "procedur lnØ".) Pascal tak‚ nab¡dl novinku - vìŸtov‚ typy. Nav¡c uk zal, §e program lze ps t pýehlednØ a "ŸistØ", a pý¡mo k takov‚mu pojet¡ i vedl. - Jazyk C vytvoýil D. Ritchie (1972). C‚Ÿko nab¡z¡ podobn‚ n stroje jako Pascal, nav¡c mo§nost oddØlen‚ho pýekladu a pý¡stup k nØkterìm n¡zko£rovåovìm konstrukc¡m (adresov  aritmetika a dalç¡ prostýedky). V pr…bØhu 70. byl z podnØtu ministerstva obrany USA vyvinut jazyk Ada, kterì se stal z vaznìm standardem v programech psanìch pro tuto instituci. Je navr§en s maxim ln¡m ohledem na bezpeŸnost programov n¡. Pýinesl nØkolik novìch n stroj…; setk me se zde napý. s generickìmi konstrukcemi (to m…§e bìt týeba seznam naprogramovanì nez visle na typu ukl danìch hodnot - typ se dosad¡ a§ pýi pou§it¡ jako parametr) nebo s randez-vous (jeden z paraleln¡ch proces… specifikuje, kdy a za jakìch podm¡nek se setk  s druhìm procesem). - Smalltalk je zýejmØ prvn¡ ŸistØ objektovì jazyk - naprosto vçe v nØm jsou objekty. Byl navr§en v 70. letech u firmy Rank Xerox. Ned¡lnou souŸ st¡ jeho implementace je i objektov‚ vìvojov‚ prostýed¡. Vìvoj tohoto jazyka pýedevç¡m vìraznØ posunul vpýed teorii objektovØ orientovan‚ho programov n¡. - Na poŸ tku 80. let navrhl B. Stroustrup jazyk C++, z poŸ tku jen jako objektov‚ rozç¡ýen¡ jazyka C, pozdØji jako samostatnì jazyk, kterì nen¡ s C plnØ kompatibiln¡. Mnoh‚ z vlastnost¡ C++ byly inspirov ny starç¡mi jazyky Algol 68, Ada, Smalltalk a samozýejmØ tak‚ jazykem C. V C++ se asi poprv‚ objevily prostory jmen jako n stroj pro organizaci rozs hlìch program…. Poprv‚ se tu tak‚ setk v me s propracovanìm mechanismem v¡cen sobn‚ dØdiŸnosti. Novinkou je i automatick‚ vol n¡ destruktor… pýi z niku instance. - ¬istØ objektovì jazyk Eiffel publikoval B. Meyer r. 1991. Novinkou v nØm je princip kontraktu: v deklaraci metody objektov‚ho typu m…§eme specifikovat pýedbاn‚ podm¡nky (co mus¡ splåovat parametry metody) a podm¡nky, kter‚ mus¡ platit pýi ukonŸen¡ metody. Poruçen¡ kontraktu zp…sob¡ vznik vìjimky. - Asi posledn¡m vìznamnìm jazykem z devades tìch let je Java (Sun Microsystems, 1995). Je to t‚mØý ŸistØ objektovì jazyk, vytvoýenì vypuçtØn¡m ýady "potenci lnØ nebezpeŸnìch" nebo neobjektovìch konstrukc¡ z C++ a doplnØn¡m n stroj… pro paraleln¡ programov n¡, pro ovØýov n¡ bezpeŸnosti apod. Jedn¡m ze z kladn¡ch po§adavk… je naprost  nez vislost na platformØ, tak§e se programy v JavØ zpravidla interpretuj¡ pomoc¡ tzv. virtu ln¡ho stroje. Poznamenejme, §e Java znovu uvedla na sc‚nu automatickou spr vu pamØti, tj. garbage collector. Pý¡çtØ Tolik o nejd…le§itØjç¡ch jazyc¡ch, kter‚ m  dneçn¡ program tor k dispozici. K vytvoýen¡ dobr‚ho programu vçak nestaŸ¡ m¡t kvalitn¡ programovac¡ jazyk. Mus¡me udØlat d…kladnou analìzu probl‚mu, mus¡me d t dohromady dobrì n vrh ýeçen¡ a toto ýeçen¡ mus¡me spr vnØ naprogramovat. K tomu n m mohou pomoci dalç¡ n stroje, ale tak‚ dodr§ov n¡ urŸitìch pravidel. O tom si pov¡me pý¡çtØ. Miroslav Virius