Predslov

UČEBNICA VYSVETĽUJE PARADIGMY PROGRAMOVANIA Dostávate do rúk učebnicu, ktorá poskytuje záujemcom o softvérové inžinierstvo, a to najmä o programovanie, ale aj o ďalšie etapy životného cyklu softvéru, rôzne pohľady na tvorbu softvéru. Programovanie je jadrom tohto procesu v tom zmysle, že jeho účelom je bezprostredne zostrojiť samotné programy, ktoré majú patriť do navrhovaného systému. Tu sa rozhoduje, nakoľko bude výsledný softvérový produkt efektívny, či bude správny, spoľahlivý a pod. Hoci tzv. tradičné postupy alebo paradigmy programovania sa v mnohom osvedčili, o čom svedčí napokon značná časť z toho množstva existujúceho softvéru fungujúceho dnes už skoro všade okolo nás, stále zostáva mnoho otvorených otázok. Týkajú sa napríklad príčin mnohých chýb v softvéri, ktoré sa v ňom vyskytujú a spôsobujú niekedy veľmi neblahé následky. Zameriavajú sa tiež na zefektívnenie samotného procesu programovania a jeho priblíženie sa k používateľovi.
UČEBNICA SA ZAMERIAVA NA FUNKCIONÁLNE A LOGICKÉ PROGRAMOVANIE Jedna z ciest pri hľadaní odpovedí na naznačené otázky vedie k použitiu iných netradičných(procedurálnej, a čoraz častejšie dnes už aj objektovo-orientovanej) paradigiem programovania. Medzi takéto alternatívne paradigmy možno zaradiť napríklad vizuálne programovanie, alebo programovanie tabuľkových procesorov, ktoré sú veľmi efektívne vo svojich oblastiach aplikácií. Všeobecný charakter majú funkcionálne a logické programovanie. Práve týmto sa budeme v tejto učebnici venovať najviac.
POUŽÍVAME PROGRAMOVACIE JAZYKY LISP A PROLOG Základné princípy vysvetľujeme v kontexte dvoch programovacích jazykov: lisp (list processor) v súvislosti s funkcionálnym programovaním a prolog (programming in logic) v súvislosti s logickým programovaním. Tieto však ostávajú v platnosti nezávisle od zvoleného programovacieho jazyka a možno ich jednoducho podľa potreby použiť.
UČEBNICA JE URČENÁ PRE ZAČIATOČNÍKOV AJ SKÚSENÝCH PROGRAMÁTOROV

Učebnicu môžete použiť či ste začiatočník alebo skúsený programátor. Môže slúžiť aj ako úvod do programovania v jazyku lisp a prolog. Zároveň poskytuje prehľad základných paradigiem programovania.

Predchádzajúce znalosti programovania nie sú nevyhnutné. Napriek tomu sme presvedčení, že aj v prípade, ak máte skúsenosti s funkcionálnym a logickým programovaním, nájdete v učebnici informácie, ktoré pomôžu lepšie pochopiť jednotlivé prístupy k programovaniu, porovnať ich a podporia rozhodnutia kedy a ako ich použiť. Ako vysokoškolská učebnica je určená najmä poslucháčom informatiky študujúcim predmet Funkcionálne a logické programovanie.

Učebnica obsahuje množstvo schém riešenia rôznych situácií a problémov programovania. Je rozdelená na dve časti, ktoré sa vzťahujú na znalosti o funkcionálnom programovaní a o logickom programovaní. V úvode stručne predstavíme niektoré často používané paradigmy programovania. Ide o procedurálne, objektovo-orientované, funkcionálne, logické programovanie, programovanie ohraničení a vizuálne programovanie. Veríme, že učebnica si nájde miesto v knižnici každého programátora, ako začiatočníka tak aj pokročilého.

DIEL I SA VENUJE FUNKCIONÁLNEMU PROGRAMOVANIU

V diele I učebnice sa venujeme funkcionálnemu programovaniu. Vysvetľujeme základné princípy funkcionálneho programovania, vlastnosti funkcionálneho programu na príkladoch programovacieho jazyka lisp.

Funkcionálne programovanie možno použiť aj v prípade, keď implementačným jazykom je napr. procedurálny jazyk. Preto sa v učebnici skôr sústreďujeme na metodológiu ako na jazyk a všetky jeho vlastnosti. Máte možnosť oboznámiť sa so základnými programovacími technikami (postupmi), ktoré sa používajú v súvislosti s tvorbou funkcionálnych programov.

DIEL II SA VENUJE LOGICKÉMU PROGRAMOVANIU

V diele II sa zaoberáme logickým programovaním, konkrétne na príkladoch programovacieho jazyka prolog. Vysvetľujeme základné myšlienky odvodzovania riešenia z logického programu. Nechýbajú ani časti, kde sa môžete oboznámiť s rozšíreniami logického programovania, ktoré umožňujú efektívne riešenie problémov.

Štruktúry oboch dielov sa veľmi podobajú. Jednotlivé kapitoly končia zhrnutím podstatných informácií. V každej kapitole uvádzame cvičenia (s riešeniami vybratých cvičení v prílohe). Prvý a druhý diel predstavujú samostatné celky a možno ich študovať v ľubovoľnom poradí.

