Odpowiedź na to pytanie jest jednak bardziej złożona i nie mogę odpowiedzieć wprost, tak lub nie. Posłuchaj tego materiału do końca, a z pewnością poznasz moje zdanie na ten temat w szerszym ujęciu.
Zacznijmy od tego, że nie możesz wybrać dowolnego języka programowania i środowiska na maturę . Co roku, to jakie możliwości masz do wyboru, definiuje wydawany przez CKE dokument, o nazwie „Komunikat o egzaminie z informatyki”, w tym dokumencie oprócz dostępnych języków i środowisk znajdziesz notatkę o treści: Uwaga: Zdający jest zobowiązany wybrać system operacyjny wraz z językiem programowania i programem użytkowym posiadanym przez szkołę.
Zatem oprócz tego, o czym powiem Ci zaraz, musisz upewnić się, czy danego środowiska i języka programowania możesz użyć podczas matury z informatyki . W tym przypadku chyba najlepiej zapytać nauczyciela prowadzącego salę informatyczną, który powinien być na bieżąco tematem.
Link do tego dokumentu znajdziesz na naszej stronie kursmaturainformatyka.pl w zakładce artykuły wchodząc w artykuł o nazwie dzisiejszego odcinka, czyli „Jaki język programowania wybrać na maturę?”.
W ubiegłych latach mieliśmy do wyboru cztery języki: Pascal, Java, Python oraz C++ . A więc zacznę krótko od tych, których nie polecam.
Powstał ponad 10 lat wcześniej niż inne. Język, który szerokim łukiem omijają także doświadczeni programiści. Myślę, że tutaj mogę bez wątpienia powiedzieć, że odszedł w zapomnienie i prawdopodobnie nie znajdziesz w obecnych czasach opartej o niego oferty pracy...
Dodatkowo nie spotkasz go też raczej na uczelniach. Mówię raczej, ponieważ zawsze gdzieś znajdzie się szalony profesor, którego ulubionym językiem od 20. lat jest właśnie pascal i postanowił już dawno temu, że będzie wszczepiał go do głów studentów, którzy pragną tylko pozytywnej oceny z tego przedmiotu.
Sam pamiętam, jak nauczycielka w szkole męczyła mnie C++ . Wtedy poprosiłem ojca, żeby pokazał mi coś z programowania, bo przecież kiedyś się tego uczył. Dostałem wtedy w nagrodę za pytanie żółtą książkę o pięknej nazwie Turbo Pascal 7.0. I wiecie co — jej pierwsze strony jeszcze bardziej zniechęciły mnie do bycia programistą. Wtedy stwierdziłem, że to totalnie to nie dla mnie, ale może o tej historii opowiem w oddzielnym odcinku.
Jest to niesamowity język, używany szczególnie przez backendowców i androidowców. Bardzo pożądany na rynku pracy, także używany do rozbudowy wszelkich modyfikacji Minecraft’a, czyli gry, której myślę, że Wasze pokolenie, nie może nie znać.
Java jest także na studiach, daje wiele możliwości, ale... I tutaj to "ale” jest dość znaczące. Jest językiem obiektowym, czyli jego główną strukturą są obiekty i klasy. Te dwa zagadnienia, to tylko wstęp do obiektowości, którą poznajecie na pierwszej lekcji na studiach przedmiotu o nazwie „programowanie obiektowe”. Wielu studentów ma z tym przedmiotem problem, a trwa on np. 20 godzin wykładu, plus 20 godzin ćwiczeń i jest prowadzony zazwyczaj przez jeden semestr.
Ta właśnie wiedza, jest niepotrzebna do matury z informatyki . Czyli zdając maturę w Javie, będziesz mieć znacznie, znacznie trudniej. Moim zaleceniem jest wybór języka, przy którym możesz pominąć wcześniej wspomniane tematy i skupić się na stu procentowym zrozumieniu każdej linii, każdego znaku, którego używamy podczas pisania programów.
Reasumując — ambitnym maturzystom polecam skupienie się na prostszych językach programowania, jak C++, czy Python , a Javę, tak czy inaczej będziecie mieli już w pierwszych miesiącach na studiach informatycznych, więc tak czy inaczej, Was to nie ominie.
Miałem nawet kiedyś takiego ambitnego ucznia (pozdrawiam Cię Janek), który przyznał mi rację po maturze, że chyba przystąpi jeszcze raz, żeby pocisnąć większy wynik z C++, bo pomimo opanowania Javy, zakopał się w nauce i nie wystarczyło czasu na inne sprawy.
Przejdźmy teraz do dwóch języków wartych uwagi dla maturzystów . Najpierw przedstawię Ci ich krótką charakterystykę, a później przejdę do porównania.
Bardzo pożądany na rynku pracy. Na niektórych uczelniach jest, na niektórych go nie ma przez cały tok studiów. Prosty ma też klasy i obiekty tak jak w Javie , ale nie są one podstawą języka, więc nie dotykamy ich w kontekście matury. Na egzamin wybieramy Pythona 3 + edytor IDLE lub PyCharm’a — osobiście bardziej lubię ten pierwszy wariant.
Ma to swoje plusy i minusy, ale o tym opowiem, zestawiając te dwa języki — zaraz po opisie C++. A więc ostatni...
W kontekście studiów podobnie jak Python — na niektórych jest już na pierwszy zajęciach z podstaw programowania, na niektórych nie ma go w ogóle. Częściej spotykany na politechnikach i uniwerkach niż prywatnych uczelniach.
Obiektowość też jest tu dostępna, ale nie wchodzimy w ten temat przy nauce do matury. Silnie typowany, deklarujemy typy każdej struktury podczas tworzenia. Kompilatory Dev-C++, Code Blocks Visual Studio C++. Osobiście polecam albo Dev-C++, albo Code Blocks — małe szybkie programiki. Także po wyborze należy sprawdzić, czy jest lub będzie on na komputerze, na którym będziesz zdawać maturę.
Tutaj już wchodzimy bardziej w detale. Wszystkie takie niuanse tłumaczę moim kursantom, podczas wspólnych lekcji. Informacje o nauce ze mną możesz znaleźć na stronie kursmaturainformatyka.pl. Wracając do środowiska, ambitni kursanci zawsze, wychodząc naprzeciw moim radom, wybierają Visual Studio C++. Uwaga! Visual Studio, a nie Visual Code, bo są to dwa różne programy. I właśnie to narzędzie, to jest taka wielka kobyła. Z tego potrzebujemy tak naprawdę tylko mały procent na maturę, a większość opcji pozostaje niewykorzystana i niepotrzebnie zjada nam RAM.
W tym roku w dniu matury z informatyki dostałem wiadomość w tym kontekście, od jednego z ubiegłorocznych kursantów (jeśli tego słuchasz, to pozdrawiam i powodzenia na studiach):
”Hej, dzięki za całe przygotowanie do matury może i nie będzie to jakiś bardzo doby wynik, ale bez kursu to nie rozwiązałbym ani jednego zadania dzisiaj. W sumie żałuję jedynie, że nie posłuchałem się Ciebie co do Code Blocks'a i wybrałem Visual Studio C++, taka rada (i przestroga dla innych, chociaż mało prawdopodobna do powtórzenia się). Pisze ubiegłoroczny kursant. Proponuję, żebyś może wymagał od uczniów używania Code Blocks'a na maturze, bo dzisiaj podczas egzaminu okazało się, że szkoła zapomniała i darmowa licencja 30-dniowa wygasła, przez co ponad godzinę siedzieliśmy i patrzyliśmy się w ścianę, zastanawiając się, czy w ogóle coś dzisiaj napiszemy”.Szczerze mówiąc, nawet ja takiej opcji nie przewidziałem. No cóż, wierzę, że może przekona to właśnie przyszłorocznych maturzystów, że czasami mimo ambicji, warto mnie posłuchać. Mam nadzieję, że mimo problemu idziesz dalej i pozdrawiam cieplutko.
Wracając do tematu. To co z tym Python’em vs C++? Co lepiej?
W ramach dodatkowego wsparcia w procesie nauki, przygotowaliśmy dla Ciebie książkę „MATURA INFORMATYKA - TEORIA”.
Materiały zostały stworzone z myślą o zróżnicowanych stylach nauki – zarówno w formie czytanej, jak i słuchanej – aby ułatwić przyswajanie wiedzy i zwiększyć efektywność Twojej nauki.
Python dzięki dynamicznemu typowaniu, skraca pisanie o tyle, że np. do każdej tworzonej zmiennej nie musisz dopisać przed zmienną string, char, int, czyli typu jakby to było w przypadku C++. Osobiście, te parę dodatkowych znaków nie uważam za żadne przyspieszenie. Jak dla mnie maturzyści, studenci, czy nawet juniorzy powinni być świadomi typów, w jakich operują, a możliwość wrzucania sobie do jednej struktury różnych typów generuje tylko więcej problemów. Często Python'owcy spotykają się z tym, że do tablic wrzucają, raz liczby, raz znaki, raz napisy i później podczas iteracji program przestaje działać, bo używamy funkcji dla znaków itp. Zwyczajnie mocna świadomość użycia i zaszczepienie tego w podstawach programowania daje później odpowiednie rezultaty.
Według mnie w tym punkcie postawiłbym remis — jest mały plus, ale jest też spory minus względem początków nauki.
Tylko taka mała o fakcie, że w innych językach, jak wcześniej wspomniana Java, czy inne pożądane w obecnych czasach na rynku c#, TypeScript, kotlin, swift — także wymagają deklaracji lub opisania typu, więc im szybciej się do tego dostosujecie, tym lepiej.
Na plus dla C++.
Tutaj myślę, że jednoznaczny plus dla Pythona ze względu na dużo większą ilość ofert pracy. Tylko pamiętajmy o stwierdzeniu “jeśli umiesz programować w jednym języku, umiesz też w innych” - może nie do końca się zgadzam, ale jest w tym dużo prawdy. Czasami robię taki challenge moim kursantom. Jak już dobrze operują w C++, daje im zadanie: rozwiąż coś średniej trudności w Pythonie i na odwrót. Wtedy mogą zobaczyć, jak proste jak zmienianie języków, kiedy już wiesz, co robisz i czego szukasz. Dlatego też uczymy się na maturę z informatyki programowania, a nie składni, bo składnia jest tylko dodatkiem, a najważniejszy jest twój algorytm.
Z informacją, że Python pozwala przyspieszyć i ułatwić maturę, ze względu na gotowe moduły, zgodzę się w 50%. Pozwoli, ale tylko jeżeli masz w pełni opanowane wszystko i tylko w jednym zadaniu. Zamiast poświęcić 10 sekund na napisanie funkcji np. sortującej bez gotowca, można użyć sort w jedną sekundę. Pytanie, ile gotowych funkcji możesz użyć w zadaniu jedną? Dwie? Ile to czasu zaoszczędzi? Ze sformułowaniem „zaoszczędzi czas” trudno się nie zgodzić, ale patrząc na to, że raczej nie pomoże nam zaoszczędzić paru lub parunastu minut, a sekundy — nie robi to różnicy.
Dodatkowo chciałbym tutaj wspomnieć o treści zadań, z części teoretycznej, cytując:”Uwaga: W zapisie algorytmu możesz wykorzystać tylko operacje arytmetyczne (dodawanie, odejmowanie, mnożenie, dzielenie, dzielenie całkowite, reszta z dzielenia), instrukcje porównania, instrukcje sterujące i przypisania do zmiennych lub samodzielnie napisane funkcje, wykorzystujące wyżej wymienione operacje. Czyli i tak w takim zadaniu nie możesz użyć gotowej funkcji z Pythona, musisz umieć ją także samodzielnie napisać. Więc jest jedno zadanie w części praktycznej, gdzie faktycznie możesz coś przyspieszyć”.
Osobiście daje mikro plus dla Pythona.
Ale po co to komu? Wiele razy już słyszałem, że ktoś nie będzie zdawał w C++ bo tam są takie trudne rzeczy jak referencje czy wskaźniki. Potwierdzam,są trudne, ale w 100% da się zdać maturę bez nich. Przeprowadziłem już setki maturzystów przez lata, przerobiliśmy praktycznie wszystkie dostępne zadania, bez użycia wcześniej wspomnianych zagadnień i nie było większego problemu, także zakres wiedzy Pythona i C++ są praktycznie takie same.
Tutaj dalej C++ i Python na równi.
Reasumując: Jaki język programowania wybrać na maturę — Python, czy C++ ? Obojętnie, i tak najważniejszy jest twój algorytm, który realizuje dany problem. Czy zrobisz to w jednym, czy drugim, nie robi to różnicy, a kod będzie bardzo podobny. Różnić się będzie tylko składnia, to jak się deklaruje zmienne, tablice, jak wygląda zapis pętli itp. Tak jak wcześniej wspomniałem:
“jeśli chcesz zakorzenić solidne podstawy programowania, polecam C++. Jeżeli miałeś/aś już do czynienia z programowaniem i chcesz tylko pobawić się językiem — polecam Pythona. Jeśli już miałeś jedno albo drugie w szkole, proponuję nie mieszać, byle nie zostawać w Javie czy Pascalu”.Mam nadzieję, że raz na zawsze odpowiedziałem na pytanie: „Mateusz, jaki język wybrać?” . Jeśli tak, zostaw motywującego like’a czy subskrypcję!
A i jeśli słucha mnie ktoś, kto ma na swojej stronie, artykuł pod tytułem „Jaki język programowania wybrać na maturę?” - polecam dać go programiście do analizy, bo dzisiaj dosłownie złapałem się za głowę, gdy zobaczyłem jedną z uwzględnionych tam zalet: „stabilność i szeroki wybór framework'ów”. Ale co to daje maturzyście ? Nic! Co to zmienia w kontekście matury ? Również nic! Uff musiałem się wyżalić...
No dobrze, wydaje mi się, że mamy wszystko. Pewnie znalazłbym jeszcze parę opcji do porównania, ale to były takie główne, najistotniejsze dla Ciebie, które chciałem poruszyć w dzisiejszym odcinku. Może będą kolejne, jeśli taka forma Ci się spodoba. Daj znać! Chciałbym tylko przypomnieć, że więcej materiałów w tej tematyce znajdziesz także na stronie kursmaturainformatyka.pl , na której regularnie dodajemy nowe, aktualne treści.
Dziękuję za wysłuchanie i zapraszam Cię do kolejnych odcinków podcastu, a także do webinarów, gdzie nie tylko mnie usłyszysz, ale także zobaczysz. Cześć!