encyklopedia.space

C++

C++ – wieloparadygmatowy język programowania ogólnego przeznaczenia, będący rozwinięciem języka C. Jego pierwsza wersja została opracowana w latach 19791983 w Bell Labs przez Bjarnego Stroustrupa. Obecnie C++ jest jednym z najpopularniejszych języków w dziedzinie systemów operacyjnych, aplikacji o wysokiej wydajności, gier komputerowych oraz systemów wbudowanych.

Historia

W 1979 roku Stroustrup rozpoczął prace nad językiem, którego pierwotnym celem było dodanie do języka C mechanizmów programowania obiektowego. Pierwsza wersja, nazwana C with Classes, pojawiła się w 1980 roku. Oficjalna nazwa C++ (czyt. „C plus plus”) została wprowadzona w 1983, a jej nazwa nawiązuje do operatora inkrementacji w języku C.

W 1990 roku powstał standard ANSI C, a C++ został zintegrowany z tym standardem, co przyczyniło się do jego szerokiej akceptacji. Kolejne wersje języka były publikowane jako normy ISO: C++98 (1998), C++03 (2003), C++11 (2011), C++14 (2014), C++17 (2017), C++20 (2020) oraz C++23 (2023). Każda kolejna wersja wprowadzała nowe funkcje, ulepszenia składni oraz biblioteki standardowe.

Charakterystyka języka

  • Wieloparadygmatowość – C++ łączy programowanie proceduralne, obiektowe, generyczne oraz (od C++11) funkcjonalne.
  • Statyczne typowanie – typy zmiennych są określane w czasie kompilacji, co umożliwia wykrywanie wielu błędów przed uruchomieniem programu.
  • Kompatybilność z C – prawie cały kod w języku C jest poprawnym kodem w C++.
  • Wysoka wydajność – dzięki niskopoziomowemu dostępowi do pamięci i możliwości ręcznego zarządzania zasobami.
  • Biblioteka standardowa (STL) – bogaty zestaw kontenerów, algorytmów i iteratorów.

Paradygmaty programowania

C++ umożliwia programowanie w różnych stylach:

Programowanie proceduralne
Podstawowy model, oparty na funkcjach i strukturach danych, charakterystyczny dla języka C.
Programowanie obiektowe
Wprowadzono klasy, dziedziczenie, polimorfizm, enkapsulację i abstrakcję – kluczowe elementy programowania obiektowego.
Programowanie generyczne
Dzięki szablonom (templates) i bibliotece STL można pisać kod działający na dowolnych typach danych.
Programowanie funkcyjne
Od wersji C++11 wprowadzono wyrażenia lambda, funkcje wyższego rzędu oraz stałe wyrażenia constexpr, co sprzyja stylowi funkcyjnemu.

Standardy języka

Kolejne wersje standardu C++ wprowadzają nowe możliwości:

Standard Rok Kluczowe nowości
C++98 1998 Podstawowe elementy języka, biblioteka standardowa (STL).
C++03 2003 Poprawki błędów, drobne ulepszenia składni.
C++11 2011 auto, nullptr, lambda, thread, smart pointers, constexpr, move semantics.
C++14 2014 Ulepszone lambda, binary literals, std::make_unique.
C++17 2017 std::optional, std::variant, structured bindings, if constexpr.
C++20 2020 Moduły, koncepcje (concepts), coroutines, range library.
C++23 2023 Rozszerzenia constexpr, std::expected, co_await w szablonach.

Zastosowania

C++ znajduje zastosowanie w wielu dziedzinach:

Popularne kompilatory i środowiska

Do tworzenia oprogramowania w C++ najczęściej używa się następujących narzędzi:

  • GCC – otwartoźródłowy kompilator dostępny na wiele platform.
  • Clang – nowoczesny kompilator z zaawansowanymi możliwościami diagnostycznymi.
  • Microsoft Visual C++ (MSVC) – zintegrowany z Visual Studio.
  • Intel C++ Compiler (ICC) – zoptymalizowany pod procesory Intel.

Biblioteki i frameworki

Oprócz biblioteki standardowej (STL) programiści korzystają z licznych bibliotek zewnętrznych:

  • Boost – zestaw rozszerzeń do STL, często wprowadzanych później do standardu.
  • Qt – framework do tworzenia interfejsów graficznych i aplikacji wieloplatformowych.
  • POCO – biblioteka do programowania sieciowego i serwerowego.
  • OpenCV – biblioteka do przetwarzania obrazu i wizji komputerowej.

Wpływ i znaczenie

C++ odgrywa kluczową rolę w rozwoju nowoczesnych systemów informatycznych. Jego zdolność do łączenia niskopoziomowego dostępu do sprzętu z wysokopoziomowymi abstrakcjami sprawia, że jest wyborem wielu firm technologicznych. Język stał się także inspiracją dla innych języków, m.in. Java, C# czy Rust.

Przyszłość

Rozwój C++ jest kontynuowany przez komitet ISO. Prace nad kolejną wersją (czasowo oznaczaną jako C++26) skupiają się na dalszym usprawnieniu programowania współbieżnego, zwiększeniu ekspresji typów oraz integracji z nowoczesnymi technologiami (np. sztuczna inteligencja, WebAssembly).

Literatura

  1. Bjarne Stroustrup, C++ Programming Language, 4. wydanie, 2013.
  2. Scott Meyers, Effective Modern C++, O'Reilly Media, 2014.
  3. Herb Sutter, Modern C++ Design, Addison‑Wesley, 2000.

Artykuł został opracowany na podstawie dostępnych źródeł publicznych oraz dokumentacji standardów ISO.