Natknąłem się na cytat z Billa Gatesa: „Zdecydowanie powinieneś przesłać mi CV, jeśli możesz przeczytać całość”. Mówił o książkach The Art of Programming . Byłem więc bardzo ciekawy i chcę to wszystko przeczytać. Ale szczerze mówiąc, nie rozumiem tego.
Naprawdę nie jestem aż tak intelektualna. To powinien być powód, dla którego nie mogę tego zrozumieć, ale chętnie się uczę. Obecnie czytam tom 1 o podstawowych algorytmach. Czy są jakieś książki, które są przyjazne dla nowicjuszy / ludzi powolnych, takich jak ja, które pomogłyby mi poszerzyć moją wiedzę, aby w przyszłości z łatwością czytać książkę Knutha?
algorithms
books
taocp
Rho
źródło
źródło
Odpowiedzi:
Nawet myślę, że książka Knutha jest nieco zaawansowana i trudna do zrozumienia. Te książki są zdecydowanie dla algorytmów na poziomie badawczym IMHO.
Wprowadzenie do algorytmów przez CLRS jest znacznie prostsze.
EDYCJA :
Jeśli jednak chcesz przeczytać książkę Knutha, powinieneś najpierw zapoznać się z konkretną matematyką . Knuth chce, aby jego uczniowie byli świadomi podstawowej matematycznej części analizy algorytmów.
źródło
Przeczytaj całą ofertę Gatesa, w tym:
Nie są to łatwe książki i takie nie są. Pamiętaj, że jednym z celów Knutha było wprowadzenie matematyki do informatyki . To świetnie, jeśli chcesz udowodnić coś o algorytmie, ale nie tak świetne, jeśli chcesz tylko wiedzieć, jak to działa.
Michael Dorfman ma kilka dobrych wskazówek na temat czytania książek w swojej odpowiedzi na (teraz usunięte) pytanie na Stackoverflow o tym, co mogę uzyskać z czytania partii? . Jeśli nie masz 10k powtórzeń, nadal możesz wyświetlić pytanie i jego odpowiedź na maszynie powrotnej .
W przypadku innych zasobów odkryłem, że przydatne jest przeglądanie sylabusów cenionych szkół informatycznych. Na przykład podręczniki do rozpoczynania klas algorytmów:
źródło
Knuth jest najbardziej szanowanym, cytowanym, rozmawianym i szanowanym pisarzem informatyki w historii. Jego książki zdobią półki wszystkich poważnych twórców oprogramowania i są przywoływane z takim samym szacunkiem, jakim ludzie obdarzają Biblię i Art of War.
Słyszałem nawet, że niektórzy ludzie rzeczywiście czytali fragmenty książek Knutha.
Większość ludzi po prostu zamierza .
Osobiście oszczędzam je na emeryturę
źródło
Książki Knutha na zawsze zmieniły pole algorytmów. On sam powiedział, że „2 strony w mojej książce to czyjaś kariera” i że jego książki były trudne do odczytania. Książka zawiera skondensowany materiał z lat pracy w informatyce.
Nie powinieneś czuć się źle, jeśli nie możesz tego zrozumieć.
Jak powiedział Prasoon, CLRS jest prostszą książką do przeczytania.
Masz również algorytmy Rajasekaran, Sahni i in., Które są łatwe do zrozumienia.
źródło
Kiedy po raz pierwszy ukończyłem szkołę, podarowałem sobie pierwsze trzy tomy TAOCP jako prezent dyplomowy i próbowałem przeczytać je od razu. Nigdy nie dałem rady. W dzisiejszych czasach udało mi się przejrzeć może 1/3 pierwszych trzech tomów (nie ma żadnej konkretnej kolejności). Materiał jest zdecydowanie gęsty, ale nauczyłem się trzech wskazówek, które bardzo pomogły.
Po pierwsze, nie próbuj czytać od deski do deski. TAOCP jest tak samo pracą referencyjną, jak cokolwiek innego, i uważam, że najlepiej jest przeczytać sekcję, która dotyczy problemu, który próbujesz rozwiązać. Jak wiele rzeczy na świecie, zrozumienie rozwiązań jest znacznie łatwiejsze, gdy napotkasz problemy, które próbują rozwiązać.
Następnie, ten schemat blokowy na początku książki, to nie tylko trochę humoru, ale właściwie całkiem przydatna wskazówka. Przeczytaj sekcje, nad którymi pracujesz iteracyjnie, zaczynając od nadrzędnych koncepcji, a następnie delikatnie zagłębiając się w matematykę.
Na koniec trzymaj pod ręką dobry, staroświecki papier i ołówek, aby przejrzeć algorytmy w sposób, w jaki zostały opisane, i rozwiązać kilka prostych problemów. Pomaga wzmocnić to, co czytasz.
źródło
Nie martw się, większość ludzi nie rozumie sztuki programowania komputerowego (TAOCP). Więc nie myśl, że jesteś powolny lub nowicjusz z powodu niezrozumienia - jesteś jak 99,99% z nas, którzy go nie rozumieją.
Jesteś dość ambitny, jeśli chcesz dostać się na poziom, na którym możesz z łatwością czytać TAOCP . Ja tylko przeglądałem książki, zanim je odłożyłem. Prawdopodobnie tylko garstka ludzi na tej planecie rozumie TAOCP.
Sprawdź post: Książki Programiści naprawdę nie czytają Billa jaszczurki.
Jest tam wiele innych książek, które są dość czytelne , zrozumiałe i możesz od razu z nich skorzystać .
Osobiście lubię:
źródło
jeśli zdefiniujesz się jako taki,
not a highly intellectual being
wówczas stawiasz sobie niskie oczekiwania. Musisz przełamać tę mentalność, jeśli chcesz zrobić coś wartościowego. Nie powinno być wątpliwości, że można coś osiągnąć. Również osiągnięcie tego nie oznacza, że łatwo to osiągniesz.Rzeczy, które warto realizować, są trudne ... i to nie jest banał. W oprogramowaniu, inżynierii i ogólnie w życiu, jeśli chcesz coś osiągnąć, musisz wybierać rzeczy trudne, rzeczy, których ludzie unikają, a nie zadowalać się najniższymi wspólnymi mianownikami rzeczy.
Po pierwsze, nie jest jasne, jakie jest twoje tło CS. Książka Knutha wymaga pewnego stopnia dojrzałości. Niewiele osób z dyplomem CS może z łatwością przejść przez to. Nie spodziewałbym się, że student CS, który właśnie ukończył swój pierwszy kurs z algorytmów, byłby w stanie przejść choćby jedną książkę Knutha. Dojrzałości potrzebnej do jej osiągnięcia po prostu nie ma, a to nie ma nic wspólnego ze zdolnościami umysłowymi ucznia.
Musisz mieć podstawowe algorytmy na niskim poziomie i jasne, i musisz mieć spory zasób programowania (pracy i / lub scholastyki) pod swoim pasem - powiedziałbym, że przynajmniej 40 punktów za programowanie. Musisz także mieć matematykę CS na twardym gruncie.
Nie możesz posunąć się daleko, nie mając dobrego zrozumienia matematyki dyskretnej (i ewentualnie teorii obliczeń).
Nie chodzi o to, że będziesz potrzebować tej wiedzy, aby pracować nad problemami Knutha, ale potrzebujesz dojrzałości, aby móc przejść przez ten rodzaj materiału.
Najpierw wybierz jedną książkę i tylko jedną książkę (książka CLRS, jak wcześniej sugerowano) i pracuj od początku do końca. Jeśli to możliwe, wykonaj programy wdrażające algorytmy. Nie używaj Java ani C #, nawet C ++. Idź do gołych kości C i poczuj się jak budowanie rzeczy z metalowych skrawków.
Zdobądź także książkę Knutha na temat „Matematyki konkretnej”, jeśli nie zrobiłeś kursu matematyki dyskretnej i teorii obliczeń. Dobrze byłoby, gdybyś również przejrzał tę książkę.
Następnie zajmij się encyklopedią Knutha, jedną księgę, jeden rozdział na raz. Nie przechodź do następnego rozdziału bez dobrego zrozumienia pierwszego.
Proponuję najpierw przejrzeć tom I (podstawowe algorytmy), a następnie tom III (wyszukiwanie i sortowanie). To powinny być twoje bezpośrednie cele. Następnie, później (znacznie później), zmierzyć się z tomem IV (algorytmy kombinatoryczne), a następnie z tomem II (algorytmy półnumeryczne).
Nie czuj się źle, jeśli na początku tego nie dostaniesz. Próbowałem przejść przez tom I i III od lat (teraz 10 lat).
I nie powinieneś też przykładać do tego zbyt dużej wagi. Nie rób tego, aby udowodnić coś komuś lub sobie. Zrób to, ponieważ jesteś do tego intelektualnie zainteresowany. Możesz uzyskać biegłość w zakresie algorytmów, po prostu korzystając z książki CLRS (lub dowolnej z dostępnych tam dobrych książek).
Bądź pragmatyczny i daj sobie spokój. Traktuj przeglądanie książki Knutha jako długoterminową osobistą ambicję, a nie bezpośredni dowód, że jesteś materiałem CS;)
Są inne ważniejsze rzeczy (z punktu widzenia kariery), za które trzeba się zabić;)
źródło
Zanim zacząłem czytać w Knuth, musiałem przemierzać cztery różne książki. Pierwsze dwa to książki Sedgewicka na temat algorytmów. Przeglądają one większość algorytmów i struktur danych w rzeczywistej zaimplementowanej formie, dzięki czemu można zobaczyć, jakie są i jak działają. Te książki są dostępne w różnych wersjach językowych - czytam te w C, ale iirc zostały pierwotnie napisane w Pascal, a istnieją wersje C ++ i Java.
Potem przepracowałem sporą część książki Cormen o algorytmach i wykorzystałem Wprowadzenie Sedgewicka i Flajoleta do analizy algorytmów jako tekst uzupełniający, ponieważ bardziej przypomina on rygor matematyczny Knutha niż książkę Cormen. Nadal nie ukończyłem żadnego z nich, głównie wybierając części, które według mnie są potrzebne.
Po ich przeczytaniu i uzyskaniu dyplomu z matematyki mogę przeczytać niektóre z TAOCP, ale jest to trudna lektura. To nie znaczy, że to nie jest przydatne. TAOCP to jedne z najlepszych podręczników do algorytmów, ale myślenie, że możesz ich użyć do „pełnego” zrozumienia czegokolwiek, jest nieco problematyczne.
źródło