Chcę być odnoszącym sukcesy deweloperem Java dla przedsiębiorstw. Z jakimi algorytmami i strukturami danych powinienem być dobrze zaznajomiony? Jakie książki poleciłbyś mi?
Aby odnieść sukces jako programista Java, czy muszę znać wszystkie zaawansowane algorytmy, takie jak podane w CLRS ?
Czy możesz zasugerować listę tematów, których powinienem się nauczyć w porządku malejącym według ich priorytetów?
Czy muszę wiedzieć:
- Badawczy?
- Sortowanie?
- Wykresy / drzewa?
itp?
java
learning
algorithms
data-structures
Chankey Pathak
źródło
źródło
Odpowiedzi:
Wprowadzenie do algorytmów Cormena jest dobrą książką dla niektórych podstawowych podstaw teoretycznych.
To powiedziawszy, większość algorytmów i struktur danych została już zakodowana, przetestowana i zoptymalizowana przez innych i nie ma powodu, aby ponownie je wdrażać. Aby odnieść sukces jako programista Java , musisz znać The Collections Framework na wylot.
źródło
Jeśli chcesz być programistą jakiegokolwiek rodzaju, musisz szczegółowo zrozumieć wszystkie podstawowe struktury danych (stosy, kolejki, tablice, listy połączone, tabele skrótów, drzewa itp.). Wystarczająco, byś mógł samodzielnie wdrożyć dowolne z nich, gdybyś znalazł się w świecie bez ram kolekcjonerskich, które wykonałyby zadanie za Ciebie.
Jeśli chodzi o algorytmy, wydaje mi się, że są one większymi narzędziami do zadań, podczas gdy twoje struktury danych są podstawowymi elementami składowymi. Nie sądzę, aby tak ważne było poznanie szczegółów implementacji każdego algorytmu, na który możesz natknąć się. To, co musisz zrobić, to ocenić, jak dobrze algorytm będzie działał w danym celu. Czasami różnica między wyszukiwaniem głębokościowym a wyszukiwaniem pierwszego stopnia lub rodzajem sortowania danych może mieć bardzo duży wpływ na wydajność lub ogólny sukces kodu, więc umiejętność oceny tego jest bardzo ważna.
źródło
Oprócz innych odpowiedzi chciałbym tylko dodać, że badanie algorytmów służy nie tylko poznaniu dobrze znanych technik (co jest nadal ważne), ale także zrozumieniu procesu myślowego, który idzie w grę rozwiązanie problemu, na który napotykasz w prawdziwym życiu, niekoniecznie dobrze znane.
źródło
Dobrze, że chętnie poszerzasz swoje umiejętności programistyczne. Ważne jest jednak, aby nie traktować algorytmów jako katalogu rzeczy do zapamiętania. Aby zostać dobrym programistą (w Javie lub czymkolwiek innym), musisz zrozumieć analizę algorytmiczną.
Nauczysz się tego, ucząc się wybranych struktur danych i algorytmów oraz ucząc się analizować ich wydajność pod względem czasu i przestrzeni (pamięci). Wyszukiwanie, sortowanie, wykresy, drzewa, hałdy, stosy i wszystkie te dobre rzeczy. Powinno to również podążać za podstawami teorii obliczeń i matematyki dyskretnej (nawet jeśli w dziedzinie Javy nigdy nie będziemy mogli bezpośrednio korzystać z tych dwóch tematów - ich korzyści są pośrednie).
Oddziel naukę języka programowania (w Twoim przypadku Java) od nauki analizy algorytmicznej (która różni się od „zapamiętywania” algorytmów i struktur danych).
George T. Heineman, Gary Pollice i Stanley Selkow „Algorytmy w pigułce” to dobry początek. „Algorytmy” Sanjada Dasgupty, Christosa Papadimitriou i Umesh Vazirani to kolejny dobry podręcznik licencjacki.
Najlepiej jest wziąć udział w 9-12 kursach kredytowych z zakresu programowania przed podjęciem studiów licencjackich na poziomie 3000 algorytmów. Poza tym samokształcenie z dwiema książkami, o których wspomniałem, może być dobrą alternatywą (samokształcenie może nie być jednak dla wszystkich).
Powodzenia!
źródło