Dlaczego ludzie używają książek o programowaniu? [Zamknięte]


94

Uważam, że kiedy ktoś pyta, jak najlepiej nauczyć się programować, zwykle przekazuje mu odniesienia do wielu tekstów napisanych przez różnych autorów.

Jednak nie wierzę, że wiele osób w ogóle uczy się programowania z książek. Uważam, że zwykle stają przed wyzwaniem, a następnie używają programowania jako narzędzia do pokonania tego.

Na przykład „włączyłem się” w programowanie, ponieważ chciałem uruchomić serwer dla gry, w którą grałem, więc poszukałem go i przeczytałem wsparcie dla tego konkretnego serwera, a teraz jestem zatrudnionym inżynierem oprogramowania, wykorzystując tylko umiejętności, które rozwinąłem ( a następnie dalej rozwijane) przez kodowanie skryptów C # dla niezbyt popularnego pakietu serwerów.

Moje pytanie brzmi zatem: czy ludziom łatwiej jest uczyć się z tych książek? Wiem, że obejrzałem kilka z nich i uznałem je za zbyt „suche”, aby zachęcić mnie do ukończenia.


3
książki nie są tu najważniejsze, ale wielką zaletą, jeśli czytasz książki, są to kolejne książki, którymi jesteś zainteresowany.
cnd

42
Czy mówisz o nauce programowania od samego początku, czy o bardziej zaawansowanych rzeczach? Istnieje ogromna różnica między „Ucz się C ++ w ciągu 24 godzin” i przyzwoitą książką na temat bardziej zaawansowanych rzeczy teoretycznych - nie znajdziesz pracy Knutha w Internecie.
André Paramés,

78
Wygląda na to, że nigdy nie spotkałeś dobrej książki programistycznej.
Jaywalker

46
Jest to metaforyczne pytanie: „po co chodzić do szkoły?”
Jodrell

8
Nigdy nie znalazłem książek jako podstawowego narzędzia do nauki, ale mam ich mnóstwo i cały czas je polecam. To oczywiste, że uczysz się tylko poprzez działanie. Książki są jednak źródłem pomysłów i można je wykorzystać jako łatwo dostępne źródło informacji. Nie czytamy / nie zalecamy książek, z których można się uczyć. Czytamy / polecamy książki, aby dzielić się zawartymi w nich pomysłami.
Joel Etherton

Odpowiedzi:


229

Oto jak się uczę, mówiąc ogólnie:

  • Kupić książkę
  • Nie czytaj go od deski do deski, ale wiedz, gdzie wszystko można znaleźć
  • Znajdź projekt zwierzaka do pracy
  • Ucz się z doświadczenia, ale wykorzystaj książkę jako odniesienie
  • Tam, gdzie książka zawodzi, zawsze jest Google

Uwaga: czasami trzeci punkt jest pierwszy.

Edycja : Aby odpowiedzieć na pytanie „Dlaczego?”

Google wspaniale jest dowiedzieć się, jak coś zrobić, ale nie jest świetny do znalezienia tego, czego nie wiesz. Dlaczego miałbyś kiedykolwiek wyszukiwać w Google „C # delegatów”, skoro najpierw nie wiedziałeś, że C # ma pojęcie o nazwie delegaci i że może być przydatne rozwiązanie problemu, nad którym pracujesz?

Ponadto stosunek sygnału do szumu może być czasem nieco wysoki. Jeśli masz w głowie pomysł, jak coś zrobić, możesz łatwo potwierdzić, czy czytany artykuł jest poprawny. Ale jeśli nie masz pojęcia ... możesz skończyć w większym bałaganie.


19
Świetna odpowiedź, szczególnie edycja w odpowiedzi na „dlaczego”. Niedawno zacząłem uczyć się ASP.NET i zrobiłem to za pomocą Google. Używałem C # dla .NET 2.0 od lat, więc pomyślałem, że sobie poradzę. Za każdym razem, gdy napotykałem problem, udało mi się znaleźć odpowiedź, wyszukując google, ale wkrótce stało się jasne, że trafiałem tylko na szczyt góry lodowej tego, co mogłem zrobić, i zupełnie brakowało mi dużych fragmentów bibliotek. Książka zapewnia znacznie lepszy przegląd technologii i wszystkiego, co może zrobić. Unikaj książek „ucz się x w ciągu 24 godzin” i zamiast tego wybierz książki „zaawansowane x”.
Gavin Coates

44
+1 za „dowiedzenie się tego, czego nie wiesz”.
Covar

2
Rozszerzenie do piątego punktu: gdy książka zawiedzie, zawsze pojawiają się książki z google i inne na ten temat, w tym te skierowane do początkujących .
Richard

5
+1 za "stosunek sygnału do szumu może być czasem nieco wysoki. Jeśli masz w głowie pojęcie, jak to się robi, możesz łatwo potwierdzić, czy czytany artykuł jest poprawny. Ale jeśli masz bez pojęcia ... możesz skończyć w większym bałaganie. "
Tom Squires,

9
„Tam, gdzie książka zawodzi, zawsze jest wyszukiwarka Google”. Masz na myśli Stack Overflow;)
Joren

42

Niektóre powody, dla których książki są nadal aktualne:

  1. Uważam, że łatwiej jest czytać dużo tekstu na papierze niż na standardowym ekranie LCD, może e-książki na wyświetlaczu e-atramentu to zmienią.
  2. Książka zazwyczaj opisuje duży obraz i kilka dobrych praktyk, które są naprawdę dobre, gdy potrzebujesz szybkiego początku lub nowego widoku.
  3. Google jest naprawdę dobry, gdy potrzebujesz przykładów na konkretny temat, ale nie dla dużego obrazu.

Ale książka nigdy nie poprowadzi cię do końca, poprowadzi cię we właściwym kierunku.


2
+1 za duży obraz. Po tym, jak przez jakiś czas programowałem w jakimś nowym języku / środowisku, uważam, że książki są naprawdę przydatne do wypełnienia dużego obrazu i rzeczy, które mi umknęły podczas własnej eksploracji.
Adam Morris

