Menu

Czym jest C++? Język, jego szybkość i zastosowania

Czym właściwie jest C++, dlaczego kompiluje się prosto do natywnego kodu maszynowego i jakie oprogramowanie o wysokiej wydajności się w nim tworzy.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

C++ w jednym zdaniu

C++ to statycznie typowany, kompilowany język programowania, który zamienia kod źródłowy bezpośrednio w natywny kod maszynowy. Ta jedna decyzja projektowa, czyli brak interpretera i maszyny wirtualnej między programem a procesorem, sprawia, że C++ jest jednym z najszybszych języków, w jakich można pisać, i napędza oprogramowanie, które absolutnie nie może być wolne.

Oto obowiązkowy pierwszy program. Uruchom go tutaj:

Struktury jest tu więcej niż w języku skryptowym i to celowe: C++ daje precyzyjną kontrolę w zamian za jawność. Każdy element tego programu omówimy na kilku kolejnych stronach.

Dlaczego C++ jest szybki

Większość języków skryptowych uruchamia kod przez interpreter albo maszynę wirtualną, która czyta i wykonuje instrukcje w czasie działania programu. C++ pomija to wszystko:

  1. Kompilator (taki jak g++ albo clang++) czyta kod źródłowy .cpp i tłumaczy go na instrukcje maszynowe dla jednego konkretnego procesora i systemu operacyjnego.
  2. Wynikiem jest samodzielny plik wykonywalny, który procesor uruchamia bezpośrednio: nic nie stoi między twoim kodem a sprzętem.

Ponieważ podczas działania programu nie zachodzi żadne tłumaczenie, programy w C++ startują natychmiast i działają z pełną prędkością procesora. Dostajesz też precyzyjną kontrolę nad pamięcią i sprzętem, którą języki wyższego poziomu celowo przed tobą ukrywają.

Cena: ten kod maszynowy jest zbudowany dla jednej platformy. Plik wykonywalny skompilowany w Windows nie uruchomi się na Macu, więc kod źródłowy kompilujesz ponownie dla każdej platformy docelowej. (Dla porównania Java kompiluje się do przenośnego kodu bajtowego, który działa na każdej maszynie JVM.)

Statyczne typowanie i wiele paradygmatów

Dwie cechy kształtują to, jak wygląda i jak się pisze kod w C++.

Statyczne typowanie oznacza, że każda zmienna ma typ znany w czasie kompilacji, a kompilator sprawdza typy, zanim program w ogóle się uruchomi:

count przez całe swoje życie jest typu int: próba zapisania w nim "hello" się nie skompiluje. Dzięki temu cała kategoria błędów zostaje wyłapana wcześnie, kosztem większej ilości pisania na starcie.

Wieloparadygmatowość oznacza, że C++ nie narzuca jednego stylu. Możesz pisać zwykły kod proceduralny, organizować logikę w klasy (programowanie obiektowe) albo używać szablonów do kodu generycznego i wielokrotnego użytku. Większość prawdziwych programów łączy wszystkie trzy style. Ta elastyczność daje dużą moc, ale oznacza też, że C++ ma bardzo wiele do nauczenia się, dlatego będziemy poznawać go koncepcja po koncepcji.

Do czego służy C++

C++ pojawia się wszędzie tam, gdzie wydajność i kontrola nie podlegają negocjacjom:

  • Silniki gier: Unreal Engine, rdzeń Unity i większość kodu gier AAA.
  • Oprogramowanie systemowe: systemy operacyjne, sterowniki urządzeń i przeglądarki takie jak Chrome i Firefox.
  • Usługi o wysokiej wydajności: bazy danych, systemy transakcyjne i infrastruktura wyszukiwania, gdzie liczą się mikrosekundy.
  • Systemy wbudowane i sprzęt: firmware samochodów, dronów, urządzeń medycznych i IoT.

Jeśli oprogramowanie musi być szybkie, zmieścić się w ograniczonej pamięci albo komunikować się bezpośrednio ze sprzętem, jest spora szansa, że napisano je w C++.

C++ to nie C (ale od C się zaczął)

C++ wyrósł z C w latach 80. jako "C z klasami" i nadal jest w dużej mierze jego nadzbiorem: wiele poprawnego kodu w C kompiluje się jako C++. Od tamtej pory język jednak ogromnie się rozrósł.

C++ dodaje programowanie obiektowe, szablony do kodu generycznego, referencje, wyjątki i bogatą bibliotekę standardową pełną gotowych narzędzi. Ten fragment używa jednego z nich, vector: tablicy o zmiennym rozmiarze, która sama zarządza swoją pamięcią. W C trzeba by coś takiego zbudować ręcznie:

Nowoczesny C++ (standardy C++11, C++17 i C++20) mocno opiera się na takich narzędziach, dzięki którym język jest bezpieczniejszy i bardziej wyrazisty niż jego korzenie w C. Częsty błąd początkujących to pisanie C++ w stylu C, z ręcznym zarządzaniem pamięcią i surowymi tablicami wszędzie, choć biblioteka standardowa już rozwiązuje dany problem. W tej dokumentacji konsekwentnie stawiamy na nowoczesny styl.

Najczęściej zadawane pytania

Do czego służy C++?

C++ napędza oprogramowanie, w którym liczą się szybkość i kontrola: silniki gier (Unreal, rdzeń Unity), systemy operacyjne, przeglądarki (Chrome, Firefox), bazy danych, systemy transakcyjne i urządzenia wbudowane. Jego siła to działanie blisko sprzętu przy jednoczesnym dostępie do wysokopoziomowych narzędzi, takich jak klasy, szablony i biblioteka standardowa.

Czy C++ jest kompilowany, czy interpretowany?

C++ jest kompilowany. Kompilator, taki jak g++ albo clang++, tłumaczy kod źródłowy bezpośrednio na natywny kod maszynowy dla konkretnego procesora i systemu operacyjnego, tworząc samodzielny plik wykonywalny. Między programem a procesorem nie ma interpretera ani maszyny wirtualnej i właśnie dlatego C++ jest tak szybki.

Jaka jest różnica między C a C++?

C++ zaczynał jako "C z klasami" i jest w dużej mierze nadzbiorem C, więc większość kodu w C kompiluje się jako C++. Najważniejsze dodatki to programowanie obiektowe (klasy i dziedziczenie), szablony, biblioteka standardowa (kontenery takie jak vector i map), referencje, wyjątki oraz wiele funkcji bezpieczeństwa i wygody, których brakuje w C.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