Czy niezbędna jest nauka algorytmów, aby być prawdziwym programistą? [Zamknięte]

21

Jestem programistą PHP i do tej pory nie musiałem uczyć się algorytmów ...

Teraz zaczynam uczyć się języka Python (prawdziwy język programowania), ponieważ muszę używać matplotlib. Czy warto zacząć od przeczytania książki o algorytmach Pythona, a następnie nauczyć się matplotlib i numpy, czy powinienem przejść do matplotlib i numpy?

Z poważaniem,

André
źródło
2
Jeśli nie nauczysz się algorytmów i nie zrozumiesz, co jest najbardziej odpowiednie dla danego zadania, otrzymasz odpowiedzi takie jak te na to pytanie: stackoverflow.com/questions/5498865
kdgregory
1
Prawdopodobnie zaimplementowałeś już kilka algorytmów, nie znając ich nazw ani teorii. Trudno uwierzyć, że ktokolwiek mógłby w ogóle zrobić użyteczne programowanie bez implementacji niektórych algorytmów.
tdammers
2
Algorytm to po prostu zdrowy rozsądek, jak robić rzeczy w optymalny sposób . Podczas programowania musisz używać minimalnych zasobów i zapewnić wydajność, dlatego używasz go cały czas. BTW, co to znaczy Python (prawdziwy język programowania) ??? PHP jest tak samo dobry jak wszystko inne. Chodzi o to, że jest to raczej język skryptowy i pamiętaj, że jest najlepszy w biznesie od dłuższego czasu.
Pankaj Upadhyay

Odpowiedzi:

35

Absolutnie. Bez znajomości algorytmów, jak inaczej zrozumiesz, w jaki sposób program robi to, co robi?

Niezbędne jest zrozumienie rozwoju algorytmu, aby można było programować wydajniej i pisać lepsze programy. Zaczynając, powinieneś przynajmniej znać podstawy takich pojęć, jak sterowanie przepływem (może za pomocą automatu stanu, ale nie zawsze jest to konieczne) i notacja Big O oraz jak może wpływać na wydajność.

Andrew Arnold
źródło
Choć się zgadzam, ile powinienem wiedzieć na temat wprowadzenia wstępu do algorytmów w lokalnym college'u społeczności za drugim razem, gdy był Donaldem Knuthem?
Job
Dobra stara notacja Big Ohno ...
1
Zgadzam się ze znaczeniem wiedzy o złożoności algorytmu („duża notacja O”). Jednak zdecydowanie nie zgadzam się z „absolutnie” odpowiedzią na „czy niezbędne jest nauczenie się algorytmów, aby być prawdziwym programistą”; w rzeczywistości nauczenie się dobrze Pythona jest o wiele bardziej przydatne niż wiedza na temat sortowania listy (ponieważ Python sortuje listy dla Ciebie) lub jak Python obsługuje słowniki (który programista Python kiedykolwiek potrzebował wdrożyć mechanizm mieszania?) itp. Historycznie ludzie mają wyuczone algorytmy, ponieważ są językiem, nie dostarczyły ich po wyjęciu z pudełka; era współczesna jest inna.
Eric O Lebigot,
17

Odpowiedź brzmi: tak i nie. Nie musisz znać szczegółów działania różnych algorytmów ani teorii leżącej u ich podstaw - to zadanie informatyków - ale musisz znać podstawy, takie jak dostępne algorytmy do rozwiązania określonego zadania i który jest najlepszy w danej sytuacji.

W twoim przypadku możesz po prostu zacząć korzystać z bibliotek, o których wspomniałeś - zostały one zbudowane przez kogoś tylko po to, aby ułatwić życie innym. Na pewno nie musisz znać algorytmów, które przyczyniły się do jego zbudowania tylko po to, aby go użyć.

Casablanka
źródło
2
+1 za taki „nowoczesny” komentarz. Algorytmy uczenia się i nauczania powinny być zastrzeżone dla osób, które naprawdę muszą je wdrożyć.
Eric O Lebigot
6

