Czy jest ważna data ważności dobrze znanych, ale starych książek o programowaniu? [Zamknięte]


51

Po przeczytaniu pytania o książki, które powinien przeczytać każdy programista , zastanawiam się, czy następujące kwestie należy uznać za przestarzałe:

Wszystkie te książki wydają się bardzo stare. Czy nie ma różnicy między nowoczesnym komputerem a tym, co było aktualne, kiedy powstały te książki?

Na przykład mój 61-letni nauczyciel bardzo ładnie wyjaśnia rzeczy, ale zapomina wziąć pod uwagę wszystko, co zostało zrobione od czasu, gdy zaczął uczyć 25 lat temu i teraz.

Czy to samo nie dotyczy tych książek? Czy nie ma już bardziej nowoczesnych książek, które uczą zasad i technologii bliższych obecnej praktyce? Czy może uważasz je za przydatne i aktualne nawet dzisiaj?


9
Warto zastanowić się, dlaczego wszystkie wymienione tytuły zostały po raz pierwszy opublikowane co najmniej 12 lat temu, ale nadal są cenne dzisiaj. Cztery z pięciu zostały zaktualizowane od czasu pierwszej edycji, ale średni czas między edycjami wynosi 10,4 lat.
Caleb,

83
Podstawowe zasady programowania nie zmieniają się tylko dlatego, że pojawia się nowy język lub struktura „tygodnia tygodnia”.
Robert Harvey,

26
Oczekiwanie, że surowy absolwent informatyki zbuduje złożony system oprogramowania, jest jak oczekiwanie, że surowy absolwent inżynierii lądowej zaprojektuje most wiszący, to po prostu nie powinno się zdarzyć. Szkoła nie nauczy Cię wszystkiego, co musisz wiedzieć na dłuższą metę, powinna jednak nauczyć Cię, jak nauczyć się być świetnym inżynierem oprogramowania, a te stare książki mają tyle samo do powiedzenia, co dziesiątki lat temu - to już koniec 16 lat od opublikowania dwudziestolecia wydania The Mythical Man-Month i jest on tak samo aktualny jak oryginał w 1975 roku.
Mark Booth,

10
te książki są ponadczasowe; ale programista, który ograniczyłby się tylko do tych książek i zignorowałby nowsze rzeczy, byłby rzeczywiście przestarzały
gnat,

4
W pewnym sensie pytasz: jeśli książki są dobre, to nie są przestarzałe.
quant_dev,

Odpowiedzi:


92

Te książki dotyczą zasad rozwoju. Zasady te są z natury niezależne od języka, a dla niektórych nawet od paradygmatu (OOP, programowanie funkcjonalne, języki imperatywne).

Wyjaśniają teorię i dobre sposoby rozwoju, ponieważ ostatecznie oprogramowanie zawsze polega na uzyskiwaniu danych, przetwarzaniu ich, a następnie wysyłaniu z powrotem. Facebook, Twitter, 3D, wsadowy proces księgowy, zarządzanie ruchem kolejowym, odpalanie rakiet itp.

Książki o języku, na przykład "How to learn XXXXX in YY days"gdzie XXXXX jest językiem, a YY to liczba, która w końcu (a czasem nawet bardzo szybko) stanie się przestarzała, ponieważ z natury dotyczą one rzeczy, które ewoluują lub stają się zastępowane i stają się przestarzały.

Code Complete autorstwa niesamowitego Steve'a McConnella jest chyba książką, która uświadomiła mi to. A Pragmatic Programmer całkowicie zmienił moją wizję tworzenia oprogramowania. Czytając takie książki, zdajesz sobie sprawę, że 95% problemu, z którym codziennie się zmagasz, zostało już rozwiązane, a 95% z nas wciąż wymyśla koło.

Tak zwana „chmura” nie jest przyszłością rozwoju oprogramowania, to sposób korzystania z opracowanego oprogramowania.

