Czy musisz być dobry z matematyki, aby być dobrym programistą? [Zamknięte]


78

Wydaje się, że konwencjonalna mądrość sugeruje, że dobrzy programiści są również dobrzy w matematyce. Albo że oba są w jakiś sposób wewnętrznie powiązane. Wiele książek o programowaniu, które przeczytałem, zawiera wiele przykładów, które są rozwiązaniami problemów matematycznych lub są w jakiś sposób powiązane z matematyką, tak jakby te przykłady miały sens dla większości ludzi.

Pytanie, które chciałbym udzielić, brzmi: czy musisz być dobry z matematyki, aby być dobrym programistą?


1
@ Mark Niekoniecznie. Nauczenie się przedmiotu i polubienie go to dwie bardzo różne rzeczy.
Maks.

3
Jesteś królem? A może bliźniaki połączone? Jeśli nie, sugeruję trzymać się „ja” w odniesieniu do siebie.
drxzcl,

1
@jk - masz rację najprawdopodobniej physics.about.com/od/alberteinstein/p/einsteinpro.htm nadal myślisz, że jest sporo sztuki do programowania; p
Garet Claborn

3
Myślałem, że nigdy nie lubiłem matematyki. Później w życiu zdałem sobie sprawę, że po prostu nie jestem zadowolony ze składni.
MrFox

1
Wszyscy programiści używają matematyki przez cały czas, po prostu nie zdają sobie z tego sprawy, ponieważ tak bardzo różnią się od matematyki nauczanej w szkole. Dyskretna matematyka, rachunek lambda, algebra boolowska, logika (!) To naprawdę zaawansowane koncepcje matematyczne, których używamy na co dzień.
rotman

Odpowiedzi:


83

Myślę, że to zależy od tego, jaki rodzaj programowania chcesz zrobić. Jeśli chodzi o bycie programistą w świecie biznesu, powiedziałbym, że odpowiedź brzmi „nie”. Możesz zostać świetnym programistą, nie znając zaawansowanej matematyki. Kiedy skończysz z matematyką, formuły są zwykle definiowane w wymaganiach biznesowych, więc staje się to tylko kwestią implementacji ich w kodzie.

Z drugiej strony, jeśli chcesz zostać programistą niskiego poziomu lub powiedzieć, że tworzysz silniki grafiki 3D, matematyka będzie odgrywać ogromną rolę.


6
Chciałbym dodać, że widziałem doktoratów z matematyki i fizyki piszących okropny kod. Umiejętności te w pewnym stopniu się pokrywają, ale są to odrębne dyscypliny.
MrFox

133

Idę pod prąd i mówię tak, potrzebujesz mentalnego sposobu myślenia . Większość ludzi uważa matematykę za wykonywanie arytmetyki lub zapamiętywanie tajemnych formuł. To tak, jakby zapytać, czy potrzebujesz doskonałej pisowni lub niezwykłego słownictwa, aby być dobrym pisarzem.

Pisanie dotyczy komunikacji, a matematyka / programowanie to proces jasnego, logicznego myślenia (w taki sposób, że nie można popełniać błędów; równanie nie równoważy się lub program się nie kompiluje). W szczególności logiczne myślenie przejawia się w:

  • Umiejętność oszacowania / zrozumienia różnic między liczbami: O (n ^ 2) vs O (lg (n)), intuicyjne wyczucie KB vs MB vs GB, jak wolny jest dysk w porównaniu do pamięci RAM. Jeśli nie zdajesz sobie sprawy, jak mały jest KB w porównaniu do GB, tracisz czas na optymalizowanie rzeczy, które nie mają znaczenia.
  • Funkcje / programowanie funkcjonalne (czy to przypadek, że równanie f (x) = x ^ 2 jest tak podobne do tego, jak napisałbyś tę metodę? Słowa „algorytm” i „funkcja” były w świecie matematyki na długo przed narodził się pierwszy komputer :-))
  • Podstawowa algebra do tworzenia i porządkowania własnych równań, wykonywania średnich, podstawowych statystyk

Powiem więc, że potrzebujesz sposobu myślenia matematycznego , który jest w stanie konstruować i manipulować modelami umysłowymi tego, co robi twój program, zamiast zbioru faktów i twierdzeń. Niektóre pola, takie jak grafika czy bazy danych, będą zawierały pewne fakty, których potrzebujesz, ale dla mnie nie jest to istotą bycia „dobrym z matematyki”.


1
Kierunek matematyczny vs. matematyka: to jak różnica między znajomością wszystkich formuł fizyki, a zdolnością do precyzyjnego odbijania gumowej piłki z tablicy 20 jardów!
TehShrike 17.10.11