2
Blog Raymonda Chena lub serial Going Deep na kanale 9 jest niezwykle pomocny w poznaniu przyczyny . Kiedy już wiesz, dlaczego coś jest „ tak ”, jak to zrobić, staje się trywialnym szczegółem, który można przejrzeć. Zazwyczaj autor książki może przejść w tło, aby zrozumieć logikę tego, co się dzieje, zamiast próbować przedzierać się przez brukowane ciągi fragmentów kodu, które znalazłeś w Internecie.
Ian Boyd

IMO, jedną z wielkich zalet książek jest możliwość wbijania palców w wiele miejsc jednocześnie, dzięki czemu można szybko przerzucać sekcje. Uważam to za nieocenione, gdy próbuję nauczyć się czegoś nowego, przechodząc przez jakiś kod, ponieważ często szukam czegoś innego (czasem kilku rzeczy), aby zrozumieć, co sprawdziłem w pierwszej kolejności. Nawigacja na ekranie po prostu nie jest taka sama.
TMN

Zgoda. Skacząc na przykład do Asp.Net MVC, możesz na przykład dowiedzieć się, jak to zrobić. Ale jest tak wiele rzeczy, które prawdopodobnie popełnisz błąd, i które są subtelne. Potem zostajesz drapiąc się w głowę, dlaczego coś nie działa.
Andy,

28

Kiedy nauczyłem się programowania w książkach z lat osiemdziesiątych, gdzie mniej więcej było to jedyne dostępne źródło informacji, aby całkowicie nauczyć się języka programowania jako całości. Ponadto można było kupić czasopisma komputerowe, ale ich zawartość była przypadkowymi artykułami, które mogły być interesujące i pomocne lub nie.

W dzisiejszych czasach możesz znaleźć wszystkie potrzebne informacje w Internecie. Chociaż uważałbym pełny samouczek za wystarczająco podobny do książki.

To, jak się uczysz, może zależeć od twoich osobistych preferencji lub rzeczywistych potrzeb.

Zaletą „pełnego tekstu” w przypadku książki lub samouczka online jest to, że obejmuje on materiał, który, choć nie jest konieczny, pomoże ci później. Wystarczy wiedzieć, że coś jest możliwe i wiedzieć, gdzie to znaleźć. Zwłaszcza jeśli uczysz się o złożonym środowisku lub bardzo złożonym języku, takim jak C ++. Możesz czytać w wielu małych blogach o Ruby on Rails, nigdy nie słysząc o Ajaxie ani kwestiach bezpieczeństwa. Dopóki grasz tylko w pobliżu, może to nie stanowić problemu. Ale jeśli, tak jak mi się zdarzyło, chcesz przejść do profesjonalnego rozwoju Ruby on Rails w ciągu kilku tygodni, to praca z tekstem obejmującym wszystkie ważne punkty bardzo pomoże.

Inne książki zawierają szczegółowe informacje na temat stylu programowania, najlepszych praktyk, wzorców projektowych lub niektórych grup algorytmów. Możesz z nimi pracować i być może ze wszystkich wzorców projektowych zastosujesz tylko bardzo mały podzbiór. Mimo to warto je znać i wiedzieć, gdzie je znaleźć. Jest to po prostu sposób na trenowanie procesów myślowych w kierunku, w którym bardziej interesuje Cię „budowanie rozwiązania” niż „zmuszanie go do działania”.

Osobiście lubię czytać, więc nie mam wrażenia, że ​​książki są suche. Chociaż ważne jest oczywiście, aby książka była na twoim aktualnym poziomie wiedzy lub wyższym. Jeśli opanowałeś już wszystkie podstawy języka C #, nie ma sensu czytać książki dla początkujących.


7
+1 za wzmiankę o tym, co bym napisał: że książki typu „najlepsza praktyka / metodologia” różnią się znacznie od książek typu „jak robić X używając Y”. A te pierwsze są naprawdę cennymi rzeczami, ponieważ uczą ciężko zarobione ogólne doświadczenie w rozwiązywaniu problemów. Gdy nauczysz się testowania jednostkowego, refaktoryzacji, szacowania itp., Możesz zastosować go i dostosować do wielu języków / domen / projektów.
Péter Török

1
Z pewnością docenisz wzmiankę o stylach, praktykach i wzorach. Są to książki, które naprawdę są korzystne. Możesz nauczyć się programować, mając problem z jego rozwiązaniem i rozwiązaniem. Nauczysz się dobrze programować, ucząc się stylów, praktyk i wzorców. Nadal najlepszym miejscem do pełnego zrozumienia tych pojęć są teksty.
Rig

+1 dla „obejmuje materiał, który choć nie jest konieczny, pomoże ci później” - dobrzy programiści mają dogłębną wiedzę. Nawet jeśli nie pamiętasz wszystkich szczegółów, ale znasz wątek, który chcesz pociągnąć i nauczyć się go, gdy go potrzebujesz, może być nieoceniony!
Jared Updike,

22

Książka (lub dokumentacja internetowa o strukturze przypominającej książkę) jest nadal moim preferowanym sposobem uczenia się większości języków.

Jeśli po prostu zagłębisz się w język i znajdziesz coś dla siebie, prawdopodobnie przegapisz ważne aspekty, które dobra książka dostarczyłaby Ci we właściwym czasie.

Na przykład niektórzy z moich kolegów nauczyli się języka Java, nurkując bez książki. Programowali w Javie od kilku lat, kiedy odkryłem, że rutynowo manipulują tablicami byte [], przekształcając tablicę w String, używając .substring (), a następnie przekształcając String z powrotem w tablicę. System.ArrayCopy () jest wprowadzony na stronie 155 Java In A Nutshell

Mam nadzieję, że rozumiesz, że uczenie się jest łatwiejsze u nauczyciela niż u samotnego. Dobra książka to tani zamiennik dobrego nauczyciela. Wprowadzi koncepcje w starannie zaplanowanej kolejności, dzięki czemu możesz uzyskać dokładne zrozumienie - nie tylko na tyle, aby sobie z tym poradzić.