Nie wpadnij w pułapkę modnych haseł / bzdur, skup się na tym, jak możesz poprawić swoje umiejętności rzemieślnika oprogramowania.

Skoncentruj się na uczeniu się na podstawie tego, co inne genialne duchy wymyśliły i nauczyły się przed nami, ponieważ jest to jedyny sposób, aby zostać uznanym programistą.


6
Dobrzy artyści kopiują wielkich artystów
kradnących

16
... wysyłają prawdziwi artyści. :-)
uprzejmie

9
A jednak, bez względu na to, ile razy to mówimy, ludzie nadal uważają, że potrzebują tylko javascript w ciągu 12 dni.
Spencer Rathbun,

2
Kopiuj dobrych artystów, kopiuj wielkich artystów ORAZ utrzymuj kod w czystości! (W szkole miałem wiele problemów z pracą z innymi dziećmi, które
popsuły

@SpencerRathbun ponadto (IMHO), JavaScript jest znacznie bardziej wymagający od otrębów niż inne języki, takie jak PHP. A jednak jest tam bazillion "Learn Javascript in 15 seconds"i tylko połowa bazillion"Learn PHP on 17 secsonds"
Clement Herreman

80

Wszystkie te książki wydają się bardzo, bardzo, bardzo stare ”.

Psychologia-programowanie komputerowe (1971) - Przy milionie razy większej liczbie programistów niż w 1970 roku psychologia tego, jak projektują programy i jakie błędy popełniają, i jak ich unikać, jest ważniejsza niż kiedykolwiek.

Software Tools (1976) - Ponieważ sieć jest zbiorem prac ramowych, narzędzi, skryptów i wtyczek - pomysły w Software Tools nigdy nie były bardziej odpowiednie.

EDYCJA: Aby odpowiedzieć na ogólne pytanie - czy stare książki programistyczne są odpowiednie?

Ogólne zasady inżynierii oprogramowania nie zmieniły się aż tak bardzo, istnieją nowe technologie OO, TDD itp. Ale ogólnie użytkownicy i problemy nie uległy zmianie - i myślenie o tym, jak podzielić problem, jest teraz takie samo zawsze był.

Te starsze książki zostały na ogół napisane przez ekspertów w tej dziedzinie. Wiele współczesnych książek o programowaniu ma na celu zepchnięcie progu na 2000 stron do najnowszego modnego hasła, gdy jest ono nadal aktualne.

Książki o językach i technologiach, które nie są już używane, prawdopodobnie nie są istotne - na liście nie ma podręcznika asemblera Vax. Ale „C” jest nadal bardzo często używane, a „Język programowania C” to nie tylko najlepsza książka na temat „C”, to model pisania zwięzłego samouczka i odniesienia do twojego języka.

Czy są nowe algorytmy? Tak. Ale wszystkie stare algorytmy są nadal aktualne, a większość nowych znajduje się w mało znanych obszarach, z którymi trudno się spotkać. Nikt ostatnio nie wymyślił lepszego rodzaju ani FFT. Chociaż inne osoby próbowały je lepiej wyjaśnić, nie ma powodu, aby tegoroczne książki na temat algorytmów były lepsze niż CLRS.

ps. Twój nowy, fajny iWhatsit działa w oparciu o BSD, opracowany w 1977 roku. Teraz dzieci zejdźcie z mojego trawnika!


28

Wszystkie te książki wydają się bardzo, bardzo, bardzo stare. Czy nie sądzisz, że istnieje różnica między obecnym czasem a momentem napisania tej książki?

IMHO nie jest zaskoczeniem, że bardzo dobre książki pozostają popularne przez dziesięciolecia - to pokazuje, jak dobre są. Ale myślę, że mogę powiedzieć coś dla każdego z wymienionych kandydatów:

Code complete: 2nd edition = may, 2004

W rzeczywistości pierwsza edycja „Code complete” pochodzi z 1993 roku, więc ta naprawdę jest „klasyczna”. Chodzi o podstawowy styl kodowania, z wykorzystaniem przykładów, które dotyczą niemal każdego języka programowania z rodziny C, który zawiera obecnie najpopularniejsze języki (C / C ++ / Java / C # / Objective-C / D / ...). Tak, ta książka jest aktualna.

Introduction to algorithms (Cormen, Leiserson, Rivest, Stein)

Cóż, właściwie nie czytałem tej książki (mój podręcznik algorytmów pochodzi z „Sedgewick”), ale nauka algorytmów i konstrukcji algorytmu jest naprawdę niezależna od języka. Oczywiście, to rzemiosło jest trochę niedoceniane w ostatnich latach, ponieważ obecnie znajduje się wiele podstawowych algorytmów w standardowych bibliotekach, ale IMHO każdy profesjonalny programista powinien posiadać podstawową wiedzę w tej dziedzinie.

The Pragmatic Programmer

To bardzo dobra książka o programowaniu jako rzemiośle. Język jest agnostyczny i bardzo, bardzo aktualny, o ile programowanie odbywa się przez programistów jako zadanie ręczne, przy użyciu edytorów tekstu, IDE, kontroli wersji itp.

Structure and Interpretation of Computer Programs: = September 1, 1996

Jest to mój osobisty faworyt, chociaż (a może dlatego, że) książka wykorzystuje Schemat, aby nauczyć cię różnic między różnymi paradygmatami programowania. Nie znam żadnej innej książki, która tak silnie skupiałaby się na tworzeniu abstrakcji. A budowanie abstrakcji jest kluczową umiejętnością, która czyni różnicę między przeciętnym programistą a najlepszym programistą - która nie zmieniła się w ostatnich dziesięcioleciach, więc tak naprawdę ta książka jest ponadczasowa. Co więcej, języki funkcjonalne i elementy językowe stały się ostatnio bardziej popularne, więc pomysły IMHO przedstawione w tej książce odrodziły się.

The C Programming Language

Cóż, ta książka może nie być tak ponadczasowa jak pozostałe cztery. Ale ponieważ C jest czymś w rodzaju „matki” wszystkich popularnych języków, które wymieniłem powyżej, dobrym pomysłem może być przeczytanie tej książki - nie sądzę, żeby były jakieś nowoczesne książki „C”, które są naprawdę lepsze. A jeśli musisz programować konserwację kodu C ++ napisanego przez kogoś, kto znał C lepiej niż C ++, to ta książka jest koniecznością.

Wreszcie, prosiliście o książki, które uwzględniają więcej „bieżącej rzeczywistości”, bez zbytniej specyfiki technologicznej. Czym więc jest „aktualna rzeczywistość” i co zmieniło się po stronie „nietechnologicznej”? Oto kilka punktów z ostatniej dekady, nie mówiąc, że ta lista jest kompletna lub ma właściwe priorytety.

  1. Istnieje więcej starszego kodu (szczególnie więcej starszego kodu nie tylko w Fortran i Cobolu, ale także w C ++ i Javie).
  2. Testy jednostkowe i TDD stały się bardziej ulubione.
  3. Dostępnych jest znacznie więcej otwartego kodu źródłowego.
  4. OO ma coraz więcej krytyków

(Nie wymieniam tutaj niczego na temat rozwoju sieci lub aplikacji, ponieważ uważam, że ta technologia jest specyficzna).

Istnieją dobre książki na tematy 1 i 2, zwłaszcza „Czysty kod” , który pochodzi z 2008 r., I „Efektywna praca ze starszym kodem” z 2004 r. Być może są to niektóre z „nowszych” książek, których szukasz?


5
Język programowania C jest ponadczasowy. Taka destylowana książka jest rzadka. Przeczytałem go ponownie dla ... Nie wiem, straciłem rachubę (przeczytałem to po raz pierwszy, gdy miałem 13 lat) i nadal to doceniam. Raczej bardziej doceniam to teraz.
Francesco,

3
Dodam # 5 do twojej listy: obliczenia równoległe. Nie do końca nowy pomysł, ale obecnie jest realizowany na niespotykaną dotąd skalę, co rodzi nowe problemy. Ale wszystko to wciąż opiera się na tych samych podstawach, co stare rzeczy i mam wrażenie, że OP nadal tak naprawdę nie rozumie tych podstaw.
Mike Baranczak,

2
@Mike: Zgadzam się, obliczenia równoległe zyskują coraz większą uwagę w ostatniej dekadzie, przegapiłem to, kiedy napisałem swoją odpowiedź.
Doc Brown

2
@Doc Brown Czy masz poglądy na temat ponadczasowości literatury, ponieważ odwiedziłeś 1885, 1955, 1985 i 2015 w ciągu kilku „dni” z własnej perspektywy?
Kalamane

13

Spośród tych, o których wspominałeś: „Kod kompletny”, „Pragmatyczny programista” i „SICP” znajdują się na mojej liście polecanych lektur dla wszystkich nowych programistów, którzy zaczynają tutaj w mojej firmie i chcą przejść na wyższy poziom.

Nie są one przestarzałe z długiej perspektywy, ponieważ podstawowa nauka w informatyce się nie zmieniła.


10

Nie przeczytałem wszystkich tych książek, ale mam własny Code Complete i The Pragmatic Programmer. Te książki są dalekie od przestarzałych. Mogą mieć kilka akapitów, które są nieco zardzewiałe, ale większość treści jest nadal aktualna.

Postęp w informatyce i programowaniu jest procesem ewolucyjnym . Nowe abstrakcje wprowadzane są na stare, ale te nowe rzeczy nie muszą powodować, że stare stają się przestarzałe.

Analogia ... Niezależnie od tego, czy studiujesz jako chirurg urazowy, czy chirurg specjalizujący się w transplantacji serca, nadal musisz wiedzieć, jak działa ludzkie ciało, chemia komórek, układy narządów, jak otworzyć klatkę piersiową i jak szybko przestań krwawić, jeśli wystąpi itp. Tylko dlatego, że wynalazł sprzęt endoskopowy i mniej inwazyjne techniki, nie oznacza to, że nie masz szans na naukę podstaw. Oznacza to tylko, że musisz nauczyć się więcej.


tak, anatomia Graya (prawdziwa książka, nie serial) została napisana w 1918 roku i studenci medycyny nadal z niej korzystają.
HLGEM,

7

„Chmura” nie jest czynnikiem. „Chmura” jest w rzeczywistości znacznie starsza niż większość książek, które wymieniłeś. większość z tych książek dotyczy podstawowych zasad, nie zawsze tak naprawdę zmieniają się. Struktury i biblioteki zmieniają się cały czas, ale sposób, w jaki powinieneś strukturyzować kod, niewiele się zmienia. Podobnie wskaźnik jest nadal wskaźnikiem, nie zaczyna robić różnych rzeczy tylko dlatego, że. Jedyną wymienioną książką dotyczącą języka jest C, w którym to przypadku stara książka jest znacznie bardziej przydatna niż cokolwiek nowego, ponieważ prawdopodobnie została napisana bliżej okresu, w którym opracowano dowolny kod C, z którym będziesz pracować.


6

Lista, którą zacytowałeś, nie, nie są przestarzałe. Książka jest przestarzała tylko wtedy, gdy temat zmienił się na tyle, że nie jest przydatny. Natura programowania i język C zmieniły się bardzo niewiele od czasu publikacji


6

Jedną z rzeczy, które musisz zdać sobie sprawę, jest istnienie podstawowych zasad, które są zasadniczo ponadczasowe, oraz implementacje, które zwykle przychodzą i odchodzą.

Podstawowymi zasadami są w zasadzie wszystkie nudne teorie, na których Informatyka spędza dużo czasu, i które są aktualne, nawet jeśli świat się wokół zmieni. W przeciwieństwie do rzeczy takich jak „Jak używać Win32s w systemie Windows 3.11”, który jest bardzo stary i nieaktualny.

Mówiąc inaczej - kanoniczny tekst o geometrii ma dwa tysiące lat. Większość matematyki nauczanej do poziomu uczelni ma co najmniej 300 lat. Jedynym powodem, dla którego książki CS nie są starsze, jest to, że pole jest wciąż nowe.


Twierdzenia Euclida 1 z księgi 1 nie można udowodnić na podstawie podanych definicji, aksjomatów i postulatów. Obecnie nie warto uczyć się od dziś, a po tysiącleciach można uznać je za przestarzałe.
David Thornley,

1
@DavidThornley, jeśli Euclids Elements nie jest kanonicznym tekstem o geometrii, co to jest?

6

Niektóre książki są ponadczasowe, ponieważ omawiają pomysły, które są tak fundamentalne w praktyce tworzenia oprogramowania, że ​​zawsze będą miały zastosowanie.

Weźmy na przykład Miesiąc Mitycznego Człowieka , kiedy czytałem tę książkę, ciągle zapominałem, że została napisana w 1975 roku. Kiedy od czasu do czasu pojawia się odniesienie do IBM System 360, zawsze mnie wkurza, ponieważ jest to jedyna treść, która pochodzi z książka. Cała reszta obowiązuje tu i teraz. Nadal przechowuję moją kopię Wzorcowej architektury aplikacji Martina Fowlera , która ma teraz 9 lat, ale znów jest ponadczasowa i nadal ma zastosowanie do pracy, którą dziś wykonuję.

Moją ulubioną książką jest teraz Java Modeling in Color with UML (1999) Petera Coada, mimo że jestem programistą C # i unikam UML, ponieważ techniki i koncepcje sprawiają, że jestem lepszym programistą.

Dobrze byłoby uczyć się od pierwszego pokolenia programistów, ponieważ oni stąpali po ziemi, którą teraz chodzimy, a ich ciężko wypracowana mądrość może pomóc nam w szybkim rozpoczęciu tego, co robimy / uczymy się dzisiaj.


MMM - Podoba mi się część o tym, że zespół ciągle naprawia błędy, ale liczba błędów pozostała stała :)
JoelFan

5

Podstawowe zasady oprogramowania nie zmieniły się w ciągu ostatnich 20 lat. Stos, drzewo i połączona lista nadal działają tak samo jak wtedy. „XOR” wciąż oznacza to samo. Bajt nadal ma 8 bitów.

Czy poważnie sugerujesz, że „wieloplatformowy rozwój” to nowy pomysł? Jak myślisz, dlaczego wynaleziono C?

„Chmura” to modne hasło marketingowe. Kiedyś oznaczało to coś specyficznego, ale zostało osłabione przez nadmierne użycie. Obecnie, gdy tylko masz coś, co komunikuje się ze zdalnym serwerem za pośrednictwem sieci, marketerzy przyklejają na nim etykietę „chmury”. Więc naprawdę nie ma sensu o tym mówić, ponieważ jest to bezsensowne słowo.

Nie znam twojego 61-letniego profesora, więc nie mogę za niego ręczyć. Z drugiej strony, ty nie jesteś tak mądry, jak ci się wydaje. Posłuchaj profesora, możliwe, że się czegoś nauczysz.


„Nie można się zestarzeć, nie będąc głupcem. Wielu młodych mędrców nie żyje jak skurwysyn”. - Richard Pryor


2
„Ty z drugiej strony nie jesteś tak mądry, jak ci się wydaje”. Gdybym myślał, że jestem taki bystry, nigdy nie zadałbym takiego pytania.
Olivier Pons,

4

Oto kilka bardzo starych i nieaktualnych książek:

  • The Art of Computer Programming, vol. 1-3 autorstwa D. Knutha. Zostały one opublikowane w latach 1968–1981! Ludzie, już nie używamy lamp próżniowych! Wszystko w tych książkach jest kiepskie. Gdzie jest dyskusja na temat Pythona i Ruby?

  • Komputery i nienaruszalność: Przewodnik do teorii kompletności NP autorstwa MR Garey i DS Johnsona, 1979. Super lame! Prawdopodobnie wszystkie te problemy zostały już rozwiązane.

Jeśli książka nie była napisana w ciągu ostatnich trzech lat z myślą o Pythonie, nie warto jej czytać.


Szczerze mówiąc, jest co najmniej jeden przypadek, aby użycie asemblera przez TAoCP dla jego pseudokodu oznacza, że ​​bardziej nowoczesne książki z algorytmami, które używają pseudokodu bliżej bardziej nowoczesnych języków, są bardziej przydatne dla ponad 90% z nas, którzy nie piszą dla osadzonych systemy.
Peter Taylor,

-1: co tydzień lub dwa widzę, jak ktoś prosi o algorytm do obsługi czegoś takiego lub innego, co Knuth opisał z niewiarygodnymi szczegółami. Dla zabawy: Wymień jeden algorytm sortowania, który jest nowszy niż 1981. Chcesz odpowiedzieć na sortowanie równoległe? Knuth ma strony o równoległym sortowaniu danych. Być może masz rację co do książek w języku Python, ale istnieje ogromna różnica między książkami „Smak tygodnia” a książkami o rzemiośle inżynieryjnym.
sarnold

5
Najwyraźniej niektóre detektory sarkazmu są zepsute ...
DaveE,

1
<Sarkazm> „Komentarz” </Sarkazm
NWS,

1
Myślę, że ta odpowiedź byłaby lepsza, gdyby zawierała wzmiankę o sztuce programowania komputerowego, tom 4A, który został opublikowany w 2011 roku i tom 5, planowany na 2020 rok!
Mark Booth,

3

Te książki nie są przestarzałe, te książki są klasyką.

Zacytować Kaplanskyspędzić trochę czasu każdego dnia nauki czegoś nowego, który jest odłączony od problemu, na którym aktualnie pracuje (należy pamiętać, że rozłączności może być tymczasowe) i przeczytać mistrzów .


3

Wiem, co masz na myśli, gdy mamy postępy (przychodzi na myśl LINQ), które zmieniają czytelność i użycie kodu, ale po prostu dlatego, że te książki są stare, nie oznacza to, że nie oferują one świetnych lekcji dla czytelnika.

Podczas gdy używane przez nich języki programowania mogły przestać być modne, teoria języków programowania wciąż jest aktualna. Większość tych książek sprawia, że ​​warto bardzo dobrze opisać podstawy, a podstawy nie zmieniły się aż tak bardzo.


2
Języki programowania, których używają, to w większości „C” - mogły przestać być modne, ale znacznie wzrosły w użyciu.
Martin Beckett,

3
Powinieneś przeczytać SICP, może otworzyć oczy na to, skąd pochodzi LINQ :)
Joris Timmermans