9
Dodam, że wielu dobrych programistów wie, jak grać w szachy lub iść :-)
xanatos,

1
Okropna ilość kodu komputerowego to w zasadzie algebra, chociaż konfigurujesz go dla komputera, a nie rozwiązujesz go sam. Jeśli nie jesteś w domu z algebrą, jak możesz oczekiwać, że wykonasz przyzwoitą robotę?
Loren Pechtel

18
Myślenie matematyczne jest kluczem do programowania. Dodam mój głos, aby dokładnie to podkreślić.
Gus

4
+1 Matematyka jest niezbędna do zrozumienia języków programowania, ponieważ stanowi podstawę naszego rzemiosła. Większość konstrukcji języka programowania, których używamy na co dzień, wywodzi się z dyscyplin matematycznych, takich jak rachunek lambda.
MattDavey,

53

Istnieje wiele różnych dziedzin programowania i wiele z nich nie wymaga szczególnie wysokiego poziomu wiedzy matematycznej. Nigdy nie będziesz w stanie napisać silnika 3D, ale na pewno będziesz w stanie tworzyć aplikacje biznesowe i internetowe. Spójrzmy prawdzie w oczy - najczęstszą operacją matematyczną w większości programów komputerowych jest zwiększanie liczby o jeden.

Z przyjemnością przyznam, że nigdy nie lubiłem matematyki ani nie byłem w niej dobry (właściwie ukończyłem literaturę angielską!) I pracuję jako profesjonalny programista od ponad 12 lat. Tworzę głównie aplikacje internetowe, które rzadko wymagają tak dużej matematyki. Ważniejsza jest umiejętność logicznego myślenia, umiejętność dzielenia problemów na części i szerokie zrozumienie różnych technologii i ram.

Jako programista z większym prawdopodobieństwem będziesz musiał wdrożyć istniejący algorytm niż opracować zupełnie nowy . Potrzebujesz wypracować, powiedzmy, składane odsetki? Nie musisz sam tego wymyślać, po prostu sprawdź formułę i zastosuj ją. Większość problemów została już rozwiązana, wystarczy wiedzieć, jak wdrożyć rozwiązania w wybranym języku. Nie oznacza to, że bycie dobrym w matematyce nie byłoby zaletą ; po prostu nie jest to absolutnie niezbędne .

Kiedy byłem w szkole w połowie lat 80-tych, kiedy komputery domowe nie były bardzo częste, często pisałem programy, które rozwiązują moją pracę domową z matematyki. Często nie mogłem tego zrobić w głowie, ale mogłem zastosować dowolną formułę wymaganą jako rutyna oprogramowania. Nie musisz być kolejnym Pitagorasem, aby wypracować najdłuższy bok trójkąta prostokątnego, po prostu musisz być w stanie zakodować a² + b² = h²w wybranym języku.


3
Finanse i rachunkowość nie są takie złe, chyba że robisz wycenę opcji lub coś w tym stylu.

5
Masz rację, Chris, ale nawet w przypadku aplikacji finansowych bardziej prawdopodobne jest, że będziesz wdrażać formuły niż je opracowywać.
Dan Diplo,

2
@Mark - To prawda, ale powiedziałbym, że zrozumienie problemów z zaokrąglaniem jest bardziej kwestią znajomości właściwego typu do użycia. Nie musisz być dobry w matematyce, aby dowiedzieć się, że (na przykład) liczba dziesiętna jest lepsza niż liczba zmiennoprzecinkowa dla wartości pieniężnych. I nie sądzę, by matematyk automatycznie zdał sobie sprawę z właściwego typu danych, którego należy użyć - to kwestia nauki.
Dan Diplo,

3
@ SK-logic: Ściśle mówiąc, wszystko, co robi komputer, jest logiczne . Niektóre z tych operacji logicznych są interpretowane jako matematyka (a niektórzy twierdzą, że logika jest gałęzią matematyki, ku oburzeniu niektórych filozofów).
Donal Fellows

3
@Donal Fellows, formalną logiką jest matematyka. A filozofowie i tak są uznawani za swój historyczny wkład w matematykę, a także matematycy, którzy się zemścili (np. Poprzez wymyślenie dziwnych rzeczy, takich jak „monadologia”).
SK-logic

30

Nie musisz być dobry z matematyki. Jednak musisz być dobry w logice i rozwiązywaniu problemów. Jednak ludzie, którzy są dobrzy w logice i rozwiązywaniu problemów, zwykle są również dobrzy w matematyce. Powiedziałbym, że to naprawdę zależy od rodzaju matematyki. Możesz być okropny w rachunku różniczkowym (jak ja) i nadal być dobrym programistą (jak ja). Ale jeśli masz problemy z dyskretną matematyką i teorią zestawów, prawdopodobnie miałbyś wiele problemów z programowaniem.


