jaki język programowania wybrać?

Matura z informatyki – jaki język programowania wybrać?

Śledząc bloga zauważyliście pewnie, że sporo wpisów poświęconych jest przygotowaniu do matury z informatyki. W większości wpisów staram się zamieszczać implementacje algorytmów w trzech, dostępnych na maturze językach. W ten sposób każdy może prześledzić działanie w preferowanym przez siebie języku. Jeżeli nie wybrałeś jeszcze języka na maturę z informatyki, to najlepszy okres aby to zrobić. Nie znając języka programowania, w ciągu kilku następnych miesięcy powinieneś/powinnaś być w stanie go przyswoić. Oczywiście potrzebna będzie do tego systematyczna praca i nauka. Jaki więc język wybrać? W dzisiejszym wpisie omówimy każdy język z osobna, wskazując na jego wady i zalety.


Już niebawem rusza kurs przygotowujący do matury z informatyki.
Nie daj się zaskoczyć na maturze – zapisz się do listy mailingowej już teraz!

Jakie języki programowania mamy do wyboru?

Zanim przejdziemy do szczegółowego omówienia, warto najpierw przyjrzeć się tabeli udostępnionej przez CKE:

Język programowania - dostępne na maturze.

Jest to tabela dotycząca nadchodzącej matury z informatyki 2021. Jak widzisz do wybóru mamy Pascala, C/C++, Javę oraz Pythona, niezależnie od systemu operacyjnego. Do języka wybieramy również odpowiednie środowisko programistyczne z listy. Jeszcze do niedawna lista ta zawierała jedynie trzy języki bez, zyskującego popularność, Pythona. A propos popularności, poniżej pozwoliłem sobie wstawić wykres, przedstawiający najpopularniejsze języki w 2020. Bazuje on na ankiecie przeprowadzonej na programistach ze znanej platformy StackOverflow. Będziemy się do niego odnosić, omawiając języki.

Język programowania - wykres popularności
Źródło: link

C++, czyli bliski krewny języka programowania C

Na pierwszy ogień idzie jeden z najpopularniejszych, wieloplatformowych języków programowania.

Język C++ powstał w 1983 roku jako rozszerzenie języka C o elementy obiektowości i inne, przydatne funkcje. Rozwijany po dziś dzień, plasuje się dosyć wysoko w rankingu popularności. Szacuje się, że posługuje się nim około 3 miliony programistów.

 Cechy języka C++

Z racji, iż C++ bazuje na C, jego twórcy starali się zachować możliwie jak największą zgodność między tymi dwoma językami. Oznacza to, że partie kodu z C mogą być z powodzeniem implementowane w C++. W C++ mamy również dostęp do niskopoziomowych funkcji i modułów. W odróżnieniu jednak od języka C, w C++ wprowadzona została obiektowość. Możemy więc tworzyć odpowiednie klasy, interfejsy i pochodne od nich obiekty.

Zastosowanie

Ze względu na swoją niskopoziomowość, język C++ znajduje swoje zastosowanie praktycznie wszędzie. Umożliwia on pełną kontrolę poszczególnych podzespołów i pamięci operacyjnej. Zyskał on więc popularność we wszelakiego rodzaju programach zarządzających, kontrolerach, ale też i w znanych nam dobrze systemach operacyjnych.

Zalety języka C++:

  • Wydajność – bez wątpienia język C++ może zostać okrzyknięty najszybszym z listy języków maturalnych. Bezpośredni dostęp do pamięci i bibliotek systemowych zapewnia mu niezaprzeczalną przewagę.
  • Obiektowość – czyli coś, co w prosty sposób pozwala na kontrolę danych i przejrzystość kodu.
  • Kompatybilność z językiem C – cecha ta pozwala na korzystanie ze wszystkich funkcji dostępnych w programach i bibliotekach napisanych w C.
  • Kontrola pamięci i modułów niskopoziomowych – możliwość kontroli alokowanej pamięci, a także dostępnych komponentów jest niewątpliwie dużym atutem. Dzięki temu mamy dostęp do wszystkich funkcji i urządzeń oferowanych przez daną platformę.
  • Stabilność – poprawnie napisany program w C++ zachowuje się w stabilny, przewidziany przez programistę sposób.Jest to niezależne od wybranej przez niego platformy.
  • Szeroki wybór bibliotek i frameworków C++ jest rozwijanym od wielu lat językiem. W związku z tym powstało sporo bazujących na nim, dojrzałych i stale rozrastających się bibliotek open-source. Szeroki zakres dostępnych frameworków daje również dalsze perspektywy rozwoju. Przykładem takiego frameworka jest Qt. Jeżeli chcesz go poznać bliżej, zajrzyj do tego wpisu.