2
+1 za wskazanie różnicy między nauką robienia czegoś a nauką robienia tego dobrze.
idbrii

Dobra książka to świetny sposób na szybkie pokrycie tego obszaru. Ktoś już dla ciebie zrobił badania. Znalezienie dobrej książki może być trudne. Był czas, kiedy miałem szansę 50/50, aby uzyskać świetną książkę na temat, który mnie interesował (naprawdę dobry nabywca). Teraz okazuje się, że szansa na znalezienie dobrej książki w księgarni wynosi mniej niż 10%. Istnieje jednak wiele dobrych zasobów książkowych dostępnych w sieci. Wybór odpowiedniego zasobu może przyspieszyć naukę.
BillThor

1
Nie jestem pewien, kiedy był ten czas. Ostatnio rzuciłem okiem na moje stare książki CS. Standard znacznie się poprawił. Na przykład przed laty korzystałem z „Funkcjonalnego programowania z Mirandą”. Ostatnio użyłem „Real World Haskell”. Starsza książka jest dziś tajemnicza, mimo że w zasadzie używa tych samych pojęć i paradygmatów, co Haskell.
szczupły

21

Myślę, że możesz coś mieć. Dla mnie przynajmniej większość moich umiejętności pochodzi z chęci / potrzeby programu, który robi „X”.

Może ludzie, którzy uczą się w ten sposób, nie proszą o pomoc; są zbyt zajęci robieniem tego (słabo, ale uczą się po drodze). Ludzie, którzy chcą zostać programistami (w odniesieniu do pierwszej grupy), zadają wiele pytań na temat tego, jak zostać programistą lub jak programować, nawet jeśli niekoniecznie mają problem do rozwiązania, a nie są to pytania z bezpośrednimi odpowiedziami.

Wracamy więc do książek. „Och tak, weź kopię„ Zanurz się w Pythonie ”.„ Czy tak się nauczyłeś? ” „Nie” „Um…” „Jestem trochę zajęty, ale pomogę, jeśli utkniesz” „Uh… OK, tak sądzę”

Z drugiej strony, cenię sobie dobry materiał do czytania podczas nauki, dzięki czemu mogę zobaczyć, w jaki sposób problem, który próbuję rozwiązać, jest rozwiązany przez bardziej wykwalifikowanego autora, a może po prostu, aby nauczyć się trochę techniki dla początkujących, których mogłem nie zauważyć.

TLDR : książki są dobre, uczenie się przez robienie jest dobre, uczenie się przez robienie książek jest tak?


1
+1: Myślę, że go przybiłeś. Ucz się, wykonując, najcenniejsze książki, które posiadam, były specyficzne dla aplikacji, którą pisałem w tym czasie.
Justin Shield

41
Uważaj, aby nie zostać programistą „samoukiem”, który wie wszystko, ponieważ przeszedł przez prosty problem, źle i czuje się „zbyt dobry”, aby czytać książki.
Joris Timmermans

2
Należy pamiętać, że nie jestem przeciwny czytaniu, po prostu uważam, że media cyfrowe są zwykle o wiele bardziej aktualne i angażujące.
Alex Hope O'Connor,

2
@Alex Informacje o mediach cyfrowych. To naprawdę zależy od tematu poruszanego przez media. Jeśli media zajmują się takimi sprawami jak x w języku y lub najbardziej efektywny sposób kodowania w z, to zgadzam się z twoim stwierdzeniem. Jednak inne tematy (zwykle bardziej zaawansowane, teoretyczne), takie jak NP, P, analiza algorytmów itp., IMHO są zazwyczaj najlepiej omówione w książce. Weźmy Knuth's The Art of Programming . To dość stary tekst, ale wciąż uważany za jedną z najważniejszych książek o programowaniu.
cledoux

16
Myślę, że to jest przypadek potwierdzenia. @Alex wydaje się szukać pewnej odpowiedzi. Nie twierdzę, że ta odpowiedź jest zła sama w sobie, ale z pewnością nie jest to najlepsza odpowiedź dostarczona przez jakąkolwiek część wyobraźni.
zzzzBov

15

Uwielbiam czytać książki techniczne. Nie wszystkie książki techniczne, tylko te na konkretny temat, który mnie interesuje, mówią Sharepoint. Pamiętam pierwszą książkę, którą naprawdę przeczytałem (wiele razy), Programming Windows autorstwa Charlesa Petzolda. Z tego i wielu innych powodów mogłem napisać aplikację Win32 z pamięci. Nie musiałem szukać API, więc mogłem skupić się na części biznesowej.

Wydaje mi się, że książki zapewniają „autorytatywny” sposób robienia czegoś, być może przez kogoś, kto zna właściwy sposób na zrobienie czegoś lepszego ode mnie. Ufam, że to, czego się uczę, ośmielę się to powiedzieć, najlepszy sposób na rozwiązanie mojego problemu. Oczywiście, jeśli ufam autorowi (uwielbiam obszar recenzji w Amazon).

Chociaż coraz bardziej „googluję”, kopiuję i wklejam, kiedy próbuję rozwiązać problem, spędzam sporo czasu upewniając się, że to, co kopiuję (lub inspiruje mnie :), jest czymś godnym zaufania, że ​​ja mogę wprowadzić mój kod. Tylko dlatego, że znajduję rozwiązanie w Internecie, niekoniecznie jest najlepsze.

Podczas gdy ja, podobnie jak wielu innych programistów, teraz po prostu szukam w Google odpowiedzi, wciąż zbieram książki od znanych autorów. Wydaje mi się, że treść została mi dostarczona przez kogoś, kto dobrze ją tłumaczy (uczy) i nie pozwala mi odfiltrowywać wszystkich śmieci z wyników Google.


14