PRÍLOHY SÚ POMÔCKOU PRI PROGRAMOVANÍ Učebnica obsahuje prílohu niektorých vstavaných funkcií jazyka Common lisp (ANSI štandard pre Common lisp) a predikátov jazyka prolog (ISO/IEC štandard pre prolog). Vybrali sme najmä tie, ktoré treba na pochopenie a precvičenie typov problémov vysvetľovaných v učebnici. Tieto jazykové konštrukcie predstavujú určité spoločné jadro (snáď len s výnimkou vstupno-výstupných funkcií) viacerých implementácií jazyka Common lisp a prolog. Príklady v učebnici sa takto stávajú nezávislé od konkrétnej implementácie príslušného jazyka. V prílohe uvádzame tiež riešenia vybraných cvičení.
NÁMETY DO UČEBNICE POSKYTLI ŠTUDENTI Hlavným zdrojom učebnice boli prednášky v predmete Funkcionálne a logické programovanie na Fakulte elektrotechniky a informatiky Slovenskej technickej univerzity v Bratislave. Do našej viacročnej skúsenosti patrí aj poznatok, že práve pri štúdiu týchto dvoch paradigiem sú viaceré témy, ktoré sa zdajú byť mnohým študentom jasné, ale ich dokonalejšie pochopenie môže robiť problémy. Práve na tieto sme sa v učebnici najviac sústredili. Pri písaní učebnice sme vychádzali zo skúseností pri práci so študentmi. Našim cieľom je priblížiť problematiku alternatívnych paradigiem programovania jednoduchým spôsobom s dôrazom na príklady a praktické použitie v inžinierskej praxi.

Učebnica Funkcionálne a logické programovanie vychádza zo skrípt s rovnomenným názvom (Bieliková, M., Návrat, P., 1997). Revidovali sme tie časti, ktoré spôsobovali študentom problémy. Zároveň sme učebnicu doplnili o niekoľko ďalších poznatkov, najmä v súvislosti s programovacími technikami vo funkcionálnom aj logickom programovaní.

Stanovenie typov pri tvorbe funkcionálneho programu je dôležité. Hoci systémy, ktoré vyhodnocujú výrazy zapísané v programovacom jazyku lisp patria k systémom s dynamickou kontrolou, nabádame čitateľa k systematickému prístupu k definícii funkcií dôslednejším stanovovaním typov v príkladoch.

V učebnici nájdete viac príkladov rekurzívnych definícií funkcií. Zaradili sme predikáty, ktoré zisťujú vlastnosti prvkov zoznamu a tiež rekurzívne spracovanie súboru s-výrazov. Ďalej sme doplnili a rozšírili časti, v ktorých sa venujeme programovým schémam spracovania zoznamov vo funkcionálnom aj logickom programovaní.

K programovacím technikám logického programovania sme pridali časť, ktorá sa zaoberá tzv. rozdielovými štruktúrami. Rozdielové štruktúry umožňujú zjednodušiť a zefektívniť logický program. Do textu sme ich zaradili najmä kvôli zdôrazneniu niektorých vlastností logických programov, ktoré v iných programovacích paradigmách nenájdeme.

DOPLNKOVÝ MATERIÁL DOSTUPNÝ NA INTERNETE Doplnkový materiál k učebnici môžete nájsť v celosvetovej pavučine na adrese: http://www.fiit.stuba.sk/~bielik/books. Obsahuje zdrojové texty programov v lispe a prologu, ktoré používame v učebnici. Vzhľadom na nestálu povahu informačných prameňov v Internete, v učebnici neuvádzame ďalšie odkazy súvisiace s funkcionálnym a logickým programovaním. Tieto nájdete v celosvetovej pavučine na vyššie uvedenej adrese. Veríme, že pomôžu všetkým záujemcom na náročnej ceste poznania.
POĎAKOVANIE Skutočný život každej publikácie začína okamihom, keď sa dostane do rúk čitateľom. Čitateľ rozhoduje o ďalšom osude publikácie vyjadrením svojho postoja k vytvorenému dielu. My, ako autori, sme v predchádzajúcich troch rokoch prijímali s radosťou všetky hodnotenia a pripomienky čitateľov - najmä študentov. Ďakujeme všetkým, ktorí nám pomohli svojimi poznámkami a našli aj niekoľko chýb v programoch. Osobitne ďakujeme Mariánovi Vargovi a Tomášovi Gerhátovi, ktorí poslali podrobne zdokumentované riešenia príkladov, v ktorých našli nedostatky a Martinovi Žemličkovi za viaceré námety na vylepšenie textu.
EŠTE PÁR SLOV...

Všetky príklady programov sme implementovali a otestovali v dvoch prostrediach jazyka Common lisp: Golden Common lisp 1.01 a LispWorks 4.1 a v dvoch prostrediach jazyka prolog: Arity prolog 5.0 a LPA Win-Prolog 3.3.

Aj napriek viacnásobnej kontrole nám mohli nejaké chyby v programoch uniknúť. Uvítame, ak sa v prípade, že nájdete chyby alebo máte iné pripomienky, ktoré by mohli zlepšit text, s nami skontaktujete1.

Veríme, že učebnica si nájde miesto v knižnici každého programátora, ako začiatočníka tak aj pokročilého.

Autori

1 http://www.fiit.stuba.sk/~bielik, http://www.fiit.stuba.sk/~navrat

to Homepage to Books to the Top

Home
Research
Projects
Publications
Books
SCM
Teaching
Links
Last updated:
Mária Bieliková bielik [zavináč] fiit-dot-stuba-dot-sk
Design © 2oo1 KoXo