Felietony, Programowanie

Przyszłość języka C++ – renesans, czy rychły upadek?

Na łamach wielu blogów programistycznych, dziesiątek serwisów technologicznych, czy niezliczonych for informatycznych poruszany jest temat przyszłości programowania i poszczególnych technologii programistycznych. Często młodzi adepci sztuki programowania pytają o przyszłość języka C++. Pytają, czy w ogóle jest sens nauki tego języka. Pytają w kontekście zatrudnienia i zarobków. Najczęstszą odpowiedzią na ich pytania jest „Olej C++, to gniot bez przyszłości”. W tym wpisie postaram się obiektywnie podejść do tego stwierdzenia, rozważając przy tym większość czynników takie jak zarobki, trendy w programowaniu, czy przeznaczenie języka.

Przeznaczenie języka C++ oraz jego słabe i mocne strony.

Technologii nie powinno się porównywać biorąc pod uwagę wszystko co można w nich stworzyć, tylko konkretne projekty. Nie powiemy przecież, że stolarz Wojtek jest lepszy od Maćka-szpachlarza skoro obaj pracują w różnych zawodach. Jeden jest dobry w tym, drugi w tym.

Obrazując to na przykładzie C++ weźmy pod lupę takie tworzenie stron internetowych. Fakt, faktem, witrynę w C++ da się zrobić, ale po co. Do tego celu użyjemy raczej jakiegoś PHP, JavaScriptu, a do większych aplikacji może jakiegoś ASP.NET. A co jeśli chodzi o tworzenie aplikacji mobilnych? Tu względnie lepszym wyborem będzie Java. Programy okienkowe? Podobnie jak w przypadku aplikacji mobilnych, lepiej wybrać Javę, ewentualnie C#. Obie technologie pozwolą nam napisać dany program okienkowy szybciej, łatwiej i przyjemniej, bowiem C++ do najłatwiejszych języków programowania nie należy.

Do czego w takim razie może przydać się C++?

Czy rzeczywiście jest to nieprzydatny gniot? Otóż nie. Stworzony przez duńskiego informatyka Bjarne’a Stroustrup’a język, swoje zastosowanie znajdzie wszędzie tam, gdzie znaczenie ma wydajność i szybkość działania programu oraz optymalizacja dużej ilości danych. Dlatego właśnie C++ najlepiej wykorzystywać tam, gdzie będzie mógł zaprezentować swoje zalety, rozwinąć skrzydła.

Z uwagi na duże możliwości kontroli nad sprzętem i zarządzania pamięcią, kod napisany w C++ będzie miał zastosowanie na przykład przy serwerach, czy przy urządzeniach przenośnych, bowiem pozwala na efektywne oszczędzanie energii, a jak wiemy jest to niezmiernie ważna kwestia jeśli chodzi o urządzenia mobilne.

Utalantowany programista C++ może znaleźć zatrudnienie przy tworzeniu naprawdę dużych aplikacji, które operują na dużej ilości informacji. Taki na przykład Amazon. Z uwagi na to, że kupują (i nie tylko kupują) tam ludzie z całego świata potrzebowali czegoś wydajnego, a najbardziej wydajnym językiem jest właśnie C++. Do przeprowadzania symulacji, czy prowadzenia statystyk również najlepiej sprawdzi się ten język. Programy operacyjne (wszystkie Windowsy, po części również iOS oraz OS X), wysoko budżetowe gry AAA (choćby nasz Wiedźmin III) również pisane są z wykorzystaniem C++. Java i .NET też wiele zawdzięczają właśnie obiektowemu podejściu z C++.

przyszłość języka c++ - wykres 1 - beka
Żeby nie było za poważnie.

Słabe strony

Oceniając język bierzcie więc proszę pod uwagę jego mocne i słabe strony. O mocnych stronach C++ już wspomniałem, ale żeby nie było za kolorowo ma on też swoje ciemne oblicze. Przez wielu uważany jest za dość trudny i nieintuicyjny. Do pisania niektórych rzeczy w C++ może lepiej się nie zabierać. Wybierając inny język może pójść nam łatwiej i szybciej. Jest w tym wiele prawdy – niemniej jednak – tych problemów można zawsze uniknąć, lub je ograniczyć. C++ nie ma rozbudowanego systemu wyjątków, dlatego pisząc w nim należy zachowywać pewną dyscyplinę oraz należy zwracać uwagę na detale, przewidywać. Pozwala to w dużym stopniu uniknąć błędów.

 

Przyszłość języka C++

W naszych rozważaniach posługiwać się będę różnymi wykresami różnych badań statystyczych. Poniżej lista najpopularniejszych języków programowania stworzona przez stronę stackoverlow.com, która zrzesza setki tysięcy programistów z całego świata.

przyszłość języka c++ - wykres 2