1

Branża informatyczna jest wciąż bardzo młoda. Książki napisane 30 lat temu uważam za wciąż cenne i potrzebne do pełnego zrozumienia. Czasami abstrakcyjne koncepcje zajmują trochę czasu.


1

Niektóre drobne części są przestarzałe we wszystkich tych książkach, ale 99% wciąż jest świetna.

Książki z algorytmami będą się powoli starzeć. Algorytmy to matematyka, a matematyka nie zmienia się szybko. Jasne, wciąż są badania nad nowymi algorytmami, które są lepsze w pewnych okolicznościach (np . Algorytm Furera (2007) Schonhage-Strassen do mnożenia ponad 40000 cyfr liczb długich razem), ale wstęp trzeba nauczyć się podstaw (dziel i rządź) / Programowanie dynamiczne / Programowanie liniowe / itp.), Dzięki czemu możesz nauczyć się rozsądnie myśleć o algorytmach.

Uczenie się standardu C od K&R jest nadal najlepszym źródłem; chociaż nie jestem pewien, czy zaufałbym ich sekcjom dotyczącym konfiguracji środowiska.

SICP jest cudowną książką i uczy podstaw współczesnego CS poprzez nauczenie seplenienia, który jest cudownym językiem. Jednak seplenienie nie jest obecnie najbardziej przydatnym językiem; chociaż inni będą argumentować, że seplenienie jest ich tajną bronią, a nauka języków takich jak Java lub Python najpierw sprawia, że ​​bardzo źli programiści, którzy nigdy nie muszą uczyć się, jak implementować sortowanie lub listy połączone, tablice lub notacje Big-O i ostatecznie robią bardzo nieefektywne rzeczy.

