PRG003 rysy a odkazy: Porovnání verzí

Z ωικι.matfyz.cz
Přejít na: navigace, hledání
(obecné odkazy)
(Pascal)
Řádka 182: Řádka 182:
  
 
== Pascal ==
 
== Pascal ==
 +
 +
http://www.freepascal.org/ - podobné Borland Pascalu - bez nápovědy, musí se donastavit
 +
 +
http://spsemoh.cz/vyuka/pascal/file.htm
 +
 
== C/C++ ==
 
== C/C++ ==
  

Verze z 25. 10. 2007, 19:54

Ú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

Fortran

rysy

  • strojová nezávislost
  • srozumitelnost pro ne-programátory
  • common blocks

odkazy


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


PL/1

rysy

  • vyjímky
  • mnoho typů
  • přístup k Job Control Language

odkazy


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


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


ADA

rysy

  • balíčky (packages)
  • silný typový systém
  • výjimky
  • šablony (generiky)
  • paralelismus

odkazy

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


CLU

rysy

  • poprvé iterátory
  • moduly
  • typové CLUstery

odkazy


Prolog

rysy

  • logické programování
  • backtracking

odkazy


Lisp

rysy

  • funkcionální programování
  • rekurze
  • garbage collector

odkazy


Haskell

rysy

  • funkcionální jazyk
  • mečování

odkazy


Pascal

http://www.freepascal.org/ - podobné Borland Pascalu - bez nápovědy, musí se donastavit

http://spsemoh.cz/vyuka/pascal/file.htm

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

Java

C#