View
82
Download
1
Category
Preview:
DESCRIPTION
Programovacie jazyky . Doc. Ing. Juraj Vaculík, PhD., Mail : juvac@fpedas.utc.sk Web http://nf446.host.sk. Generácie jazykov. 1. g. Strojový kód 2. g. Assembler 3. g. Procedurálne a štruktúrované jazyky 4. g. Objektovo orientované 5. g. SQL – databázové spracovanie - PowerPoint PPT Presentation
Citation preview
Programovacie jazyky
Doc. Ing. Juraj Vaculík, PhD.,Mail : juvac@fpedas.utc.sk
Web http://nf446.host.sk
Progranmovanie 2006 2
Generácie jazykov
1. g. Strojový kód 2. g. Assembler 3. g. Procedurálne a štruktúrované jazyky 4. g. Objektovo orientované 5. g. SQL – databázové spracovanie 5,5. g. Značkové jazyky 6. g. Natural language
Strojový kód
Progranmovanie 2006 3
Strojový kód
to sú elementárne inštrukcie vyjadrené číselnými kódmi, vlastná reč počítača, na PC to môže byť napr. „presuň obsah registru AX na zadané miesto v pamäti“, „pripočítaj 1 k obsahu registru BX“ atd.
k programovaniu v strojovom kóde je treba poznať architektúru počítača, pre ktorý svoj program píšeme.
programovať pomocou elementárnych inštrukcií, navyše vyjadrených číslami, je problematické; ešte väčší problém ale predstavujú absolútne adresy. I nepatrná úprava programu totiž spôsobí, že sa zmení všetky nasledujúce adresy a my potom musíme v programe zmeniť odkazy na ne. Je jasné, že opravy a údržba takéhoto programu sú veľmi náročné.
Assembler ...
Progranmovanie 2006 4
Assembler ...
jazyk symbolických adries, ktoré dnes súhrnne nazývame asembler
v asembleri sú číselné kódy inštrukcií nahradené mnemotechnickými skratkami, napríklad
mov ax,adr alebo add bx,1. Rôzne miesta v programe je možné označiť
návestím - symbolickými adresami, a na toto návestie sa v inštrukciach odvolávame.
Jednotlivá zmena potom nemusí mať za následok zmeny celého programu.
assembler
Progranmovanie 2006 5
Assembler
niečo za niečo - program napísaný v asemblere je nutné najskôr preložiť do strojového kódu.
Assembler je závislý na type procesora a každý má svoju špecifickú sadu inštrukcií,
Zápis programu v asembleri sa vôbec nepodobá spôsobu, akým sa vyjadrujeme v bežnom živote; i to bol jeden z dôvodov, prečo bolo programovanie spočiatku záležitosťou úzko vyhranených špecialistov. Skutočnú zmenu spôsobili až vyššie programovacie jazyky.
abstrakcia
Progranmovanie 2006 6
Prvá vrstva abstrakcie
Niekde tu sa prvý krát objavil trik, ktorý programátori používajú k riešeniu najrôznejších problémov dodnes: medzi seba a hardware sme vložili vrstvu, ktorá prácu s hardwarom uľahčuje, zjednodušuje a skrýva pred nami niektoré jej problematické miesta.
Niekedy o tom hovoríme ako o vrstve abstrakcie. Samozrejme, táto vrstva bola na začiatku len tenká, pretože aj programátor, ktorý používal asembler, musel stále veľmi podrobne poznať architektúru počítače.
Prvé jazyky
Progranmovanie 2006 7
Prvé jazyky
Jedným z prvých úspešných pokusov o vyšší programovací jazyk bol Operational Compiler (Laning a Zierler, M.I.T, 1954).
Pretože prvé počítače slúžili skutočne predovšetkým k počítaniu, umožňoval tento jazyk zapisovať matematické výrazy podobne ako v matematike a poskytoval nástroje pre numerické riešenie diferenciálnych rovníc.
Fortran ...
Progranmovanie 2006 8
Fortran ...
Za prvý použiteľný vyšší programovací jazyk sa spravidla pokladá Fortran (skratka z FORmula TRANslation).
Avšak idea vyššieho programovacieho jazyka je staršia – jeho vznik predpovedal už v r. 1954 K. Zuse a vymyslel preň aj názov Plankalkül.
Fortran ...
Progranmovanie 2006 9
Fortran ...
Fortran vyvinul tým vedený Johnom Backusem firmy IBM pre počítač IBM 704.
Cieľom bolo vyvinúť jednoducho zvládnuteľný programovací jazyk
Obsahoval rad optimalizačných algoritmov, z ktorých niektoré si dokonca spúšťali úseky preloženého programu, aby mohli čo najlepšie určiť alokáciu registrov. Verzia Fortran II priniesla možnosť rozdeliť program na niekoľkých samostatne prekladaných častí.
Fortran
Progranmovanie 2006 10
Fortran ...
Najväčšia sila spočívala v možnosti zapisovať pomerne zložité matematické vzorce spôsobom blízkym matematickej praxi.
Na rozdiel od mnohých neskorších programovacích jazykov umožňoval Fortran rozdeliť program na samostatne prekladané podprogramy.
Neobsahoval však konštrukcie ako zložený príkaz alebo úplný príkaz IF, okrem polí nepodporoval užívateľom definované typy, neposkytoval nástroje pre prácu s pamäťou, nedovoľoval rekurziu pri volaní podprogramov atd
Ďalšie ...
Progranmovanie 2006 11
Nasledovníci FORTRANU
Úspech Fortranu podnietil záujem o vytváranie ďalších jazykov, napríklad už v r. 1963 sa len vo Veľkej Británii používalo viac ako 30 rôznych jazykov. Väčšina z nich skoro zase zanikla, niektoré však priniesli novinky, ktoré si našli trvalé miesto v programovaní.
Jazyky z tej doby boli problémovo orientované – to znamená, že sa hodili len k riešeniu určitej pomerne úzkej triedy problémov.
ALGOL 60
Progranmovanie 2006 12
Algol 60
vytvorila ho spoločná komisia organizácií GMM a ACM predovšetkým ako jazyk pre publikovanie algoritmov.
Tento jazyk naučil programátorov pracovať s blokovou štruktúrou programu a využívať rekurziu.
Poskytol taktiež úplný príkaz if, ktorého špecifikácia však ponechala rad dôležitých miest otvorených, takže ich rôzne implementácie riešili po svojom.
COBOL
Progranmovanie 2006 13
Cobol 60
jazyk pre spracovanie hromadných dát (predchodca dnešných databázií). Cobol (Common Object Bussines Oriented Language) zoznámil programátorov s konštrukciou, ktorá sa obvykle označuje ako štruktúra alebo záznam a ktorá predstavuje vlastne jeden riadok v databázovej tabuľke – i keď v tom čase ešte žiadne databáze v podstate neexistovali.
LIPS
Progranmovanie 2006 14
LISP
je jazyk pre symbolické manipulácie, predovšetkým pre spracovanie zoznamov.
Používa sa pre tzv. funkcionálne programovanie – všetko, čo v ňom robíme je skladanie funkcií, ktoré sa aplikujú na symbolické výrazy.
LISP ukázal, že imperatívne programovacie jazyky, v ktorých je program zapísaný ako postupnosť príkazov, nepredstavujú jedinú možnosť. Podnietil taktiež záujem o dynamické dátové štruktúry.
Univerzálne
Progranmovanie 2006 15
Univerzálne jazyky
Problémovo orientované jazyky znamenali výrazný krok vpred, ale čoskoro bolo zrejmé, že ide len o provizórne riešenie.
Preto sa už od začiatku 60. rokov snažili ako teoretici, tak i praktici vyvinúť univerzálny programovací jazyk, teda jazyk, ktorý by poskytoval nástroje pre vedecko-technické výpočty, spracovanie hromadných dát, spracovanie dynamických dátových štruktúr a ďalšie – v tej dobe ešte neznáme oblasti aplikácií
PL/I
Progranmovanie 2006 16
PL/I
Šlo o spojenie vlastností Fortranu, Algolu a Cobolu s niektorými novými rysmi.
Ako jeden z prvých umožnil ošetrovať výnimočné situácie za behu programu, používať ukazovatele a paralelne vykonávať vstupné a výstupné operácie.
Celkovo však bol hodnotený skôr nepriaznivo, pretože mal príliš málo skutočnej sily pri veľmi rozsiahle definície.
Simula
Progranmovanie 2006 17
Simula 67
vznikla ako nadstavba Algolu 60; priniesla plnohodnotné objektovo orientované programovanie – nájdeme v nej triedy aj dedičnosť; polymorfizmus je riešený virtuálnymi funkciami.
Vedľa toho obsahovala automatickú správu pamäti a prostriedky pre prácu so zoznamami.
Algol 68 ...
Progranmovanie 2006 18
Algol 68 ...
Priniesol veľké množstvo nových možností, ako je paralelne programovanie a základne prostriedky pre synchronizáciu procesov (semafor), riedenie alokácie pamäti, možnosť predefinovať nové operátory, zachádzať s funkciami ako s dátovými objektmi atd.
Algol 68
Progranmovanie 2006 19
Algol 68 ...
Prišiel tiež s myšlienkou, že programovací jazyk sa má skladať z malého množstva základných prostriedkov a pravidiel pre ich systematické kombinovanie a nesmie obsahovať náhodné obmedzenia (tomu sa hovorí ortogonalita jazyka).
Tento jazyk predbehol svoju dobu – prvé rozumné implementácie Algolu 68 sa datujú až do druhej poloviny 70. rokov, a to už sa používali modernejšie jazyky.
Pascal
Progranmovanie 2006 20
Pascal (N. Wirth, 1971)
Naozaj výrazný obrat vo vývoji programovacích jazykov znamenal Pascal, navrhnutý N. Wirthom pre výučbu programovania (1971).
Položil dôraz na jednoduchosť, prehľadnosť a dobré štruktúrovanie programu a vo výučbe prakticky cez noc nahradil predtým používané jazyky PL/I, Fortran a Algol 68.
Veľmi skoro sa však začal používať aj pre skutočné aplikácie. Tento jazyk zaviedol vymenované typy.
Jazyk C
Progranmovanie 2006 21
Jazyk C (D. Ritchie, 1972)
poskytoval podobné možnosti ako Pascal, navyše mal možnosť oddeleného prekladu.
Vzdor zložito vyzerajúcej syntaxe získal rýchlo popularitu, a pretože obsahoval prostriedky pre nízko-úrovňové programovanie, slúžil aj ako „prenositeľný asembler“.
SmallTalk
Progranmovanie 2006 22
Smalltalk (1973)
bol prvým čisto objektovým programovacím jazykom.
Všetko v ňom predstavuje objekt, aj triedy alebo časti kódu. Taktiež Smalltalk predbehol svoju dobu, pretože mohol efektívne bežať len na dostatočne výkonných počítačoch.
Poslúžil však ako nástroj pre rozvoj teórie objektového programovania.
ADA
Progranmovanie 2006 23
Jazyk Ada
vyvinutý z iniciatívy Ministerstva obrany USA (1980), kládol maximálny dôraz na bezpečnosť.
Jeho novinkou bolo generické programovanie
Jazyk C+
Progranmovanie 2006 24
Jazyk C++ (B. Stroustrup, 1985)
bol najpopulárnejším jazykom 90. rokov, a to i napriek tomu, že sa v tej dobe prudko vyvíjal a prešiel radom zmien.
Do programovania vniesol okrem iného viacnásobnú dedičnosť a priestory mien
JAVA
Progranmovanie 2006 25
Java (Gosling, 1995)
je síce syntakticky podobná C++, je však určená pre tzv. virtuálny stroj. To ale nie je v programovaní nič nového – s tým sme sa mohli stetnúť už pri jazyku Basic (Kemeney, 1963).
Je prvý široko používaným jazykom, ktorý ponúka nástroje pre pokročilú prácu s typmi.
Java je čisto objektová; jej neprehliadnuteľný úspech je dôsledkom jej prenositeľnosti a prepracovaných knihovní
C#, .NET
Progranmovanie 2006 26
C# a .NET
Na podobnej myšlienke ako Java sú založené i jazyky pre platformu .NET, z ktorých na prvom mieste menujme C#. Ide opäť o jazyky prekladané do bajtového kódu, ktoré navyše poskytujú niečo, čo vyzerá samozrejme, ale bohužiaľ to samozrejmé nie je – triedu, napísanú v jednom jazyku, je možné používať i v iných jazykoch (v inom jazyku od nej je možné napríklad odvodiť potomka.)
vývojové
Programovacie jazyky
Vývojové prostredie
Progranmovanie 2006 28
Vývojové prostredie
Na programovací jazyk sme sa mohli dívať ako na vrstvu vloženú medzi programátora a hardware, vrstvu, ktorá uľahčuje programátorovi prácu tým, že skrýva strojový kód.
Integrované vývojové prostredie, často označované skratkou IDE (Integrated Development Environment), predstavujú ďalšiu takúto vrstvu, tento krát vloženú medzi programátora a programovací jazyk.
IDE prvé
Progranmovanie 2006 29
IDE Basic...
Historicky prvé IDE so sebou priniesol v roku 1963 jazyk Basic. Tento jazyk bol od počiatku interpretovaný, takže poskytoval programátorom možnosť spúšťať si úseky programu a hneď vidieť ich výsledky.
To umožnilo interaktívnu prácu pri vývoji programov, ktorá je podstatne efektívnejšia než v tej dobe štandardné dávkové spracovanie.
Avšak skutočný význam Basic získal, až keď sa terminály, umožňujúce interaktívnu prácu, stali štandardnou súčasťou výpočtových stredísk
IDE
Progranmovanie 2006 30
IDE SmallTalk...
Ďalší významný krok vo vývoji IDE priniesol jazyk Smalltalk na začiatku 80. rokov.
Graficky orientované IDE je neoddeliteľnou súčasťou tohto jazyka, pretože sa skladá z objektov, ktoré sú súčasťou knižníc a ktoré je možné využívať aj v programe.
Toto prostredie taktiež prinieslo možnosť interaktívneho ladenia
Klasické
Progranmovanie 2006 31
IDE Pascal,C
Z hľadiska rozšírenia nie je možné obísť IDE prekladača programovacích jazykov C a Pascalu na PC od poloviny 80. rokov; masový predaj týchto nástrojov umožnil ich rýchly vývoj.
Prvé verzie v polovine 80. rokov neobsahovali o mnoho viac než editor, prekladač a nápovedu; na začiatku 90. rokov pribudol integrovaný ladiaci program - debbuger.
Visual
Progranmovanie 2006 32
Visual Basic, Delphi
Zatiaľ čo na konci 80. rokov sa IDE zaoberalo jednotlivými programami a v prvej polovine 90. rokov projektmi, dnes sa hovorí o riešených skupinách projektov.
V dnešných IDE k základnej štvorici, tvorenej prekladačom, editorom, ladiacim programom a nápovedou, pribúdajú ďalšie nástroje, ako sú sprievodcovia – wizard, inspector, atď., ktorí automatizujú rutinné operácie, generujú opakujúce sa časti kódu
Prístup
Programovacie jazyky
Prístup k programovaniu
Progranmovanie 2006 34
Prístupy k programovaniu
V ranných dobách programovania sa nehovorilo o programovacom štýle, o prístupe k programovaniu, o metodike programovania alebo o programovacom paradigmate.
Ľudia programovanie chápali skôr ako umenie než ako technológiu s pevne danými postupmi. To sa však skoro začalo meniť.
Modulárne
Progranmovanie 2006 35
Modulárne programovanie
Na konci 50. rokov vzrástol výkon počítačov a s ním aj zložitosť programov.
Programátori si začali uvedomovať potrebu rozdeliť program na viac samostatných časti a tieto časti potom opakovane využívať, čo viedlo k vzniku modulárneho programovania, ktoré zaviedlo modul ako základní jednotku programu.
Modul je uzavretá, spravidla samostatne prekladaná súčasť, ktorá prostredníctvom svojho rozhraní poskytuje služby ostatným častiam programu.
Štruktúrované ...
Progranmovanie 2006 36
Štruktúrované programovanie
Na konci 60. rokov sa tiež začalo hovoriť o softwarovej krízii.
Tento pojem vyjadroval priepastný rozdiel medzi prudko rastúcou úrovňou hardwaru a úrovňou tvorby softwaru.
Výsledkom týchto diskusií bol nový prístup k programovaniu, označovaný ako štruktúrované programovanie.
štruktúrované
Progranmovanie 2006 37
Štruktúrované programovanie
základnou myšlienkou bolo písať programy tak, aby boli jednoducho zrozumiteľné nie len pre počítač, ale aj pre človeka, aby ich mohol jednoducho opravovať, udržovať a rozvíjať.
Po formálnej stránke tento prístup požadoval, aby sa program skladal len z postupnosti príkazov, z cyklov a z rozhodovaní.
Každá z týchto konštrukcií pritom smie mať práve jeden vstupný a práve jeden výstupný bod
jackson
Progranmovanie 2006 38
Jacksonove diagramy
Spolu so štruktúrovaným programovaním sa v 70. rokoch objavili i metodiky, ktoré poskytovali návod, ako zo zadania odvodiť logicky správnu a pritom prehľadnú štruktúru programu.
Niektoré s nich sa opierali o predstavu, že štruktúra programu musí vychádzať zo štruktúry dát - napr. že opakujúce sa dáta rovnakého typu na vstupe budeme spracovávať cyklom a pod.
Asi najznámejšie metodika štruktúrovaného programovania pochádza od M. Jacksona a opiera sa o tzv. Jacksonove diagramy
diagramy
Progranmovanie 2006 39
Jacksonove diagramy
Asi najznámejšia metodika štruktúrovaného programovania pochádza od M. Jacksona a opiera sa o tzv. Jacksonove diagramy
OOP
Progranmovanie 2006 40
OO Programovanie
Ak si odmyslíme všetky marketingové poviedky o revolučnosti, zásadnom prínose apod., ktoré sme v súvislosti s objektovo orientovaným programovaním (OOP), zistíme, že OOP nie je nič iného než logické pokračovanie predchádzajúcich dvoch prístupov.
Samozrejme, OOP prinieslo nové pojmy, nové postupy a nové nástroje a prechod programátorov k nemu bol veľmi pozvoľný, aspoň v merítku vývoja informačných technológií.
Pojmy ...
Progranmovanie 2006 41
Pojmy OOP
OOP sa točí okolo pojmu trieda, čo je vlastne programový model triedy objektov z reálneho sveta, z oblasti riešeného problému.
Ako objekty potom označujeme premenné alebo konštanty týchto typov - vlastnosti.
Trieda je vlastne modul, v ktorom sú zapúzdrené dáta - ako dáta jednotlivých inštancií, tak i dáta tried ako celkov.
Operácie, ktoré je možné s týmito dátami vykonávať, sa označujú ako metódy. Objektovo orientovaný program sa skladá z objektov, ktoré si navzájom posielajú správy, t.j. volajú svoje metódy.
Pojmy
Progranmovanie 2006 42
Pojmy OOP
Mechanizmus označovaný nie príliš vhodne ako dedenie umožňuje odvodiť od jednej triedy ďalšie, ktoré predstavujú podtriedy, špecializácie pôvodnej triedy. OOP taktiež prišlo s ideou polymorfizmu: so všetkými inštanciami by malo byť možné zachádzať rovnakým spôsobom, teda posielať im rovnaké správy.
Implementácia polymorfizmu sa v rôznych programovacích jazykoch a prostrediach líši, sú rôznym spôsobom obmedzené
UML
Progranmovanie 2006 43
Jazyk UML
Taktiež pre OOP sa objavil rad metodík; dnes majú celkom dominantné postavenie metodiky založené na modelovacom jazyku UML (Univrsal Modeling Language).
Niektoré z nich vychádzajú zo starších metodik pre návrh databázií, napr. z entitne-relačných diagramov.
komponentové
Progranmovanie 2006 44
Ďalší prístup k programovaniu
komponentové programovanie založené na znovu použiteľných komponentoch - samostatne vyvíjaných a dodávaných triedach alebo skupinách tried, ktoré poskytujú presne vymedzené služby
VCL – Visual Component Library
šablónové
Progranmovanie 2006 45
Ďalší prístup ...
šablonové metaprogramovanie - ide o prístup založený na využití šablón, ktorý je možné stručne charakterizovať ako snahu nechať miesto vlastného programu počítať prekladač. Zatiaľ je obmezené na jazyk C++
aspektovo
Progranmovanie 2006 46
Ďalší prístup ...
Dnes sa tiež začína hovoriť o aspektovo orientovanom programovaní. V ňom ide o implementáciu aspektov - vlastností spoločných inak nesúvisiacim triedam.
Objavili sa už aj prvé nástroje, ktoré túto možnosť poskytujú - napr. AspectJ od Eclipse.
Agentovo
Progranmovanie 2006 47
Ďalší prístup ...
Medzi často skloňované pojmy patrí dnes i agentovo orientované programovanie, založené na agentoch, programoch schopných priebežne a samostatne plniť určité úlohy v distribuovanom prostredí.
Java
Progranmovanie 2006 48
Ďalší prístup ...
Pravdepodobne najpopulárnejším programovacím jazykom je dnes Java.
Narazíme na ňu všade, kde nie je kritická rýchlosť odozvy. Jej zásadnou prednosťou sú bohaté a neustále sa vyvíjajúce knižnice pre najrôznejšie aplikácie.
PHP
Progranmovanie 2006 49
Ďalší prístup ...
Vedľa Javy patria k najpoužívanejším jazyky pre skriptovanie v prostredí internetu na strane klienta aj serveru; typicky ide o PHP alebo Perl, v poslednej dobe sa stále častejšie objavuje aj Python.
Podobne ako Java poskytujú prepracované knižnice, aj keď zďaleka nie v takej šírke - aspoň doteraz. Pre výmenu dokumentov sa používa značkovací jazyk XML
SQL
Progranmovanie 2006 50
Structured Query Language
Data Definition Language (DDL) Data Manipulation Language (DML) Data Control Language (DCL)
Transaction Control Comands (TCC)
DDL
Progranmovanie 2006 51
Data Definition Language (DDL)
DDL umožňuje definovať, vytvárať, meniť a rušiť (odstraňovať) rôzne objekty a štruktúry v relačných databázach, ako sú napríklad tabuľky, indexy, uložené procedúry a podobne. Create, Alert, Drop, Table, Database, Index
DML
Progranmovanie 2006 52
Data Manipulation Language (DML)
Do tejto skupiny ako vyplýva už z jej názvu patria príkazy pre manipuláciu s údajmi, pre výber údajov z databázy a príkazy pre vkladanie, aktualizáciu, vymazávanie údajov: SELECT UPDATE INSERT DELETE
DCL
Progranmovanie 2006 53
Data Control Language (DCL)
Skupina zahrňuje špeciálne príkazy pre riadenie prevádzky a údržbu databázy: GRANT, ALTER USER, REVOKE, DROP USER, USER
TCC
Progranmovanie 2006 54
Transaction Control Commands (TCC)
Okrem dvoch najznámejších skupín príkazov jazyka SOL môžeme vyèlenit' aj skupinu príkazov pre riadenie transakcií. Do tejto skupiny patria napríklad príkazy SET TRANSACTION, COMMIT, ROLLBACK, SAVEPOINT
Čo ďalej
Progranmovanie 2006 55
Čo bude ďalej ...
predchédzajúce úvahy zvádzajú k prorokovaní a nie je ľahké odolať. Preto neuškodí pripomenúť si, že v roku 1943 prehlásil šéf istej veľkej a významnej spoločnosti (v tom čase ešte nie počítačovej), že podľa jeho názoru je na svetovom trhu miesto asi tak pre päť počítačov...
Koniec
Ďakujem za pozornosť ...
Pokračovanie:
Jazyk Pascal
Recommended