Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Programozási nyelvek – Programozási paradigmák

Hasonló előadás


Az előadások a következő témára: "Programozási nyelvek – Programozási paradigmák"— Előadás másolata:

1 Programozási nyelvek – Programozási paradigmák
Porkoláb Zoltán Eötvös Loránd Tudományegyetem, Informatikai Kar Programozási Nyelvek és Fordítóprogramok Tanszék

2 Vázlat Absztrakció és paradigma Programozási nyelvek és paradigmák
Automatikus programozás Strukturált programozás Objektumelvű programozás Új paradigmák a láthatáron GDF dec. 5.

3 A paradigma Az absztrakció fogalma A paradigma + általános
- specifikus A paradigma útmutató az absztrakciók létrehozására szabályok és konvenciók halmaza eszközöket biztosít a fejlesztés támogatására evolúció GDF dec. 5.

4 Assembly Gépi kód automatikus generálása Mesterséges redundancia
Fordítóprogram (1952 Mark I, Autocoder) 1:1 leképezés Gyengének bizonyultak a kód és a programozó hordozhatósága szempontjából GDF dec. 5.

5 Automatikus programozás
Számítások automatikus elvégzése (A=B+C) Gépfüggetlen magasszintű nyelv Gépfüggő kód automatikus generálása Hatékony fordítás (FORTRAN, 9:10) Gyengének bizonyultak a kód karbantarthatósága szempontjából GDF dec. 5.

6 Basic Olcsóbb számítógépek, időosztásos OS
Nem csak matematikusok/informatikusok Kemény János: Basic (Dartmouth) Hardverfüggetlen, egyszerű(bb) Interpreter és fordító Gyengének bizonyultak karbantarthatóság és programbiztonság szempontjából GDF dec. 5.

7 Strukturált (procedurális) programozás
Szekvenciából, elágazásból és ciklusból felépülő (goto mentes) eljárások Eljárások paraméterátadással és globális változókkal kommunikáltak Adekvát algoritmusok meghatározása Magasszintű függvénykönyvtárak Gyengének bizonyultak az adatstruktúrák kompozíciójában GDF dec. 5.

8 Pascal ALGOL 60 továbbfejlesztései: ALGOL68
Niklaus Wirth (ETH Zürich): Pascal Ortogonalitás Algoritmusok+Adatstruktúrák=Programok Portabilitási kit: p-code -> assembly UCSD Pascal: p-code interpreter Modul, típus: Modula-2, Oberon GDF dec. 5.

9 C ALGOL 60 továbbfejlesztése (B) Dennis Ritchie (AT&T): C (UNIX)
Hatékony hozzáférés az (absztrakt) HW-hez Portabilitás: forrásszintű UNIX kernel újraírása (1973) GDF dec. 5.

10 80-as évek eleje I. 80-as évek: nagy teamek, >106 kódsor
Nincsen a kódnak „gazdája” Nehézkes kommunikáció az eljárások közt Adatszerkezetek és eljárások elszakadnak Felülről lefelé építkezik, nehezen újrafelhasználható Lassú… GDF dec. 5.

11 80-as évek eleje II. „Garázscégek”: Kódújrafelhasználás, komponensek
Kis kapacitás Azonnali produkciós kényszer Kódújrafelhasználás, komponensek Alulról felfelé építkezés Gyorsan!!! GDF dec. 5.

12 Az objektumelvű paradigma
Adekvát adatstruktúrák és a rajtuk végzett műveletek Enkapszuláció Osztályok: az azonos adatstruktúrával és műveletekkel rendelkező objektumok programnyelvi leírása Öröklődés, osztályok hierarchiája GDF dec. 5.

13 Objektumelvű paradigma kritikája
Pozitív és negatív változások Dinamikus kötés és a fordítási idejű típusellenőrzés egyidejű megvalósítása kovariáns visszatérő érték, kontravariáns paraméter A kifejezés-probléma Hatékonysági problémák GDF dec. 5.

14 Új paradigmák Funkcionális programozás Aspektusorientált programozás
Generikus programozás Szándékelvű programozás Az új paradigmák beépítik a korábbi paradigmák tapasztalatait Multiparadigma elvű rendszerek GDF dec. 5.

15 Funkcionális programozás I.
Függvények kiértékelése, Lambda kalkulus, gráfátíró rendszerek Magasabbrendű függvények Magasabb rendű típusok, típusosztályok Lusta kiértékelés Hivatkozási helyfüggetlenség (referential transparency) Optimalizáció, párhuzamosítás Helyességbizonyítás Scheme, ML/SML/OCamL, Miranda, Haskell, Clean GDF dec. 5.

16 Aspektus-orientált programozás
Motiváció: Rossz modularitás OOP-ban Szétszórt kódrészletek Kód utólagos módosítása Aspektusok – csatolási pontok - szövőgép Példa: AspectJ + Java GDF dec. 5.

17 Generikus programozás
Adatszerkezetek – általános algoritmusok Fordítási idejű típusellenőrzés Parametrikus polimorfizmus Algoritmusok - osztályok - funktorok Példa: C++ Standard Template Library GDF dec. 5.

18 C++ template metaprogramozás
1994, template-ek szabványosítása unruh.cpp 30: conversion from enum to D<2> requested unruh.cpp 30: conversion from enum to D<3> requested unruh.cpp 30: conversion from enum to D<5> requested unruh.cpp 30: conversion from enum to D<7> requested unruh.cpp 30: conversion from enum to D<11> requested unruh.cpp 30: conversion from enum to D<13> requested unruh.cpp 30: conversion from enum to D<17> requested unruh.cpp 30: conversion from enum to D<19> requested Fordítási időben Turing-teljes Fordítási idejű döntések és algoritmusok GDF dec. 5.

19 C++ template metaprogramozás
int factorial( int n) { return (n==0) ? 1 : n*factorial(n-1); } int main() { cout << factorial(5) << endl; return 0; template <int N> struct Factorial { enum { value = N * Factorial<N-1>::value }; }; template <> struct Factorial<1> { enum { value = 1 }; const int fact5 = Factorial<5>::value; std::cout << fact5 << endl; GDF dec. 5.

20 Szándékalapú programozás
Charles Simonyi Bravo Word GDF dec. 5.

21 Szándékalapú programozás
Feladat-specifikus tudás Programozó Forráskód Futtatás ? oldal 200 oldal oldal Szoftverfejlesztői tudás? GDF dec. 5.

22 Szándékalapú programozás
Feladat-specifikus tudás Domain kód Forráskód Futtatás 200 oldal oldal Generátor Programozó oldal GDF dec. 5.

23 Az ingyenvacsora vége Paradigmák evolúciója Akadémiai kutatások
Ipari követelmények „gyakorlatias” versus „akadémikus” tárgyak Új paradigmák megértésére, befogadása Felkészítés a jelen és a jövő technológiáira GDF dec. 5.

24 Összefoglalás Paradigmák evolúciója Akadémiai kutatások
Ipari követelmények „gyakorlatias” versus „akadémikus” tárgyak Új paradigmák megértésére, befogadása Felkészítés a jelen és a jövő technológiáira GDF dec. 5.

25 Köszönöm a figyelmet! Programozási nyelvek – Programozási paradigmák
Porkoláb Zoltán Eötvös Loránd Tudományegyetem, Informatikai Kar Programozási Nyelvek és Fordítóprogramok Tanszék


Letölteni ppt "Programozási nyelvek – Programozási paradigmák"

Hasonló előadás


Google Hirdetések