C++11. TÖRTÉNETI ÁTTEKINTŐ Bjarne Stroustrup, AT&T 1979 C with classes 1983 ipari alkalmazás 1998 első szabvány 2003 apróbb módosítások 2005 tr1 2011.

Slides:



Advertisements
Hasonló előadás
… with NFC A mobil contactless (NFC) technológia lehetőségei a pénzügyi szektorban.
Advertisements

Programozás III KOLLEKCIÓK 2..
Tájékoztató az R programról pszichológusoknak. A programról Az R egy nyílt forrású statisztikai és grafikai környezet, egyben programozási nyelv, amelynek.
Objective- C Bereczki Gréta Tamara
Objective-C Készítette: Zsivics Sanel NL5LWN. Tartalom bevezető történeti háttér rangsor elterjedtsége / népszerűsége alapok felépítése (.h,.m, xcode,
Szerkezeti leírás Összetevők és beültetésük Összetevők és beültetésük Általános kiosztás (generic map) Általános kiosztás (generic map) Generate parancs.
Generatív programozás
Programozási Nyelvek (C++) Gyakorlat Gyak 01.
Programozási Nyelvek (C++) Gyakorlat Gyak 03.
JavaScript.
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Software Technology Forum, április 7., Budapest, BME Nyílt forráskód a vállalatnál: ingyenes gyógyír vagy pénznyelő divat? Szentiványi Gábor, PhD.
Virtuális méréstechnika
Kincses Zoltán, Mingesz Róbert, Vadai Gergely
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Szintézis Keresztes Péter, 2005 A GAJSKI-KUHN DIAGRAM Alapelv: Rendezzük a digitális- rendszerek leírásait célok és szintek szerint.
A C++ programozási nyelvSoós Sándor 1/14 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Java programozási nyelv 3. rész – Osztályok I.
2012. március 7. Paulik Áron Prog szakkör.
Porkoláb Zoltán, Kozsik Tamás, Zsók Viktória,
ANY u WHERE u : seq(MININT..MAXINT) & size(u) = size(s) & #f.(f : 1..size(s) >->> 1..size(s) & !j.(j : 1..size(s) => s(f(j)) = u(j))) & !i.(i : 1..size(s)-1.
C++ alapok, harmadik óra
Programozási nyelvek – Programozási paradigmák
Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék
Bevezetés a C++ programozási nyelvbe
A könyvtár szociális funkciója Nemzetközi és hazai kitekintés.
OAIS. Megőrzés feladatai Viability –Meg kell őrizni a bitfüzér változatlanságát és olvashatóságát a tároló eszközön Rendbebility –Meg kell őrizni a bitfüzér.
Nyílt könyvtári gyűjtemények az Interneten Szabványos metaadatok: átjárhatóság Tapolcai Ágnes MEK Osztály.
A szövegszerkesztés alapjai
Ú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.
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
Kezelői felületek. Exchange 2000/2003 Exchange System Management (ESM) MMC konzol Exchange 2007 Exchange Management Console (EMC) MMC konzol Exchange.
Bevezetés a PRADO keretrendszerbe Kardos Gergely.
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 Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
A D programozási nyelv Angeli Dávid. Nagy vonalakban  C++  
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Leica Zeno GIS Leica Geosystems Térinformatika és Eszközmenedzsment Gombás László December 2012.
Java programozási nyelv Metódusok
Bevezetés Amiről ma szó lesz… Miért D? Mert a fejlesztők úgy látták, hogy a C++-on van még mit javítani. Mert a programozók a nyelvnek általában elszigetelt.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus.
XML adatkezelés 1. témakör Az XML szabvány.
A Visual Basic nyelvi elemei
Pole (array of...).  Zložený datový typ na ukladanie viacerých premených  Zápis: var meno_pola : array [ konce intervala ] of základný typ ; Základné.
Lakosság létszámának változása Farkas János
Ficsor Lajos CPP2 / 1 Származtatási mechanizmus a C++ nyelvben Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
Programozás alapjai Csernoch Mária.
Mobil alkalmazások fejlesztése Vonalkód leolvasó Symbian alapú mobiltelefonra Készítette: Tóth Balázs Viktor.
Gyurkó György. Az OO programozás és tervezés története 1960-as évek: SIMULA (véletlen folyamatokat szimuláló programok írása) az OO nyelvek őse 1970-es.
Haladó C++ Programozás Az STL sablonkönyvtár felhasználói szemszögből
Java Csoport Antal Péter Bátfai Norbert Jeszenszky Péter.
Haladó C++ Programozás SzJ/IV
Excel programozás (makró)
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
Windows 10 áttekintés és bevezetés Windows 10 áttekintés rendszergazdáknak Mi változott a Windows 7 óta?
Script nyelvek előadás
Excel programozás (makró)
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
3. osztályban.
C++ Standard Template Library
C++ Standard Template Library
Konverziós operátorok
Függvénysablonok használata
Előadás másolata:

C++11

TÖRTÉNETI ÁTTEKINTŐ Bjarne Stroustrup, AT&T 1979 C with classes 1983 ipari alkalmazás 1998 első szabvány 2003 apróbb módosítások 2005 tr új irány

C++ RENESZÁNSZA 1990 – alacsony szintű nyelvek 2000 – erős hardverek, produktivitás 2010 – szerverfarmok, mobil eszközök

C++ ÉRTÉKEI C kompatibilitás Alacsony és magas szint Multi-paradigm programozási nyelv Absztrakciós lehetőségek (olcsón) Minden opcionális Multi-platform

C++11 ELŐTÖRTÉNET Szinte változatlan a szabvány 1998 óta Elterjedt megoldások Hiányos standard könyvtárak STL – copy TR1, Boost C++0x Szabványosítás előnyei

ÚJ SZABVÁNY SZEMPONTRENDSZERE Kompatibilitás Stílus Biztonság Sebesség Tanulhatóság Kényelem, hatékonyság

AZ ÚJ SZABVÁNY TARTALMA Inicializátor listák Range based loop Lambda függvények Saját konstans literálok Variadic templates Move szemantika Threads Regexp Chrono, Random Új STL containerek Static assertions Smart pointers Függvény objektumok Override, final nullptr konstans Új string konstansok, ustring Enum „osztályok” És még sok más…

AZ ÚJ SZABVÁNY TARTALMA vector vec = load_foo(); for(vector ::iterator it=vec.begin(); it != vec.end(); ++it) { (*it)->do_something(); } for(vector ::iterator it=vec.begin(); it != vec.end(); ++it) { delete *it; } vector > vec = load_foo(); for(auto i: vec) { i->do_something(); }

AZ ÚJ SZABVÁNY TARTALMA std::vector v = {5, 4, 3, 3, 4, 5, 1, 8, 9}; //std::initializer_list std::sort (begin(v), end(v), [](int a, int b){ return a%4 < b%4; }); for (int i: {1,5,7,3,2}) std::cout << i << " "; int i{3};

AZ ÚJ SZABVÁNY TARTALMA constexpr complex operator "" i(long double d) { return {0,d}; } auto z = 2+1i;// complex(2,1) string s = R"(\w\\\w)";

AZ ÚJ SZABVÁNY TARTALMA template void printf(const char* s, T value, Args... args) { while (s && *s) { if (*s=='%' && *++s!='%') { std::cout << value; return printf(++s, args...); } std::cout << *s++; }

AZ ÚJ SZABVÁNY TARTALMA class button; class window { shared_ptr btn = nullptr; }; class button { weak_ptr wnd; };

AZ ÚJ SZABVÁNY TARTALMA template class vector { vector(const vector&); vector(vector&&); vector& operator=(const vector&); vector& operator=(vector&&); }; foo = std::move(bar);

AZ ÚJ SZABVÁNY TARTALMA class X { int a[] = {1, 4, 5, 6, 7}; public: X(int x) { if (0<x && x<=max) a=x; else throw bad_X(x); } X() : X{42} {} X& operator=(const X&) = delete; X(const X&) = default; };

AZ ÚJ SZABVÁNY TARTALMA tuple t{"Foo", 42, }; string bar{get (t)}; auto t = make_touple("foo", , 42); array a = { 5, 2, 1}; a[3]=4; unordered_map um { { "Dijkstra", 1972 }, { "Scott", 1976 }, { "Wilkes", 1967 }, { "Hamming", 1968 } };

AZ ÚJ SZABVÁNY TARTALMA { enum class Color : char { red, blue }; Color a = Color::blue; } Color b = Color::red; //Hiba extern template class Foo ;

AZ ÚJ SZABVÁNY TARTALMA ifstream in("Be.txt"s); template auto multiply(T x, U y) -> decltype(x*y) { return x*y; } auto add = [](int a, int b)->int { return a+b };

AZ ÚJ SZABVÁNY TARTALMA auto func = std::bind(foobar,_2,_1,10); func(66,12); // foobar(12, 66, 10) // Új típusok char16_t a; char32_t b; long long c; u"String"; u8"string"; L"string"; U"string";

AZ ÚJ SZABVÁNY TARTALMA constexpr int add(int x, int y) { return x + y; } const int value = add(2, 9); static_assert(add(1, 8) == 9,„Error!");

VÁLTOZÁS A KÓDOLÁSI STÍLUSBAN Rövidebb, jobban olvasható kód Kevesebb hibalehetőség Gyorsabb program Kevesebb külső függvénykönyvtár "C++11 feels like a new language” – Bjarne Stroustrup

A SZABVÁNY JÖVŐJE Megvalósíthatóság Portolás Támogatás ( -std=C++11 vagy –std=C++0x ) C11 GCC, CLANG, MSVC C++1y

Standrad Library bővítés File system, unicode, network, date Pontosítások, pure keyword, static_if Concepts, GC, Reflection Tudomány Mátrix, Fizikai egységek, Újabb matematikai függvények Magas szintű könyvtárak: XML, GUI, 3D, Adatbázis

KONFERENCIÁK Going Native C++ Now! (BoostCon) C++ and Beyond Lang.Next BUILD2011 Folly / Casablanca ( Függvénykönyvtárak )

REFERENCIÁK port