Ostatnio szukałem w Internecie informacji na temat tego czy matematyka jest potrzebna do programowania. Jest wiele artykułów, blogów, filmów na yt, że można nauczyć się programować bez znajomości wyższej matematyki. Mam kolegę który chodzi na studia informatyczne i chciałem się dopytać jak to jest naprawdę i on twierdzi że nie ma szans nauczyć sie programowania bez znajomości matmy. Więc jak to jest naprawdę?
Programowanie to tylko matematyka, więc nie masz czego szukać bez jej znajomości na studiach informatycznych. Masa odpada właśnie na pierwszym semestrze przez matematykę, bo oczekiwali zupełnie czego innego ( nie wiadomo w sumie czego) po programowaniu.
Zależy od działki.
Programista silników graficznych / mikroprocesorów piszący w C będzie miał znacznie więcej matematyki niż ktoś kto sobie dziobie backend w Javie i robi do tego frontend w Angularze.
Matematyka w informatyce jest zupełnie inna - zobacz sobie przykładowe zadania na codeforces czy codeleet.
Najpierw trzeba dobrać struktury danych, później jakoś je przetrawić, coś przeliczyć, wypluć odpowiedni wynik, a najlepiej żeby program nie zżarł 16GB RAMu i nie wykonywał się 42 minuty.
Trzeba umieć logicznie myśleć, kojarzyć fakty, szukać informacji - trzeba umieć myśleć matematycznie. A to że mnie kiedyś uczono jak się rozwiązuje równania różniczkowe czy zadania z kulkami z kombinatoryki nie przydało mi się jeszcze ani razu, dosłownie.
Zależy programowanie czego. Jak będziesz robił webdev, albo jakieś aplikacje dla firm, no to nie trzeba żadnych fajerwerków, chyba że dla NASA będziesz wyliczać trajektorię lotu rakiety. Jak będziesz chciał programować silniki gier, no to zaczynają się schody.
Programowanie to tylko matematyka
kek
Dokładnie tak, jak pisał Amadeusz.
Działam jako programista/data scientist (czy jak to się tam teraz zwie). W tym drugim matma się przydaje i douczam się jej siłą rzeczy. W programowaniu baz, na moje potrzeby, musiałem opanować tylko algebrę relacji, a i tak daje mi to wyłącznie to, że rozumiem głębszy sens specyfikacji technicznych. Inni tego nie zrobili i nie radzą sobie gorzej. Programowanie wymaga dociekliwości i ciekawości. Matma pomaga. Jeśli jednak umiesz myśleć ściśle, to istnieje spora szansa, że Twoje programy nie będą się składać z dwóch tysięcy ifów :P
programy nie będą się składać z dwóch tysięcy ifów
Cóż, zawsze można pojechać też w drugą stronę.
https://www.youtube.com/watch?v=-AQfQFcXac8
Data science uczysz się we własnym zakresie, czy masz jakiś background w tym? Jeśli to pierwsze, to masz coś do polecenia, co tobie pomogło się wdrożyć? Książki, materiały video, zadania i sposób nauki - coś bym może wyciągnął dla siebie, jeśli nie masz nic przeciwko. :)
Sethlan -> bardzo fajne i łatwe jest to: http://faculty.marshall.usc.edu/gareth-james/ISL/
Jest też wersja w Pythonie, jak wolisz :). Jest tam pdf.
Plus jest taki, że wystarczy dodawać i odejmować do dziesięciu, żeby ogarnąć formalnie matematykę w powyższej książce. Bardzo łatwo jest tam opisana optymalizacja gradientów. Sieci neuronowe są opisane dość po macoszemu, albo prawie w ogóle, ale o tym warto poczytać z innych źródeł. Zresztą, dobrze zoptymalizować i wytrenować sieć neuronową to jest ciekawa sprawa. Zazwyczaj przemielenie danych przez pierwsze lepsze drzewo decyzyjne da za pierwszym razem dużo bardziej akuratne wyniki :).
Dużo gorzej jest tu:
https://www.deeplearningbook.org/contents/numerical.html
^ gdy naprawdę chcesz rozwijać nieco algorytmy. Ta książka jest już nieco bardziej sformalizowana matematycznie.
Natomiast jeśli chodzi o samą naukę, to ja preferuję najbardziej takie podejście, gdzie ok - robię kurs podstaw języka, żeby zrozumieć, co to jest funkcja, klasa, metody, jak tego użyć, itp. Zazwyczaj bardzo kiepsko wychodzi mi taka metoda uczenia, że np. uczę się wszystkiego o słownikach, wszystkiego o listach, a później wszystkiego o data frame-ach. Dlatego zazwyczaj staram się te tematy "zrozumieć" pobieżnie, a później wymyślam sobie samemu mini projekt - najlepiej coś ciekawego, co mnie interesuje. Nie wiem... wymyśliłem ostatnio apkę, która miała rozpoznawać różne gatunki zwierzaków. I żeby napisać taką apkę, trzeba przejść przez ileś tam etapów, używając różnych narzędzi. I wówczas najlepiej przyswajam sobie wiedzę.
Miałem też w pracy kilka kursów, ale one raczej mi pomogły złapać zupełne podstawy. To jest troszkę, jak z angielskim - im więcej mówisz, tym płynniej i lepiej Ci to idzie (no... takie jest założenie :). Dlatego staram się dużo "kodzić" (małe, krótkie projekciki i programidła) i jednocześnie nadrabiać teorię i starać się ją implementować.
Oprócz algorytmów uczenia, jest jeszcze sporo innych rzeczy, których warto się nauczyć. Jedną z nich jest czyszczenie danych, bo zazwyczaj, dowolne dane surowe to syf, że aż głowa mała. I warto też znać kreatywne metody zdobywania danych. Jak ma się szczęście, to czasem da się podłączyć pod jakieś APi, ale czasami dane są pozaszywane na stronach, w arkuszach itd. To właśnie sporo utrudnia :).
Pisząc tak czysto teoretycznie. Umiem rozwiązać podstawowe działania matematyczne jak dzielenie, mnożenie, dodawanie, odejmowanie. Czy będę w stanie nauczyć się jakiegokolwiek języka i pracować w jakiejś firmie?
Dążę do tego aby jak najbardziej doprecyzować odpowiedź na pytanie czy można zostać programistą bez znajomości matematyki. Bo z tego co widzę tutaj jak i w całym internecie zdania są podzielone.
Zaryzykowałbym stwierdzenie, że im bardziej wysokopoziomowy język, tym bardziej przydaje się dobre opanowanie gramatyki, niż matmy. Pisanie w takim pythonie, r, zapytania sqlowe bardziej przypominają ścisłe i solidne konstruowanie zdań po angielsku, niż łamigłówki matematyczne. Sytuacje się komplikują, gdy schodzisz do języków niskiego poziomu. Gdy nagle musisz zarządzać pamięcią, napisać własny iterator, czy coś takiego: tutaj raczej nie wyobrażam sobie wejścia bez solidnej znajomości informatyki.
W skrocie: coś dla siebie znajdziesz.
Z własnego doświadczenia, to powinieneś dobrze myśleć logicznie, a matma do takiego myślenia się nadaje. Na pewno w takim korpo programowaniu to całek, czy innych różniczkowych obliczeń nikt Ci nie będzie kazać robić.
Najprościej na twoim miejscu ściągnąłbym jakieś narzędzie do programowania i popróbował coś popisać.
W czasie gdy studiowałem informatykę, wszyscy na roku oglądali tą reklamę intela: https://www.youtube.com/watch?v=Gzi4xfMWMuw
Śmieszna prawda? :)
Co do samego programowania i wymogu znania matematyki to powiem tak: To zależy do czego /jaki program piszesz.
Do tworzenia stron internetowych, skryptów(vba, bash, python, itp.) czy innych prostych kodów wystarczy znajomość podstaw z licka + logika matematyczna. (jak czegoś nie wiesz to szukasz w necie np. na stackoverflow).
Jak chcesz coś zaawansowanego od podstaw napisać to warto znać: operacje na macierzach, całki, matematyka dyskretna i konkretna.
on twierdzi że nie ma szans nauczyć sie programowania bez znajomości matmy
To totalna bujda i ściema, możesz być geniuszem matematycznym a bez dobrych praktyk i wzorców projektowych Twój kod będzie większym gównem niż kod gimnazjalisty który te ostatnie opanował do perfekcji.
Tak jak koledzy wyżej pisali - w programowaniu są różne działki, ale uogólniając pewnie z 90% osób które postrzegane są jako "programiści" nie ma zbyt wiele wspólnego z szeroko pojętą matematyką poza totalnymi podstawami i logiką. Ja z perspektywy web/mobile deva z 20-sto letnim doświadczeniem i kilkoma większymi apkami za pasem mogę powiedzieć że w zasadzie nie miałem sytuacji która by sprawiła że moje braki matematyczne zostały w jakiś rażący sposób obnażone (nigdy nie studiowałem).
Wydaje mi się że żeby naprawdę cierpieć z powodu niewiedzy matematycznej to trzeba wejść na bardzo wysoki poziom i do tego pracować w specyficznej branży gdzie bardzo liczy się wydajność (systemy finansowe, big data, pewnie też game dev). Myślę że architekci oprogramowania ogarniający np. szynę danych w komercyjnym banku raczej znają się na rzeczy co nie zmienia faktu że pracują ramię w ramię z "klepaczami" biorącymi po 20k na rękę za kopiowanie kodu ze stackoverflow - i w tym momencie nie żartuję, bo dwóch najgorszych programistów jakich poznałem w życiu (jednego niestety sam musiałem zwolnić) - pracuje od paru lat (z sukcesami!) w największych polskich bankach. Well.
Może i da się nauczyć programowania bez matematyki, ale na pewno nie da się zdać studiów informatycznych. Nawet o tym nie śnij.
Przede wszystkim: matematyka to nie "dzielenie, mnożenie, dodawanie, odejmowanie". A po drugie: postawiłbym pytanie nieco odwrotnie. Nie "czy matematyka jest potrzebna aby zostać programistą", tylko "czy programista może nie umieć matematyki". Często pada argument że "w życiu mi się w robocie nie przydało całkowanie czy różniczkowanie". Ok - to prawda. Ale bez znajomości logiki, kombinatoryki i statystyki ani rusz. Niezależnie od specjalizacji. Chyba że faktycznie chcesz być "kopiowaczem kodu ze stackoverflowa" który produkuje kwiatki typu if (flag == true) true else false
Mam kumpla z technikum, który napisał kilka małych niekomercyjnych gier w Unity, a na matmie miał ogromne problemy ze zwykłą funkcją kwadratową. Do samego programowania matematyka nie jest potrzebna, problem pojawia się na studiach.
Jak będziesz chciał się pchać w studia informatyczne to prawdopodobnie ze słabą znajomością matmy wylecisz po pierwszym roku. Znajomy który dobrze garnia matmę wyleciał po 1 roku ale to dlatego że się nie przykładał do nauki i obecnie robi w montażu filmów itp. Znajomy który robi przy robieniu gier twierdzi że bez matmy byłoby mu ciężko. Ale są programy w których spokojnie można robić bez jakiejś wielkiej znajomości matmy.