Nie musisz być dobry w logice, aby być dobrym w „rozwiązywaniu problemów”. Wiele, jeśli nie większość, problemów można rozwiązać za pomocą heurystyki, które nie są w żaden sposób związane z logiką.
ElGringoGrande

1
Czy jesteś pewien, że jesteś dobrym programistą? :)
Russell

17

Myślę, że ważne jest, aby dokładnie przyjrzeć się, dlaczego nie lubisz matematyki.

Niechęć do dyscypliny akademickiej jest zwykle czymś, co dzieje się w szkole i może wynikać z jakiegoś konfliktu z nauczycielem, braku zaufania do własnych umiejętności w ramach przedmiotu lub presji ze strony grupy rówieśniczej.

Programowanie! = Matematyka. Dla mnie to nawet nie „przypomina matematyki” (i podobało mi się matematyka, mimo że pod koniec moich formalnych studiów nie szło mi tak dobrze). Wiele umiejętności, które możesz wykorzystać w matematyce, jest przydatnych, niezbędnych nawet w programowaniu, ale wielu programistów uczy się w większości. Nie lubienie matematyki w szkole nie ma prawie żadnego wpływu na twoje umiejętności lub przyjemność programowania.


Widziałem wiele złych nauk dotyczących matematyki. Jego istotą jest przekształcenie problemu w znany, a następnie powiedzenie „rozwiązany” bez dodatkowego słowa. Ale w nauczaniu może wymagać od ciebie, abyś wdrożył dowody na znacznie niższe poziomy.
Balog Pal

16

Matematyka i programowanie są ze sobą ściśle powiązane, ponieważ matematyka jest tak naprawdę uniwersalnym językiem między ludźmi a komputerami. Nie musisz znać dużo matematyki dla programowania na wysokim poziomie, ponieważ wiele z nich jest za kulisami, ale pomoże to zrozumieć wiele bardziej zaawansowanych koncepcji programowania. Jeśli planujesz robić więcej programowania niskiego poziomu (programowanie systemów lub urządzeń), musisz znać dużo więcej matematyki.


11
+1. Będziesz także potrzebować matematyki, jeśli chcesz robić rzeczy „na wysokim poziomie”, takie jak przetwarzanie sygnałów, uczenie maszynowe, widzenie komputerowe, renderowanie 3D, symulacje fizyki, animacje, geometria obliczeniowa, kryptografia i prawdopodobnie wiele innych dziedzin, o których nie mogę pomyśleć teraz.
nikie,

2
@nikie: Tak, ale to matematyka stosowana . Duża różnica. ^^
gablin

Ugh. W rzeczywistości matematyka nie jest uniwersalnym językiem. Logika jest. Logika jest domeną filozofów. W każdym razie, jeśli chodzi o to, jak działają komputery, lepiej poznaj inżynierię elektryczną / elektroniczną i filozofię formalną niż matematykę. Potrzebujesz matematyki jako takiej, jeśli uprawiasz informatykę, która tak naprawdę nie jest programowaniem w kontekście kariery.
RibaldEddie

14

Dobry jeden? Bardzo mało prawdopodobne. Większość wzorców projektowych ma przynajmniej pewne podstawy w pojęciach matematycznych. Rzeczy niezbędne do programowania, takie jak zmienne, pętle, procedury i obiekty, są analogiczne do pojęć w dziedzinach matematycznych, takich jak algebra, rachunek różniczkowy i teoria mnogości.

Weź również pod uwagę, że informatyka jest podzbiorem matematyki: algorytmy i logika formalna, na których opiera się całe programowanie, są zasadniczo matematyką .

Jeśli nienawidzisz matematyki, nienawidzisz programowania.


13

Prawie wszyscy odpowiedzieli: „Czy musisz znać matematykę, aby być dobrym programistą?” Prawidłowa odpowiedź na to brzmi: „Nie, niezupełnie, ale to pomaga”, jak już wielu powiedziało.

Ale moja interpretacja pytania brzmi: „czy istnieje silna korelacja między zdolnościami matematycznymi a umiejętnościami programowania?” Prawidłowa odpowiedź na to brzmi: „Tak, jest”. Jeśli zmagasz się z algebrą, geometrią i rachunkiem, prawdopodobnie nie jesteś zbyt dobry w radzeniu sobie z abstrakcjami i / lub logicznym myśleniem. Jeśli jesteś kiepski z matematyki, prawdopodobnie nigdy nie będziesz świetnym programistą. (Nie to, że nie powinieneś próbować.)


11

