Język C i C++ to niezwykle popularne języki programowania z bardzo długą historią. O języku C++ mówi się, że jest funkcjonalnie rozwiniętą wersją języka C. Choć mają to samo źródło, w rzeczywistości jest między nimi wiele różnic.
Historia powstania języków C i C++
Twórcą języka C jest Dennis Ritchie. Ten światowej sławy amerykański informatyk we współpracy z Kenem Thompsonem w 1969 roku zaprojektował interpretowany język B. Bardzo szybko, bo już na początku lat 70. XX wieku, Dennis Ritchie stworzył język C, uzupełniony w stosunku do języka B o elementy strukturalne pozwalające na podział kodu na ułożone hierarchicznie bloki oraz procedury.
C++ został natomiast zaprojektowany przez Bjarne Stroustrupa na początku lat 80. XX wieku. Język ten jest zgodny z językiem C na poziomie kodu źródłowego. Co zatem je od siebie odróżnia?
Różnice między C a C++
Najczęściej wskazywaną różnicą pomiędzy C i C++ jest rozszerzenie C++ o obiektowy mechanizm abstrakcji danych. Ten paradygmat programowania polega na definiowaniu obiektów w połączeniu z wywoływaniem ich metod w taki sposób, aby wzajemnie ze sobą współpracowały. W C++ - poza programowaniem obiektowym - funkcjonują następujące paradygmaty programowania:
- proceduralnego (polegającego na podziale kodu na fragmenty wykonujące określone operacje);
- generycznego (umożliwiającego zapis kodu programu bez uprzedniej wiedzy na temat typów danych, na bazie których będzie pracował dany kod);
- funkcyjnego (polegającego na wartościowaniu funkcji, a nie bezpośrednim jej wykonywaniu);
- modularnego (opierającego swoje działanie na stosowaniu modułów nadrzędnych w odniesieniu do bloków i procedur budujących program).
Nowością w odniesieniu do języka C było wprowadzenie do C++ silnej statycznej kontroli typów, polegającej na określaniu typów zmiennych już w kodzie źródłowym. Z uwagi na brak opcji programowania obiektowego, w C nie występuje także opcja dziedziczenia, czyli współdzielenia między klasami swoich funkcjonalności. W C brak polimorfizmu, polegającego na możliwości używania wartości, podprogramów i zmiennych w zróżnicowany sposób.
Język C nie zawiera także standardowych bibliotek graficznych. C++ przez lata zyskał ogromną popularność i stale się rozwijał, dzięki czemu posiada zaplecze grafik 2D i 3D. C - w przeciwieństwie do C++ - nie ma funkcji bezpośredniej obsługi programowania wielowątkowego. W C nie można zatem wykonywać dwóch lub większej liczby działań jednocześnie. Ponadto, C nie pozwala na operacje na całych tablicach, natomiast C++ daje programiście tego typu możliwości. Dodatkowo, C pozwala programiście na przydzielanie wskaźników dowolnego typu do wskaźników void. W przypadku C++ możliwości są już ograniczone, a przy wskaźnikach typu void wymagana jest jawna konwersja. W języku C funkcjonują komentarze blokowe oraz liniowe. Do funkcjonalności języka C++ wprowadzono dodatkowo komentarz wieloliniowy.
Współczesne perspektywy rozwoju z C i C++
Języki C i C++, mimo swojej bardzo długiej historii, wciąż cieszą się dużą popularnością wśród programistów. Z powodzeniem są wykorzystywane wszędzie tam, gdzie potrzebna jest bardzo wysoka wydajność przy jednoczesnym niskim zużyciu zasobów.
Język C jest stosowany do zadań niskopoziomowych, w tym między innymi do budowy oprogramowania dla systemów. C wykorzystuje się w programowaniu urządzeń codziennego użytku, takich jak: lodówki, radia, mikrofalówki czy zegarki. Sprawdza się także w przemyśle samochodowym w tworzeniu elementów takich jak automatyczna skrzynia biegów czy klimatyzacja. C++ jest doskonałym rozwiązaniem przy tworzeniu skomplikowanych gier czy zaawansowanych systemów operacyjnych, jak na przykład Windows XP czy Vista.
Pracodawcy co do zasady wymagają od programistów znajomości zarówno języka C, jak i C++. Do znalezienia dobrze płatnej pracy konieczne jest zatem poszerzenie podstawowej znajomości języka C o język C++. Choć ten drugi jest stosunkowo trudny do przyswojenia, warto poświęcić czas na jego naukę. Specjalistów C/C++ jest niewielu, dlatego są bardzo cenieni na rynku pracy i mogą liczyć na wysokie zarobki.