Zakładam, że twoje pytanie nie miało na celu „dlaczego używać starej technologii jak drukowanej książki zamiast stron HTML”, ale „dlaczego czytać dłuższe teksty o programowaniu napisane przez jednego lub kilku autorów”.

Możesz myśleć o książkach jako uporządkowanym zbiorze informacji na określony temat. Ma to tę zaletę, że ktoś dołożył wszelkich starań, aby każdy rozdział zbudować na sobie, aby ułatwić zrozumienie tematu. Zazwyczaj mówi się również o granicach informacji (co obejmuje i co jeszcze trzeba szukać w innym miejscu). Po przeczytaniu i pracy z nim możesz być pewien, że osiągnąłeś określoną umiejętność. Jeśli chcesz uczyć się z naciśniętym przyciskiem szybkiego przewijania do przodu, książka może zmusić cię do przejścia przez każdy aspekt bez pomijania nudnych części, przynajmniej jeśli ufasz strukturze książki. Kolekcja o nazwie „książka” jest również najczęściej przydatna jako odniesienie.

Korzystanie z Internetu, blogi, „kręcenie się” itp. Zwykle należą do rodzaju nieuporządkowanych informacji. Dostajesz mnóstwo kawałków mądrości, ale musisz wykonać więcej prac wyszukiwania, aby zdobyć swoją wiedzę, ponieważ nikt nie poprowadzi cię mówiąc: „Naucz się tego, bo inaczej nie zobaczysz zalet tych rzeczy przejrzałem teraz ”. Możesz przegapić pewne części, ponieważ są zbyt nudne lub nikt ci nie powiedział, że są ważne. Możesz nauczyć się rzeczy źle, ponieważ nie wszystko, co napisano w Internecie, jest pierwszej jakości. Możesz poświęcić dużo czasu na odfiltrowywanie niepotrzebnych wyników wyszukiwania. Możesz tracić dni na próbę osiągnięcia czegoś sam, tylko dlatego, że nie znasz określonego wzorca projektowego lub konstrukcji programowej i nikt ci nie powiedział. Im mniej wiesz,

Mówiąc prowokacyjnie: nigdy nie ufałbym architektowi, że zbuduje most, przez który muszę codziennie przejść, jeśli powiedziałby mi, że nigdy nie czytał książki o budowie mostów ani analizie strukturalnej, ale po prostu nauczył się tego, bawiąc się i używając Google ...


Moje pytanie można interpretować jako szczere, ale to drugie było moim ogólnym konsensusem.
Alex Hope O'Connor,

10

Jeśli jesteś programistą C, jak możesz się uczyć języka Python bez książki lub nauczyciela?

Jeśli tylko nauczysz się podstawowej składni i zanurzysz się od razu, skończysz pisać kod C w Pythonie i dojdziesz do fałszywego wniosku, że Python jest tak samo gadatliwy i bolesny jak C.


To przesada. Jeśli zacząłeś programować Python, możesz wyszukiwać w Google odpowiedzi na problemy i znajdować takie rzeczy, jak przepisy w języku Python, które opisują Pythońskie rozwiązania konkretnych problemów.
idbrii

6
@pydave: Gdyby to była przesada, nie byłoby tak dużo kodu C napisanego w Pythonie na SO (przykład)
BlueRaja - Danny Pflughoeft

4
Czytam twoje przykładowe pytanie, czytam twoją odpowiedź i rozumiem, co masz na myśli: Nauka podstawowej składni to nie to samo, co nauka języka. (Nawet nie zastanawiałem się, czy nie nauczyć się konstrukcji języka). Jeśli nauczysz się wystarczająco dużo języka Python, aby napisać kod C w Pythonie, nadal nie nauczyłeś się programować w języku Python.
idbrii

To poważny problem, który zasługuje na większą uwagę. Wszystkie języki programowania są kompletne, co oznacza, że ​​możesz rozwiązać każdy problem, pisząc kod Python podobny do C lub kod Ruby podobny do Java. Nie ma tam żadnej przeszkody, która zmusiłaby cię do dostosowania się do entuzjazmu języka, w którym programujesz. Co gorsza, możesz nawet nie odczuwać bólu z powodu nieefektywności kodowania, ponieważ będzie on mniej więcej tak samo bolesny jak w natywnym C lub natywnym Java, poziom bólu, który zaakceptowałeś jako normalny.
Wedge

nie mogę się więcej zgodzić - Jestem programistą C w PHP, kiedy piszę dowolny: - |
warren

9

Google zazwyczaj nadaje się tylko do wyszukiwania małych fragmentów kodu lub bibliotek typu open source. Dokumentacja niektórych bibliotek / programów jest co najwyżej niewiarygodna (jeśli istnieje, pokazuje tylko proste lub typowe przykłady).

Nie mam wielu książek o programowaniu, ale mogę teraz powiedzieć, że mam książkę o OpenGL i zawiera ona większość kodu silnika 3D, który można po prostu skopiować, ale można przeczytaj również teorię - wystarczy przewrócić kilka stron, a wyjaśnienie kodu jest właśnie tam, czekając na przeczytanie. W dzisiejszych czasach prawdopodobnie można znaleźć w sieci kilka silników 3D typu open source, ale jeśli trzeba znacznie zmienić kod, prawdopodobnie ma się kłopoty - zazwyczaj nie ma forum pomocy, a osoby na SO nie znają odpowiedz na swoje pytanie, jeśli jest bardzo wyspecjalizowane. Jeśli chodzi o naprawdę specjalistyczne rzeczy, tylko kilkadziesiąt osób na całym świecie będzie w stanie odpowiedzieć na twoje pytanie bez spędzania godzin, aby dowiedzieć się wystarczająco dużo, aby znaleźć odpowiedź. Jeśli zapytasz, jak zaimplementować połączoną listę w języku C #, w ciągu pierwszych 10 minut uzyskasz ponad 5 odpowiedzi na SO, ale jeśli zapytasz, jaki jest najlepszy sposób na wdrożenie złożonego algorytmu cieniowania w pliku Three.js , twoje pytanie znika z pierwszej strony jak kamień.

