Zarys C++
Poniższy konspekt stanowi przegląd i tematyczny przewodnik po języku C++:
C++ to statycznie typowany , dowolny , wieloparadygmatowy , kompilowany język programowania ogólnego przeznaczenia . Jest uważany za język średniozaawansowany, ponieważ zawiera kombinację cech języka wysokiego i niskiego poziomu . Został opracowany przez Bjarne'a Stroustrupa od 1979 roku w Bell Labs jako rozszerzenie języka C.
Jakim typem języka jest C++?
C++ można opisać jako wszystkie z poniższych:
-
Język programowania — sztuczny język przeznaczony do przekazywania instrukcji maszynie, w szczególności komputerowi. Języki programowania mogą być używane do tworzenia programów kontrolujących zachowanie maszyny i/lub do precyzyjnego wyrażania algorytmów.
- Język skompilowany — język programowania realizowany za pomocą kompilatorów (tłumaczy generujących kod maszynowy z kodu źródłowego), a nie interpreterów (wykonawców kodu źródłowego krok po kroku, w których nie odbywa się żadne tłumaczenie).
- Język programowania ogólnego przeznaczenia — język programowania przeznaczony do pisania oprogramowania w wielu różnych dziedzinach zastosowań.
- Język pośredni — język abstrakcyjnej maszyny zaprojektowanej do pomocy w analizie programów komputerowych. Termin pochodzi od ich użycia w kompilatorach, gdzie kompilator najpierw tłumaczy kod źródłowy programu na postać bardziej odpowiednią do transformacji poprawiających kod, jako krok pośredni przed wygenerowaniem kodu obiektowego lub maszynowego dla maszyny docelowej.
- Obiektowy język programowania – język programowania oparty na „obiektach”, czyli strukturach danych zawierających dane, w postaci pól, często nazywanych atrybutami; i kod w postaci procedur, zwanych metodami. Procedury obiektu mogą uzyskiwać dostęp do pól danych obiektów i modyfikować je. W programowaniu obiektowym programy komputerowe są projektowane poprzez tworzenie ich z obiektów, które wchodzą ze sobą w interakcje.
- Język programowania o typie statycznym
Ogólne koncepcje C++
-
Rozpoznawanie nazw
- Wyszukiwanie nazw zależne od argumentów — dotyczy wyszukiwania niekwalifikowanej nazwy funkcji w zależności od typów argumentów podanych wywołaniu funkcji. To zachowanie jest również znane jako wyszukiwanie Koeniga , nazwane na cześć jego wynalazcy Andrew Koeniga (programista) .
-
Automatyczne łączenie — mechanizm automatycznego określania, do których bibliotek należy się łączyć podczas budowania programu w C lub C++. Jest aktywowany za pomocą
#pragma comment(lib, <nazwa>)
w plikach nagłówkowych biblioteki. - Klasy — Klasy definiują typy struktur danych i funkcje, które operują na tych strukturach danych. Instancje tych typów danych są znane jako obiekty i mogą zawierać zmienne składowe, stałe, funkcje składowe i przeciążone operatory zdefiniowane przez programistę. Język programowania C++ umożliwia programistom oddzielenie specyficznych dla programu typów danych za pomocą klas.
- Gwarancje wyjątków
- Plik nagłówkowy
- Klasa wewnętrzna
- Jedna zasada definicji
- Nieprzezroczysty wskaźnik
- Zwykła stara struktura danych
- Reguła trzech (programowanie w C++)
- Informacje o typie czasu wykonywania
- Punkt sekwencji
- Pojedyncza jednostka kompilacji
- Specjalne funkcje członkowskie
- Niepowodzenie zamiany nie jest błędem
- Szablon (C++)
- Metaprogramowanie szablonów
- Klasa cech
- Niezdefiniowane zachowanie
- Wywołania funkcji wirtualnych
Kwestie
Łańcuch narzędzi C++
kompilatory C++
Biblioteki C++
Standardowa biblioteka C++
Standardowa biblioteka C++ to zbiór narzędzi dostarczanych z C++ do użytku przez dowolnego programistę C++. Obejmuje wejście i wyjście, wielowątkowość, czas, wyrażenia regularne, algorytmy do typowych i mniej powszechnych zadań (znajdź, for_each, swap itp.) oraz listy, mapy i mapy haszujące (oraz odpowiedniki dla zestawów) oraz klasa o nazwie vector, która jest tablicą o zmiennym rozmiarze. Wiele innych funkcji zapewnia standardowa biblioteka, ale głównie w formie przeznaczonej do budowania na wierzchu w celu tworzenia bibliotek stron trzecich.
Inne godne uwagi biblioteki
- Aktywna biblioteka szablonów
- Adaptacyjne środowisko komunikacyjne
- Szkielet algorytmiczny
- Standardowa biblioteka Apache C++
- Armadillo (biblioteka C++)
- Artefaktur
- Biblioteka Asio C++
- Biblioteka AT&T FSM
- Serwer ATL
- PIŁKA
- Blitz++
- Odśmiecacz Boehm
- Boost (biblioteki C++)
- Interfejs graficzny Borlanda
- Botan (biblioteka programistyczna)
- C++ AMP
- CGAL
- Cinder (biblioteka programistyczna) — framework dla zaawansowanych możliwości wizualizacji.
- ClanLib
- CodeSynthesis XSD
- CodeSynthesis XSD/e
- CppUnit
- Crypto++
- CTPP
- D-Bus
- Biblioteka zarządzania bazą danych
- Naczynia kuchenne
- Effi (C++)
- Eigen (biblioteka C++)
- GDAL
- GDCM
- GiNaC
- Gtkmm
- System grafiki 3D HOOPS
- Integrated Performance Primitives (IPP) — wielowątkowa biblioteka funkcji dla aplikacji multimedialnych i przetwarzania danych, wyprodukowana przez firmę Intel .
- sok
- Kakadu (oprogramowanie)
- KFRlib — wieloplatformowa, zoptymalizowana biblioteka audio i DSP .
- LEMON (biblioteka C++)
- Baza danych poziomu
- Libarc
- LibLAS
- Libsigc++
- Libx (biblioteka graficzna)
- LiteSQL
- NA ŻYWO555
- Loki (C++)
- Math Kernel Library (MKL) — biblioteka zoptymalizowanych procedur matematycznych do zastosowań naukowych, inżynieryjnych i finansowych, stworzona przez firmę Intel .
- Biblioteka szablonów macierzy
- Metazestaw
- Biblioteka klas Microsoft Foundation
- Obiektowa biblioteka Windows
- Zorientowana obiektowo hierarchia typów abstrakcyjnych
- ODB (C++)
- OGR
- Otwórz bibliotekę importu zasobów
- Otwórz Inventora
- OpenImageIO
- Biblioteka szablonów Oracle
- Zestaw narzędzi Orfeo
- Biblioteki POCO C++
- Podofo
- Poppler (oprogramowanie)
- Zestaw narzędzi PTK
- Qt (framework)
- Biblioteka obiektów dźwiękowych (SndObj).
- Stapl
- Symboliczny C++
- Threading Building Blocks (TBB) — biblioteka szablonów C++ opracowana przez firmę Intel Corporation do pisania programów korzystających z procesorów wielordzeniowych.
- VTD-XML
- Biblioteka szablonów systemu Windows
- WxWidgets
- Xcas
- Xerces
- JAAF
Zobacz też
- Lista bibliotek wielowątkowych C++
- Lista bibliotek arytmetycznych wielokrotnej precyzji języka C++
- Lista bibliotek szablonów C++
Historia C++
- Historia C++
- Języki programowania, które wpłynęły na C++
- Historia normalizacji
- C++98 — W 1998 roku komitet normalizacyjny C++ dokonał standaryzacji C++ i opublikował międzynarodowy standard ISO/IEC 14882:1998 (nieformalnie znany jako C++98).
- C++03
- C++11 — zatwierdzony przez ISO od 12 sierpnia 2011 r., zastępujący C++03. Nazwa wywodzi się z tradycji nazewnictwa wersji językowych według roku publikacji specyfikacji.
- C++ 14 — najnowsza wersja C++, ogłoszona przez ISO 18 sierpnia 2014 r., zastępująca C++ 11.
- C++17 — nadchodząca wersja. Specyfikacja jest kompletna i wchodzi w okres przeglądu.
- C++20
Przykładowy kod źródłowy
Publikacje C++
Książki o C++
- Język programowania C++ — powszechnie uważany za standardowy podręcznik tego języka. Bjarne Stroustrupa.
- The Design and Evolution of C++ — książka Bjarne'a Stroustrupa o narodzinach C++.
- Modern C++ Design — książka Andrei Alexandrescu na temat różnych wzorców projektowych z wykorzystaniem C++.
Czasopisma o C++
- C++ Report — był dwumiesięcznym profesjonalnym magazynem komputerowym wydawanym przez SIGS Publications Group.
osobowości C++
- Aleksander Stiepanow
- Andrzej Aleksandrescu
- Andrzej Koenig
- Bjarne Stroustrup – duński informatyk, najbardziej znany ze stworzenia i rozwoju języka C++.
- Dawid Abrahams
- Douglasa C. Schmidta
- Sutter ziołowy
- Jim Coplien (alias James O. Coplien)
- Pete'a Beckera
- Roberta Cecila Martina
- Scotta Meyersa
dialekty C++
Komitet standaryzacyjny C++ odradza dialekty (preferując rozwiązanie problemu przez nową funkcjonalność w standardowej bibliotece, jak ma to miejsce w przypadku elementów takich jak wielowątkowość w programowaniu równoległym), jednak niektóre dialekty zostały stworzone z różnych powodów (aby usunąć trudniejsze do zaimplementowania funkcje, odpowiedź na trend programistyczny itp.):
-
Dialekt języka programowania — (stosunkowo niewielka) odmiana lub rozszerzenie języka, które nie zmienia jego wewnętrznej natury.
- Charm++ — obiektowy język programowania równoległego oparty na C++ i opracowany w Laboratorium Programowania Równoległego na Uniwersytecie Illinois. Charm++ został zaprojektowany w celu zwiększenia produktywności programistów poprzez zapewnienie wysokiego poziomu abstrakcji programu równoległego, przy jednoczesnym zapewnieniu dobrej wydajności na szerokiej gamie bazowych platform sprzętowych.
-
Embedded C++ — dialekt C++ dla systemów wbudowanych, stworzony „w celu zapewnienia programistom systemów wbudowanych podzbioru C++, który jest łatwy do zrozumienia i użycia przez przeciętnego programistę C”.
- System wbudowany — system komputerowy przeznaczony do określonych funkcji sterowania obiektem, maszyną lub urządzeniem, w którym jest osadzony jako integralna część produktu. Systemy wbudowane sterują wieloma powszechnie używanymi urządzeniami.
- R++ — oparty na regułach język programowania opracowany przez firmę Bell Labs w latach 90. XX wieku w oparciu o język C++.
- Sieve C++ Parallel Programming System — kompilator C++ i równoległe środowisko wykonawcze zaprojektowane i wydane przez Codeplay, którego celem jest uproszczenie równoległego przetwarzania kodu, tak aby mógł on wydajnie działać w systemach wieloprocesorowych lub wielordzeniowych.
rozszerzenia języka C++
- AspectC++ — zorientowane na aspekty rozszerzenie języków C i C++.
-
C++/CLI — specyfikacja językowa firmy Microsoft mająca na celu zastąpienie rozszerzeń zarządzanych dla języka C++. Jest to kompletna wersja mająca na celu uproszczenie starszej składni Managed C++ (która jest obecnie przestarzała). C++/CLI jest standaryzowany przez Ecma jako ECMA-372. Jest obecnie dostępny tylko w Visual Studio 2005, 2008, 2010, 2012, 2013 i 2015 (również w Express Editions).
- Wspólna infrastruktura językowa — otwarta specyfikacja opracowana przez firmę Microsoft i znormalizowana przez ISO i ECMA, która opisuje kod wykonywalny i środowisko wykonawcze, które stanowią rdzeń platformy Microsoft .NET Framework oraz darmowych i otwartych implementacji Mono i Portable.NET.
- C++/CX — rozszerzenie języka dla kompilatorów C++ firmy Microsoft, które umożliwia programistom C++ pisanie programów dla nowej platformy Windows Runtime lub WinRT. Zapewnia zestaw abstrakcji składni i bibliotek, które łączą się z modelem programowania WinRT opartym na modelu COM w sposób naturalny dla natywnych programistów C++.
- Cilk Plus — rozszerzenie wielowątkowych obliczeń równoległych języków C i C++.
- CUDA C/C++ — kompilator i rozszerzenia do obliczeń równoległych z wykorzystaniem kart graficznych Nvidia .
- Managed Extensions for C++ — przestarzały zestaw Microsoft odchyleń od C++, w tym rozszerzenia gramatyczne i składniowe, słowa kluczowe i atrybuty, aby przenieść składnię i język C++ do .NET Framework. Te rozszerzenia umożliwiły kierowanie kodu C++ do środowiska uruchomieniowego języka wspólnego (CLR) w postaci kodu zarządzanego, a także dalsze współdziałanie z kodem natywnym. Zastąpiony przez C++/CLI.