Programuję od 8 lat zawodowo, a od 12 roku życia jako hobby.
Matematyka nie jest konieczna, logika jest. Matematyka jest jednak strasznie pomocna, powiedzieć, że nie jest to konieczne, to tak, jakby powiedzieć, że aby zabić człowieka, broń nie jest konieczna, można użyć noża. Cóż, to prawda, ale ta broń znacznie to ułatwia.
Jest kilka minimum, które powinieneś już spełnić. Musisz znać podstawowe wyrażenia algebraiczne i notację oraz popularne odpowiedniki komputerowe. Na przykład musisz wiedzieć, co to jest wykładniczy (3 do 3 to 27), a typowe wyrażenie komputerowe to 3 ^ 3. Wspólne notacje algebry zmieniają się między językami, ale wiele z nich używa nieco ujednoliconej metodologii. Inni (patrząc na ciebie LISP) nie. Musisz także znać kolejność operacji.
Musisz zrozumieć myślenie algorytmiczne. Najpierw to, potem to, daje to, co jest używane w tych obliczeniach. Możliwe, że to rozumiesz lub nie, i jest to dość trudna przeszkoda do przeskoczenia, jeśli jej nie rozumiesz; Odkryłem, że jest to coś, co „dostajesz”, a nie coś, czego można się nauczyć. I odwrotnie, niektórzy ludzie nie „rozumieją” sztuki. Nie powinni zostać malarzami. Również w programie nauczania CS byli studenci, którzy nie potrafili zrozumieć, dlaczego to nie działa: x = z + w; z = 3; y = 5; Nie chodzi o to, że nie rozumieją dodawania, chodzi o to, że nie rozumieją wymogu jednoznacznego wyrażenia. Jeśli to rozumieją, komputer też powinien, prawda? Jeśli nie widzisz, co jest nie tak z powyższymi trzema liniami, nie zostań programistą.
Wreszcie, musisz wiedzieć, jaka matematyka jest w twojej domenie programowania. Oprogramowanie księgowe może zatrzymać się na podstawowej algebrze. Jeśli programujesz fizykę, musisz znać fizykę (luźno) i matematykę w trójwymiarowej geometrii (euklidesowej). Jeśli programujesz oprogramowanie architektoniczne, musisz znać trygonometrię.
Ale to sięga dalej niż matematyka; niezależnie od domeny, dla której programujesz, musisz dobrze zrozumieć podstawy. Jeśli używasz oprogramowania do analizy języka programowania, musisz znać prawdopodobieństwo, statystyki, teorię gramatyki (wiele języków) itp.
Często niektóre domeny wymagają wiedzy, która według Ciebie nie jest ze sobą powiązana lub może z niej skorzystać. Na przykład, jeśli programowałeś oprogramowanie audio, tak naprawdę musisz znać trygonometrię, aby radzić sobie z przebiegami.
Wielkość również zmienia rzeczy. Jeśli sortujesz zestaw danych finansowych zawierający 1000 pozycji, to nic wielkiego. Gdyby jednak było to 10 milionów rekordów, odniósłbyś wiele korzyści ze znajomości matematyki wektorowej i głębokiego zrozumienia sortowania na poziomie binarnym (jak system sortuje alfabetycznie? Skąd wiadomo, że „a” jest mniejsze niż „b '?)
Przekonasz się, że jako programista, twoja ogólna baza wiedzy eksploduje, ponieważ każdy projekt będzie wymagał więcej nauki poza bezpośrednią sferą programowania. Jeśli jesteś wrażliwy lub leniwy, jeśli chodzi o samokształcenie i nie podoba Ci się pomysł spędzania ponad 10 godzin tygodniowo na odrabianiu zadań domowych, nie zostań programistą.
Jeśli lubisz ćwiczenia myślowe, jeśli lubisz się uczyć, jeśli potrafisz myśleć o abstrakcyjnych rzeczach, takich jak matematyka bez kalkulatora lub projektowaniu bez szkicownika, jeśli masz szerokie gusta życiowe i hobby, jesteś samokrytyczny i potrafisz wyrzucić ” ulubione pomysły, jeśli lubisz doskonalić rzeczy, zostań programistą. Nie opieraj tej decyzji na matematyce, ale raczej na umiejętności logicznego myślenia i uczenia się. To jest to, co jest ważne; matematyka to tylko produkt uboczny.