To zależy od tego, co programujesz. Na przykład silnik gier 3D byłby niezwykle trudny (jeśli nie niemożliwy) do osiągnięcia przy dowolnym stopniu spójności bez znajomości odpowiednich pojęć matematycznych.


11

„Like” i „być kompetentny w” są zupełnie różne rzeczy - tak długo, jak jesteś właściwie numerate wtedy nie widzę powodu, dlaczego chcesz mieć lubić matematykę.

Ale bądźmy tutaj absolutnie jasni - programowanie ma silną podstawę w matematyce i prędzej czy później prawie każdy nietrywialny rozwój będzie wymagał obliczeń - nie możesz się przed tym ukryć.

Każde programowanie wymaga logiki (podstawy w matematyce), większość współczesnych programów prawdopodobnie obejmuje rzeczy (takie jak SQL), które wymagają teorii mnogości (nawet jeśli nie jest to oczywiste), a jeśli tak nie jest, może być tak, że dziedziny (takie jak programowanie gier), które są jeszcze bardziej oparte na matematyce (renderowanie - matematyka, AI -> prawdopodobieństwo i losowość - matematyka ...) i tak dalej.

Rezultatem powyższego jest to, że musisz czuć się dobrze z liczbami - na pewno musisz zrozumieć, dlaczego „Na świecie jest 10 rodzajów ludzi, którzy rozumieją binarny, a ci, którzy nie” jest zabawny. Ale prawdopodobnie masz usprawiedliwienie „2 + 2 = 5 ... dla bardzo dużych wartości 2”.


+1, to naprawdę przygnębiające; Śmiałem się z tego dowcipu.
Ben

10

Podstawową koncepcją matematyki jest śledzenie, opracowywanie, rozumienie, wdrażanie i stosowanie algorytmów. Jeśli nie umiesz robić matematyki, to dlatego, że nie możesz robić tych rzeczy, a jeśli nie możesz robić tych rzeczy, nie możesz być efektywnym programistą.

Typowe zadania programistyczne mogą nie wymagać żadnej konkretnej wiedzy matematycznej (np. Prawdopodobnie nie będziesz potrzebować algebry wektorowej i rachunku różniczkowego, chyba że wykonujesz zadania takie jak na przykład grafika 3D lub symulacje fizyki), ale podstawowe umiejętności są identyczne i brak umiejętności w jednej domenie będzie odpowiadał odpowiedni brak umiejętności w drugiej domenie.


9

Szczerze mówiąc, byłem okropnym uczniem matematyki w szkole. Algebra była wtedy całkowicie poza mną i nie sądzę, żebym kiedykolwiek miał w tym więcej niż literę D.

Jednak kilka lat później, po tym, jak pracowałem jako profesjonalny programista, wróciłem na studia i ukończyłem kurs algebry. Ku mojemu zdziwieniu była to najłatwiejsza klasa, jaką miałem, i dostałem w niej ocenę A.

Prawda była taka , że programowanie nauczyło mnie algebry, ponieważ praktycznie wszystko jest tylko wyrażeniem algebraicznym.

Więc nie, nie musisz tego zaczynać. Pomaga, ale nie jest wymagane. Piękną rzeczą w programowaniu jako sposobie nauczania matematyki jest to, że kompilator, debugger i program wykonawczy są wspaniałymi sposobami na sprawdzenie poprawności odpowiedzi. Pod tym względem debugowanie jest ogromnym dobrodziejstwem w nauce, ponieważ można krok po kroku kodu i obserwować każdy krok oceny algorytmu.


Wracam do szkoły po 10 latach tworzenia oprogramowania i doświadczam tego samego. Uważam, że Rachunek i Statystyka są znacznie łatwiejsze, ponieważ większość koncepcji mogę odnieść do niektórych funkcji, które napisałem przez lata. Rozzłościłem się, gdy pomyślałem o nieznanych diagramach Venna, kiedy nauczyłem się połączeń SQL. To jak oszukiwanie.
Heath Lilley,

7

Zależy to w pewnym stopniu od tego, co dokładnie robisz, choć na pewno nie zaszkodzi.

Na przykład ktoś, kto studiował informatykę, musi przejść wiele matematyki, aby uzyskać stopień naukowy. CS generalnie skupia się na algorytmach i ich poprawności, co zostało udowodnione za pomocą sprawdzeń matematycznych wysokiego poziomu. Wiele programów CS Universitie jest tak blisko ich programu matematycznego, że podwójna specjalizacja to tylko kilka kursów. Nawet jako specjalizacja Inżynieria oprogramowania, byłem o 2 kursy z dala od matematyki.

