Ile matematyki trzeba znać, aby programować?

Ile matematyki trzeba znać, aby programować?

Istnieje powszechna i popularna opinia, że tylko geniusz matematyczny jest w stanie zrobić z komputerem coś więcej niż uruchomić youtube'a, czy poszukać gifów z kotami. Ta opinia nie jest przypadkowa i ma swoje racjonalne uzasadnienie - otóż w zamierzchłych czasach, których gimby nie pamie(n)tajo, komputery rzeczywiście były używane wyłącznie do obliczeń, stąd też nazwa “komputer” - od komputacji (z ang. to compute), czyli obliczania. Dlatego też niekiedy, w starej literaturze (na przykład z lat 60), komputery określano mianem “cyfrowych maszyn liczących”. Lata mijały, a pytanie pozostawało: jak bardzo w liczenie trzeba umieć, aby napisać swój własny portal społecznościowy?

Siadając do pisania tego artykułu, miałam ogromną potrzebę zdemistyfikowania (ha! trudne słowo, nauka poprzez zabawę) programowania. Otóż mam wrażenie, że wiele osób “spoza branży” zdaje się mieć błędne wyobrażenie na temat tego, czym tak naprawdę programowanie jest. Zaobserwowałam tendencję do wpychania programowania do szufladki pt. “Matematyka, statystyka i inne trudne rzeczy” zamiast do szufladki pt. “Opowiadania i inne ciekawe historie”, bo właśnie z tym drugim utożsamiam programowanie. W końcu nie bez przyczyny mówi się “język programowania”.

Tak istotnie jest.

Programowanie to jest język, dzięki któremu możemy opowiedzieć pewną historię.

To zwroty i zdania, za pomocą których komunikujemy się z maszyną. Jesteśmy jej panem i władcą. W teorii. Bo w praktyce to wiadomo…

W rzeczywistości zatem, programowanie to snucie bardzo dokładnych i bardzo szczegółowych opowieści, przez co mogących się wydawać nużącymi i nudnymi.

Na potrzeby tego artykułu stwórzmy postać Janusza i zbudujmy w okół niego historię. Załóżmy, że Janusz pojechał do Łeby. Jest 5:00 rano i Janusz właśnie wyruszył na plażę, zająć sobie miejsce “na później”. Jeśli w naszym (normalnym, czyli mówionym, werbalnym) języku powiemy “Janusz wbił w piasek palik plażowego parawanu”, to instynktownie wiemy o co chodzi, wiemy co się stało, wiemy co i kto i możemy wyobrazić sobie scenerię. Po prostu informacja do nas dociera. Natomiast, jeśli chcielibyśmy zaprogramować Janusza, aby wbił palik, to tak prezentuje się ścieżka postępowania:

  1. Zaprogramować uniesienie jednej ręki (wraz z kamieniem) do góry.
  2. Zaprogramować lekkie zgięcie ręki w łokciu.
  3. Zaprogramować lekkie odchylenie ciała Janusza do tyłu.
  4. Zaprogramować szybkie opuszczenie ręki (wraz z kamieniem) w dół.
  5. Zaprogramować jednoczesne przeniesienie ciężaru ciała do przodu - pochylenie się w przód.
  6. Zaprogramować, że kamień uderza w palik.
  7. itd..

Do tego trzeba dodać ciągłe sprawdzanie zmysłu równowagi, aby Janusz się nie przewrócił i aby nie nadział się na pal… jak to w pewnej książce było… Ponadto, w powyższej historii nie wyjaśniliśmy, skąd dokładnie Janusz wziął kamień - co może być istotne, ale nie musi. Konieczne jest zatem, aby bardzo skrupulatnie opisać całą masę szczegółów i nie pomijać żadnej czynności, bo może skończyć się to nawet fatal errorem.

Opiszę Wam jeszcze jedną sytuację. Załóżmy, że do Janusza, nad morze, chce przyjechać Grażyna. Ale niestety tak się niefortunnie składa, że nie ma kasy na bilet. Janusz postanawia więc przelać jej 10 PLN. Aby przelew się powiódł, system bankowy musi:

Sprawdzić, czy na koncie Janusza znajduje się 10 PLN

  • jeśli tak:
    • odjąć z konta Janusza 10 PLN,
    • dodać do konta Grażyny 10 PLN,
    • wyświetlić Januszowi komunikat o powodzeniu operacji,
    • wyświetlić Grażynie informację, że jej konto zostało zasilone o 10 PLN.
  • jeśli nie:
    • poinformować Janusza o tym, że nie posiada dostatecznej ilości środków na koncie.

Jak łatwo możecie zauważyć, programowanie jest zatem bliższe tłumaczeniu z jednego języka (często bogatego i kwiecistego) na inny język (odarty z barwnych metafor i porównań), niż intensywnym rozważaniom matematycznym.

OK, to w końcu ile tej matematyki?

Wracając do sedna sprawy, najprostsza odpowiedź będzie brzmiała: to zależy.