Wady języka C++:

  • Trudność nauki –  C++ oferuje największe możliwości spośród omawianych dzisiaj. Ma to jednak swoją cenę. C++ może okazać się trudny dla początkującego programisty. Programując w tym języku często trudno jest wychwycić, w którym miejscu popełniliśmy błąd. Skomplikowane mogą okazać się również wskaźniki, których nieumiejętne użycie może spowodować nieprzewidziane działanie programu. Umiejętność implementacji wskaźników nie jest jednak wymagana na maturze i zazwyczaj nie są one na niej potrzebne.
  • Kontrola pamięci i wielowątkowość – wady te potraktuj raczej jako ciekawostkę przy przyszłej nauce – nie tyczą się one matury z informatyki. W C++ musimy „sami po sobie posprzątać”, czyli wszelkie zmienne powinniśmy usunąć, gdy już nie są nam potrzebne. Zwalniamy w ten sposób pamięć (co, przypominam, nie musisz robić na maturze). Jeżeli po sobie „nie posprzątamy”, to może dojść do wycieku pamięci, przez co możemy nim przypadkiem zalać sąsiada piętro niżej :). Brakuje tu również wbudowanej wielowątkowości i trzeba ją stworzyć samemu.


Naucz się podstaw C++ z tą książką

Przykładowy program C++

Program ma za zadanie obliczyć rozwiązania równania kwadratowego o podanych parametrach:

Java, czyli język programowania z wirtualnego wymiaru

Java to obok C++ jeden z najpopularniejszych języków obiektowych. Stworzona została w 1995 roku, a jej składnia może wydawać się łudząco podobna do tej z C++. Jak widzimy na wykresie z początku, jest niewiele bardziej od niego popularna. Szacuje się, że korzysta z niej około 8 milionów programistów.

Cechy

Java jest głównie obiektowym językiem kompilowanym z kodu pośredniego. Oznacza to, że kod źródłowy jest tłumaczony na kod pośredni, a ten jest tłumaczony przez kompilator na język maszynowy. Kompilator tłumaczy program tak, aby był „czytelny” dla konkretnej platformy. W Javie program wykonywany jest na wirtualnej maszynie, czyli na swego rodzaju podsystemie działającym w pamięci. Pozwala to na uruchomienie jej programów na praktycznie każdym urządzeniu.

Zastosowanie

Obecnie Java wspiera znaczną większość urządzeń i procesorów. Dzięki temu możemy ją, podobnie jak C++, uruchomić wszędzie, z tym że nieco łatwiej. Java znalazła swoje zastosowanie w systemie Android, stanowiąc bazę większości bibliotek i funkcji. W Javie została również napisana znanym wszystkim gra Minecraft. Na Javie bazuje również backend wielu platform, takich jak np. GMail, Amazon czy LinkedIn.

Zalety języka Java

  • Obiektowość – podobnie jak w C++, w Javie można tworzyć klasy i interfejsy z elementami dziedziczenia i abstrakcji. Daje to możliwość swobodnej kontroli nad danymi i funkcjami.
  • Wysokopoziomowość – w Javie nie trzeba martwić się o alokację pamięci – wszystko robi za nas maszyna wirtualna. W Javie znajdziemy również gotowe biblioteki wielowątkowości, a także elementy sieciowe, jak np. sockety.
  • Debugowanie w czasie rzeczywistym – część błedów kompilacji wyświetli się nam w IDE jeszcze zanim klikniemy guzik „run”. Dzięki temu możemy je sprawniej korygować.

Wady języka Java

  • Niska wydajnośćJava jest nieporównywalnie mniej wydajna niż C++. Spowodowane jest to uruchomieniem wirtualnej maszyny, która obok programu dodatkowo pożera spore ilości RAMu i mocy obliczeniowej procesora. Powodem wolniejszego działania mogą być też złe nawyki programistów. Podążając za tym linkiem znajdziecie wyniki benchmarków, wskazujących na większą wydajność omówionego wcześniej C++’a.https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/java.html
  • Wysokopoziomowość – jest to jednocześnie i wada, i zaleta. W Javie dostęp do komponentów i niskopoziomowych modułów jest znikomy. Przez to wymagane są dodatkowe biblioteki, co powoduje kolejne straty w wydajności.
  • Spadki wydajności – w Javie, tak jak wspominałem wyżej, nie trzeba się martwić alokacją pamięci. Spowodowane jest to tym, że tzw. „garbage collector” zbiera wszystkie niepotrzebne zmienne i je usuwa. Niestety, każde jego uruchomienie może spowodować zauważalny spadek w wydajności.