Niektóre z Code Complete lub Pragmatic Programmer są mniej przydatne, szczególnie jeśli programujesz w nowszych językach (np. Python / ruby ​​/ C ++ 11), ponieważ często koncentruje się na tym, jak zrobić coś w C lub daje zalecane rozwiązania przy użyciu najlepszych narzędzia dostępne w tym czasie (takie jak CVS / RCS do kontroli wersji zamiast nowoczesnego narzędzia, takiego jak git / bzr / hg / svn). Ale nadal dobrze jest myśleć o tym, jak kontrola wersji jest koniecznością i jak musi być bezproblemowa i samo dokumentująca, i przejrzeć logikę, dlaczego jest to absolutna konieczność.

Lub zalecenia PP przeciwko IDE dla podstawowych edytorów unix + narzędzi unixowych - nie mówiąc już, że nie powinieneś uczyć się korzystania z find / awk / locate / grep / sed, ale dobre IDE często pozwala zaoszczędzić dużo czasu. Np. Emacs może wyróżniać składnię lub po prostu uzupełniać kod; ale powiedzmy, że dobre IDE powie podpowiedzi z deklaracjami funkcji podczas ich wpisywania lub analizowania kodu i oznaczania nieużywanych zmiennych, ułatwiając zwijanie części kodu itp.


