410 likes | 607 Views
Programovací jazyk . Doc. Ing. Juraj Vaculík, PhD., Mail : juvac@fpedas.utc.sk Web http://nf446.host.sk. Programovací jazyk. Ak máme s niekým komunikovať, potrebujeme zodpovedajúci prostriedok dorozumievania – jazyk .
E N D
Programovací jazyk Doc. Ing. Juraj Vaculík, PhD., Mail : juvac@fpedas.utc.sk Web http://nf446.host.sk
Programovací jazyk • Ak máme s niekým komunikovať, potrebujeme zodpovedajúci prostriedokdorozumievania – jazyk. • Jazyk je „súhrn pravidiel, na základe, ktorých vznikla reč“. Pôvodne bol jazyk iba prostriedkom komunikácie medzi ľuďmi. Progranmovanie 2006 Prirodzenýjazyk
Prirodzené jazyky • počet slov je neúmerne vysoký • v jazykoch existuje veľa výnimiek spôsobených napríklad historickým vývojom a zdanlivo nezmyselné spojenia • v každom jazyku existuje skupina slov, ktoré majú niekoľko významov – homonymá ako a naopak rôzne slová s rovnakým významom čo spôsobuje nejasnosť a nejednoznačnosť ich vysvetlenia, • v niektorých prípadoch nie je možné ani z kontextu odhadnúť, čo dané slovo vyjadruje • prirodzený jazyk obsahuje veľa prvkov a slovných konštrukcií, ktoré sú pri formulovaní postupov zbytočné, napríklad nič nehovoriace frázy a zdvorilostné otázky Progranmovanie 2006 Generácie
Generácie jazykov • prvá generácia – strojovo - orientované jazyky • druhá generácia – assembler – vyššia úroveň strojového kódu • tretia generácia – procedurálne jazyky • štvrtá generácia – objektové jazyky • piata generácia – dotazovacie jazyky - SQLStructuredQueryLanguages • 5,5 generácia – značkové jazyky HTML, WML • šiesta generácia – naturallanguages HMI Progranmovanie 2006 Paradox
Čím viac ľudí pracuje v výpočtovou technikou, tým menej o nej vieme. Paradox dneška Napriek tomu, že dnes už prakticky nikto nič nevie, každý vie, kde to nájde ... Progranmovanie 2006 História
Pojem informatika • 1962 – P. Dreyfus (Francúzsko) – použil slovo INFORMATIQUE (INFORMATION + AUTOMATIQUE) disciplína pre spracovanie informácií • 1966 – Francúzska akadémia prijala definíciu: Informatika – veda o spracovaní informácií (najmä pomocou automatických strojov) ako podpora ľudského poznania a komunikácie v oblastiach techniky, ekonomiky a spoločenských vied • V najvšeobecnejšej forme je obsahom informatiky „porozumenie prenosu a transformácie informácie“ Progranmovanie 2006
História vývoja počítačov • 1617 – John Napier (Škótsko) – vymyslel logaritmy a zostrojil predchodcu logaritmického pravítka • 1621 – Wiliam Oughtred (Anglicko) – logaritmické pravítko (kruhové) • 1623 – Wilhelm Schickard (Nemecko) – mechanická kalkulačka (násobenie delenie) • 1645 – Blaise Pascal (Francúzsko) – mechanická kalkulačka (sčítanie, odčítanie) Progranmovanie 2006
História vývoja počítačov • 1673 – Gottfried Wilhelm von Leibnitz – matematické operácie až s 12 miestnymi číslami • 1724 – B. Bouchon – použitie diernej pásky pre riadenie tkáčskeho stavu • 1804 – Joseph Mária Jacqard – riadenie tkáčskeho stavu pomocou diernych štítkov • 1786 – J. H. Mueller – myšlienka stroja pre výpočet hodnôt polynómu (nerealizované) • 1820 – Charles Xavier Thomas de Colmar – jednoduchý počítací stroj Progranmovanie 2006
História vývoja počítačov • 1833 – Charles Babbage – funkčný prototyp počítača riadeného programom na diernych štítkoch, tvorca koncepcie počítača riadeného programom s možnosťami podmienených a nepodmienených skokov • 1854 – George Boole - tvorca matematickej logiky (len operátory AND, OR, NOT) – zostavovanie formúl z výrokov (Booleova algebra) • 1890 – H. Hollerith – stroj pre spracovanie diernych štítkov, použitý pri sčítaní obyvateľstva, zakladateľ Tabulation Machine Company, z ktorej vznikla firma IBM (International Business Corporation) Progranmovanie 2006
História vývoja počítačov • 1919 – Eccles, Jordan (USA) – konštrukcia klopného obvodu – reprezentácia dvojstavových hodnôt. • 1936 – Alan Turing – definícia abstraktného modelu číslicového počítača (tzv. Turingov stroj) – teoretický aparát pre teoretický informatiku (potenciálne možnosti a schopnosti počítačov) • 1937 – Claude Shanon – teoretický aparát pre tvorbu kombinačných obvodov Progranmovanie 2006
História vývoja počítačov • 1938 - Konrád Zuse (Veľká Británia) - prototyp mechanického programovateľného počítača Z1 (1000 bitov pamäti) • 1940 – Zuse – Z2 – počítač s mechanickou pamäťou, výpočty pomocou obvodov na báze elektromagnetických relé • 1941 – Zuse – Z3 počítač 2600 relé, šírka slova 22 bitov, pamäť 64 slov, sčítanie, odčítanie násobenie (3-5 sekúnd), delenie, odmocnina, balistické výpočty dráhy rakiet • 1943 – Atanasoff, Berry (USA) – počítač ABC, pamäť 60 slov po 50 bitov, riešenie sústav lineárnych rovníc Progranmovanie 2006
História vývoja počítačov • 1943 – Colosus, Turing (Cambridge) – počítač Colossus – dekódovanie nemeckých šifier • 1945 – Pensylvánia – počítač ENIAC (Electronic Numerical Integrator and Calculator) – pamäť 20 slov po 10 desiatkových číslic, 17648 elektróniek, 1500 relé, 30 ton, príkon 140 kW, 500 súčtov za sekundu, násobenie 14x a delenie 143x pomalšie, dáta na diernych štítkoch, program sa zadával nastavovaním spínačov na doske, ktorá sa dodatočne pripojila k počítaču Progranmovanie 2006
Generácie počítačov • 1944 – John von Neumann – koncepcia počítača s vnútorným riadením (program uložený v pamäti počítača) • 1952 – prvá generácia - počítač EDVAC, bezporuchová prevádzka priemerne 18 hodín • 1958 – druhá generácia – firma IBM – využitie polovodičových prvkov (diódy, tranzistory) • 1963 - IBM360 – tretia generácia počítačov – integrované obvody Progranmovanie 2006
Delenie počítačov • analógové – veličiny sa zobrazujú pomocou spojito sa meniacich fyzikálnych veličín (napätie, prúd), rýchle, nepresné, lacné • číslicové počítače – veličiny sa zobrazujú pomocou čísel (obvykle v dvojkovej sústave) • hybridné – spojenie analógových a číslicových Progranmovanie 2006
Von Neumannova architektúra filozofia: počítač sa nemá prispôsobovať potrebám konkrétnej aplikácie svojou vnútornou štruktúrou ale iba programom • operačná (aritmeticko – logická) jednotka ALU – vykonáva základné aritmetické a logické operácie • riadiace jednotka – koordinuje činnosť celého počítača, riadi činnosť jeho podsystémov, spolupracuje s riadiacimi jednotkami prídavných zariadení • procesor = operačná + riadiaca jednotka Progranmovanie 2006
Von Neumannova architektúra ... • pamäť – uchovanie informácie (vnútorná, vonkajšia) • prídavné (periférne) zariadenia – vstupné a výstupné zariadenia • prepojovací podsystém • ostatné časti (zdroj a pod.) • program uložený v pamäti – počítač s vnútorným riadením • sériové spracovanie inštrukcií Progranmovanie 2006
Základné časti počítača • procesor • riadiaca jednotka – číta inštrukcie, dekóduje ich a podľa nich riadi vykonávanie operácií • ALU - aritmeticko-logická jednotka • vnútorné registre accumulator • vnútorná zbernica • operačná pamäť (konvenčná, doplnková – EMS, rozširujúca – XMS) • vonkajšia pamäť – permanentná (pružný disk, pevný disk, ...) Progranmovanie 2006
Základné časti počítača • vstupno / výstupný podsystém • prepojenie zariadení - zbernica • PC bus (8 bitová), • ISA (16 bitová, max 5-8 MB/s), • MCA (16 až 64 bitová, 20 až 40 MB/s), • EISA (16-32 bitová, 16-33 MB/s) • riadiace zariadenia (radiče) prídavných zariadení Progranmovanie 2006
Prídavné zariadenia • klávesnica • zobrazovacia jednotka (monitor) • polohovacie zariadenia – myš, guľový ovládač (trackball), krížový ovládač (joystick), dotyková plocha (touchpad), dotyková obrazovka (touchscreen), údajová rukavica (dataglove), ... • tlačiareň (mechanická – ihličková, typové koliesko, atramentová, laserová, termotlačiareň) • snímač obrazu (scanner) • digitalizačný tablet • kresliace zariadenia - súradnicový zapisovač (plotter), valcový grafický zapisovač, ... Progranmovanie 2006
História počítačov Progranmovanie 2006 Vývoj
Vývoj jazykov Progranmovanie 2006 Jazyky ...
Programové jazyky I • Fortran – FORmula TRANslation - určený hlavne pre riešenie vedeckých a matematických problémov - pozostáva z algebraických výrazov v anglickej frazeológií a bol prvý raz bol predstavený v r. 1954, • COBOL – COmmon Bussinel Oriented Language – vytvorený hlavne pre oblasť ekonomických informácií a oblasť tzv. hromadného spracovania dát – nemá veľkú podporu v matematickom aparáte pre zložité matematické operácie, • ALGOL – skratka pre ALGOrithmic Language sa pôvodne volal IAL – International Algebraic Language a používal sa hlavne na matematické a vedecké výpočty a modelovanie, prvý raz bol predstavený v Európe v r.1960, Progranmovanie 2006 Jazyky ...
Programovacie jazyky II • PL/1 – Programming Language 1, vyvinutý v r. 1964, ktorý kombinoval vlastnosti COBOLu a ALGOLu preto je použiteľný pre spracovanie dátových štruktúr, rovnako ako pre matematické výpočty a vedecké aplikácie, • BASIC – Beginner’s All-purpose Symbolic Instruction Code - vyvinutý v r. 1965 na Dartmouth Collage v USA pre študentov, ktorý požadovali jednoduchý jazyk pre začiatky programovania. • PASCAL, pomenovaný podľa Blaise Pascala bol vyvinutý v roku 1971, • LISP a PROLOG oba sa používajú v aplikáciách umelej inteligencie - artificialintelligence. • Jazyk C, vyvinutý v r. 1974 v laboratóriách fy. Bell Telephone Laboratory, sú stále používané, aj keď mnohé z nich prešli pomerne rapídnym vývojom. Progranmovanie 2006 Jazyky ...
Programovacie jazyky III • Z novších jazykov je možné spomenúť jazyky ako Java, Javascript, Perl, Python alebo systémy ako ASP, PHP, ktoré principiálne vychádzajú z vlastností jazykov Pascal a C a sú implementované do prostredia Internetu. Progranmovanie 2006 Prvky jazyka
Prvky jazyka • operácie nad pamäťou a presuny, priradenie • aritmetické a logické operácie • vetvenie programu • príkazy opakovania a cyklov Progranmovanie 2006 Typy jazykov
interpret pseudokompilátor kompilátor Generovanie výstupného kódu Progranmovanie 2006 Kompilácia
Kompilácia • proces pri ktorom prekladač – kompilátor prechádza zdrojový kód programu a transformuje ho do jeho cieľovej podoby. • Počas kompilácie pripája k programu objekty uložené v knižniciach Progranmovanie 2006 Tvorba
Tvorba programu • metóda zhora nadol - dekompozícia • analyzovať problém a definovať jednotlivé dielčie problémy, • charakterizovať spoluprácu jednotlivých častí, • nadefinovať prázdne moduly, ktoré sa časom nahradia reálnymi modulmi, • tvorba vlastných reálnych modulov. • metóda zdola nahor – syntéza Progranmovanie 2006 Dekompozícia
Metóda zhora nadol Progranmovanie 2006 Porovnanie
Porovnanie metód • Pri návrhu zhora nadol hovoríme - táto úloha je pre nás prílišzložitá. Rozdelíme ju preto na radmenších úloh a tie na ďalšie úlohy až kým nedostaneme súbor úloh, ktoré sú dostatočnejednoduché, aby sme ich mohli vyriešiť. Hrozí to, že dostatočne neodhadneme opakovateľnosť niektorého prvku a budeme ten istý alebo veľmi podobný prvok programovať niekoľko krát. • Pri návrhu zdola nahor hovoríme - tento súbor príkazov mojej úlohe nevyhovuje, pretože jeho základné operácie sú prílišjednoduché. Preto použijeme tieto základné operácie pre vytvorenie zložitejších a zložitejšíchoperácii, ktoré danú úlohu dokážu vyriešiť. Pri tejto metóde hrozí, že sa možnosti nami vytvoreného inštrukčného súboru nestretnú s požiadavkami riešeného problému Progranmovanie 2006 Pojem program
Pojem program • Každý program sa skladá z dvoch prekrývajúcich komponentov: • deklaráciou používaných dátovýchštruktúr a • postupnosťoupríkazov jazyka. Obidve časti musíme vedieť zapísaťsprávne a na správnemiesto. V závislosti od typu jazyka, jeho použitých prvkov, štruktúry programu a prostredia tieto dve časti navzájom menia svoju veľkosť. Progranmovanie 2006 Štruktúra
Štruktúra programu • hlavička - identifikačná časť– meno programu alebo jeho prvku napríklad knižnice, • deklaračnáčasť obsahuje deklarácie všetkých použitých prvkov a • príkazováčasť obsahuje riadiacu časť programu. Progranmovanie 2006 Ladenie
Ladenie programu • najkomplikovanejšia časť jeho tvorby. V tomto procese je nutné podrobiť program skúške, či navrhnutý algoritmus obstojí v prevádzke a použité postupy vždy vedú k cieľu. Inými slovami, je to hľadanie chýb a kontrola logiky programu. Každú chybu je nutné podrobiť analýze, pretože nie vždy je na vine tá chyba, ale často je táto chyba len dôsledkom inej nepresnosti alebo inej chyby. Chyby nie je treba LEN opraviť, ale je ich treba opraviť SPRÁVNE. Progranmovanie 2006 Ladenie ...
Ladenie programu Ladenie programu je proces, pri ktorom odhaľujeme chyby zjavné a vyrábame z nich chyby skryté. Pri ladení programu platí ešte jeden veľmi nepríjemný, ale o to pravdivejší Murphyho zákon: Každou opravou sa do programu zanesie aspoň jedna chyba. Progranmovanie 2006 Kontrola
Ladenie – kontrola • syntaktickákontrola programu, t.j. či bol program dobre napísaný z hľadiska syntaxe príslušného jazyka • Druhou je logickákontrola programu, t.j. ako sme definovali algoritmus spracovania. • Žiaľ, tu zlyháva technika a musí nastúpiť človek – programátor, ktorý túto činnosť musí vykonať – a musí ju vykonať dobre. Od nej závisí činnosť a spoľahlivosť programu. Progranmovanie 2006 Krokovanie
Ladenie - krokovanie programu • Pomocou krokovania je možné sledovať činnosť programu nastaviť si v programe body zastavenia – zarážky – breakpoint a krokovať len tie časti, ktoré sú komplikovanejšie alebo ešte neboli odskúšané. Pomerne častou chybou je vynechávať krokovanie cyklov a podmienok Progranmovanie 2006 Murphy
Murphyho zákony programovania • V každom programe je aspoň jedna chyba • Každý program sa dá skrátiť aspoň o jeden riadok • Najjednoduchšie chyby sa hľadajú najhoršie • Každou opravou sa do programu zanesie nová chyba • Ak sa ti zdá, že je program v poriadku, určite si niečo prehliadol • Programátor robí čo vie, počítač si robí čo chce • Každý program je zastaralý vo chvíli, keď je vložený do počítača • Tvorba každého programu stojí vždy viac a trvá vždy dlhšie • Ak sa program osvedčí, je treba ho zmeniť • Ak sa program neosvedčí, je treba o ňom spraviť dokumentáciu Progranmovanie 2006 koniec
Ďakujem za pozornosť ... Pokračovanie: Vývoj jazykov