Naucz się podstaw Javy z tą książką

Przykładowy program Java

Tak jak wyżej, program będzie liczył rozwiązania równania kwadratowego:

Python, czyli popularny interpretowany język programowania

Python to najpopularniejszy język programowania. Powstał w 1991 roku, choć swoją popularność zdobył dopiero w ostatnich latach. Jego składnia różni się od omówionych  wcześniej C++ i Javy. Według statystyk ponad 8 milionów programistów korzysta z Pythona.

Cechy

Python jest językiem obiektowym, funkcyjnym, strukturalnym, ale też interpretowanym, podobnie jak JavaScript. Język interpretowany jest analizowany wiersz po wierszu, a dopiero potem jest kompilowany na język maszynowy. Python jest prostym językiem, w którym kolejne bloki określane są poprzez wcięcia. Jest on chętnie wybierany przez początkujących programistów, ze względu na przyjazną składnie i dość szerokie wsparcie.

Zastosowanie

Python znajduje zastosowanie w tworzeniu skryptów, które implementowane są w większych programach. Coraz częściej wykorzystuje się go w uczeniu maszynowym. Jest dostępny wszędzie tam, gdzie możliwe jest uruchomienie jego interpretera.

Zalety języka Python

  • Łatwy do naukiPython jest obecnie językiem z najniższym progiem wejścia. Wynika to z wielu wbudowanych funkcji i zbioru przyjaznych użytkownikowi słów kluczowych. Dzięki temu również jego kod jest dość przejrzysty.
  • Dynamiczne typy – w języku tym nie definiujemy typów zmiennych. Są one wykrywane dynamicznie przez interpreter, przez co łatwiej jest nimi manipulować. Podobnie jest zresztą w języku JavaScript.
  • Bogata bazowa biblioteka – sporo potrzebnych funkcji jest wbudowanych bezpośrednio w język. Nie musisz więc pobierać zewnętrznych bibliotek.
  • Wysokopoziomowość – podobnie jak w przypadku Javy, nie trzeba martwić się o alokację pamięci, czy ręczne usuwanie zmiennych.

Wady języka Python

  • Niska wydajność – z racji, iż jest to język interpretowany, Python nie należy do szybkich języków. W uproszczeniu kod musi przejść najpierw przez interpreter, a dopiero potem przez kompilator, co ma znaczący wpływ na wydajność.
  • Zasobożerność – podobnie jak w przypadku Javy, programy napisane w Pythonie pochłaniają spore ilości pamięci RAM i mocy obliczeniowej.
  • Łatwość i wysokopoziomowość – o ile można je uznać jako zalety, to dla początkującego programisty przesiadka z Pythona, na inne języki może być szokiem. Składnia większości innych języków jest często uważana za trudniejszą. Programiści Pythona przy przesiadce na inny język mogą nie zwracać uwagi na rzeczy, którymi wcześniej się nie musieli martwić. Przykładem może być określanie typu zmiennej, czy w szczególności zarządzanie pamięcią. Jak każda technologia Python ma swoje ograniczenia, w związku z czym nauka innego języka będzie w pracy zawodowej prędzej, czy później, konieczna. Dodatkowo wysokopoziomowość uniemożliwia dostęp do komponentów i niższych modułów – musisz wtedy użyć zewnętrznych bibliotek.


Naucz się podstaw Pythona z tą książką

Przykładowy program Python

Zasada działania programu jest taka sama, jak w przykładach wyżej:

Pascal – czyli abominacja wśród języków

Ten język programowania traktuj bardziej jako ciekawostkę. Dlaczego? Spójrz na wykres, który wstawiłem na początku. Pascal nie plasuje się na żadnym z miejsc popularności. Język ten po prostu wychodzi z mody, a rynek IT ma coraz mniejsze zapotrzebowanie na jego programistów. W dodatku język ten rządzi się totalnie innymi prawami niż omawiane dzisiaj języki. Przykładem może być np. zaczynanie indeksowania tablic od jedynki, czy inicjalizacja zmiennej poprzez znak :=, zamiast =. Innymi słowy jeżeli chcesz się nauczyć przydatnego języka programowania, a z zawodem programisty wiążesz dalsze plany – daruj sobie Pascala. Z tego też powodu, na blogu zamieszczamy implementacje rozwiązań maturalnych tylko w trzech, pozostałych językach.