Jak widać C++ (mimo corocznych spadków w zestawieniu) cieszy się dość wysoką popularnością wśród wykorzystywanych technologii. Dodam, że jeśli chodzi o te typowe zastosowania C++, czyli właśnie gry AAA, potężne aplikacje, czy programy serwerowe to na tej liście nie ma specjalnie konkurenta dla C++. Na horyzoncie też nie widać żadnego języka, który mógłby C++ zdetronizować tam, gdzie jest prawdziwym potentatem.

przyszłość języka c++ - wykres 1

Czy programiści C++ wymrą jak dinozaury?

Na tym wykresie mamy ukazaną procentową popularność wybranych technologii w tym właśnie tej będącej tematem tego wpisu. Jak widzimy programiści C++ są z roku na roku coraz mniej liczni. Coraz mniej projektów powstaje w tym języku. Nie napawa to optymizmem. Niemniej jednak kluczem jest zauważenie jednej bardzo ważnej rzeczy. Rozwój, cyfryzacja, informatyzacja sprawia, że rynek potrzebuje coraz więcej ludzi do pracy w IT. Największe zapotrzebowanie jest oczywiście na te mniej wymagające projekty. Stąd masa nowych ludzi idzie właśnie w kierunku web developingu, czy aplikacji mobilnych, okienkowych, a zapotrzebowanie na specjalistów (podkreślam specjalistów) C++ nie maleje.

Procentowo wygląda to słabo, lecz biorąc pod uwagę liczby, a nie procenty, programista C++ może być spokojny o znalezienie pracy. O zarobki tym bardziej.  Programowanie w języku C++ być może jest nieintuicyjne i trudne, ale eksperci od tego języka też musieli przez to przebrnąć. Nie każdy się do tego nada, ale na szczęście jest wybór. Jak nie ten to inny język.

 

Czy warto się uczyć C++?

Celem tego artykułu nie jest przekonanie nikogo do nauki C++. Chciałem jedynie sprostować niektóre fałszywe informację, które są rozpowiadane na temat tego języka. Nieprawdą jest, bowiem, że nie ma on przyszłości. Przez szereg następnych lat z pewnością nie umrze. Ma przed sobą jeszcze kilkanaście dobrych lat, a ja po cichu liczę na to, że z powrotem zyska na popularności. Nieprawdą jest również, że do niczego się nie nadaje. Ma swoje zastosowania, w których sprawdza się znakomicie. Tak samo nieprawdziwe jest stwierdzenie, że jest to przestarzały język. Co prawda powstał dość dawno, ale jest na bieżąco rozwijany. Każda kolejna wersja (obecna to świeżutka C++ 17) stara się rozwiązywać błędy poprzedniczek, wprowadzać udoskonalenia, modernizować. C++ idzie z duchem czasu, nie stoi w miejscu.

Czy warto się go uczyć? Uważam, że tak, ponieważ w pewnym sensie ukazuje całe piękno sztuki programowania. Nikomu znajomość C++ na pewno nie zaszkodzi. Warto od niego zacząć swoją przygodę z programowanie, gdyż uczy on klasycznego podejścia obiektowego, abstrakcji. Jest swego rodzaju esencją programowania. Niejeden fanatyk C++ powiedziałby o nim:

C++ TO JEST KRÓL JĘZYKÓW JAK LEW JEST KRÓL DŻUNGLI!

😉

  • Powiedzmy sobie szczerze – Java ma po prostu niższy próg trudności wejścia. W C (i najlepiej widać to na stosach) funkcjonuje zasada „każdy sprząta po sobie”. Wskaźniki, którymi operuje programista wymagają precyzji i dokładności w posługiwaniu się nimi, ponieważ błędy mogą wyjść nie dziś, nie jutro, a za miesiąc.
    Dziś, kiedy dział sprzedaży sprzedaje coś „na wczoraj”, to nie ma wyjścia – java sprawdzi się lepiej, bo nie musimy już tak się pilnować, a zamiast wskaźników mamy referencje.
    To, według mnie, jest powodem dla którego C/C++ nie jest tak popularny i leci w dół. Po prostu wymaga się więcej od programisty.

    • Wychodzi, więc na to, że to co jest jego zaletą, czyli duży poziom kontroli nad tym co się dzieje, kreuje się również na jego wadę. Trzeba się pilnować.

      • danilel42na

        Klient potrzebuje od programisty szybkości i produktywności, często produktu MVP a nie ultrazoptymalizowanego kodu, który jest pisany 10 razy dłużej niż coś co powstać może ekspresowo w popularnym frameworku, który połowę rzeczy robi za nas i działa.

        • Nie da się ukryć. Wszystko zależy od danego zastosowania. Tam gdzie jest czas i sytuacja temu sprzyja warto użyć leciwego C++.

    • Ceylon

      Jest coś łatwiejszego od Javy i Pythona i w miarę nowego? Scala, Kotlin jeszcze trudniejsze od Javy tak?

  • Marcin

    Lwy nie żyją w dżungli tylko na sawannie 😛

    • To tylko takie nawiązanie do pasty o ojcu fanatyku wędkarstwa 😉