Programozási nyelvek – Programozási paradigmák

Slides:



Advertisements
Hasonló előadás
Algoritmusleíró eszközök
Advertisements

C++ programozási nyelv Gyakorlat hét
K-Chat Dr. Szepesvári Csaba Kutatási Alelnök mindmaker.
Piacképes programozói tudás a középiskolában
Pac-Man játék tanulása Megerősítéses Tanulással Mesterséges Intelligencia algoritmusok tesztelése játékokon Gyenes Viktor Eötvös Loránd Tudományegyetem.
3. A programozás eszközei, programozás-technikai alapismeretek
Funkcionális programozás F#-ban
9. előadás (2005. április 26.) Parancssor argumentum kezelés példák (K&R) Fordítóprogramok A C előfordító 1.
Generatív programozás
Programozás.
Programozási nyelvek.
1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
Szoftverparadigmák és metrikák
Bevezetés a gépi tanulásba február 16.. Mesterséges Intelligencia „A számítógépes tudományok egy ága, amely az intelligens viselkedés automatizálásával.
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
Programozási alapismeretek Bóta László
Algoritmizálás Göncziné Kapros Katalin humaninformatika.ektf.hu.
Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 1 Programozó matematikus szak 2003/2004-es tanév II. félév.
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
Porkoláb Zoltán, Kozsik Tamás, Zsók Viktória,
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
5. előadás Parametrikus polimorfizmus. Generikus programozás
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék
Kivételkezelés a C++ nyelvben Bevezetés
Bevezetés a C++ programozási nyelvbe
A programozás alapjai A számítógép számára a feladat meghatá- rozását programozásnak nevezzük. Ha a processzor utasításait használjuk a feladat meghatározásához,
Új programozási paradigmák a láthatáron (aspektus-orientált és intencionális programozás) Csontos Péter AITIA Informatikai Rt. 2002/10/17.
Funkcionális programozás 2. gyakorlat
Programozás. fordító (compiler): a program forrásszövegéből egy gépi kódú, futtatható programot (pl. EXE) állít elő, vagyis a programot lefordítja a gép.
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
Tervkészítés PDDL alapon Konzulens: Kovács Dániel László Intelligens rendszerek tanszék Budapest Műszaki és Gazdaságtudományi.
Programozási nyelvek Páll Boglárka.
Az F# programozási nyelv
Programozási nyelvek, Pascal
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Programozási nyelvek.
Absztrakt adattípusok kAkAÓ Objektumorientált programozás. In: Nyékyné Gaizler Judit (szerk.): Programozási nyelvek, Kiskapu, Budapest, pp
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
Objektumorientált programozás
Egyenesvonalú (lineáris) adatszerkezetek
Podoski Péter és Zabb László. Bevezető Algoritmus-vizualizáció témakörében végeztünk kutatásokat és fejlesztéseket Felmértük a manapság ismert eszközök.
ProgramozásProgramozás célja hosszabb számítások elvégzése ill. kiíratása akkor érdemes programot írni, ha sok számolni való van illetve ha ugyanazt az.
A számítógépek története
Ficsor Lajos CPP2 / 1 Származtatási mechanizmus a C++ nyelvben Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
Algoritmizálás, adatmodellezés
Programozási nyelvek – Programozási paradigmák Porkoláb Zoltán Eötvös Loránd Tudományegyetem, Informatikai Kar Programozási.
DLL használata és készítése Feladat
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Programozási nyelvek – Programozási paradigmák Porkoláb Zoltán Eötvös Loránd Tudományegyetem, Informatikai Kar Programozási.
Informatikai gyakorlatok 11. évfolyam
kialakulása, fejlődése, generációk
Programok készítése és futtatása. Integrált fejlesztői környezet (IDE) tartalmaz:  szövegszerkesztőt a program forráskódjának szerkesztésére,  fordítóprogramot.
Fordítóprogramok gyakorlat tavaszi félév gyakorlatvezető:Kitlei Róbert szoba:D 2-616B honlap:
A programozás módszertana. Monolitikus programozás Egyszerű feladatok - egyszerű programok Egy program – egy programozó Nincs belső struktúra, lineáris.
Programozási nyelvek csoportosítása.
kialakulása, fejlődése, generációk
Adatstruktúrák Algoritmusok Objektumok
Programozási nyelvek Programozási alapismeretek
Programozási alapok.
Prog2, AspectJ bevezetés
Programozási nyelvek típusossága.
Compiler illetve interpreter nyelvek
Operációs rendszerek.
Hernyák Zoltán Programozási Nyelvek II.
Előadás másolata:

Programozási nyelvek – Programozási paradigmák Porkoláb Zoltán gsd@inf.elte.hu http://gsd.web.elte.hu Eötvös Loránd Tudományegyetem, Informatikai Kar Programozási Nyelvek és Fordítóprogramok Tanszék

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 2007. dec. 5.

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 2007. dec. 5.

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 2007. dec. 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 2007. dec. 5.

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 2007. dec. 5.

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 2007. dec. 5.

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 2007. dec. 5.

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 2007. dec. 5.

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 2007. dec. 5.

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 2007. dec. 5.

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 2007. dec. 5.

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 2007. dec. 5.

Ú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 2007. dec. 5.

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 2007. dec. 5.

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 2007. dec. 5.

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 2007. dec. 5.

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 2007. dec. 5.

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 2007. dec. 5.

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

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

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

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 2007. dec. 5.

Ö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 2007. dec. 5.

Köszönöm a figyelmet! Programozási nyelvek – Programozási paradigmák Porkoláb Zoltán gsd@inf.elte.hu http://gsd.web.elte.hu Eötvös Loránd Tudományegyetem, Informatikai Kar Programozási Nyelvek és Fordítóprogramok Tanszék