Jednak powiedziano mi, że wiele dowodów, struktur danych, metod wyszukiwania i poprawności algorytmów, których się nauczyłem, tak naprawdę nie zostało bezpośrednio użytych od czasu ukończenia szkoły. Ale trudno byłoby mi powiedzieć, że nie dało mi to przynajmniej dobrego fundamentu i lepszego zrozumienia tego, co robię na niskim poziomie.

Ponieważ bez względu na to, jak na to spojrzysz, na najniższym poziomie wszystko, co robisz, sprowadza się do matematyki.


7

Czy możesz zostać dobrym programistą bez matematyki? Tak myślę. Czy możesz zostać bohaterskim programistą, o którym ludzie cały czas mówią? Myślę, że nie.

Problem polega na tym, że większość, jeśli nie wszyscy, heroiczni programiści (myśl Dennis Ritchie), mają wykształcenie informatyczne lub matematyczne. Aby zostać naprawdę świetnym programistą, musisz zrozumieć algorytmy na poziomie, który jest czymś więcej niż powierzchownym, co oznacza, że ​​musisz zagłębić się w formalną informatykę. A informatyka to matematyka stosowana.

Podobnie zrozumienie rachunku lambda byłoby nieocenione dla architekta systemu operacyjnego lub projektanta języka.


7

Widziałem ten temat sprzeczany w tę iz powrotem. Pracowałem z ludźmi, którzy mieli stopnie naukowe z matematyki, którzy myśleli, że mogą się rozwijać i w ciągu roku lub dwóch zmienił karierę. Jeden z najlepszych programistów, z którymi kiedykolwiek miałem przyjemność pracować, miał doktorat z biochemii i nigdy nie uczęszczał na formalne zajęcia z programowania / CS w szkole, ale sam się uczył i założył odnoszącą sukcesy firmę programistyczną!

Ostatecznie to, co czyni programistą od dobrego do wielkiego, to ktoś, kto jest w stanie zrozumieć logikę, przepływy pracy, może uczyć się na przykładach i chętnie szuka rozwiązania. MUSISZ DOWIEDZIEĆ SIĘ BIZNESU, dla którego są twoje aplikacje. Nienawidzę programistów, którzy są dumni, że nie rozumieją rachunkowości, ale piszą aplikacje księgowe. Zawsze przyjmują błędne założenia i naprawdę spowalniają rozwój.

Przekonasz się, bez względu na to, do której szkoły chodzisz, dowiesz się więcej w ciągu jednego roku poza szkołą niż w ciągu 4 lat szkoły. Szkoła uczy Cię, jak się uczyć z podstawowymi umiejętnościami - ale doświadczenie z prawdziwego świata staje się z czasem o wiele cenniejsze.

Doświadczenie jest najlepszym nauczycielem, a kiedy będziesz musiał zastosować matematykę do tworzenia oprogramowania, dopóki będziesz uczyć się biznesu - nic ci nie będzie. Pamiętaj też, jak powiedział wcześniejszy post, chyba że próbujesz pracować na silniku graficznym 3D lub układach współrzędnych graficznych, takich jak aplikacja GIS, matematyki, której nauczyłeś się w szkole średniej, jest wszystkim, czego naprawdę potrzebujesz.

Pracowałem nad systemami księgowymi i rozliczeniowymi - i nigdy nie musiałem wymyślić Log (x), SIN, COS itp. Do obsługi księgi głównej lub zezwalania na wprowadzanie danych. Aging Journal nie jest „matematyką”, ale ma kluczowe znaczenie dla oceny problemów AP.

Zastanów się, nigdy nie spotkałem księgowego z kalkulatorem naukowym na biurku!


5

Krótka odpowiedź brzmi: nie. Myślę, że to trochę mit, ale jest propagowany, ponieważ problemy matematyczne są zwykle dobrze dostosowane do rozwiązywania przez komputery.

Tak więc na studiach uniwersyteckich ludzie będą mieli problemy matematyczne, które muszą rozwiązać na przedmiotach compsci, ale zwykle zauważysz, że matematyka jest trudniejsza do rozwiązania niż kod potrzebny do wdrożenia rozwiązania.

Gdy wejdziesz do prawdziwego świata, coraz częściej zauważysz, że problemy zostały w dużej mierze rozwiązane, Twoim zadaniem będzie po prostu ich zaimplementowanie w kodzie.


5

Musisz albo nauczyć się matematyki, albo stworzyć własny. Tak czy inaczej ważne jest, aby być dobrym w tej czy innej formie.

Tak długo, jak potrafisz pracować z wartościami i rozumieć, co oni robią, dlaczego i co możesz sprawić, by robili, to tradycyjna matematyka nie zawsze musi być konieczna. Czasami nawet przeszkadza.

