Ú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

Java

C#