Czy matematyka jest potrzebna programiście?
Właśnie znalazłem ciekawy wpis na blogu Jarosława Rzeszótko. Zapytał on wybitnych programistów świata o parę rzeczy, jak nauczyli się programować, jaka jest najważniejsza cecha programisty, czy matematyka i fizyka jest potrzebna do programowania, co będzie przełomem w programowaniu, jakiej nowej technologii by chcieli się nauczyć, i jeszcze jeszcze innych. Polecam ten wpis:
Na pytanie o matematykę, no cóż ile osób tyle odpowiedzi. Co do fizyki już raczej wszyscy są zgodni, że zazwyczaj wiedza fizyczna w programowaniu jest nieprzydatna poza specyficznymi dziedzinami jak grafika 3D, symulacja zjawisk czy gry komputerowe.
Logika
Logika to dział tak ważny w pracy programisty, że nie wyobrażam sobie, żeby ktoś kto nie rozumie logiki mógł być dobrym programistą. Praca programisty sprowadza się w pewnym sensie do ograniczania możliwości. Na samym początku jest puste okno środowiska programistycznego, a później wszystko zaczyna mieć swoje miejsce. Warstwy danych, klasy biznesowe itd. nie ma takiej swobody jak na początku, do każdego celu trzeba użyć konkretnego narzędzia, modułu napisanego wcześniej. Dlatego jeżeli na samym początku nie przewidzi się czegoś co będzie potrzebne np. za 10 lat to ma się całkiem duże problemy. A do tego, żeby przewidzieć takie rzeczy potrzebna jest logika, bo właśnie dzięki logice można określić, czy któraś tam z kolei linia kodu nie zamknie tych drzwi, które będą musiały zostać otwarte za kilka lat.
Tak jak kompilator sprawdza błędy składni, tak za pomocą logiki można sprawdzić błędy rozumienia problemu, który chce się rozwiązać w napisanej aplikacji. W matematyce np. prostym sposobem na sprawdzenie poprawności obliczeń na dużych liczbach jest… no właśnie, jak upewnić się, że 6574857 + 283729493 jest równe 290304350 z dużym prawdopodobieństwem, szybko i bez kalkulatora? Niech to będzie zagadką weekendową.
Studia programistyczne
W kraju i na świecie ciągle brakuje wykształconych programistów:
http://www.idg.pl/news/137967.html
Więc jakby miały powstać studia programistyczne myślę, że logika powinna być przedmiotem obowiązkowym (i mogłaby zastąpić rozszerzoną fizykę). Języki i technologie się zmieniają, ale ‘logika’ pisania aplikacji wciąż jest ta sama.
Następnym argumentem za matematyką dla programistów jest to, że są to dziedziny w których korzysta się z abstrakcji. Matematyka jest zbudowana z pojęć np. X jest symbolem, który określa tylko pewną liczbę. W programie ten sam X może oznaczać o wiele wiele więcej. Nauka matematyki wyrabia rozumienie takich pojęć, umiejętność rozbijania dużych problemów na masę małych problemów (szczególnie konkursy matematyczne i olimpiady) i rozwiązywanie ich po kolei. W programowaniu cel jest z grubsza taki, żeby “zrobić program”, a zadania to napisanie… ale czego? Właśnie… bo co z tego, że można siąść przed komputerem i napisać całą aplikację w jednej metodzie posługując się programistycznymi kamieniami łupanymi czyli pętlami, ifami, zmiennymi i tablicami? Jak nie piszesz skomplikowanego algorytmu używanie tylko tych cech języka wysokiego poziomu jest prymitywne.
Abstrakcja
Dlatego uważam, że nauka matematyki i fizyki jest potrzebna w pracy programisty. Skomplikowane całki, czy fizyka kwantowa recytowana z pamięci? Niekoniecznie. Raczej chodzi o samą naukę tych dwóch dziedzin. Naukę o pojęciach, abstrakcji i zjawiskach. Rozumienia tego, że spojrzenie na problem z innego punktu widzenia powoduje, że w zasięgu wzroku pojawia się rozwiązanie. Ten punkt odniesienia zmienia się np. dla całek, współrzędnych biegunowych, fizyki kwantowej, teorii względności itp. itd. Tak samo w programowaniu czasem zmiana punktu widzenia sama w sobie rozwiązuje przedstawiony problem.
Tylko że nauka samego programowania nie daje dużej możliwości poszerzenia swoich horyzontów. Wręcz odwrotnie, ograniczenia, które sami wprowadzamy aby napisać program, ograniczenia języków programistycznych, środowisk, narzędzi itd. w dłuższej perspektywie powodują, że myślenie innowacyjne może zostać zastąpione myśleniem szablonowym. A to co jest nowe i wychodzi poza ten szablon utrwalonych możliwości i potrzeb może się stać dla takiego programisty nie do zrozumienia, już poza granicami jego możliwości.
Nauka matematyki i fizyki pozwala patrzeć na problemy programistyczne tak samo ja na problemy matematyczne i fizyczne – z różnych punktów widzenia.
Przygotowałem dla Ciebie wpisy:
Dodaj do Sfory | Dodaj do Wykopu | Dodaj do Osnews
1 komentarz »
Kanał RSS z komentarzami do tego wpisu. TrackBack URI
Dodaj komentarz
WordPress, Pool Theme - Borja Fernandez - mod

Mam kolegę, który uważa się za specjalistę w dziedzinie systemów operacyjnych i bezpieczeństwa – na pierwszym roku studiów zaocznych zżymał się na te “całki”, do których go zmuszano – “przecież to mi będzie zupełnie niepotrzebne w zawodzie” !
Patrzyłem na te jego różne certyfikaty w ramkach na ścianie w gabinecie i myślałem o tym, jak inaczej różni ludzie rozumieją – kim właściwie jest INŻYNIER …
komentarz #