Istnieją alternatywne sposoby wizualizacji wartości bajtu inne niż liczby, ale są one zdecydowanie najbardziej przemyślaną metodą. Byłoby możliwe napisanie programu, w którym wszystkie wartości byłyby na przykład kolorami.

Dzisiejsze programowanie czerpie dużą część swojej wartości z możliwości reprezentowania 1 i 0 jako różne typy danych. Chociaż tak naprawdę te 1 i 0 nie są w ogóle liczbami, ale zmieniają się długości fali elektrycznej, matematyka nie jest tak ważna jak fizyka, ... jednak ... jest bardzo ważna dla zrozumienia ogromnej ilości tego, co inni programiści mówią i kodują.

Nadal można być dobrym programistą bez matematyki, jakkolwiek trudne.


1
Myślenie o wszystkich wartościach jako kolorach ma prawie WIĘCEJ sensu. Kiedy
zejdziesz

Stopnie (jak w 0 - 360, z wyjątkiem 0 - 256) czasami też pomagają =) Naprawdę nie trzeba tak naprawdę myśleć liczbowo o kolorach lub stopniach, jak „pełna” wartość.
Garet Claborn,

5

Właśnie ukończyłem kurs wprowadzający do dyskretnej matematyki i odkryłem, że dzięki programowaniu wiedziałem już prawie wszystko o logice predykatów ; wszystko, co było nowe, to składnia - po prostu działała z booleanami.

Krótko mówiąc: być może nie musisz uczyć się matematyki wprost , ale będąc programistą prawdopodobnie nauczyłeś się matematyki, nie zdając sobie z tego sprawy. To znaczy, będąc „dobrym programistą”, naprawdę jesteś matematykiem (do pewnego stopnia).

Curry-Howard Korespondencja pokazuje, co to znaczy: w zasadzie, to stwierdza, że dowody matematyczne i niektóre programy komputerowe są „izomorficzne”, to znaczy, że są różne sposoby pisać to samo. Oczywiście jest to w rzeczywistości bardziej skomplikowane, ale nie jestem matematykiem, więc to najlepsze wyjaśnienie, jakie mogę podać. Mam nadzieję, że nie jest to zbyt daleko od celu.

Podsumowując, nie tylko wiele pól w CS i programowanie wymaga dużo matematyki, ale nawet podstawowe pomysły programistyczne (np. Logiczne) są w zasadzie matematyką w przebraniu.


4

Odpowiedź na to pytanie jest bardzo trudna i prawdopodobnie wywoła wiele dyskusji.

Jednym z powodów, dla których to pytanie jest tak trudne, jest to, że częściowo zależy to od rodzaju wykonywanej pracy. Większość aplikacji biznesowych nie wymaga matematyki, więc możesz dobrze zrozumieć algebrę i matematykę biznesową. Jednak bardziej zaawansowane aplikacje wymagają bardziej zaawansowanej matematyki i zaczynasz potrzebować solidnego zrozumienia rachunku różniczkowego, algebry liniowej i tym podobnych.

Jest to jednak tylko część równania, ponieważ nadal potrzebujesz pewnego stopnia matematyki do samej praktyki programowania. Jest rzeczą oczywistą, że musisz umieć posługiwać się logiką, aby móc pisać zarówno podstawowy program, jak i podstawową algebrę. Patrząc nieco poza uruchomienie podstawowego programu, trzeba jednak zrozumieć pewne aspekty matematyki dyskretnej, aby móc ustalić, co stanowi dobry algorytm do zastosowania w danym problemie.

Wróćmy jednak do sedna pytania. Osobiście nie uważam, że musisz być matematykiem, aby być dobrym programistą; Myślę jednak, że musisz być dobrze zaznajomiony z matematyką, aby być dobrym programistą.


4

Tak, zdecydowanie.

Nawet programowanie biznesu w młynie wymaga pewnych umiejętności matematycznych.

Programowanie biznesowe w młynie wymaga umiejętności obsługi baz danych. Bycie dobrym programistą baz danych wymaga zrozumienia, w jaki sposób działają bazy danych i jakie algorytmy wykorzystuje procesor zapytań podczas tłumaczenia zapytań. Bez zrozumienia granic i pochodnych (lub nawet podstawowego zrozumienia, że ​​linia y = x przecina linię y = x ^ 2 dwa razy), nie jest możliwe dokładne porównanie planu zapytania o dopasowanie wewnętrzne mieszające względem zagnieżdżonego sprzężenia w pętli plan zapytań.

Ponadto dobry programista może pracować w niemal każdej domenie, pod warunkiem, że trochę się przestudiuje: gry, symulacje, wbudowane programowanie, kompilatory, systemy operacyjne, materiały sieciowe, bazy danych itp. Umiejętność robienia tych wszystkich rzeczy (lub więcej umiejętność szybkiego nauczenia się robienia tych wszystkich rzeczy) wymaga sporej wiedzy matematycznej.