Co więcej, książki są pisane prawie wyłącznie z perspektywy, którą czytelnik chce dowiedzieć się o związanej z nimi teorii, podczas gdy Google po prostu produkuje przypadkowe fragmenty kodu śmieci, zarchiwizowane dyskusje na temat, w których nikt nie wie, o czym mówią , itp. Źródła w Internecie stały się znacznie lepsze: SO, Moz Dev Network, strona Microsoftu, blogi itp., ale historycznie książki były znacznie lepsze, a źródła internetowe właśnie nadrabiają zaległości.


1
+1 za wskazanie czasu potrzebnego na uporządkowanie przypadkowych śmieci za pomocą metody „uczenia się przez googling”
Ray

1
+1 za „zarchiwizowane dyskusje na ten temat, w których nikt nie wie, o czym mówią, itp.” - ROFL.
5arx

7

Jakość pisania w najlepszych książkach jest taka, że ​​wiele nieoczywistych problemów jest nakreślonych, zanim jeszcze zaczniesz. Autor z dużym doświadczeniem będzie wiedział, aby powiedzieć ci o takich rzeczach jak: nieoczekiwane skutki uboczne, długoterminowe konsekwencje, nieudokumentowane funkcje, typowe scenariusze użycia ...

Zasadniczo zyskujesz dzięki pisarzowi z dużym doświadczeniem, przeprowadzając cię przez problem i wskazując naprawdę interesujące fragmenty.

Czasami można to znaleźć również w referencjach online, ale z powodu niskiej bariery wejścia wiele informacji w Internecie jest zbyt proste, brakuje szczegółów lub jest po prostu źle. Może się to zdarzyć również w przypadku książek, więc upewnij się, że wprost wierzysz tylko w te książki, które są klasykami z niezmiennie dobrymi recenzjami. Przydatne mogą być także inne książki, ale tylko jako jedno ze źródeł nadal będziesz musiał zweryfikować informacje, porównując je lub próbując samodzielnie.


1
+1000 „po prostu źle” Istnieje mnóstwo przykładowego kodu napisanego przez „najlepszych programistów”, którzy nie używają kompilatorów ani nie wiedzą o czym mówią. Ponadto dobra książka zostanie napisana z modelem pedagogicznym, który wprowadza następnie wzmacnia treść w spójny i czytelny sposób.
jqa

6

Książki zwykle zawierają wiele informacji w ustrukturyzowanym formacie. Google zazwyczaj dostarcza ogromną ilość informacji, które nie zawsze są szczególnie uporządkowane i trudne do zorganizowania pod względem tego, co musisz zrobić.

Właściwie nie czytam już fizycznych książek papierowych - obok mnie jest czytnik elektroniczny i mam oprogramowanie Kindle na swoim laptopie, które daje mi dostęp do informacji, których szukam.

Pomocne jest Google, jeśli nie szukasz uporządkowanego przeglądu sposobu programowania, ale potrzebujesz szczegółowych informacji na temat programowania określonego zadania. Ktoś prawie zawsze pisał kod do tego zadania wcześniej, a przynajmniej coś w tym rodzaju.

Myślę, że istnieje różnica między nauką programowania a nauką programowania określonego zadania. Chciałbym zakwestionować jakość kodu pochodzącego od kogoś, kto kiedykolwiek nauczył się drobiazgów z googlingu konkretnych zadań, jeśli tak naprawdę nigdy nie miał dostatecznego przeglądu tego, jak programować. To nie jest specyficzne dla języka, jest bardziej koncepcyjne.


4

Książki są przydatne, jeśli chcesz zgłębić temat. Pewnie nauczyłem się języka C #, wykonując kilka samouczków i pisząc niektóre (domowe) projekty. Ale C # dogłębnie jest nadal przydatne, aby zobaczyć, co dzieje się pod spodem i nauczyć się kilku nowych rzeczy.

Mogę też wziąć książkę programistyczną i przeczytać ją w kąpieli lub na zewnątrz w słońcu. Nie mogę tego zrobić na komputerze stacjonarnym.


4

Ponieważ jest to wygodny sposób na naukę od innych programistów.

Książki są dodatkiem. Do tej pory możesz pracować tylko tak szybko, samodzielnie. Kto wolałby nie być przy projekcie z lepszym programistą, który chciałby cię czegoś nauczyć niż tylko czytać książkę?

Zazwyczaj używam ich raczej jako odniesienia, a nie „Wszystko, co musisz wiedzieć o programowaniu”.


3

Książki pozwalają wchłonąć zestaw informacji w sposób „pasywny”. Nie musisz patrzeć, co jest możliwe, dostajesz podzbiór możliwości. Kiedy uczyłem się C #, książka naprawdę pomogła wskazać możliwości i zastanowić się, jakie były odpowiedniki C ++. Oczywiście mastering miał miejsce podczas używania go w projekcie (w rzeczywistym rozmiarze). Ale książka naprawdę pomogła wskazać różnice i możliwości.


3

Krótko mówiąc, uważam, że książki są bardziej przydatne na wysokim poziomie. Mogą udzielać wskazówek projektowych i pomagać zapobiegać problemom zamiast je rozwiązywać.


Książki z pewnością mają swoje wady. Moja kopia Programming Python obejmuje Python 2.0, ale środowisko uruchomieniowe, którego używam, to 2.6.

Myślę jednak, że ważnym aspektem książek jest to, że możesz znaleźć rzeczy, na które nie natkniesz się. Google pomaga rozwiązywać określone problemy, ale książki pomogą Ci w projektowaniu. I nie tylko projektuje książki. Jeśli przeczytasz dobrą książkę, która pomoże ci zrozumieć konstrukcję języka, lepiej zrozumiesz, jak go używać.

