Úvodní slovo
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
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
rysy
strojová nezávislost
srozumitelnost pro ne-programátory
common blocks
odkazy
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
rysy
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
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
rysy
vyjímky
mnoho typů
přístup k Job Control Language
odkazy
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
rysy
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
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
rysy
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
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
rysy
balíčky (packages)
silný typový systém
výjimky
šablony (generiky)
paralelismus
odkazy
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
rysy
č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
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
rysy
poprvé iterátory
moduly
typové CLUstery
odkazy
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
rysy
logické programování
backtracking
odkazy
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
rysy
funkcionální programování
rekurze
garbage collector
odkazy
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
rysy
funkcionální jazyk
mečování
odkazy
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
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++
rysy
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
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