Powiedziałbym, że w pewnym momencie należało mieć doświadczenie w następujących kwestiach:

  1. 3 semestry obliczeń
  2. Diff Eq
  3. Algebra liniowa
  4. Współczesna algebra
  5. Podstawowe prawdopodobieństwo, liczenie i statystyki

4

Matematyka to coś więcej niż tylko formuły. Zrozumienie niektórych matematycznych zasad dotyczących teorii zbiorów jest bardzo przydatne do uchwycenia złożonych koncepcji w systemach typów, podobnie jak zrozumienie złożoności ma zasadnicze znaczenie dla efektywnego wykorzystania struktury danych.

Teoria grafów jest również niezwykle przydatna, ponieważ wiele problemów programistycznych można modelować za pomocą grafu. Byłem bardzo zdziwiony, gdy tworzyłem aplikację biznesową, gdy dowiedziałem się, że twierdzenia o najkrótszej ścieżce stanowią eleganckie rozwiązanie mojego drażliwego problemu!


4

Zawsze uważałem programowanie być nic ale matematyki.

To po prostu nie wygląda jak algebra szkoły średniej.


4

Matematyka jest przedpokojem programowania.

Matematyka, będąc w stanie pracować z warstwami po warstwach abstrakcji, modeli, „uprzedmiotowienia” funkcji, przekształceń i koncepcji czasowych, jest idealnym poligonem do tego wszystkiego.

Możliwe jest wypracowanie odpowiedniego sposobu myślenia bez programowania, ale jest to o wiele trudniejsze.

Jednak oprócz specjalistycznych dziedzin ważne jest tylko rozumienie matematyki, znajomość nazwy wszystkiego i tego, jak można udowodnić dane twierdzenie, nie jest. Więc nawet jeśli masz dobre oceny matematyczne, ponieważ nauczyłeś się tego wszystkiego bez prawdziwego zrozumienia, nadal będziesz miał problemy z programowaniem.


4

Znajomość matematyki jest dobra w niektórych aplikacjach (takich jak gry, sztuczna inteligencja, grafika komputerowa itp.), Ale matematyka uczy czegoś więcej niż tylko formuł lub złożonych równań.

Nauka matematyki jest jak nauka nowego języka programowania. W rzeczywistości programowanie jest stosowane matematyki. Kiedy uczysz się nowego języka, uczysz się wielu rzeczy, które czynią cię lepszym programistą. Z matematyką nie jest inaczej, ale jeśli naprawdę opanujesz matematykę, na zawsze będziesz lepszym programistą, nawet jeśli nie używasz zaawansowanej matematyki w swojej pracy.

Powód jest prosty: matematyka nauczy Cię patrzeć na świat innymi oczami. Uczy rozwiązywania problemów za pomocą różnych podejść bez konieczności programowania. Ten nowy sposób myślenia z pewnością prowadzi cię do lepszego sposobu wykonywania pracy.

Programowanie to sztuka. Matematyka jest sztuką. Jeśli połączysz oba z nich, będziesz lepszym artystą.


Programowanie jest zasadniczo tylko logiką stosowaną, w rzeczywistości matematyka jest również logiką stosowaną.
RibaldEddie

3

Nie.

Podobnie jak w przypadku większości dyscyplin naukowych, dobra znajomość pojęć matematycznych będzie pomocna, szczególnie przy ocenie takich rzeczy jak wydajność. Ale w przypadku większości zadań programistycznych twoja matematyka ma znaczenie tylko wtedy, gdy rozwiązywany problem jest związany z matematyką.

Komputery doskonale radzą sobie z matematyką, więc sensowne jest, aby wczesne komputery były szeroko wykorzystywane do wykonywania „pomruków” związanych z wieloma złożonymi pracami matematycznymi. Wiele programów nadal robi rozwiązywania złożonych problemów matematycznych, w tym przypadku jest dobry w matematyce pomoże Ci napisać lepszy program, ale to nie jest to, co sprawia, że dobry programista.


3

Zwykle nie w tym sensie, że musisz znać, powiedzmy, rachunek różniczkowy lub równanie wyzwalające, aby wykonać większość pracy. Jeśli wykonujesz ciężkie programowanie grafiki / gier, to tak. Słynny Hack matematyki dla Quake jest dobrym tego przykładem. Jednak myślenie, w które musisz wejść, mając do czynienia z matematyką wyższego poziomu, z pewnością dotyczy programowania; programując, rozwijasz własną strukturę logiczną, własne funkcje, własne „dowody”.

