Przed C++, był C
Język C został opracowany w 1972 roku przez Dennisa Ritchiego w laboratoriach Bell Telephone, głównie jako język programowania systemów (język, w którym można pisać systemy operacyjne). Podstawowymi celami Ritchiego było stworzenie minimalistycznego języka, który byłby łatwy do skompilowania, umożliwiał skuteczny dostęp do pamięci, generował wydajny kod i był samodzielny (niezależny od innych programów). W przypadku języka wysokiego poziomu język C został zaprojektowany tak, aby zapewnić programiście dużą kontrolę, umożliwiając jednocześnie programistom napisanie programu, który można uruchomić na różnych platformach.
C okazało się tak wydajne i elastyczne, że w 1973 r. Ritchie i Ken Thompson przepisali większość systemu operacyjnego Unix przy użyciu języka C. Wiele poprzednich systemów operacyjnych zostało napisanych w asemblerze. W przeciwieństwie do asemblera, który tworzy programy, które mogą działać tylko na określonych procesorach, C charakteryzuje się doskonałą przenośnością, umożliwiając łatwą rekompilację Uniksa na wielu różnych typach komputerów i przyspieszając jego przyjęcie. C i Unix były ze sobą powiązane, a popularność C była częściowo powiązana z sukcesem Uniksa jako systemu operacyjnego.
W 1978 roku Brian Kernighan i Dennis Ritchie opublikowali książkę zatytułowaną „The C Programming Language”. Książka ta, powszechnie znana jako K&R (od nazwisk autorów), dostarczyła nieformalnej specyfikacji języka i stała się de facto standardem. Gdy potrzebna była maksymalna przenośność, programiści trzymali się zaleceń K&R, ponieważ większość kompilatorów w tamtym czasie była zaimplementowana zgodnie ze standardami K&R.
W 1983 roku Amerykański Narodowy Instytut Normalizacyjny (ANSI) utworzył komitet w celu ustalenia formalnego standardu dla języka C. W 1989 (komitetom zajęło to wieczność) ukończyli i opublikowali standard C89, szerzej znany jako ANSI C. W 1990 roku Międzynarodowa Organizacja ds. Standaryzacja (ISO) przyjęła ANSI C (z kilkoma drobnymi modyfikacjami). Ta wersja C stała się znana jako C90. Kompilatory ostatecznie stały się zgodne z ANSI C/C90, a programy pragnące maksymalnej przenośności zostały zakodowane zgodnie z tym standardem.
W 1999 roku komitet ISO wydał nową wersję C, nieformalnie nazwaną C99. C99 przyjął wiele funkcji, które weszły już do kompilatorów jako rozszerzenia lub zostały zaimplementowane w C++.
C++
C++ (wymawiane „patrz plus plus”) zostało opracowane przez Bjarne'a Stroustrupa w Bell Labs jako rozszerzenie C, począwszy od 1979 roku. C++ dodaje wiele nowych funkcji do języka C i być może najlepiej jest myśleć o nim jako o nadzbiorze C, chociaż nie jest to do końca prawdą (ponieważ C99 wprowadził kilka funkcji, które nie istnieją w C++). Najbardziej zauważalną innowacją C++ w stosunku do C jest to, że obsługuje programowanie obiektowe. Jeśli chodzi o to, czym jest „obiekt” i czym różni się od tradycyjnych metod programowania, cóż, omówimy to w późniejszych rozdziałach.
C++ został standaryzowany w 1998 roku przez komitet ISO. Oznacza to, że komitet normalizacyjny ISO zatwierdził dokument (zwany dokumencie standardów), który zawiera formalny opis języka C++. Celem standaryzacji jest zapewnienie spójnego działania kodu C++ na różnych kompilatorach i platformach.
Niewielka aktualizacja języka została opublikowana w 2003 roku (nieformalnie nazwana C++03).
Od tego czasu wprowadzono pięć głównych aktualizacji języka C++ (nieformalnie nazwanych C++11, C++14, C++17, C++20 i C++23), a każda z nich dodała dodatkowe funkcje. W szczególności język C++ 11 dodał ogromną liczbę nowych możliwości i jest powszechnie uważany za nową, podstawową wersję języka. Przyszłe aktualizacje języka spodziewane są mniej więcej co trzy lata.
Ponieważ oficjalna nazwa zatwierdzonych standardów jest złożona (oficjalna nazwa C++20 to ISO/IEC 14882:2020), standardy są zwykle określane za pomocą nieformalnych nazw, które zawierają dwie ostatnie cyfry roku publikacji (lub oczekiwanej publikacji). Na przykład C++20 odnosi się do wersji języka opublikowanej w 2020 r.
Filozofia C i C++
Podstawową filozofię projektowania C i C++ można podsumować słowami „zaufaj programiście” – co jest zarówno wspaniałe, jak i niebezpieczne. C++ został zaprojektowany tak, aby zapewnić programiście dużą swobodę robienia tego, co chce. Oznacza to jednak również, że język często nie będzie powstrzymywał Cię od robienia rzeczy, które nie mają sensu, ponieważ zakłada, że robisz to z jakiegoś powodu, którego nie rozumie. Istnieje sporo pułapek, w które nowi programiści mogą wpaść, jeśli zostaną przyłapani na nieświadomości. Jest to jeden z głównych powodów, dla których wiedza, czego nie należy robić w C/C++, jest prawie tak samo ważna, jak wiedza o tym, co należy robić.
P: W czym C++ jest dobry?
C++ wyróżnia się w sytuacjach, gdzie wymagana jest wysoka wydajność i precyzyjna kontrola nad pamięcią i innymi zasobami. Oto kilka typów aplikacji, w których C++ sprawdzi się najlepiej:
- Gry wideo
- Systemy czasu rzeczywistego (np. w transporcie, produkcji itp.)
- Wysokowydajne aplikacje finansowe (np. transakcje o wysokiej częstotliwości)
- Aplikacje i symulacje graficzne
- Aplikacje zwiększające produktywność/biurowe
- Wbudowane oprogramowanie
- Przetwarzanie audio i wideo
- Sztuczna inteligencja i sieci neuronowe
C++ zawiera również dużą liczbę wysokiej jakości bibliotek innych firm, które mogą znacznie skrócić czas programowania.
P: Czy C++ nie umiera?
Nie. Badania konsekwentnie wskazują, że C++ jest drugim lub trzecim najpopularniejszym językiem kompilowanym (po Javie i czasami C#, a tuż przed C), a ogólnie piątym lub szóstym najpopularniejszym językiem (z wyłączeniem HTML, SQL i języków skryptowych powłoki).
C++ jest jednym z najpopularniejszych języków do nauki kodowania ze względu na obfitość zasobów dydaktycznych, dużą społeczność i liczbę kursów uniwersyteckich, na których uczą it.
Dzięki aktualizacjom językowym co trzy lata, ogromnej liczbie przydatnych bibliotek stron trzecich i dominacji w zawsze popularnej branży gier wideo, C++ nadal się rozwija.
P: Czy muszę znać C, zanim przystąpię do tych samouczków?
Nie! Możesz zacząć od C++, a po drodze nauczymy Cię wszystkiego, co musisz wiedzieć (w tym pułapek, których należy unikać).
Kiedy już znasz C++, nauczenie się standardowego C powinno być całkiem łatwe, jeśli kiedykolwiek zajdzie taka potrzeba. Obecnie C jest najczęściej używany w niszowych przypadkach: kod działający na urządzeniach wbudowanych, gdy zachodzi potrzeba interakcji z innymi językami, które mogą współpracować tylko z C itp. W większości innych przypadków zaleca się C++.