Tak, abyś wiedział, jak zastosować jedno podejście w stosunku do drugiego. Nie chcesz też „wymyślać koła”, ponieważ istnieje wiele istniejących algorytmów, które już działają. Jeśli nie wiesz, że tam są, zmarnujesz czas na wymyślenie potencjalnie słabszego rozwiązania, a nawet nie zrozumiesz, dlaczego jest słabszy.

jmq
źródło
3

Algorytmy dla programisty to młot dla kowala. Pewnie, że możesz sobie poradzić i użyć alternatywnych rozwiązań, aby wykonać zadanie, ale jeśli chcesz zrobić to dobrze i dobrze to zrobić, jest to niezbędne.

Dobrą rzeczą w algorytmach jest to, że jest niezależna od języka programowania, więc naucz się teorii raz i możesz ją zaimplementować w dowolnym języku. Oto dobra strona internetowa, którą zbudowałem, aby zacząć uczyć się od: www.ambesty.com Używają Java, ale zawiera przykładowy kod do nauki. Oferują proste algorytmy ADT i sortowania do bardziej złożonych, takich jak algorytmy kompresji danych. Bardzo ciekawa lektura. Powodzenia

ailan
źródło
1

W zależności od doświadczenia w PHP, jeśli jesteś na etapie, w którym możesz dostosować podstawowe koncepcje programowania z jednego języka do drugiego, zrób to . To byłby najbardziej efektywny sposób na spędzenie czasu.

Przeczytaj, co musisz zrobić, aby zintegrować Matplotlib , numpy i Python. A jeśli utkniesz, nurkuj dalej. Polecam to zamówienie, ponieważ

  • to mniej czasochłonne
  • ty prawdopodobnie nie będzie za każdym zastosowaniu algorytmu przeczytać o
JK
źródło
1

Jeśli tworzysz aplikacje biznesowe (tylko), zapoznaj się tylko z podstawami, takimi jak listy, kolejki, sortowanie, wyszukiwanie ciągów itp., Aby nauczyć się terminologii, wpływu i mierzenia wydajności itd. Lepszym wykorzystaniem twojego czasu byłoby skoncentrowanie się na nowej technologii, wzorcach OO, efektywnym projekcie bazy danych, aplikacji. metodologie rozwoju i takie!

Bez szans
źródło
1

Ok - wiem, że to nie jest dokładnie to, co miałeś na myśli, ale już znasz (jak to zrobić) algorytmy. W zależności od definicji możesz wziąć każdy program jako przykład algorytmu.

Więc nie bój się. Dobrze jest znać podstawowe algorytmy, lepiej znać podstawowe struktury danych, ale jeszcze lepiej znać „wzorce” projektowe. W końcu podstawowe algorytmy i struktury danych zostaną zaimplementowane w wybranym systemie, ale wzorce najprawdopodobniej nie będą ...

Carsten
źródło
0

Naucz się najpierw pytona, a jeśli chcesz, możesz uczyć się algorytmów; Ponieważ algorytmy nie są specyficzne dla języka Python - są ogólnie wszystkie języki.

eggie5
źródło
0

Zanim zacząłem studia na uniwersytecie, uważałem się za dość przyzwoitego programistę i miałem kilka lat doświadczenia zawodowego. Ale kiedy dowiedziałem się o algorytmach i strukturach danych na uniwersytecie, czuję, że to wiedza, którą musisz mieć! Jest niezbędny do wszystkiego, co robisz. Nawet jeśli nie wykorzystasz tej wiedzy bezpośrednio każdego dnia, nadal będzie ona na czubku głowy i sprawi, że będziesz lepszym programistą.

Dowiadujesz się dużo o wydajności i chociaż wydajność zwykle nie jest numerem jeden, znajomość algorytmów uniemożliwi ci robienie głupich rzeczy przy naprawdę złej wydajności. Mimo że wydajność nie jest numerem jeden, nie ma powodu, aby nie wykorzystywać tej wiedzy do podejmowania właściwych decyzji.

Niklas H.
źródło