1

Czy nie ma różnicy między nowoczesnym komputerem a tym, co było aktualne, kiedy powstały te książki? Czy uważasz, że to zmienia to, czego powinniśmy się nauczyć? Czy nie powinniśmy brać pod uwagę rozwoju ostatnich 20 lat?

Tak, tak i tak.

To nie czyni tych książek przestarzałymi. „Nowoczesne obliczenia” to niezwykle szeroki termin. Jednakże obejmuje programowanie C, więc „C Programming Language” jest wciąż istotne książka. To zawiera algorytmy, więc „Wprowadzenie do algorytmów” jest wciąż istotne książka. Itd. itp.

Czy obecny nacisk na rozwój wielu platform Rozwój wielu platform (patrz fonegap) powinien zmienić to, czego się dziś uczymy?

Większość aplikacji w App Store (na przykład najpopularniejsza platforma mobilna) jest napisana w języku Objective C, języku z początku lat 80., który jest nadzbiorem języka C. Zatem znowu C jest nadal aktualne.

Czy uważasz, że „chmura” to moda czy przyszłość?

To nasz prezent.

Kiedy studenci opuszczają uniwersytet, powinni być prawdziwymi programistami i mieć możliwość natychmiastowej pracy

Ale co to znaczy?

Istnieje zbyt wiele języków, interfejsów API, platform, platform, narzędzi, strategii współpracy itp., Aby szkoła mogła przygotować cię do określonej pracy. Szkoła może jedynie położyć fundament, dając ci podstawowy model działania maszyny, na temat algorytmów, struktur danych, budowy kodu, strategii dekompozycji, niektórych narzędzi itp.