Jedyną sytuacją, w której spotykam się z matematyką w pracy (wewnętrzny obieg pracy i aplikacje), jest to, że robię aplikacje do raportowania, które wymagają znajomości statystyki, ale tylko dlatego, że miały one bezpośrednie zastosowanie do wymagań.


3

Powiedziałbym niekoniecznie. Pewne dyscypliny programowania (kryptograficzne, graficzne, silniki fizyki itp.) Z pewnością miałyby wyraźną przewagę dla matematycznie skłonnych, ale nie sądzę, aby dobre zrozumienie równań różniczkowych byłoby szczególnie przydatne na przykład w programowaniu internetowym.

Logika boolowska jest prawdopodobnie wymogiem, aby być dobrym programistą, ale nie zaskoczyłoby mnie, gdyby wiele osób, które nie osiągnęły dobrych ocen z matematyki w szkole średniej, okazało się być dobrym programistą.


3

Powiedziałbym, że zdecydowanie nie musisz być dobry z matematyki, aby być dobrym programistą.

Moja pierwsza praca jako programisty polegała na tworzeniu grafiki 3D dla B-52 i planowania misji Cruise Missile. Była to aplikacja intensywnie wykorzystująca matematykę, ale naprawdę potrzebowałam tylko dostępu do osób, które były dobre / świetne z matematyki. Nie musiałem znać wzoru na obliczanie wielkich odległości między kołami między dwoma punktami. Musiałem wiedzieć, jak przekonwertować formułę, aby działała w języku programowania. To samo z symulacją lotu. Boeing zrobił całą matematykę, którą musieliśmy zastosować.

To doświadczenie pomogło mi również zrozumieć, kto byłby dobrym programistą, a kto nie. Zadanie polegało na tym, że piloci i nawigatorzy odbywali tournee po służbie jako programiści i pomagali programiście zrozumieć potrzeby misji. Zwykle w ciągu kilku tygodni można powiedzieć, którzy piloci i nawigatorzy byliby w tym dobrzy. Kierunki matematyczne zwykle od razu zajmowały się programowaniem.

Powiedziałbym, że bycie dobrym w matematyce zwiększa prawdopodobieństwo, że będziesz dobry w programowaniu, ale znam wielu dobrych programistów, którzy nie są tak dobrzy w matematyce.


3

Nie lubię matematyki i zawsze mam niskie stopnie matematyczne. Nie chcę powiedzieć, że jestem dobrym programistą, ale jestem w branży oprogramowania od 10 lat z wielkim sukcesem.


1
Całkowicie odnoszę się do twoich ocen z matematyki. Właściwie czuję, że nie jestem złym programistą i nie jestem okropny w matematyce, ale z jakiegoś powodu nie wydaje mi się, że mogę przekroczyć „średnią” ocenę z kursów mojej matematyki, bez względu na to, jak bardzo się staram.
Bryan Harrington

@Bryan, mogę odnieść się do tego
Jasonco

3

Czy ludzie, którzy nie lubią matematyki, mogą zostać dobrym programistą?

Nie, nie, nie, nie, tak i nie!

Nie, ponieważ często go potrzebujesz.

(! (a | (! (b && c) || d) && (! e)))

Dlaczego to nie działa?

foo ('a', 'b', 19, g(h))
bar ('c', 'd', 44) 

czy można go przepisać w bardziej abstrakcyjny sposób?

Czy 968 ms jest dłuższe niż 0,7 s? Ile MB potrzebujesz, ile Ghz ma maszyna, wystarczy bajt - matematyka jest codzienną częścią pracy. Czasami wyraźna i wyższa matematyka.

Zawsze pośrednio niższa matematyka.

Matematyka jest szerokim polem, od obliczeń, przez macierz, po geometrię, logikę, statystykę, teorię kategorii, teorię grafów. Więc jeśli uważasz, że programujesz bez matematyki - może się mylisz.

Jeśli spojrzysz na problemy na stronie Project Euler , znajdziesz puzzle, w których nie mam pojęcia, w jaki sposób matematyka jest używana do ich rozwiązania. (Nie żebym mógł rozwiązać je bez matematyki.) Zauważ, że rozmiar problemu jest zwykle tak duży, że nie można go rozwiązać brutalną siłą.

Jednak - skoro nie mogę rozwiązać wielu z nich (do tej pory około 2/3), czy to oznacza, że ​​nie lubię matematyki?

Jeśli nie studiowałeś matematyki, prawdopodobnie nie będziesz wiedział, gdzie możesz znaleźć matematykę w swoim codziennym życiu, w tym programowanie.

Nawet jeśli specjalizujesz się w przenoszeniu komponentów GUI na ekran, aby dobrze wyglądać, robisz matematykę w jakiś sposób.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.