Inne książki są przydatne do udoskonalenia wiedzy. Myślę, że książka Scott Murphy's Effective C ++ jest dobrym przykładem. Chociaż ta książka nie jest zbyt dobra do nauki języka C ++, pomaga dostrzec problemy w projektowaniu algorytmów / interfejsów / dziedziczenia, których nie spotkałeś (jeszcze) ani nie obejrzałeś. Znalezienie prostego rozwiązania (które może powodować inne problemy później) może być łatwe, ale dzięki lepszemu zrozumieniu języka możesz lepiej zaprojektować oprogramowanie, aby uniknąć tych problemów.

Oczywiście to nie fakt, że książki są drukowane na papierze, sprawia, że ​​warto. Staranność i wysiłek włożony w ich tworzenie oraz chęć prowadzenia rygorystycznej edukacji są tym, co nadaje książce wartość. Często jako efekt uboczny dostajesz przydatne zasoby internetowe, takie jak C ++ FAQ lite lub ebooki, takie jak Dive into Python . Dostępne są również samouczki online, które są dokładnymi i przydatnymi narzędziami do nauki (takimi jak dokumentacja niektórych platform / języków / bibliotek).

Fragmenty w sieci to dobry sposób na udzielenie odpowiedzi na Twoje pytanie, ale rzadko mówią, o co powinieneś pytać.


3

Chcę zostać programistą, więc używam książek programistycznych. Książki pozwolą mi stać się profesjonalnym programistą.


3

Dawno tak naprawdę nie czytałem książki o programowaniu. Używam ich jako przewodników, ale teraz myślę, że Internet jest łatwiejszy dla większości języków i struktur.

W każdym razie uważam, że najlepszą rzeczą do nauczenia się z programowania książek jest język podstawowy. Na przykład moim pierwszym prawdziwym językiem był C. Nauczyłem się go, pisząc system operacyjny (nie polecam tego). W rezultacie moja znajomość C była dość kaleką, nawet po dwóch lub trzech latach programowania. Nigdy nie miałem dobrej podstawowej znajomości języka. Nie wiedziałem, że mogę zamienić te 15 wierszy niechlujnego kodu w czyste dwa wiersze kodu. Mogłem więc rozwiązywać problemy, ale nie wykorzystywałem C w pełnym zakresie.

W pewnym momencie postanowiłem nauczyć się C ++ ... (około 2 lata po rozpoczęciu nauki C). Przeczytałem więc jedyną książkę C ++, którą miałem w okolicy, C ++ For Dummies Book. Przeczytałem o nim w 3/4, robiąc bardzo mało „robienia” w tym czasie .. w rezultacie, kiedy wskoczyłem do mojego pierwszego projektu zamiast czuć się komfortowo z tymi 15 liniami niechlujnego kodu, wiedziałem, że jest łatwiejszy sposób na zrobienie tego (nawet jeśli musiałem to sprawdzić).

Zrobiłem to samo, kiedy nauczyłem się C # / ASP.NET. Prawie nic nie czytałem, dopóki nie skończyłem z około 3/4 książki. I za to, czego się nie nauczyłem, przeglądałem Stack Overflow, by znaleźć interesujące pytania w języku C #. Kiedy wkroczyłem do mojego pierwszego projektu, powiedziałem, że większość mojego kodu była względnie czysta i od tego czasu trzeba go było „ogromnie” zreorganizować.

Powiedziałbym więc, że książki są bardzo przydatne do nauki możliwości frameworka lub języka. Poza tym są w większości bezużyteczne przez Internet, z wyjątkiem oczywiście mocnych książek teoretycznych i specjalnie zaprojektowanych, aby były materiałem odniesienia.


2

To mniej o tym, co czytasz, ale ile. Lubię mieć kilka książek programistycznych w podróży, kiedy pracuję nad projektem. Co jakiś czas (częściej niż myślisz) będziesz czytać o technice, którą można zastosować w bieżącym projekcie.

Po wdrożeniu w rozwiązaniu z prawdziwego świata informacje pozostaną.


2
Tak naprawdę uważam, że tak jest w przypadku odpowiadania na pytania na stronach internetowych takich jak SE. Często zdarza mi się, że komentarze prowadzą mnie do informacji istotnych dla rozwiązania problemu, nad którym albo pracuję, albo o którym wiem, że wkrótce będzie działać.
Lea Hayes

2

Wolę używać książek, ponieważ uważam, że zapewniają one migawkę stanu technologii, nad którą pracujesz. Autor oświadczy, że w przypadku XX wersji języka / biblioteki Y rozwiązuje to problem Z. Może w tutorialach na stronie internetowej nie jest wymienione, jakich wersji używają, ani nie podaje przykładowego kodu, którego używają podczas książek.

Książki często opisują „dlaczego” to rozwiązanie rozwiązuje problem, podczas gdy dokumenty online są zazwyczaj kopiowane i wklejane.

Często możesz również utracić linki do wszystkich swoich referencji, mogą się one przenieść lub zejść. Chronię i dbam o moje książki jak inwestycję (którą są).


2

Możesz rozwiązywać problemy bez czytania książek, ale czy naprawdę będziesz wiedzieć, co dzieje się za twoim programem, aby rozwiązać ten problem?

Musisz wiedzieć, co się dzieje i co może być lepszą alternatywą. Do tego potrzebujesz dobrych książek programistycznych. Samo czytanie książek oczywiście nie wystarczy, musisz zrozumieć treść, przejrzeć inne książki, pomyśleć o różnych podejściach do rozwiązywania problemów i tak dalej. Uczenie się trwa z książkami i bez.


1

Kiedy uczyłem się C ++, większość literatury wydawała mi się bezużyteczna, dopóki coś w mojej głowie nie kliknęło. Do dziś nie jestem pewien, co to było, ale wszystko zaczęło mieć sens. Książki i strony internetowe miały wtedy znacznie większy sens. Nauczenie się programowania w C ++ zajęło mi 2 książki i żadna z nich nie była prawdziwą książką C ++ (były to książki Visual C ++, które koncentrowały się głównie na MFC).