Mam nadzieję, że pomogłam, no to dzięki nara.

ile matematyki trzeba znać aby programować

No dobra.

Nie będę taka.

Wracam i mówię, że: to zależy od tego, co chcemy programować.

Czasami nie będziemy w stanie uciec od matematyki, zwłaszcza gdy chcemy np. zrobić program modelujący jakieś zjawiska fizyczne. Więc pozwólcie, że otworzę Wam oczy, bo jeśli marzycie o byciu twórcą gier komputerowych, zwłaszcza tych 3D, to od matematyki daleko nie uciekniecie. Poniżej przedstawiam Wam mam moją subiektywną listę must have jeśli chodzi o matematykę w programowaniu (i nierzadko w życiu) oraz subiektywną listę nice to have:

Matematyczne must have'y:

  • Dodawanie, odejmowanie, mnożenie i dzielenie - wystarczy do 10 - resztę można sobie policzyć, w końcu siedzimy przed jednym wielkim kalkulatorem. Fun F(u)ckt: Pracowałam kiedyś w instytucji gdzie człowiek siedział przed excelem i na kalkulatorze, takim zwykłym biurowym, liczył, a następnie wynik wpisywał pieczołowicie w excela...
  • Znać koncepcję kolejności wykonywania działań - nawiasy, mnożenie / dzielenie, dodawanie / odejmowanie. Języki programowania też mają swoje "działania" (operatory) i one też mają swoją kolejność wykonywania, na co warto zwracać uwagę podczas ich nauki.
  • Logika w zakresie podstawowym, czyli spójniki logiczne “i” (koniunkcja) i “lub” (alternatywa).
  • Dzielenie z resztą - Pojęcie funkcji, jako przyporządkowania czemuś, co wkładamy do funkcji, czegoś innego. Nie mam zamiaru wgłębiać się w matematyczne teorie, ważne by wiedzieć że jak mamy f(x) = 2x, to f(4) da nam 8. W programowaniu argumentem funkcji (czyli to co wkładamy do funkcji) nie musi być wyłącznie liczba, może to być na przykład ciąg znaków. I tak samo z wynikiem - też nie musi być to liczba.

Matematyczne nice to have'y

  • Geometria i trygonometria, niestety (albo stety, ja lubiłam) te wszystkie sinusy i cosinusy będą się przydawać jeśli będziemy chcieli zrealizować funkcjonalność “znajdź w pobliżu”. Na szczęście nie musimy sami tego liczyć, ale wiedzieć, że to trzeba policzyć ze specjalnej wersji twierdzenia Pitagorasa biorącego pod uwagę krzywiznę ziemi - to będzie dla nas na plus.
  • Matematyka dyskretna i teoria grafów, to już grubszy temat, ale warto o tym poczytać i zainteresować się tematem bardziej od strony użytkownika teorii niż teoretyka. Grafy przydają się do szukania najkrótszej drogi pomiędzy punktem A i punktem B, jeśli wiadomo że możemy poruszać się tylko po z góry ustalonych trasach, np ulicach.
  • Cała reszta matematyki :)

Jak zatem widzicie moi drodzy, nie takie programowanie straszne jak je malują. Mam wrażenie, że wystarczy po prostu logicznie myśleć, nie spieszyć, się, umieć korzystać z wujka Google i idzie jak z płatka. Pamiętajcie, że programowanie to język, a jak Wittgenstein mówił:

“Granice naszego języka są granicami naszego poznania”.

Z tą złotą myślą Was zostawiam i na odchodne dodatkowo pytam:

Co zatem moi drodzy Wy na ten temat powiecie?

Zachęciłam was?

Przeraziłam?

nieprzyzwoity nerd

Pośród ogrodu siedzi ta królewska para...

...wait what? Nie ogrodu ale sofy (softu) i nie siedzi ale doskonale się bawi. Choć ich gry i zabawy nieco odstają od tego, co normalnie rozumiemy pod kategorią rozrywka.

Czymże zatem tak się zajmują? Programowaniem oczywiście, które w zasadzie jest czynnością bardzo kreatywną. To taki miks pracy detektywa,  architekta, artysty i tłumacza. Tym nie można się znudzić, zwłaszcza gdy nadchodzi ten satysfakcjonujący moment kiedy uruchamiamy program i on działa!

Ale nie samym programowaniem żyje ta para. Jest jeszcze film, teatr, kultura, nowinki techniczne, gry... i inne nieprzyzwoicie przyjemne przyjemności.

To wszystko znajdziecie na tym blogu.
Zapraszamy

Ania i Kris.

nieprzyzwoitka.pl logo

Nieprzyzwoitka.pl

Nieprzyzwoitka.pl - blog o seksie i związkach oraz innych nieprzyzwocie przyjemnych przyjemnościach

nieprzyzwoitynerd.pl logo

NieprzyzwoitaKuchnia.pl

Blog z nieprzyzwoicie pysznymi przepisami dla leniwych... i nie tylko.

Szukaj