Cześć!
Witaj w #15 odcinku podcastu SprawnyProgramista. Dzisiejszy temat to programowanie kontra matematyka.
Pytanie o matematykę w kontekście nauki programowania jest jednym z częstszych, jakie od Was dostaję.
W dużej mierze związane jest ono z tym, iż boimy się tego, czego nie znamy. Dużo osób chce uczyć się programowania, ale boi się, że zwyczajnie sobie z nim nie poradzi.
Z tego materiału dowiesz się:
- Czy matematyka jest potrzebna, żeby zostać programistą, a jeśli jest potrzebna, to na jakim poziomie?
- W jakich przypadkach programiści korzystają z matematyki?
Wiele osób myślących o rozpoczęciu kariery programistycznej lub zmianie branży na IT obawia się, że sobie nie poradzi ze względu na braki w znajomości matematyki.
Co gorsze – wiele osób nawet nie zadaje sobie takiego pytania i na wstępie porzuca myśl o nauce programowania właśnie przez matematykę – bo skoro jej nie zna, to nie warto nawet próbować…
Może wynikać to z faktu, że programowanie jest nauką ścisłą i wiele osób kojarzy programistów z osobami, które mają matematykę czy fizykę dosłownie w małym palcu. Czy jednak na pewno programista musi być dobry z matematyki? Odpowiedź (jak prawie zawsze) brzmi – to zależy.
Dla otuchy powiem, że nawet dzieci mogą uczyć się podstaw programowania, a przecież kilkulatki raczej nie znają zaawansowanych zagadnień matematycznych 🙂
Wszystko zależy od rodzaju projektu oraz poziomu jego zaawansowania.
Jeżeli nie programujesz np. gier, to faktycznie matematyka NIE jest niezbędna – chociaż i tutaj nie zawsze. Czy to jednak znaczy, że jest ona nieważna i nie warto się jej uczyć? Też NIE!
Oczywiście, jeśli mamy dwie osoby – jedna z nich miała 3 z matmy, a druga 5 – to tej drugiej może być łatwiej w niektórych sytuacjach. Czy to jednak znaczy, że ta pierwsza nie może zostać lepszym programistą? – i tutaj też NIE! 🙂
Spis treści
- 1 Czy w programowaniu potrzebna jest matematyka?
- 2 Programowanie a matematyka – co łączy programowanie i matematykę?
- 3 Jakie dziedziny matematyki są obecne w programowaniu?
- 4 Matematyka na studiach programistycznych
- 5 Jak matematyka przekłada się na twój sukces w programowaniu?
- 6 Czy można programować, nie umiejąc matematyki?
- 7 Skoro nie matematyka, to co jest potrzebne w programowaniu?
- 8 Programowanie a matematyka – podsumowanie
- 9 20+ BONUSOWYCH materiałów z programowania
Czy w programowaniu potrzebna jest matematyka?
Tak ogólnie postawione pytanie z pewnością może wywołać wielogodzinną debatę, w której każdy będzie miał coś do powiedzenia.
Z jednej strony matematyka sama w sobie jest jedną z podstaw informatyki, ale z drugiej strony znajomość matematyki na zaawansowanym poziomie zazwyczaj nie jest wykorzystywana przez programistów.
To, czy matematyka jest niezbędna, bądź ważna w programowaniu, zależy w głównej mierze od projektu i rodzaju technologii, w których pracujemy. Można programować bez znajomości zaawansowanej matematyki, ale rozumienie niektórych zagadnień po prostu ułatwia pracę.
Programowanie a matematyka – co łączy programowanie i matematykę?
Po pierwsze – informatyka, jako dziedzina nauki, wywodzi się właśnie z matematyki.
Kiedyś informatyka była częścią matematyki, ale – w związku z jej bardzo szybkim rozwojem – uznana została za osobną dziedzinę nauki.
Po drugie – sposób nauki. W obu przypadkach teoria jest istotna, ale dopiero praktyka daje wymierne efekty! Nie można zostać dobrym matematykiem bez tysięcy rozwiązanych zadań, tak jak nie można zostać programistą bez godzin spędzonych nad kodem.
Poza tym matematyka oraz programowanie to dziedziny w dużej mierze abstrakcyjne – opierają się na regułach i zasadach, które lepiej zrozumieć, niż uczyć się ich bezsensownie na pamięć.
Dodatkowo zgłębienie każdej z nich wymaga podobnych cech i umiejętności – na przykład (a może przede wszystkim) logicznego myślenia, samodyscypliny, cierpliwości czy odporności na niepowodzenia. Za pierwszym razem zwyczajnie mało kiedy udaje nam się zrobić coś dobrze.
Jakie dziedziny matematyki są obecne w programowaniu?
Poniżej kilka przykładów projektów, w których znajomość matematyki się przyda:
- Znajomość rachunku prawdopodobieństwa oraz statystyki są potrzebne do analizowania danych, szczególnie gdy mówimy o bardzo dużych zbiorach danych.
- Algebra i arytmetyka – czasem zwyczajnie coś musimy policzyć np. prowizję dla naszego Klienta za udział w programie.
- Przy tworzeniu gier (tym bardziej zaawansowanym) wykorzystuje się takie zagadnienia, jak wektory i macierze, a w projektowaniu ruchu (np. postaci w grze) niezbędna będzie wiedza algebraiczna.
Pamiętajmy, że w programowaniu wykorzystuje się różne rozwiązania technologiczne, które mają ułatwić pracę programistom – zarówno początkującym, jak i tym doświadczonym.
W praktyce często oznacza to, że programista nie musi schodzić aż tak nisko do poziomu implementacji danego algorytmu, tylko korzysta z gotowego, napisanego wcześniej przez kogoś innego algorytmu. Wtedy zazwyczaj wystarczy ogólna wiedza jak dany algorytm czy rozwiązanie działa.
Matematyka na studiach programistycznych
Sam studiowałem informatykę na Politechnice Gdańskiej i dobrze wiem, że tam matematyki jest bardzo dużo – na początku miałem jej więcej niż programowania, była traktowana jako podstawa do dalszej nauki.
Czy było to konieczne? Nie do wszystkiego.
Czy aby zostać programistą, trzeba skończyć studia? Też nie 🙂 A studia to przecież nie kurs programowania!
Spójrzmy, do czego może się przydać zakres matematyki, który miałem okazję przyswajać na studiach:
- Logika matematyczna, logika boolowska, operacje na zdaniach, aksjomaty, implikacje, indukcję, zbiory itp. – później łatwiej optymalizować niektóre rzeczy w IT.
- Kryptografia – szyfrowanie, szyfry jednostronne/dwustronne, asymetryczny algorytm RSA. Często schodziliśmy bardzo nisko i implementowaliśmy niektóre algorytmy ręcznie – ciekawe ćwiczenie, ale z mojego punktu widzenia, tylko głównie ćwiczenie. Dziś miałbym kłopoty, żeby zrobić to jeszcze raz, ale nie mam problemu, żeby wykorzystać – już gotowe – algorytmy tego rodzaju, bo wiem, jak działają.
- Teoria gier – czyli jak program ma podejmować właściwe decyzje i co to w tym wypadku znaczy ta „właściwa” decyzja.
- Teoria grafów, problem znajdowania najkrótszej drogi w grach (algorytm Dijkstry) – podobne problemy muszą rozwiązać np. nawigacje.
- Operacje algebraiczne, analiza matematyczna – pisanie wszelkiego rodzaju algorytmów, zwracanie uwagi na złożoność obliczeniową.
Podsumowując – jest tego trochę 🙂 Znajomość wszystkich zagadnień podsumowałbym z 2 perspektyw:
- Ćwiczenie – łatwiej później wrócić do podobnych.
- Jeżeli schodzimy niżej i chcemy coś zaprogramować – niewielki odsetek specjalistów.
Jak matematyka przekłada się na twój sukces w programowaniu?
Warto przyjrzeć się podsumowaniu nowych badań, w których programiści byli poddawani rezonansowi magnetycznemu, w trakcie którego były im pokazywane fragmenty kodu w python oraz scratch, a następnie obserwowano, które fragmenty mózgu się aktywowały.
Sprawdzano 2 hipotezy:
- Czy będzie aktywowany fragment odpowiedzialny za naukę języka naturalnego, takich jak: polski, angielski itp.?
- Czy może mózg będzie działał w sposób zbliżony jak podczas nauki matematyki?
I tutaj ciekawostka – obie hipotezy nie zostały potwierdzone.
Okazało się bowiem, że nasz mózg podczas nauki programowania pracuje na jeszcze innych zasadach i aktywuje bardzo różne obszary. Wynika to z faktu złożoności dziedziny, jaką jest programowanie – rozwiązywanie problemów programistycznych wymaga różnych poziomów abstrakcji, czyli angażujemy obie półkule mózgowe – zarówno prawą, jak i lewą.
Dzięki tej cennej wiedzy możemy efektywniej uczyć się programowania. Nie powinniśmy nauki traktować jak nauki czystej matematyki czy nauki języka obcego, ale raczej łączyć oba podejścia. Programowania to sztuka rozwiązywania różnych problemów, dlatego praktyka jest tutaj kluczowa i zdecydowanie na nią warto postawić.
Czy można programować, nie umiejąc matematyki?
Tutaj odpowiedź brzmi – można, ale zależy: jak i gdzie 🙂
Matematyka bywa bardzo przydatna, ale można programować bez niej. W niektórych dziedzinach jest jej mniej lub zupełnie nie jest wymagana.
Na przykład front-endowcom nie jest potrzebna wcale – tworzenie szablonów, programowanie w jakimś frameworku czy tworzenie aplikacji jej nie wymaga, gdyż potrzebne dane najpewniej zostaną dostarczone przez back-end. Natomiast, jeśli marzy Ci się kariera w programowaniu gier lub backendzie, to tutaj bez matematyki będzie bardzo ciężko.
Skoro nie matematyka, to co jest potrzebne w programowaniu?
Podstawą programowania wcale nie jest matematyka czy nawet sama składnia wybranego języka programowania. Żeby zostać programistą trzeba między innymi umieć rozwiązywać różnego rodzaju problemy właśnie z wykorzystaniem języków programowania. Czyli w tym wypadku język jest tylko narzędziem.
Co trzeba umieć, żeby dostać pierwszą pracę jako programista?
Programowanie a matematyka – podsumowanie
Podsumowując – matematyka nie jest niezbędna programiście. Można naprawdę solidnie zarabiać i nie używać matematyki (prawie wcale).
I na koniec dobra rada – nie bój się i nie patrz na matematykę w programowaniu tylko z punktu działań algebraicznych. Tutaj chodzi przede wszystkim o abstrakcyjne i analityczne myślenie, które w naszej pracy jest niezbędne 🙂
Pamiętaj, że to Ty wybierasz technologie oraz projekty, w których chcesz pracować 🙂
20+ BONUSOWYCH materiałów z programowania
e-book – „8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista”,
e-book – „Java Cheat Sheet”,
checklista – „Pytania rekrutacyjne”
i wiele, wiele wiecej!