„Prawdziwy programista” nie jest kimś, kto wie wszystko, jest osobą zdolną do tego rodzaju pracy, która ma podstawy w teorii i praktyce i która umie się uczyć , ponieważ twoje wykształcenie nigdy się nie kończy.


1
+1 za komentarz „jak się uczyć” - po to jest college, a nie szkolenie zawodowe.
DaveE,

1

Ok, więc zamierzam udzielić odpowiedzi, która jest o wiele bardziej teoretyczna. Zgadzam się z wami wszystkimi, którzy odpowiedzieliście na dość oczywiste, moim zdaniem, te książki są podstawą tego, co robimy jako programiści, i wszystkie te nowe frameworki są zbudowane na tej samej linii starych filarów.

Oto moje dwa centy - niezupełnie moje, nauczyłem się tego od św. Akwinu i od Arystotelesa przed nim.

An abstraction is useless to someone who doesn't understand the particulars.

Mechanika komputera nie zmieniła się od czasu von-neumanna. Podobnie, szczegóły, których musisz nauczyć się, aby być świetnym programistą, będą takie same, dopóki model von-neumanna nie będzie przestarzały. Asembler to język komputerów ... naucz się go, bez wymówek.

C jest językiem ojczystym Windowsa i Uniksa. Naucz się go lub znajdź nowy handel. Jeśli jesteś jednym z tych facetów, którzy poszli prosto na JAVA lub C #, możesz być dobrym programistą, ale byłbyś znacznie lepszym programistą, gdybyś nauczył się kropki C.