Poniżej możesz zobaczyć jak wygląda implementacja naszego przykładu w Pascalu. Porównaj go sobie z poprzednimi. Myślę, że wnioski wysuną się same.

grupa wsparcia matura z informatyki

Podsumowanie

Gdybym miał na koniec wybrać, który język jest najlepszy na maturę, odpowiedziałbym że… nie wiem. Nie wiem, bo to zależy od Twoich predyspozycji i chęci do nauki. Jednej osobie bardziej odpowiada Java, innej Python, a jeszcze innej może odpowiadać nawet Assembler. W moim przekonaniu podstawowa znajomość C++, Javy czy Pythona wystarczy ci na egzaminie. Ważne jest, aby umieć stworzyć logikę programu, a samej składni języka można się wykuć w miesiąc, góra dwa.A skoro już mówimy o logice programu, na maturze z informatyki warto znać podstawowe algorytmy i ich działanie. Pamiętaj też, że sam język programowania nie wystarcza na maturze – jest jeszcze Access i Excel. Rzuć okiem na ten wpis. Omówiłem tam te kwestie.

You Might Also Like
2 komentarze
  • Avatar photo
    LD
    says:

    Kod w Pascal’u powinien być taki:

    program project1; // nazwa programu

    uses
    SysUtils; // dołączenie modułu bibliotecznego

    var
    a, b, c, delta, kwadratDelty, x1, x2: Double; // deklaracja zmiennych i ich typu

    function ObliczDelte(a, b, c: Double): Double; // deklaracja funkcji
    begin
    Result := b * b - 4 * a * c; // obliczamy deltę i ją zwracamy
    end;

    begin //początek wykonania programu
    WriteLn('Program obliczajacy rozwiazanie rownania kwadratowego'); // wypisywanie tekstu w konsoli
    WriteLn; // wiersz odstępu pomiędzy tytułem programu a poleceniami dla użytkownika
    WriteLn('Rownanie ma postac: ax^2 + bx + c = 0');
    Write('Podaj wartosc wspolczynnika a: '); // wypisanie komunikatu dla użytkownika
    ReadLn(a); // pobieranie zmiennej podanej przez użytkownika
    Write('Podaj wartosc wspolczynnika b: ');
    ReadLn(b);
    Write('Podaj wartosc wspolczynnika c: ');
    ReadLn(c);
    WriteLn;
    if a = 0 // instrukcja warunkowa: sprawdzamy czy równanie jest kwadratowe
    then WriteLn('To nie jest rownanie kwadratowe') //
    else
    begin
    delta := ObliczDelte(a, b, c); // jeżeli tak, to liczymy deltę i roważamy kolejne przypadki
    if delta 0
    then
    begin
    kwadratDelty := Sqrt(delta); // obliczamy pierwiastek kwadratowy z delty z użyciem funkcji bibliotecznej "Sqrt"
    x1 := (-b - kwadratDelty) / (2 * a); // zwracamy rozwiazania zgodnie ze wzorem
    x2 := (-b + kwadratDelty) / (2 * a);
    WriteLn('Dwa rozwiazania: x1 = ' + FloatToStr(x1) + ', x2 = ' + FloatToStr(x2));
    end
    else
    begin // przypadek gdy delta = 0
    x1 := -b / ( 2 * a); // zwracamy rozwiazanie zgodnie ze wzorem
    WriteLn('Jedno rozwiazanie: x = ' + FloatToStr(x1)); // funkcja biblioteczna "FloatToStr" konwertuje liczbę rzeczywistą na napis
    end;
    end;
    ReadLn; // wstrzymanie zamknięcia okna konsoli
    end. // koniec wykonania programu

    Kod sprawdzony w kompilatorze Free Pascal w wersji 3.2, czyli zgodnym z wytycznymi CKE.

    Jak się słabo zna jakiś język, to się nie pisze bzdur. W kodzie z bloga widać, że to kod na siłę „przerabiany” z C++ albo pisany przez kogoś, kto bardzo pobieżnie zna Pascal’a (czyli kolejny student, co czuje że musi objawić światu swoje zainteresowania i swój poziom niewiedzy).

    Ciekawe też, że kod w C++ i Javie napisany starannie, natomiast ten w Pascal’u niechlujnie.

    A co do abominacji to jest nią Python (opinia zgodnie podzielana przez tych, co nie mieli problemów z opanowaniem C++ i temu podobnych języków).

Dodaj komentarz

icon