Zdarzyło mi się debatować z przyjacielem podczas studiów, czy zaawansowana matematyka jest niezbędna dla każdego doświadczonego programisty. Zwykł zaciekle argumentować przeciwko temu. Powiedział, że programiści potrzebują tylko podstawowej wiedzy matematycznej z matematyki w szkole średniej lub na pierwszym roku studiów, ni mniej, ni więcej, i że prawie wszystkie zadania programistyczne można wykonać nawet bez zaawansowanej matematyki. Twierdził jednak, że algorytmy są fundamentalnym i niezbędnym atutem dla programistów.
Moje stanowisko było takie, że wszystkie postępy w informatyce zależą prawie wyłącznie od postępów w matematyce, a zatem gruntowna znajomość matematyki bardzo pomogłaby programistom w pracy nad trudnymi problemami w świecie rzeczywistym.
Nadal nie mogę ustalić, która strona argumentów jest poprawna. Czy mógłbyś opowiedzieć nam swoje stanowisko na podstawie własnego doświadczenia?
Odpowiedzi:
Aby odpowiedzieć na zadane pytanie, musiałbym powiedzieć: „Nie, matematyka nie jest konieczna do programowania”. Jednak, jak sugerowali inni ludzie w tym wątku, uważam, że istnieje korelacja między rozumieniem matematyki a umiejętnością „myślenia algorytmicznego”. To znaczy móc myśleć abstrakcyjnie o ilości, procesach, związkach i dowodach.
Zacząłem programować, kiedy miałem około 9 lat i trudno byłoby powiedzieć, że na tym etapie nauczyłem się dużo matematyki. Jednak przy odrobinie wysiłku byłem w stanie zrozumieć zmienne, pętle, instrukcje goto (wybacz mi, byłem Vic 20 BASIC i nie czytałem jeszcze żadnego Dijkstry) i podstawową geometrię współrzędnych, aby umieścić grafikę na ekranie .
Ostatecznie ukończyłem z wyróżnieniem stopień z czystej matematyki z maturą informatyki. Chociaż skupiałem się głównie na analizie, studiowałem także sporo dyskretnej matematyki, teorii liczb, logiki i teorii obliczalności. Oprócz możliwości zastosowania kilku pomysłów ze statystyki, teorii prawdopodobieństwa, analizy wektorów i algebry liniowej do programowania, studiowałem niewiele matematyki, która miała bezpośrednie zastosowanie do mojego programowania na studiach licencjackich oraz programowania komercyjnego i badawczego, które zrobiłem później.
Jestem jednak głęboko przekonany, że formalne metody myślenia, których wymaga matematyka - staranne rozumowanie, poszukiwanie kontrprzykładów, budowanie podstaw aksjomatycznych, dostrzeganie powiązań między pojęciami - były ogromną pomocą, gdy zajmowałem się dużymi i złożonymi projektami programistycznymi.
Rozważ sposób, w jaki sportowcy trenują do swojego sportu. Na przykład piłkarze bez wątpienia spędzają większość czasu treningowego na podstawowych umiejętnościach piłkarskich. Jednak, aby poprawić swoją ogólną sprawność, mogą również spędzać czas na siłowni na rowerze lub wiosłowaniu, ćwicząc ciężary itp.
Studiowanie matematyki można przyrównać do treningu siłowego lub treningu przekrojowego, aby poprawić swoją siłę psychiczną i wytrzymałość do programowania. Ćwiczenie podstawowych umiejętności programowania jest absolutnie niezbędne, ale studiowanie matematyki to niesamowity trening umysłowy, który poprawia podstawowe zdolności analityczne.
źródło
Podczas gdy zaawansowana matematyka może nie być wymagana do programowania (chyba że programujesz zaawansowane możliwości matematyczne), proces myślowy programowania i matematyki jest bardzo podobny. Zaczynasz od podstawy znanych rzeczy (aksjomaty, wcześniej sprawdzone teorie) i próbujesz dostać się w nowe miejsce. Nie możesz pominąć kroków. Jeśli pominiesz kroki, musisz wypełnić puste miejsca. To krytyczny proces myślowy, który sprawia, że te dwie rzeczy są niesamowicie podobne.
Ponadto matematycy i programiści myślą krytycznie w sposób abstrakcyjny. Rzeczy ze świata rzeczywistego są reprezentowane przez obiekty i zmienne. Umiejętność tłumaczenia z konkretu na abstrakcję również łączy te dwie dziedziny.
Jest bardzo duża szansa, że jeśli jesteś dobry w jednym, prawdopodobnie będziesz dobry w drugim.
źródło
informatyka! = programowanie
OK, poważnie, znam dobrych i złych programistów, którzy studiowali angielski i psychologię, a niektórzy byli na kierunkach informatyka. Niektórzy bardzo znani faceci, których podziwiam jako programiści, nie mieli przygotowania CS. Na przykład Larry Wall (Perl) był lingwistą. Z drugiej strony warto wiedzieć coś o domenie, nad którą pracujesz, ponieważ wtedy możesz przynajmniej sprawdzić, czy Twoje dane mają sens i pomóc klientowi / użytkownikom dotrzeć do tego, czego naprawdę chcą. I tak, istnieje problem złożoności obliczeniowej i wydajnych struktur danych oraz poprawności programu. Tych rzeczy uczysz się w informatyce i jest to przydatne w prawie każdej dziedzinie, ale nie jest to ani konieczne, ani wystarczające.
źródło
Myślę, że będę pierwszą osobą, która powie, że potrzebujesz matematyki. Jak powiedzieli inni, matematyka nie jest aż tak ważna dla niektórych aspektów rozwoju, ale bardzo ważne są podstawy krytycznego myślenia i ustrukturyzowanej analizy.
Co więcej, matematyka jest ważna dla zrozumienia wielu podstaw, które dotyczą takich rzeczy, jak harmonogramy, optymalizacje, sortowanie, zarządzanie protokołami i wiele innych aspektów komputerów. Chociaż matematyka na poziomie obliczeń nie jest złożona (jest to głównie algebra licealna), teorie i zastosowania mogą być dość złożone, ponieważ solidne zrozumienie matematyki za pomocą rachunku różniczkowego będzie bardzo korzystne.
Czy możesz się bez tego obejść, absolutnie i nie powinieneś pozwolić, aby mniej dogłębna znajomość matematyki cię powstrzymywała, ale gdybyś miał szansę lub skłonność, bym uczył się jak najwięcej matematyki, rachunku różniczkowego, teorii numerycznej, liniowej algebra, kombinatoryka, zastosowania praktyczne, wszystko to ma zarówno praktyczne, jak i teoretyczne zastosowania w szerokim zakresie informatyki.
Znałem ludzi, którzy odnieśli wielkie sukcesy po obu stronach płotu (ci bez silnego nacisku na matematykę i ci, którzy chodzili do szkoły na fizykę lub matematykę), ale w obu grupach lubili problemy numeryczne i uczenie się algorytmów i teorii matematyki .
źródło
Mam dyplom z matematyki, ale nie przypominam sobie, żebym wymagał tej matematyki tylko raz w mojej karierze. Było to przydatne, jeśli chodzi o ćwiczenie mojego umysłu w logicznym myśleniu, ale nie napisałem żadnego kodu wykorzystującego dynamikę płynów, teorię kwantową ani łańcuchy Markowa. (Podejrzewam, że najbardziej prawdopodobne jest pojawienie się tego ostatniego).
Większość programistów branżowych nie potrzebuje przez większość czasu zaawansowanych matematyki. Czasami znajomość trygonometrii może pomóc, a na pewno umiejętność zrozumienia wystarczającej liczby matematyki do implementacji algorytmów opisanych matematycznie może być ważna - ale poza tym? Nie.
Nie zapominaj, że większość programistów nie robi postępów w informatyce - tworzą aplikacje. Nie muszę znać zaawansowanej inżynierii, aby prowadzić nowoczesny samochód, chociaż ten samochód prawie na pewno został ulepszony dzięki zaawansowanej inżynierii.
źródło
Twierdzę, że posiadanie zaawansowanej logiki (dyskretnej) matematyki może naprawdę pomóc. To razem z teorią mnogości. Te dyscypliny mogą bardzo pomóc w przypadku typowych programów komputerowych. Jednak wiele innych matematyki, którą uczyłem się na uniwersytecie, to rachunek różniczkowy, który, o ile widzę, miał bardzo ograniczone zastosowanie. Ponieważ 90% (lub coś w tym rodzaju) programowania polega na tworzeniu aplikacji biznesowych z bardzo prostą matematyką, powiedziałbym, że w większości można sobie poradzić z bardzo małą wiedzą matematyczną. Jednak dobre zrozumienie algebry boolowskiej, logiki, matematyki dyskretnej i teorii mnogości może naprawdę wynieść Cię na wyższy poziom.
źródło
Pójdę tutaj pod prąd i powiem „Tak”
Przechodzę z inżynierii lądowej na programowanie (Concrete Sucks!). Moje wykształcenie matematyczne składa się ze zwykłych zajęć z pierwszego roku, drugiego i trzeciego roku Rachunku (Diff EQ, całkowanie objętości, szeregów, transformacji Fouriera i Laplace'a) oraz kursu analizy numerycznej.
Uważam, że mojej matematyce niewiarygodnie brakuje programowania komputerowego. Brakuje mi całych obszarów dyskretnej matematyki i logiki, a przetrwam tylko dzięki obszernej bibliotece podręczników, Wikipedii i Wolframa. Większość zaawansowanych algorytmów opiera się na zaawansowanej matematyce i nie jestem w stanie opracować zaawansowanych algorytmów bez przeprowadzania rozległych badań (w zasadzie odpowiednik pół kursu). Z pewnością nie jestem w stanie wymyślić NOWYCH algorytmów, ponieważ po prostu nie wiem nie ma matematycznych podstaw, jak ramiona gigantów, na których można stanąć.
źródło
To zależy od tego, co robisz. Jeśli dużo zajmujesz się programowaniem 3D, znajomość geometrii 3D jest z pewnością niezbędna, prawda? ;-) Jeśli chcesz utworzyć nowy format obrazu, taki jak JPG, lub nowy format audio, taki jak MP3, jesteś również zagubiony, jeśli nie możesz zrozumieć transformacji cosinusowej lub Fouriera, ponieważ są to podstawy, na których opiera się najbardziej stratna kompresja . Wiele innych problemów można rozwiązać lepiej, jeśli dość dobrze znasz matematykę.
Istnieje również wiele innych zadań programistycznych, które nie wymagają wiele matematyki.
źródło
Jeśli uważasz, że temat jest na tyle fascynujący, że chcesz go opublikować, po prostu zacznij się uczyć. Reszta przyjdzie naturalnie.
źródło
Tak, nie ma potrzeby zaawansowanej matematyki - jeśli programujesz komercyjne - oprogramowanie z półki.
Jednak w przypadku hardcorowych rzeczy, takich jak:
Przydać się może trochę zaawansowanej wiedzy matematycznej. I to nie jest tak, że są to problemy „nie z tego świata”.
Musiałem stworzyć oprogramowanie, aby spróbować „przewidzieć” ilość papieru potrzebną do biura (i po prostu piekło było znaleźć najlepszy sposób na przybliżenie wartości).
Trzeba jednak uważać, bo przy zaawansowanych rzeczach łatwo się pogubić - jest mój znajomy, który użył Turinga do przechowywania stanu dynamicznego menu tylko po to, żeby je poprawnie wyświetlić - bum ... może puścił się za daleko w swojej wyobraźni.
źródło
Jaki rodzaj programowania?
Z mojego doświadczenia komercyjnego nie potrzebowałem zaawansowanej matematyki, ale jest to mocno uzależnione od dziedziny, w której się pracujesz.
Grafika komputerowa wymaga dużej ilości zaawansowanej matematyki. Wiele akademickich programów komputerowych wymaga zaawansowanej matematyki.
Mówiąc więc, istnieje tendencja do korelacji między ludźmi, którzy są dobrzy z matematyki, a ludźmi, którzy są dobrzy w programowaniu.
Mam nadzieję, że ta niewyraźna odpowiedź pomoże.
źródło
Matematyka jest potrzebna programistom w niektórych dziedzinach, ale w innych jest prawie bezużyteczna.
Jeśli jesteś twórcą gier i musisz dużo pracować z fizyką - zrozumienie matematyki jest kluczowe. Jeśli pracujesz z zaawansowanymi kontrolkami wizualnymi - nie możesz wiele zrobić bez geometrii. Jeśli planujesz wykonać jakieś obliczenia finansowe - NAPRAWDĘ pomogłaby Ci solidna znajomość statystyki.
Z drugiej strony przez ostatnie 5 lat miałem tylko 2 lub 3 projekty, w których w ogóle była wymagana DOWOLNA ilość matematyki. Spośród nich tylko 1 przypadek nie pomógł w wyszukiwaniu w Google.
Pod koniec dnia nawet obliczenia finansowe są bardzo często czymś, co Twoi klienci robią za Ciebie i dają Ci formuły do wdrożenia.
Więc jeśli prowadzisz działalność związaną z oprogramowaniem stosowanym, prawdopodobnie nigdy nie wykorzystasz swojego dyplomu z matematyki. Jeśli zajmujesz się oprogramowaniem akademickim, matematyka jest kluczowa.
źródło
Zgadzam się z Chrisem. Powiedziałbym też „Tak”. Ale to zależy od twojego rynku, jak wspomniano powyżej. Jeśli po prostu tworzysz podstawowe, gotowe aplikacje lub narzędzia do pisania, które pomagają w codziennej pracy ... matematyka nie jest tak ważna.
Inżynieria niestandardowych rozwiązań oprogramowania wymaga wielu rozwiązań problemów i krytycznego myślenia. Umiejętności, które z całą pewnością są rozwijane, gdy obecne jest przygotowanie matematyczne. Skończyłem matematykę ze stopniem inżynierii komputerowej i przypisuję mojemu wykształceniu matematycznemu, dlaczego jestem tam, gdzie dziś jestem.
To moje 2 centy, czytając powyżej, mogę stwierdzić, że wielu się z tym nie zgodzi. Zachęcam wszystkich do rozważenia, że nie mówię, że nie można mieć tych umiejętności bez przygotowania matematycznego, po prostu stwierdzam, że umiejętności są efektem ubocznym posiadania takiego przygotowania i mogą pozytywnie wpływać na oprogramowanie.
źródło
Z mojego doświadczenia wynika, że matematyka jest wymagana w programowaniu, nie można od niej uciec. Całość programowania oparta jest na matematyce.
Problem nie jest czarno-biały, ale bardziej kolorowy. Nie chodzi o to, czy potrzebujesz matematyki, ale ile. Wyższe poziomy matematyki dadzą ci więcej narzędzi i otworzą twój umysł na różne ścieżki.
Na przykład możesz zaprogramować, jeśli znasz tylko dodawanie i odejmowanie. Gdy wymagane jest mnożenie, będziesz musiał wykonać wiele dodatków. Mnożenie upraszcza powtarzalne dodawanie. Algebra pozwala uprościć matematykę przed wprowadzeniem jej do programów. Algebra liniowa dostarcza narzędzi do przekształcania obrazów. Algebra Boole'a zapewnia mechanikę redukcji wszystkich tych
if
stwierdzeń.I nie zapomnij o rodzeństwie matematyki, logiki i filozofii. Logika pomoże Ci efektywnie wykorzystać stwierdzenia
case
lubswitch
. Filozofia pomoże ci zrozumieć sposób myślenia faceta, który napisał kod, który modyfikujesz.Tak, nie potrzebujesz dużo matematyki do pisania programów. Niektóre programy mogą wymagać więcej matematyki niż inne. Większa wiedza matematyczna da ci przewagę nad tymi, którzy mają mniejszą wiedzę. W dzisiejszych czasach ludzie potrzebują każdej korzyści, jaką mogą uzyskać, aby uzyskać te miejsca pracy.
źródło
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.
źródło
Oczywiście zależy to od tego, jakim typem programisty chcesz być, lub lepiej, jakim programistą chcesz, abyś był Twoim pracodawcą. Myślę, że rachunek różniczkowy i algebra to podstawa, a programowanie statystyczne i liniowe jest rzeczywiście dobrym narzędziem w teczce, być może bez analizy (pochodnych, całek, funkcji ...) można by się obejść. Ale jeśli chcesz wiedzieć, jak działają rzeczy dogłębnie (na przykład elektronika lub niektóre nietrywialne algorytmy), „zaawansowana” matematyka jest czymś, bez czego lepiej nie rezygnować z nigdzie.
źródło
Większość programów, które zrobiłem, dotyczyła symulacji fizycznych do badań, w tym elektromagnetyzmu, mechaniki kwantowej i mechaniki strukturalnej. Ponieważ domeny problemowe mają zaawansowaną matematykę związaną z nimi, trudno byłoby mi je rozwiązać bez użycia zaawansowanej matematyki.
Zatem odpowiedź na twoje pytanie brzmi - to zależy od tego, co próbujesz zrobić.
źródło
Zaawansowana znajomość matematyki jest niezbędna, jeśli zamierzasz pisać nowy język programowania. Lub musisz napisać własne algorytmy.
Jednak dla większości programów z dnia na dzień - od stron internetowych do rozpatrywania wniosków ubezpieczeniowych - tylko podstawowe matematyki są konieczne .
źródło
Ktoś, kto ma solidne podstawy matematyczne (nie tylko arytmetyczne) lub logiczne, dobrze poradzi sobie z algorytmami, zastosowaniem zmiennych, rozumowaniem warunkowym i strukturami danych.
Matematyka pomoże ci w pewnym momencie, ale tylko w pewnym momencie.
źródło
Nie sądzę, aby zaawansowana wiedza matematyczna była niezbędna dla dobrego programisty, ale z własnego doświadczenia myślę, że programiści, którzy lepiej opanowali matematykę zaawansowaną, są również lepszymi programistami. Może to po prostu wynikać z bardziej logicznego umysłu lub bardziej logicznej perspektywy wynikającej z ich doświadczeń związanych z rozwiązywaniem problemów matematycznych.
źródło
Podstawową koncepcją matematyki jest następujące, opracowanie, zrozumienie, implementacja i użycie algorytmów. Jeśli nie możesz robić matematyki, to dzieje się tak, ponieważ nie możesz robić tych rzeczy, a jeśli nie możesz tego robić, nie możesz być skutecznym 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 fizyczne), ale podstawowe umiejętności są identyczne i brak umiejętności w jednej domenie będzie odpowiadał brakowi umiejętności w drugiej domenie.
źródło
Matematyka to zestaw narzędzi do tworzenia programów. Polecam wprowadzenie Cormena do algorytmów. Dotyka bardziej „matowych” rzeczy.
źródło
Nie sądzę, aby wyższa matematyka była warunkiem bycia dobrym programistą - jak zawsze zależy to od tego, co kodujesz.
Oczywiście, jeśli zajmujesz się programowaniem grafiki 3D, będziesz potrzebować macierzy i innych rzeczy. Jako autor oprogramowania biznesowego prawdopodobnie będziesz potrzebować matematyki statystycznej.
Ale bycie profesjonalnym programistą przez prawie 10 lat (i kolejne 10 lat amatorem) „wyższej matematyki” nie jest czymś, czego potrzebowałem regularnie. W około 99,8% wszystkich przypadków jest to po prostu plus, minus, dzielenie i mnożenie w niektórych inteligentnych kombinacjach - w większości przypadków chodzi o algorytmy, a nie matematykę.
źródło
Dla większości programistów uczenie się wyższej matematyki jest ważne po prostu dlatego, że zmusza mózg do logicznego myślenia krok po kroku, aby przejść od jednej rzeczy do drugiej.
Jednak bardzo niewiele prac programistycznych wymaga czegoś więcej niż matematyka w szkole średniej. Kiedyś użyłem algebry liniowej. Nigdy nie używałem rachunku różniczkowego. Codziennie używam algebry.
źródło
Wiedza matematyczna jest często przydatna dla programisty, podobnie jak umiejętności projektowania graficznego, umiejętność rozwiązywania zagadek, etyka pracy i szereg innych umiejętności i cech. Bardzo niewielu programistów jest dobrych we wszystkim, w czym programista może być dobry. Nie zgodziłbym się z żadnym stwierdzeniem w postaci „nie jesteś prawdziwym programistą, chyba że możesz { wstaw tutaj ulubioną umiejętność programowania }”.
Ale obawiałbym się programisty, który nie potrafi matematyki. Bardziej niż tego, który nie potrafił rysować.
źródło
Myślę, że to naprawdę zależy od tego, co próbujesz zrobić, ale IMHO, teoria CS i OS są tutaj ważniejsze niż matematyka i naprawdę potrzebujesz tylko matematyki, którą one obejmują.
Na przykład, istnieje wiele podstaw CS w teorii planowania i optymalizacji, które stoją za wieloma planistami w nowoczesnych systemach operacyjnych. To jest przykład czegoś, co wymagałoby trochę matematyki, ale nie jest to coś bardzo skomplikowanego.
Ale szczerze, w przypadku większości rzeczy matematyka nie jest potrzebna. To, czego potrzebujesz, to nauczyć się umiejętności myślenia o podstawie 2 i 16, takiej jak umiejętność mentalnego LUB / AND. Na przykład, jeśli masz bajt i wewnątrz tego bajtu znajdują się dwa 3-bitowe pola i 2 zmarnowane bity, wiedząc, które bity są w których polach są aktywne, gdy wartość bajtu wynosi około 11, sprawi, że rzeczy będą nieco szybsze niż konieczność użycia pióro i papier.
źródło
Zacząłem programować mniej więcej w tym samym czasie, kiedy rozpocząłem naukę na wstępie do algebry. Więc nie powiedziałbym, że matematyka jest aż tak ważna, chociaż może pomóc w pewnych typach programowania, zwłaszcza funkcjonalnych.
Nie uczyłem się jeszcze matematyki dyskretnej, ale widzę wiele teorii związanych z programowaniem napisanych w notacji matematycznej, której uczy się na tych zajęciach.
Upewnij się również, że wiesz, jak obliczyć cokolwiek w dowolnej bazie, zwłaszcza w podstawie 2, 8 i 16.
Jedną z klas, która naprawdę przyniosła mi pewne koncepcje, była ta klasa przygotowująca do programowania. Uczyliśmy się o związkach, skrzyżowaniach i innych radosnych rzeczach, i to prawie dokładnie odpowiada matematyce bitowej. Bardzo dokładnie omówiliśmy logikę boolowską. To, co uznałem za najbardziej przydatne, to moment, w którym nauczyliśmy się redukować złożone wyrażenia logiczne. To było bardzo przydatne:
można uprościć do
Czego wcześniej nie rozumiałem.
źródło
Cóż, wygenerowałeś wiele odpowiedzi i nie, nie przeczytałem ich wszystkich. Jestem w środku, nie, na pewno nie potrzebujesz matematyki, żeby być programistą. Assembler vs sterowniki urządzeń w Linuksie są nie mniej ani bardziej skomplikowane niż inne i nie wymagają matematyki.
W żadnym wypadku nie musisz zdawać ani zaliczać żadnych zajęć z matematyki.
Zgodzę się, że podejście do rozwiązywania problemów w programowaniu jest dość podobne do podejścia matematycznego, w wyniku czego matematyka prawdopodobnie przychodzi łatwo. lub wręcz przeciwnie, jeśli matematyka jest trudna, programowanie może być trudne. Zajęcia, stopień naukowy, jakiekolwiek kartki papieru czy trofea nie są wymagane, oczywiście, żeby się czegoś nauczyć.
Teraz, jeśli nie możesz szybko przekonwertować z szesnastkowego na dwójkowy na dziesiętny ani w głowie, na papierze, ani przy użyciu kalkulatora, będziesz miał problemy. Jeśli chcesz dostać się do sieci i innych rzeczy, które wymagają synchronizacji, co często robią sterowniki jądra, ale nie muszą. Będziesz walczyć. Znam bardzo długą listę osób z dyplomami matematycznymi i / lub informatycznymi i / lub inżynierskimi, które borykają się z obliczeniami szybkości, bitów na sekundę, bajtów na sekundę, ilości pamięci potrzebnej do zrobienia czegoś itd. w pewnym stopniu można to uznać za swego rodzaju talent, który niektórzy mają, a inni muszą pracować.
Najważniejsze jest to, że wierzę w siłę woli, jeśli chcesz się tego nauczyć i chcesz, to jest takie proste. Nie musisz brać udziału w zajęciach ani wydawać dużo pieniędzy, na przykład linux i qemu mogą zająć cię przez dłuższy czas, różne języki asm, itp. Środowiska powodujące awarię dla rozwoju jądra, osadzone itp. Nie jesteś ograniczony do tego , ale nie wierzę, że musisz uciekać i chodzić na jakieś zajęcia, jeśli nie chcesz. Jeśli chcesz wziąć udział w zajęciach ee, cs i matematyce.
źródło
Potrzebujesz matematyki. Programowanie to nic innego jak matematyka. Wszelkie ustalenia fizyki teoretycznej nie stają się implikacją praktyczną (możliwą do zastosowania), chyba że zostaną wyjaśnione za pomocą rozwiązań matematycznych. Żadnego z nich nie można rozwiązać obliczeniowo, jeśli nie można ich zinterpretować na komputerach, a dokładniej w językach programowania. W ten sposób opracowuje się różne języki, aby rozwiązywać określone problemy. Ale w przypadku języków programowania ogólnego przeznaczenia, takich jak java, c, c ++, większość naszych zadań programistycznych obejmuje powtarzalne (ciągłe) rozwiązywanie tych samych problemów, takich jak wyodrębnianie wartości z bazy danych, plików tekstowych, umieszczanie ich w systemie Windows (komputer stacjonarny, sieć), manipulowanie te same wartości, czasami dostęp do niektórych danych z podobnych urządzeń (ale z różnymi nazwami handlowymi, innym portem i bólem głowy) itp., który nie wymaga więcej niż jednolitej metody
źródło
IMO, prawdopodobnie potrzebujesz zdolności matematycznych, niekoniecznie posiadając dużą wiedzę w tej dziedzinie. Zatem rzeczy, których potrzebujesz, aby być dobrym z matematyki, są podobne do rzeczy, których potrzebujesz, aby być dobrym w programowaniu.
Ale generalnie nie pamiętam, kiedy ostatnio korzystałem z jakiejkolwiek zaawansowanej matematyki w codziennym programowaniu, więc nie.
źródło