Jeśli masz odpowiednie książki, to może być naprawdę przydatne. Mój przyjaciel czytał kilka książek Dietela na uniwersytecie i znalazłem te wyjątkowo dobrze napisane. Nigdy nie uważałem książek „... for Dummies” za przydatne, ponieważ nie wyjaśniają mi rzeczy we właściwy sposób. Najlepszą radą jest pójście do księgarni i zdobycie degustatora książki, abyś nie marnował pieniędzy na to, co bywa niezwykle drogimi książkami.

W przypadku niektórych tematów programowania uważam, że warto czytać kilka książek, przeprowadzać badania za pośrednictwem Google i eksperymentować. Bardzo często to robiłem, gdy pracowałem nad algorytmami AI, pracując nad grą w warcaby z J2ME. Robiłem to również, gdy uczyłem się, jak utworzyć kompilator kompilatora dla niestandardowych składni. Jest tak wiele różnych odmian i widoków.

Czasami zrozumienie wielu widoków pozwala na tworzenie połączeń, które w innym przypadku byłyby bardziej niejasne.


1

Zazwyczaj uczę się (programowania) z obu książek i źródeł „just in time”, takich jak sieć. Oba mogą być dobre, ale ogólnie wolę uczyć się z książek, oto dlaczego:

Kiedy dowiadujesz się tylko tego, co musisz wiedzieć natychmiast, aby ukończyć część projektu, czasami brakuje Ci ogólnego obrazu. Najlepsze książki to nie tylko odniesienia, ale w pewnym sensie można osiągnąć coś bliższego stażowi, zapewniając dobrze zaokrąglony przegląd technologii i wiele sezonowych porad na temat najlepszych rozwiązań typowych problemów.

Nauka just-in-time bardzo łatwo może cierpieć z powodu problemu satysfakcji, gdy zidentyfikujesz problem, który chcesz rozwiązać, przeskocz do pierwszego rozwiązania, które wydaje się działać, a następnie uciekasz do interwebs, aby dowiedzieć się, jak go wdrożyć . Jednak często może to wpędzić cię w kłopoty, jeśli byłbyś w stanie porozmawiać z doświadczonym programistą na temat twojego problemu, nie powiedzieliby ci „oto jak zrobić X”, powiedzieliby ci zamiast tego „nie rób X, zamiast tego wykonaj Y ”. I to jest wiedza, którą zdobywają najlepsze książki. Rzeczywiście, niektóre książki dotyczą wyłącznie takich rzeczy, na przykład Javascript: The Good Parts .

Innym problemem, jaki może mieć uczenie się JIT, jest znacznie wolniejsza krzywa uczenia się. Dzięki uczeniu się JIT masz tendencję do uczenia się tylko tego, co musisz wiedzieć. Ale często posiadanie podstawowego rdzenia wiedzy może przyspieszyć naukę nowego języka lub struktury. Zamiast potknąć się o podstawy, zaczynasz od solidnego fundamentu, a następnie budujesz stamtąd. Dobra część materiału, którą możesz przeczytać podczas czytania książki, może nie być od razu przydatna, ale posiadanie tej wiedzy w tle może być pomocne w podejmowaniu decyzji, a zwłaszcza w zrozumieniu nowego kodu, na który jesteś narażony. Jest oczywiście kompromis i są złe książki, które gromadzą się na bezużytecznych faktach, których nie pamiętasz po ich przeczytaniu, ale są też dobre książki, które dają ci dobre podstawy w podstawach i co ”

Są też książki na wyższym poziomie niż jeden przedmiot technologiczny, które moim zdaniem mają kluczowe znaczenie dla dojrzewania jako programista. Książki takie jak Code Complete , Refactoring , Efektywna praca ze starszym kodem itp. Nie będziesz czerpać wiedzy z tych książek tylko poprzez naukę JIT.


1

Myślę, że lubię czytać książki. Szczególnie ściągam ebooki. Czytam każdą część rozdziału. Skopiuj ich kod! wklej do edytora programowego, a następnie sprawdź, jaki jest wynik. Następnie spróbuj zmienić logikę. Wspomniałem o książkach do pobrania, ponieważ działają one szybciej. Książki są naprawdę wspaniałe. Nie kłamię, ale od listopada ubiegłego roku do dzisiaj. Skończyłem około 20 książek. Wszystko wymaga miłości do czytania. Nowicjusze rozwiązują konkretny problem, biorąc pomoc z Internetu. Ale kiedy dostaje się naprawdę złożone zadanie, rezygnują. Powód, brak wiedzy o zadaniu i jego rozwiązanie. Na przykład ograniczyłem formanty do danych i nie wiem, co robią zestawy danych, i powierzono mi zadanie nawiązania relacji między kopiami tabel bazy danych rezydentnymi w pamięci, że nie mogę tego zrobić.


0

Nowym programistom bardzo trudno jest zrozumieć, czym właściwie jest programowanie i jak głębokie jest.

Każdy może napisać program, który każe komputerowi zrobić - cóż, prawie wszystko przy bardzo małej nauce, to nie jest trudne! Trudne jest stworzenie programu, który jest obsługiwany i który może być szybko zrozumiany i głęboko zrozumiany przez innych członków zespołu, ta część trwa lata, dziesiątki lat.

Poza tym nauka pracy jako skuteczny element zespołu jest trochę krzywa.

W jaki więc sposób książki pomagają rozwiązać te „rzeczywiste” problemy programistyczne w sposób, którego nie sprawdzają odnośniki w Internecie?

Dwie moje ulubione książki to „Wzory projektowe” i „Refaktoryzacja”.

Refaktoryzacja to świetna książka informująca, jak rozpoznać zły kod. Jeśli nauczyłeś się, szukając odniesień do kodowania, ta książka (jedna z wielu książek o refaktoryzacji) jest krytyczna.

Wzory projektowe tak naprawdę nie oferują wiele rzeczy, których dobry programista nie jest w stanie zrozumieć, ale nadały nazwy szerokiej gamie wzorców, z których wszyscy już korzystają w kodzie. Umożliwiło to programistom skuteczniejszą komunikację i pomogło niektórym programistom znaleźć nowe sposoby atakowania problemów. Chociaż można znaleźć wzorce projektowe w Internecie, o wiele łatwiej jest znaleźć w Google nazwę wzorca projektowego niż - google, co próbujesz zrobić.

