Czy sztuka programowania komputerowego liczy się jako jedna książka czy kilka?
David Thornley,
2
@ David Uważam, że technicznie jest to jedna książka w kilku tomach.
Paddyslacker,
Odpowiedzi:
69
Kompletny kod : Steve McConnell. Nie sądzę, żeby to wymagało wyjaśnienia. To ostateczna książka na temat budowy oprogramowania. Niezwykle dobrze napisany i obejmuje wszystkie aspekty praktycznej (programistycznej) strony tworzenia oprogramowania.
+1 za wybranie drugiego wydania - tyle ulepszeń w stosunku do pierwszego, że jest to inna książka.
Paddyslacker,
+1 - Mam tłumaczenie na włoski. Potem nigdy nie kupiłem innej książki programistycznej lub technicznej przetłumaczonej na mój język, ponieważ tłumaczenie było okropne. Musiałem kupić wydanie angielskie, żeby zrozumieć niektóre zdania!
Nie mogę się zgodzić Interesujące jest to, że słowo niezmienne nawet nie istnieje w tej książce.
Jonas
2
Chociaż zachowuję kopię pierwszego wydania, myślę, że nigdy do niej nie wróciłem. Być może powodem były książki o każdym z tematów, które według McConnella są ważne.
+1 za bycie realistą. Ta książka jest trafna, łatwa do odczytania, i prawdopodobnie książka, którą wielu programistów może faktycznie skorzystać z czytania. Zbyt wiele innych osób na tej liście jest trudnych i wątpię, by przeczytano je od deski do deski.
gąbka
Ta odpowiedź się powtarza.
clrod
+1 - moja druga ulubiona książka programowa za Code Complete (i szczerze mówiąc, czasami jest to pierwsza)
Alan
36
Struktura i interpretacja programów komputerowych, znana również jako SICP
Kiedy zobaczyłem, że SICP jeszcze nie ma na liście, skrzywiłem się z bólu. :)
Dlaczego: Nic więcej nie można dodać do chwalenia tej książki przez Norviga jako najlepsze wprowadzenie do informatyki, jakie kiedykolwiek napisano. No dobrze, skoro Dlaczego? został poproszony: SICP obejmuje podstawy oprogramowania w sposób satysfakcjonująco głęboki, podnosząc wiele perspektyw i pytań na temat natury obliczeń - z których wiele pozostaje kwestiami otwartymi - jednocześnie prowadząc czytelnika do wykraczania poza powierzchowne aspekty mówienia maszynie zrobić lub jak to zrobić.
Wszyscy chwalą SICP. IMO powinien być podręcznikiem obowiązkowego kursu wprowadzającego we wszystkich szkołach CS. Z pewnością wyeliminowałoby to osoby, które tak naprawdę nie potrafią go wyciąć w programowaniu (znacznie mniej CS), jednocześnie wzmacniając CS i umiejętności programowania dla osób z potencjałem.
luis.espinal
1
@ luis.espinal SICP wydaje się przesadą w programowaniu wprowadzającym (chyba że mówimy o studiach podyplomowych). Istnieje powód, dla którego MIT porzucił kurs SICP jako kurs wprowadzający ... Mimo to zgadzam się, że warto przeczytać tę książkę (i wykonać ćwiczenia ...), ale robienie tego w standardowym semestrze studenckim byłoby trudne nawet ponadprzeciętny student. Również wprowadzenie do Java / Python / Ruby / C jest bardziej odpowiednie dla siły roboczej, im wcześniej ktoś przyzwyczai się do języków imperatywnych, tym lepiej ... SICP jest świetny do poszerzania horyzontów. Ale może być zniechęcający jako kurs wprowadzający ...
Cervo
1
@Cervo - To uzasadniona obawa i wydaje się, że to przesada, ale (i to jest całkowicie subiektywne stanowisko, które potwierdzam), mocno wierzę, że zapewnia głębsze podstawy niż zwykle w przypadku innych podejść głównego nurtu . Przysięgli wciąż nie są przy MIT, skoro przeszli na Python (niektóre z powodów są takie, że mają także możliwości FP i są bardzo podatne na naukowe obliczenia i robotykę, co nie jest schematem). Nic nie jest złego w Pythonie (właściwie uwielbiam ten język), ale jury nie będzie dostępne, dopóki nie pojawi się podobna do Pythona wersja SICP.
luis.espinal
2
@ con't - to znaczy sugeruję SICP nie ze względu na program, ale ze względu na jego treść pedagogiczną. Właściwie sugerowałbym zacząć od zgromadzenia (ludzie zrobili to całkiem skutecznie), ale nie ma książek o montażu (i prawdopodobnie nigdy nie będzie) takich jak SICP. Najbliższa byłaby encyklopedia Knutha (i to byłaby przesada). Jeśli chodzi o Javę , pracowałem z nią przez 12 lat i nie poleciłbym jej do nauczania ... wykonuje pracę, ale jest przerażająca, ponieważ PL. C, Python lub Ruby są znacznie lepiej zaprojektowanymi językami.
luis.espinal
1
@ con't - ostrzegam też przed używaniem języka jako narzędzia pedagogicznego, ponieważ jest to główny nurt. Główny nurt zmienia się co 2-3 lata, a w Javie język jest prosty, ale zadaniem jest nauka JVM, bibliotek i architektury. Powiedziałbym, żebym uczył się rozwoju Java i .NET na czwartym roku studiów. I uważam (wiem, subiektywnie ), że ważne jest, aby zapewnić dyscyplinę na wczesnym etapie. Mamy zbyt wielu programistów typu „wskaż i kliknij”, którzy na początku potrzebowali trochę dyscypliny.
Gdybym kiedykolwiek mógł przeczytać tylko jedną książkę o programowaniu, a gdybym ją przeczytał, to zniknie. I nigdy nie zobaczę innej książki, to by było na tyle. Jeśli będę musiał trzymać książkę na półce, żeby popatrzeć później ... Może to być kolejna, bardziej referencyjna książka. W każdym razie +1!
SingleNegationElimination
Podobała mi się ta książka i przeczytałem ją do końca. Jednak wiele materiałów dotyczy tylko bardzo dużych projektów, w których setki, a nawet tysiące osób lub ludzie pracują nad tym jak OS; ponieważ z tego czerpie swoje doświadczenia. Myślałem, że Code Complete był znacznie bardziej pomocny pod względem wiedzy, z której mogłem korzystać codziennie i która dotyczyła mnie.
Mieliśmy czwarte wydanie, ale jest to świetna książka na temat algorytmów!
Chris
@Chris: Nie wydaje mi się, żeby była czwarta edycja. Trzecia edycja pochodzi z września 2009 roku, więc jest nowa.
Jonas
Errr, drugie wydanie z zieloną okładką.
Chris
To jest wymagany podręcznik dla mojej klasy tego terminu. Cieszę się, że jest na liście tutaj i że jest tak wysoko oceniany w stosunku do oryginalnego pytania SO!
To książka do czytania na OOP projektowania i architektury. Wzory są dobre, gdy są właściwie stosowane, ale myślę, że prawdziwą wartością tej książki jest to, że daje zestaw narzędzi do wykorzystania podczas projektowania.
Właśnie policzyłem dziś moje książki. 23 z nich. To zależy od tego, nad czym pracuję. Myślę, że ponadczasową odpowiedzią jest „język C”, autor: Kernighan i Ritchie .
Zawiera wiele dobrych wskazówek na temat testowania i zarządzania istniejącą bazą kodu, z których większość nie wiedziałam, dopóki nie przeczytałam tej książki. Koniecznie przeczytaj, nawet jeśli starszy kod, z którym pracujesz, to Twój własny kod, który napisałeś wczoraj.
Nie jestem pewien, czy to kwalifikuje się jako „1 książka” (chyba że naprawdę masz na myśli „tylko Tom 1”)
Inaimathi
Mam całą jego serię, ale zadowolę się Tomem 1. (Moje pierwsze zajęcia z informatyki były tego nauczane w 1967 roku. To było bezcenne). „Poznaj swoje struktury danych”.
Ira Baxter,
15
Niezbędne książki Java:
Skuteczna Java Josh Bloch
Współbieżność Java w praktyce Brian Goetz, i in. glin.
Ha! To był mój wybór na liście książek niezwiązanych z programowaniem! Myślę, że to sprawia, że nie można go zaklasyfikować?
Paddyslacker,
Naprawdę podobała mi się ta książka, bardzo poleciła ją moja teoria obliczeń prof. UW Madison - bardzo pomogła, próbując zrozumieć, o czym, do diabła, mówił.
Peter Turner
@Paddyslacker, GEB poświęca sporo czasu na rozmowy na temat obliczalności i różnych koncepcji informatycznych.
5
The Pragmatic Programmer: From Journeyman to Master (Andrew Hunt i David Thomas)
Getting Things Done (David Allen) uczy, jak radzić sobie z tysiącami małych zadań, które musisz wykonać w codziennej pracy jako programista. Chociaż nie jest specjalnie skierowany do programistów, jest zdecydowanie nieocenioną pomocą, ponieważ tworzenie oprogramowania zazwyczaj wymaga bardzo dużej liczby małych zadań, które należy wykonać w sposób priorytetowy. Na przykład: jakie nowe funkcje wdrożyć, które błędy naprawić, które części kodu refaktoryzować, które części kodu odpocząć lub ponownie przetestować itp.
Obowiązkowa lektura dla programistów działających w czasie rzeczywistym - nawet jeśli informacje o procesorze są datowane, sposób myślenia jest nieoceniony.
Czy iPad się liczy? Chciałbym powiedzieć, że moim numerem 1 na półce jest przeglądarka internetowa i możliwość wyszukiwania. Interfejs API online i referencje są najlepszym miejscem i będzie zależeć od mojego obecnego zestawu projektów.
Nie, nie ma. Zobacz komentarz na temat Kindle powyżej. Mimo to uwielbiam iPada. Może być cennym zasobem, ale wciąż nie jest prawdziwą książką. +1, jestem w nastroju fanboya. :)
Mamy zbyt wielu programistów „OO”, którzy wciąż nie wiedzą, czym jest obiekt lub klasa ani do czego służy; nie wiem, jak wygląda dobre OO, programowanie proceduralne, modułowe i ustrukturyzowane; i jakoś poradzić sobie ze źle skonstruowanym pseudo-proceduralnym kodem razem z klasami.
Ta książka (plus kilka starych lat 70-tych na temat projektowania strukturalnego) bardzo by pomogła tym biednym duszom w końcu zrozumieć, jak powinna wyglądać dobra orientacja obiektowa.
Co więcej, są szanse, że gdybym był zmuszony wybrać jedną książkę i tylko jedną książkę obok tej, nie wybrałbym książki specyficznej dla technologii .
Jest to jedna z niewielu książek programistycznych, które zachowałem, kiedy zaczynałem programować. Często pożyczałem to ludziom, którzy po raz pierwszy zaczynali. Teraz nie tak bardzo, ponieważ C nie jest już pierwszym językiem programowania wielu ludzi. Świetnie sobie radzi z opisywaniem tego, co dzieje się za kulisami, a opisy wskaźników wnoszą prawdziwą jasność do tego, co dla wielu byłoby bardzo mylące.
Właściwie to nie lubiłem książki Jona. Informacje były dobre, ale w książce było tyle „och, to ważne 10 rozdziałów od teraz” w książce, że wydawało się, że jest bardzo źle ułożona.
Steven Evers,
2
Pamiętaj, że jest drugie wydanie, które jest aktualizacją od pierwszego i obejmuje również C # 4.
Grant Palin
1
Projektowanie obiektów: role, odpowiedzialność i współpraca
To zdecydowanie moja ulubiona książka programowa (nawet jeśli nie jest zależna od języka). Moim skromnym zdaniem jest książka, która lepiej przedstawia sprawę dotyczącą projektowania przedmiotów, które odnoszą się do ich kuzynów / braci / sąsiadów. Musi mieć na każdej poważnej półce dla programistów.
Odpowiedzi:
Kompletny kod : Steve McConnell. Nie sądzę, żeby to wymagało wyjaśnienia. To ostateczna książka na temat budowy oprogramowania. Niezwykle dobrze napisany i obejmuje wszystkie aspekty praktycznej (programistycznej) strony tworzenia oprogramowania.
źródło
Łatwo.
źródło
Struktura i interpretacja programów komputerowych, znana również jako SICP
Kiedy zobaczyłem, że SICP jeszcze nie ma na liście, skrzywiłem się z bólu. :)
Dlaczego: Nic więcej nie można dodać do chwalenia tej książki przez Norviga jako najlepsze wprowadzenie do informatyki, jakie kiedykolwiek napisano. No dobrze, skoro Dlaczego? został poproszony: SICP obejmuje podstawy oprogramowania w sposób satysfakcjonująco głęboki, podnosząc wiele perspektyw i pytań na temat natury obliczeń - z których wiele pozostaje kwestiami otwartymi - jednocześnie prowadząc czytelnika do wykraczania poza powierzchowne aspekty mówienia maszynie zrobić lub jak to zrobić.
alt text http://ecx.images-amazon.com/images/I/41CPGEDXMDL._SL500_AA300_.jpg
Kliknij obraz, aby przejść do darmowego tekstu online . Można również łatwo znaleźć wykłady wideo autorów , w tym w kolorze i stroju w stylu lat 80-tych.
źródło
Warte wspomnienia:
Mityczny Miesiąc Człowieka
źródło
Wprowadzenie do algorytmów
źródło
Wzory projektowe: elementy oprogramowania obiektowego wielokrotnego użytku
To książka do czytania na OOP projektowania i architektury. Wzory są dobre, gdy są właściwie stosowane, ale myślę, że prawdziwą wartością tej książki jest to, że daje zestaw narzędzi do wykorzystania podczas projektowania.
źródło
Czysty kod Roberta C. Martina
Języki, ramy, metodologie przychodzą i odchodzą, ale wiele pomysłów w tej książce jest, jak podejrzewam, na zawsze.
źródło
Refaktoryzacja: poprawa projektu istniejącego kodu
źródło
Właśnie policzyłem dziś moje książki. 23 z nich. To zależy od tego, nad czym pracuję. Myślę, że ponadczasową odpowiedzią jest „język C”, autor: Kernighan i Ritchie .
źródło
Skutecznie współpracuje ze starszym kodem Michaela Feathersa.
Zawiera wiele dobrych wskazówek na temat testowania i zarządzania istniejącą bazą kodu, z których większość nie wiedziałam, dopóki nie przeczytałam tej książki. Koniecznie przeczytaj, nawet jeśli starszy kod, z którym pracujesz, to Twój własny kod, który napisałeś wczoraj.
źródło
Sztuka programowania komputerowego Donalda Knutha
źródło
Niezbędne książki Java:
Skuteczna Java Josh Bloch
Współbieżność Java w praktyce Brian Goetz, i in. glin.
Puzzle Java Josh Bloch, Neal Gafter
źródło
Coders at work autorstwa Petera Seibela
Ciekawe i inspirujące, gorąco polecam.
źródło
Gödel, Escher, Bach.
!
źródło
The Pragmatic Programmer: From Journeyman to Master (Andrew Hunt i David Thomas)
źródło
Getting Things Done (David Allen) uczy, jak radzić sobie z tysiącami małych zadań, które musisz wykonać w codziennej pracy jako programista. Chociaż nie jest specjalnie skierowany do programistów, jest zdecydowanie nieocenioną pomocą, ponieważ tworzenie oprogramowania zazwyczaj wymaga bardzo dużej liczby małych zadań, które należy wykonać w sposób priorytetowy. Na przykład: jakie nowe funkcje wdrożyć, które błędy naprawić, które części kodu refaktoryzować, które części kodu odpocząć lub ponownie przetestować itp.
źródło
Język programowania C ++ autorstwa Bjarne Stroustrup
źródło
Windows przez C / C ++, Jeffrey Richter
źródło
Zen of Code Optimization autorstwa Michaela Abrasha
Obowiązkowa lektura dla programistów działających w czasie rzeczywistym - nawet jeśli informacje o procesorze są datowane, sposób myślenia jest nieoceniony.
źródło
Czy iPad się liczy? Chciałbym powiedzieć, że moim numerem 1 na półce jest przeglądarka internetowa i możliwość wyszukiwania. Interfejs API online i referencje są najlepszym miejscem i będzie zależeć od mojego obecnego zestawu projektów.
źródło
Wzory projektowe w Rubim:
źródło
„Pułapki rozwoju obiektowego” Bruce'a F. Webstera
Mamy zbyt wielu programistów „OO”, którzy wciąż nie wiedzą, czym jest obiekt lub klasa ani do czego służy; nie wiem, jak wygląda dobre OO, programowanie proceduralne, modułowe i ustrukturyzowane; i jakoś poradzić sobie ze źle skonstruowanym pseudo-proceduralnym kodem razem z klasami.
Ta książka (plus kilka starych lat 70-tych na temat projektowania strukturalnego) bardzo by pomogła tym biednym duszom w końcu zrozumieć, jak powinna wyglądać dobra orientacja obiektowa.
Co więcej, są szanse, że gdybym był zmuszony wybrać jedną książkę i tylko jedną książkę obok tej, nie wybrałbym książki specyficznej dla technologii .
źródło
Jest to jedna z niewielu książek programistycznych, które zachowałem, kiedy zaczynałem programować. Często pożyczałem to ludziom, którzy po raz pierwszy zaczynali. Teraz nie tak bardzo, ponieważ C nie jest już pierwszym językiem programowania wielu ludzi. Świetnie sobie radzi z opisywaniem tego, co dzieje się za kulisami, a opisy wskaźników wnoszą prawdziwą jasność do tego, co dla wielu byłoby bardzo mylące.
źródło
Jon Skeet „c # in Depth”
źródło
Projektowanie obiektów: role, odpowiedzialność i współpraca
To zdecydowanie moja ulubiona książka programowa (nawet jeśli nie jest zależna od języka). Moim skromnym zdaniem jest książka, która lepiej przedstawia sprawę dotyczącą projektowania przedmiotów, które odnoszą się do ich kuzynów / braci / sąsiadów. Musi mieć na każdej poważnej półce dla programistów.
źródło
Jedna z moich najbardziej lubianych książek;
Obiektowy proces myślowy autorstwa Matta Weisfelda
źródło