PRG003 rysy a odkazy
Z ωικι.matfyz.cz
Obsah
Úvodní slovo[editovat | editovat zdroj]
Tuto sbírku stručných informací a odkazů vytvořil původně jako XHTML dokument Michal Šrajer, později bylo vše portováno do Wiki (proto také vypadají například linky tak jak vypadají :), kde snad bude dokument dál žít vlastním životem ..
obecné odkazy[editovat | editovat zdroj]
- http://www.engin.umd.umich.edu/CIS/course.des/cis400/index.html - The Language Guide - stručné info o prakticky všech dále zmíněných jazycích
- http://cgibin.erols.com/ziring/cgi-bin/cep/cep.pl - Dictionary of Programming Languages - slovník prog. jazyků
- http://dmoz.org/Computers/Programming/Languages/ - dmoz.org - programovací jazyky v open directory projectu
- http://www.99-bottles-of-beer.net/ - 99 Bottles of Beer - týž program v 621 jazycích
- Práce studentů z MUNI: http://www.fi.muni.cz/usr/jkucera/pv109/2002/xkriz1.htm - Vývoj programování a programovacích jazyku, http://www.fi.muni.cz/usr/jkucera/pv109/2000/xkrubova.htm - Historie programovacích jazyku [cz]
- http://ksvi.mff.cuni.cz/~kryl/Avyuka/20067/PRG003.htm - Samotný web předmětu [cz]
Fortran[editovat | editovat zdroj]
rysy[editovat | editovat zdroj]
- strojová nezávislost
- srozumitelnost pro ne-programátory
- common blocks
odkazy[editovat | editovat zdroj]
- http://www.infojet.cz/program/fortran.html - Na počátku byl Fortran - o tom kdo a jak Fortran vyvíjel [cz]
- http://www.obliquity.com/computer/fortran/ - FORTRAN 77 Reference - základní stručná referenční příručka
- http://www.ictp.trieste.it/~manuals/programming/sun/fortran/prog_guide/ - Fortran Programmer's Guide - o opravdovém programování ve Fortranu (debugging, porting, profiling ...)
- http://www.ibiblio.org/pub/languages/fortran/unfp.html - USER NOTES ON FORTRAN PROGRAMMING - obsahuje například i seznam výhod oproti C
Algol[editovat | editovat zdroj]
rysy[editovat | editovat zdroj]
- poprvé bloková struktura
- syntaxe definována pomocí BNF (bezkontext. gramatika)
- parametry předávány jménem nebo hodnotou
- možnost rekurze
- dynamické pole
- uživatelem def. datové typy
- klíčová slova nesmí být využita jinak
- poprvé ELSE vetva
- slabé I/O
- mnoho side-efektů (předávání jménem, indexované proměnné cyklu)
odkazy[editovat | editovat zdroj]
- http://www.cis.cau.edu/Curriculum/476/chapter2/algol60/ - Algol 60 - stručné slidy o Algolu 60
- http://www.masswerk.at/algol60/report.htm - Revised Report on the Algorithmic Language Algol 60 - podrobný popis jazyka včetne zápisu v BNF (v čemž byl Algol také první)
- http://wikipedia.infostar.cz/a/al/algol_programming_language.html - Algol v českém překladu wikipedie - aneb jak to může dopadnout, když přeložíte i zdroják ;)
PL/1[editovat | editovat zdroj]
rysy[editovat | editovat zdroj]
- vyjímky
- mnoho typů
- přístup k Job Control Language
odkazy[editovat | editovat zdroj]
- http://home.nycap.rr.com/pflass/pli.htm - The PL/I Language - přehledná a stručné shrnutí vlastností
- http://www.uni-muenster.de/ZIV/Mitarbeiter/EberhardSturm/PL1andC.html - Power vs. Adventure - PL/I and C - srovnání PL/1 a Cčka
APL[editovat | editovat zdroj]
rysy[editovat | editovat zdroj]
- funkcionální jazyk
- ne-ascii znaky (řecká písmena)
- dynamická pole .. silný v maticích (možnost výběru celých řádků a sloupců)
- interaktivní
- možnost přetížit operátory a symboly
- logické hodnoty ( 1 - true, 0 - false)
- podm. skoky (na automaticky číslované řádky :)
- přiřazení mělo hodnotu (podobně jako v C)
odkazy[editovat | editovat zdroj]
- http://www.chilton.com/~jimw/ - JimW's APL Information - stránka o APL
- ftp://watserv1.uwaterloo.ca/languages/apl/Welcome.html - The APL Archives - archívy na univerzitě ve Waterloo
- http://www.rexswain.com/aplinfo.html - Rex Swain's APL Information - obrázek klávesnice pro APL
- http://www.users.cloud9.net/~bradmcc/APL.html - A Programming Language - povídání & příklad hledající všechna prvočísla
Simula[editovat | editovat zdroj]
rysy[editovat | editovat zdroj]
- prvni objektově orientovaný jazyk, klíčové slovo none pro prázdnou referenci
- dva typy přiřazení
- := 'algolítko' - pro základní datové typy
- :- 'simulítko' - pro referenční proměnné
- procesy
- diskrétní a spojitá simulace
- nadmnožina Algolu, zůstala side-efektnost, dynamické pole
- jeden z posledních jazyků s operátorem umocňování
odkazy[editovat | editovat zdroj]
- http://www.sweb.cz/oopsimula/ - Úvod do objektově orientovaného programování v jazyce SIMULA - popis jazyka včetně příkladů [cz]
- http://staff.um.edu.mt/jskl1/talk.html - INTRODUCTION TO OOP IN SIMULA - anglická verze výše zmíněného
- http://www.cee.hw.ac.uk/~rjp/bookhtml/ - An Introduction to Programming in Simula - HTML verze knížky o Simule
ADA[editovat | editovat zdroj]
rysy[editovat | editovat zdroj]
- balíčky (packages)
- silný typový systém
- výjimky
- šablony (generiky)
- paralelismus
odkazy[editovat | editovat zdroj]
- http://www.adahome.com/ - Ada Home: The Web Site for Ada - plno informací o Adě
- http://www.acm.org/sigada/ - ACM SIGAda - hodně o Adě 95
- http://www.adaic.com/ - Ada Resource Assoc.'s Ada Information Clearinghouse Home Page - mnoho Adích zajímavostí
Smalltalk[editovat | editovat zdroj]
rysy[editovat | editovat zdroj]
- čistě objektový
- vše je posílání zpráv objektům
- všechny metody virtuální
- iterátory select a reject (vybírajé prvky podle podmínky), collect sezbírá výsledky aplikace výrazu
odkazy[editovat | editovat zdroj]
- http://www.root.cz/clanek/2032 - Squeak: návrat do budoucnosti (1) - první díl seriálu o Squeaku (implementaci Smalltalku) [cz]
- http://www.whysmalltalk.com/ - Why Smalltalk - Smalltalkové "aktuality" a články
CLU[editovat | editovat zdroj]
rysy[editovat | editovat zdroj]
- poprvé iterátory
- moduly
- typové CLUstery
odkazy[editovat | editovat zdroj]
- http://www.pmg.lcs.mit.edu/CLU.html - CLU HOME PAGE - články o syntaxi a historii
- http://www2.latech.edu/~acm/helloworld/clu.html - Hello World! - legendární prográmek tentokrát v CLU
Prolog[editovat | editovat zdroj]
rysy[editovat | editovat zdroj]
- logické programování
- backtracking
odkazy[editovat | editovat zdroj]
- http://ksvi.mff.cuni.cz/~kryl/prolog.pdf - Úvod do programovacího jazyka PROLOG - PDF skripta Rudolfa Kryla
- http://kti.ms.mff.cuni.cz/~bartak/prolog/ - On-line guide to Prolog programming - onlajnová učebnice, včetně http://kti.ms.mff.cuni.cz/~bartak/prolog/testing.html - javovského interpreteru
- http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/contents.html - prolog :- tutorial - obsahuje mnoho příkládků
Lisp[editovat | editovat zdroj]
rysy[editovat | editovat zdroj]
- funkcionální programování
- rekurze
- garbage collector
odkazy[editovat | editovat zdroj]
- http://www.apl.jhu.edu/~hall/lisp.html - An Introduction and Tutorial for Common Lisp - mnoho odkazů na další zdroje
- http://lisp.org/alu/home - Association of Lisp Users - asociace uživatelů Lispu
- http://www.root.cz/clanek/2160 - Jemný úvod do LISPu - stručné základy v článku na ROOTu [cz]
Haskell[editovat | editovat zdroj]
rysy[editovat | editovat zdroj]
- funkcionální jazyk
- mečování
odkazy[editovat | editovat zdroj]
- http://www.haskell.org/ - The Haskell Home Page - mnoho zdrojů informací
- http://www.zvon.org/other/haskell/Outputglobal/index.html - Haskell Reference - referenční příručka
- http://www.root.cz/clanek/857 - Haskell a funkcionální programování I - první díl seriálu na ROOTu [cz]
Pascal[editovat | editovat zdroj]
http://www.freepascal.org/ - podobné Borland Pascalu - bez nápovědy, musí se donastavit
http://spsemoh.cz/vyuka/pascal/file.htm
http://ksvi.mff.cuni.cz/~holan/ide.pdf - Tomáš Holan - IDE Pascalu
http://www.dbme.feec.vutbr.cz/homes/provaznik/page.php?lang=cz&page=pp2.php - propracované zápisky o Pascalu
C/C++[editovat | editovat zdroj]
rysy[editovat | editovat zdroj]
odlišuje objekt a ukazatel na něj
- Proměnná typu T je vždy objekt typu T a žádného jiného, přestože do ní lze přiřadit i objekt odvozeného typu.
- class U : public T { /*...*/ }; U y; T x = y; // toto je kopie části objektu y do vznikajícího objektu x.
- Nefunguje naivní implementace polymorfního typu.
default constructor
- Kompilátor se jej pokusí vygenerovat, je-li to třeba a pokud třída nemá vůbec žádný konstruktor.
- Generovaný konstruktor volá konstruktor bez parametrů na všechny předky a položky (což nemusí jít např. pro neexistenci takového konstruktoru).
copy-constructor
- vola se napr. pri
- předávání parametrů hodnotou a předávání návratových hodnot
- vytvareni docasnych promennych ve vyrazech (a+b+c)
- kopírování do nově-vznikající proměnné: T x = y;
- Kompilátor se jej pokusí vygenerovat, je-li to třeba a pokud třída kopírovací konstruktor nemá.
- Položky, které nejsou třídami, jsou kopírovány.
- Na předky a položky se volá kopírovací konstruktor (což nemusí jít kvůli ochraně přístupu).
destructor
- Každá abstraktní třída má mít virtuální destruktor. Proč? Pokud je objekt destruován operátorem delete aplikovaným na ukazatel na předka, musí být destruktor v tomto předku deklarován jako virtuální.
abstraktni trida
- Třída obsahující alespoň jednu čistě virtuální funkci.
- Představuje rozhraní, které mají z ní odvozené třídy (potomci) implementovat.
- Nelze delat instance takové třídy.. :))
nasobna dedicnost
- Obvykle musí být virtuální, aby odpovídala sjednocení:
- Fyzikář = Pedagogika + Fyzika; Matikář = Pedagogika + Matematika; Fyzikář+Matikář nemá mít dvě rozhraní pro Pedagogiku.
templates
- Šablona třídy je generická třída parametrizovaná libovolným počtem formálních parametrů těchto druhů: celé číslo, ukazatel libovolného typu, libovolný typ.
- Šablona funkce je generická globální funkce.
- Pod stejným identifikátorem může být deklarováno několik různých šablon funkce a navíc několik obyčejných funkcí. Obyčejné funkce mají přednost před generickými.
exceptions
- Destruktor nesmí skončit vyvoláním výjimky. Výjimka může být vyvolána uvnitř, ale musí být zachycena nejpozději uvnitř destruktoru. Jinak je program casto ukoncen nasilne, jako reseni vyjimky ve vyjimce pri odrolovavani zasobniku.
- Konstruktor globálního objektu nesmí skončit vyvoláním výjimky. Není místo, kde ji zachytit. Stane-li se to, program končí. Jiné konstruktory ale výjimky volat mohou (a bývá to vhodné).
- Copy-constructor typu v hlavičce catch-bloku nesmí skončit vyvoláním výjimky. Catch blok by nebylo možné vyvolat.
Stane-li se to, program končí.
- Výjimka při výpočtu výrazu v throw příkaze - tento throw příkaz nebude vyvolán.
- Výjimka v destruktoru při stack-unwinding povolena, pokud neopustí destruktor. Po zachycení a normálním ukončení destruktoru se pokračuje v původní výjimce.
- Výjimka uvnitř catch-bloku povolena, pokud je zachycena uvnitř, ošetření původní výjimky může dále pokračovat (přikazem throw bez výrazu). Pokud není zachycena, namísto původní výjimky se pokračuje ošetřováním nové.
- Kompilátory samy ošetřují některé výjimky. Dojde-li k výjimce v konstruktoru některého prvku, úspěšně zkonstruované prvky budou destruovány.
- Silna (transakcna) a slaba (invariantna) bezpecnost výjimek.
odkazy[editovat | editovat zdroj]
- http://ulita.ms.mff.cuni.cz/mff/sylaby/prg029.html - Slidy z prednasky - David Bednárek, Filip Zavoral
- http://ulita.ms.mff.cuni.cz/mp/vyuka/PRG032/html/prg032.html - Slidy z prednasky - David Bednárek