home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 July / Chip_1999-07_cd.bin / servis / Chip_txt / TXT / 40.TXT < prev    next >
Text File  |  1999-06-06  |  20KB  |  76 lines

  1. Trocha historie - 1. ƒást
  2. 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.
  3.  
  4. Od "strojáku" k OOP
  5.  
  6. 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í.
  7.  
  8. Myτlenka stará 180 let
  9. 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.
  10. 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.
  11. 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.
  12. 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í.
  13. 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.
  14. 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.
  15.  
  16. První abstrakce: asembler
  17. 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.
  18. 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τí.
  19. 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à.
  20. 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.
  21. 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τí.
  22. 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à.
  23.  
  24. Terminologie
  25. 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.
  26.  
  27. Vyττí jazyky
  28. 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.
  29.  
  30. Revoluce: Fortran
  31. 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à.
  32. 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í.
  33. 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.
  34. 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).
  35.  
  36. Druhá vrstva
  37. 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.
  38.  
  39. Terminologie
  40. 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...
  41.  
  42. První konkurence: Algol a Cobol
  43. 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.
  44. 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.)
  45. 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.
  46. 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à.
  47. 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.)
  48. 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à...)
  49. 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...
  50. 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.
  51. 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í.
  52.  
  53. Zrání: dalτí jazyky
  54. První programovací jazyky ukázaly základní repertoár nástrojà, které jsou v programech obvykle pot²eba:
  55. - Datové typy pro reálná a celá ƒísla, znakové ²et╪zce, pole, struktury.
  56. - V∞poƒet v∞razà zapisovan∞ch podle matematick∞ch zvyklostí, cykly, v╪tvení programu, vstupní a v∞stupní operace.
  57. - Rozƒlen╪ní programu na podprogramy a moºnost odd╪leného p²ekladu ràzn∞ch ƒástí programu.
  58. 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:
  59. - 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.
  60. - 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).
  61. - 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.
  62. - V roce 1967 byl publikován jazyk Simula 67, kter∞ uvedl na scénu objektov╪ orientované programování.
  63. - 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.
  64. - 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.
  65. - 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).
  66.  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).
  67. - 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í.
  68. - 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.
  69. - ¼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.
  70. - 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.
  71.  
  72. P²íτt╪
  73. 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╪.
  74. Miroslav Virius
  75.  
  76.