W wywiadach poproszono mnie o opisanie tych dwóch książek i tego, co starają się osiągnąć. Myślę, że to bardzo ważne pytanie w trakcie wywiadu ... Chciałbym zwrócić uwagę na programistę, który nie wiedział o tych dwóch książki, chyba że ubiegał się o wyjątkowo młodszą pozycję.


0

Nauczyłem się programować bezpośrednio z książek. Około 20 lat temu, zanim google i sieć stały się popularne. Myślę, że są świetnymi zasobami. Jednak większość współczesnych książek tylko cytuje artykuły techniczne producentów. Zgadzam się więc, że lepiej jest uczyć się online. Z ostrzeżeniem w następujący sposób:

Mimo że czytałem wiele książek i miałem dostęp do Internetu prawie od kiedy było to wykonalne finansowo. Nigdy nie byłem w stanie zrealizować żadnego znacznego projektu. Pewnie, że mógłbym wykonać wiele dużych projektów w dużych, zaawansowanych książkach, w których poprowadzą cię 20 rozdziałów, ale jeśli chodzi o moje własne projekty z prawdziwego świata, zawsze bez egzekucji uderzam w mur. Muszę ci powiedzieć, że czytam ciężkie książki.

Przez całe życie miałem problemy z dostaniem się na studia, ale teraz zaczynam trzeci rok. W pierwszym roku spotkałem ludzi w czwartym roku i mistrzów, i mogłem prowadzić produktywne rozmowy na temat teorii AI, HCI, asemblera i ect rozwoju kompilatora. Ale z całą tą wiedzą nie mogłem stworzyć rozsądnego programu. Czego mi brakowało ... Jednej rzeczy nie można uzyskać z żadnej książki lub online.

Struktura. W pierwszym roku nie nauczyłem się niczego o charakterze technicznym (już znałem całą sprawę i przeszedłem przez nią bez całodziennej nauki, wykonałem matematykę i projektowanie, ponieważ były one dla mnie całkiem nowe), ale nauczyłem się struktury i pracy zespołowej. Podczas moich pierwszych wakacji byłem bliżej niż kiedykolwiek do ukończenia mojej pierwszej prawdziwej pracy.

Na drugim roku nauczyłem się wielu nowych rzeczy technicznych (wciąż podstawy w porównaniu do tego, co wiedziałem, ale wprowadzałem teorię, którą znałem, w rzeczywistą praktykę). Podkreśliło to znaczenie struktury od nowa. Nie ukończyłem pierwszego prawdziwego projektu. Teraz uważam się za programistę.

Nie uważam za konieczne, aby czytać książki do nauki programowania. Ale to jest pomoc. Jednak zdecydowanie wierzę, że żadna książka ani strona internetowa nie naucza ani nie może uczyć tego, co otrzymujesz z nawet 2 lat studiów. Jeśli udało ci się ukończyć projekty bez pójścia na studia, fair play, ale jest to doświadczenie, które gorąco polecam bez względu na wiek.

Książki są dobre, internet jest lepszy, google i you Tube są super, ale nic nie przebije starego, modnego college'u w mojej opcji. Wątpię w to, czy kiedykolwiek będzie google lub youtubing, i wiem z pierwszej ręki, że żadna ilość książek nigdy nie będzie.


Tam, gdzie jest napisane powyżej: „Nie ukończyłem pierwszego prawdziwego projektu. Teraz uważam się za programistę”. Powinien brzmieć: „Właśnie ukończyłem swój pierwszy prawdziwy projekt. Teraz uważam się za programistę”. Przepraszam za błąd pisowni.
Jack Spratt

0

Nie mam pojęcia. Jestem przeciwny programowaniu książek. W większości przypadków nadal musisz szukać w Internecie, aby wyszukać dodatkowe informacje.

Chcesz nauczyć się języka programowania? Google za to. Nienawidziłem jQuery, ponieważ wyglądało to ciężko. Potem przyszedłem do Stack Overflow i wiem z tego wiele. Bez pomocy żadnych książek.

  • Google za to
  • Rozejrzyj się za profesjonalną, kompletną aplikacją typu open source
  • Przejrzyj ten kod i WYPRÓBUJ, aby dowiedzieć się, co się dzieje.
  • Spróbuj napisać szybką / prostą aplikację z fragmentów istniejącego kodu.
  • Spróbuj przepisać go dla siebie.
  • Znajdź więcej samouczków w Internecie
  • Weź doświadczenie
  • Weź więcej doświadczenia
  • Właśnie nauczyłeś się nowego języka! (Nie powiedziałem, że będziesz ekspertem, ale podstaw pozna się za kilka godzin lub dni)

Posiadanie książki jako odniesienia jest bardzo przydatne - zyskujesz na doświadczeniu innych. „Książka” może być nawet obszerną dokumentacją / samouczkami online, takimi jak django lub jquery . Ale źródło prób i błędów + czytanie pozostawi poważne luki w Twojej wiedzy. Teraz, jeśli potrzebujesz tylko kilku linii jQuery, twoja metoda działa, ale nie nauczyłeś się języka. Ale jeśli chcesz nauczyć się języka C, polecam K&R jako odniesienie. Pewnie większość informacji jest gdzieś online, ale jest rozproszona po wielu postach na blogu.
dr jimbob

0

Myślę, że to słuszne, że programowania nie można nauczyć się tylko z książek (jak wspomniała większość osób), trzeba dużo ćwiczyć i jest wiele zasobów dostępnych w Internecie (artykuły, filmy, próbki itp.).

Ale dobra książka wypełnia luki w twojej wiedzy. Po przeczytaniu książki od deski do deski daje pewność, że nie masz żadnych luk w wiedzy na ten temat. Jednak wyzwaniem jest znalezienie dobrych książek na ten temat.

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.