Algorytmy i struktury danych są podstawą programów komputerowych. Naucz się ich.

Cała reszta to abstrakcja tych bardzo podstawowych dyscyplin. Abstrakcje są wspaniałe, gdy są właściwie używane - poważnie, używam C # do 75% wszystkich moich projektów. Jednak sprawiają, że jesteś głupi, jeśli nie poświęcisz czasu na zrozumienie, jak działają i jak funkcjonować bez nich. Spędzisz niekończący się czas, tworząc oprogramowanie, które zmieści się w przysłowiowej kwadratowej dziurze, gdy są znacznie lepsze podejścia i będziesz mieć błędy, których można by uniknąć. Rozwój oprogramowania jest rzemiosłem, które należy opanować, a na koniec narzędzia rzadko się zmieniają. Właśnie dlatego te książki są tak ważne.

Wszyscy ci programiści JAVA i C #, tsk, założę się, że większość z nich nigdy nawet nie widziała odcinka Star Trek!


1

Usłyszałem powiedzenie mentora:

„Dobra rada ma powód, dla którego wiesz, kiedy nie jest to już dobra rada”. Tak więc w kategoriach książki książka wyjaśniająca, dlaczego warto wykonać X w stosunku do Y, da ci znać, kiedy ta rada przestanie być aktualna. Książka „zawsze rób to, po prostu rób to”, jak niektóre z kursu awaryjnego w języku X, nie jest tak dobra.

Widziałem taką, która nazywa się „ucz się unixa w ciągu 24 godzin”, no cóż, książka miała około 8 cm grubości, wątpię, by wiele osób mogło nawet przeczytać każdą stronę w ciągu 24 godzin :)

Pamiętaj, że to, co jest dziś modne, jutro może zostać wyszydzone. Wszystkie poniższe zostały kiedyś uznane za główny nurt (wczoraj w modzie), ale teraz nie są:

  • Iść do
  • Pojedyncze wejście pojedyncze wyjście
  • Notacja węgierska
  • Podejście do wodospadu

I jest kilka rzeczy, które kiedyś były całkowicie przekleństwem, ale teraz są akceptowane:

  • Rekurencja jako narzędzie do rozwiązywania problemów (radykalne we wczesnych dniach BASIC)
  • Przydzielanie pamięci w czasie wykonywania za pomocą malloc / new
  • Korzystanie z C ++ STL
  • Języki zbierania śmieci dla systemów czasu rzeczywistego

Wiedz dlaczego, a będziesz wiedział, kiedy stare założenia zostały zastąpione nową rzeczywistością, podobnie jak porady.

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.