Gibt es ein Ablaufdatum für angesehene, aber alte Bücher zur Programmierung? [geschlossen]


51

Nachdem ich eine Frage zu Büchern gelesen habe , die jeder Programmierer lesen sollte , frage ich mich, ob Folgendes als veraltet angesehen werden sollte:

Alle diese Bücher scheinen sehr alt zu sein. Gibt es keinen Unterschied zwischen modernem Computing und dem, was aktuell war, als das Buch geschrieben wurde?

Zum Beispiel erklärt mein 61-jähriger Lehrer die Dinge sehr gut, vergisst aber alles, was zwischen seinem Beginn vor 25 Jahren und jetzt getan wurde.

Gilt das nicht auch für diese Bücher? Gibt es keine moderneren Bücher, die Prinzipien und Technologien vermitteln, die der gegenwärtigen Praxis näher kommen? Oder halten Sie sie auch heute noch für nützlich und relevant?


9
Es lohnt sich zu überlegen, warum alle aufgelisteten Titel vor mindestens 12 Jahren zum ersten Mal veröffentlicht wurden, aber heute noch wertvoll sind. Vier der fünf wurden seit ihrer ersten Ausgabe aktualisiert, aber die durchschnittliche Zeitspanne zwischen den Ausgaben beträgt 10,4 Jahre.
Caleb

83
Grundlegende Programmierprinzipien ändern sich nicht, nur weil es eine neue Sprache oder ein neues Framework gibt.
Robert Harvey

26
Wenn man von einem Absolventen der Informatik erwartet, dass er ein komplexes Softwaresystem erstellt, ist das so, als würde man von einem Absolventen des Bauingenieurwesens erwarten, dass er eine Hängebrücke entwirft, das sollte einfach nicht passieren. Die Schule bringt Ihnen bei weitem nicht alles bei, was Sie wissen müssen. Sie sollte Ihnen beibringen, wie man ein großartiger Software-Ingenieur ist, und diese alten Bücher haben heute genauso viel zu sagen wie vor Jahrzehnten - es ist vorbei 16 Jahre nach Erscheinen der 20-jährigen Jubiläumsausgabe von The Mythical Man-Month ist sie heute genauso aktuell wie das Original von 1975.
Mark Booth,

10
diese Bücher sind zeitlos; aber Programmierer, der sich selbst begrenzen würde nur auf diese Bücher und wer würde neueren Sachen ignorieren, wäre obsolet in der Tat
gnat

4
Sie stellen sich die Frage: Wenn die Bücher gut sind, sind sie nicht veraltet.
quant_dev

Antworten:


92

In diesem Buch geht es um die Prinzipien der Entwicklung. Diese Prinzipien sind von Natur aus sprachunabhängig und für einige sogar paradigmenunabhängig (OOP, funktionale Programmierung, imperative Sprachen).

Sie erklären die Theorie und die guten Wege der Entwicklung, weil es bei Software letztendlich immer darum geht, Daten zu erhalten, zu verarbeiten und dann wieder auszugeben. Facebook, Twitter, 3D, Batch-Prozess der Buchhaltung, Eisenbahnverkehrsmanagement, Raketen starten, etc.

Bücher, in denen es um eine Sprache geht "How to learn XXXXX in YY days", bei denen XXXXX eine Sprache und YY eine Zahl ist, die irgendwann (und manchmal sogar sehr schnell) veraltet sein wird, weil es sich von Natur aus um Dinge handelt, die sich entweder weiterentwickeln oder ersetzt und ersetzt werden veraltet.

Code Complete , von dem großartigen Steve McConnell, ist vielleicht das Buch, das mich dazu gebracht hat, dies zu realisieren. Und der Pragmatic Programmer hat meine Vision von Softwareentwicklung grundlegend verändert. Wenn Sie solche Bücher lesen, stellen Sie fest, dass 95% der Probleme, mit denen Sie täglich konfrontiert sind, bereits gelöst sind und dass 95% von uns das Rad immer noch neu erfinden.

Die sogenannte "Cloud" ist nicht die Zukunft der Softwareentwicklung, sondern ein Weg, entwickelte Software zu nutzen.

Fallen Sie nicht in die Falle von Hype / Bullshit-Modewörtern, sondern konzentrieren Sie sich darauf, wie Sie Ihre Fähigkeiten als Software-Entwickler verbessern können.

Konzentrieren Sie sich darauf, von dem zu lernen, was andere brillante Geister vor uns erfunden und gelernt haben, denn nur so können Sie ein versierter Entwickler werden.


6
Gute Künstler kopieren große Künstler stehlen
Hafichuk

16
... das Schiff der wahren Künstler. :-)
bisschen

9
Und doch, egal wie oft wir es sagen, glauben die Leute immer noch, dass sie in 12 Tagen nur Javascript brauchen.
Spencer Rathbun

2
Gute Künstler kopieren, großartige Künstler kopieren UND halten den Code sauber! (Ich hatte in der Schule so viele Kopfschmerzen bei der Arbeit mit anderen Kindern, die das Projekt durcheinander gebracht haben, weil sie von allem und jedem etwas
kopiert haben

@SpencerRathbun außerdem (IMHO), Javascript ist weitaus branchenintensiver als andere Sprachen wie PHP. Dennoch gibt es eine Bazillion "Learn Javascript in 15 seconds"und nur eine halbe Bazillion"Learn PHP on 17 secsonds"
Clement Herreman

80

Alle diese Bücher scheinen sehr, sehr, sehr alt zu sein. "

Psychologie-Computer-Programmierung (1971) - Bei einer Million Programmierer wie 1970 ist die Psychologie, wie sie Programme entwerfen und welche Fehler sie machen und wie sie vermieden werden, wichtiger denn je.

Software Tools (1976) - Da das Web eine Sammlung von Frames, Dienstprogrammen, Skripten und Plugins ist, waren die Ideen in Software Tools noch nie so relevant.

EDIT: Um die allgemeine Frage zu beantworten - sind alte Programmbücher relevant?

Die allgemeinen Prinzipien des Software-Engineerings haben sich nicht allzu sehr geändert, es gibt neue Technologien, OO, TDD usw. Aber im Allgemeinen haben sich die Benutzer und die Probleme nicht geändert - und darüber nachzudenken, wie ein Problem aufgeteilt werden kann, ist dasselbe wie jetzt war immer.

Diese älteren Bücher wurden in der Regel von Fachleuten verfasst. Viele moderne Programmierbücher zielen darauf ab, einen 2000-seitigen Türstopper nach dem neuesten Schlagwort zu durchsuchen, solange es noch aktuell ist.

Bücher über Sprachen und Technologien, die nicht mehr verwendet werden, sind wahrscheinlich nicht relevant - es ist kein Vax-Assembler-Handbuch auf der Liste. "C" wird jedoch nach wie vor sehr häufig verwendet und "Die Programmiersprache C" ist nicht nur das beste Buch zu "C", sondern auch ein Modell für das Schreiben eines kurzen Tutorials und die Bezugnahme auf Ihre Sprache.

Gibt es neue Algorithmen? Ja. Aber alle alten Algorithmen sind immer noch relevant und die meisten neuen befinden sich in dunklen Bereichen, denen Sie wahrscheinlich nicht begegnen werden. Niemand hat sich in letzter Zeit eine bessere Sorte oder FFT ausgedacht. Obwohl andere versucht haben, sie besser zu erklären, gibt es keinen Grund, warum die diesjährigen Algorithmenbücher besser sind als CLRS.

ps. Ihr cooler neuer iWhatsit läuft mit BSD, der 1977 entwickelt wurde. Jetzt steigen Sie Kinder von meinem Rasen!


28

All diese Bücher scheinen sehr, sehr, sehr alt zu sein. Glauben Sie nicht, dass es heutzutage einen Unterschied gibt, wann dieses Buch geschrieben wurde?

IMHO ist es keine Überraschung, dass sehr gute Bücher über Jahrzehnte populär bleiben - das zeigt, wie gut sie sind. Aber ich denke, ich kann Ihnen für jeden der Kandidaten, die Sie aufgelistet haben, etwas sagen:

Code complete: 2nd edition = may, 2004

Eigentlich war die erste Ausgabe von "Code complete" aus dem Jahr 1993, also ist diese Ausgabe wirklich ein "Klassiker". Es geht um den grundlegenden Codierungsstil anhand von Beispielen, die für fast alle Programmiersprachen der C-Familie gelten, die heutzutage die beliebtesten Sprachen enthalten (C / C ++ / Java / C # / Objective-C / D / ...). Also ja, dieses Buch ist aktuell.

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

Nun, ich habe dieses Buch eigentlich nicht gelesen (mein Algorithmus-Lehrbuch war von "Sedgewick"), aber Lernalgorithmen und Algorithmenkonstruktionen sind wirklich sprachunabhängig. Natürlich wird dieses Handwerk in den letzten Jahren etwas unterschätzt, da man heutzutage in Standardbibliotheken viele grundlegende Algorithmen findet, aber IMHO sollte jeder professionelle Programmierer über einige Grundkenntnisse auf diesem Gebiet verfügen.

The Pragmatic Programmer

Dies ist ein sehr gutes Buch über das Programmieren als Handwerkskunst. Sprachunabhängig und sehr, sehr aktuell, solange die Programmierung von Programmierern als manuelle Aufgabe mit Texteditoren, IDEs, Versionskontrolle usw. durchgeführt wird.

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

Dies ist mein persönlicher Favorit, obwohl (oder vielleicht weil) das Buch Schema verwendet, um Ihnen die Unterschiede zwischen verschiedenen Programmierparadigmen beizubringen. Ich kenne kein anderes Buch, das so stark auf das Bauen von Abstraktionen ausgerichtet ist. Und Abstraktionen zu erstellen ist eine Schlüsselfähigkeit, die den Unterschied zwischen einem mittelmäßigen Programmierer und einem Spitzenprogrammierer ausmacht - das hat sich in den letzten Jahrzehnten nicht geändert, so dass dieses Buch wirklich zeitlos ist. Darüber hinaus sind funktionale Sprachen und Sprachelemente in letzter Zeit immer beliebter geworden, sodass die in diesem Buch vorgestellten Ideen meiner Meinung nach eine Renaissance erlebten.

The C Programming Language

Nun, dieses Buch ist vielleicht nicht so zeitlos wie die anderen vier. Aber da C so etwas wie die "Mutter" all der populären Sprachen ist, die ich oben aufgelistet habe, ist es möglicherweise eine gute Idee, dieses Buch zu lesen - ich denke nicht, dass es einige moderne "C" -Bücher gibt, die wirklich besser sind. Und wenn Sie C ++ - Code warten müssen, der von jemandem geschrieben wurde, der C besser kennt als C ++, dann ist dieses Buch ein Muss.

Schließlich haben Sie nach Büchern gefragt, die die "aktuelle Realität" stärker berücksichtigen, ohne zu technologiebezogen zu sein. Was ist also die "aktuelle Realität" und was hat sich auf der "Nicht-Technologie" -Seite geändert? Hier sind einige Punkte aus dem letzten Jahrzehnt, ohne zu erwähnen, dass diese Liste vollständig ist oder die richtigen Prioritäten hat.

  1. Es gibt mehr Legacy-Code (insbesondere mehr Legacy-Code nicht nur in Fortran und Cobol, sondern auch in C ++ und Java).
  2. Unit Testing und TDD sind beliebter geworden.
  3. Es gibt viel mehr Open Source Code.
  4. OO hat immer mehr Kritiker bekommen

(Ich führe hier nichts über Web- oder App-Entwicklung auf, weil ich diese Technologie für spezifisch halte).

Es gibt gute Bücher zu den Themen 1 und 2, insbesondere "Clean Code" aus dem Jahr 2008 und "Effektiv mit altem Code arbeiten" aus dem Jahr 2004. Vielleicht sind dies einige der "neueren" Bücher, nach denen Sie suchen?


5
Die Programmiersprache C ist zeitlos. So ein destilliertes Buch ist selten. Ich habe es noch einmal gelesen für ... Ich weiß nicht, ich habe die Zählung verloren (ich habe es zum ersten Mal gelesen, als ich 13 war) und ich weiß es immer noch zu schätzen. Eher schätze ich es jetzt viel mehr.
Francesco

3
Ich werde # 5 zu Ihrer Liste hinzufügen: Parallel Computing. Nicht gerade eine neue Idee, aber heutzutage wird sie in einem beispiellosen Ausmaß umgesetzt, was einige neue Probleme aufwirft. Aber all dies basiert immer noch auf denselben Grundlagen wie das alte Zeug, und ich habe das Gefühl, dass das OP diese Grundlagen immer noch nicht wirklich versteht.
Mike Baranczak

2
@Mike: Ich stimme zu, Parallel Computing wird im letzten Jahrzehnt immer mehr beachtet. Das habe ich verpasst, als ich meine Antwort schrieb.
Doc Brown

2
@Doc Brown Wie beurteilen Sie die Zeitlosigkeit der Literatur, weil Sie 1885, 1955, 1985 und 2015 innerhalb weniger Tage aus Ihrer eigenen Sicht besucht haben?
Kalamane

13

Von denen, die Sie "Code complete", "The pragmatic programmer" und "SICP" genannt haben, standen alle neuen Entwickler, die hier in meinem Unternehmen anfangen und auf eine höhere Ebene gelangen möchten, auf meiner Liste der empfohlenen Bücher.

Sie sind bei weitem nicht überholt, da sich die Grundlagenforschung in der Informatik nicht geändert hat.


10

Ich habe nicht alle diese Bücher gelesen, aber ich besitze Code Complete und The Pragmatic Programmer. Diese Bücher sind alles andere als veraltet. Sie haben vielleicht ein paar Absätze, die ein bisschen verrostet sind, aber der größte Teil des Inhalts ist noch heute relevant.

Der Fortschritt in der Informatik und Programmierung ist ein evolutionärer Prozess. Neue Abstraktionen werden zusätzlich zu alten eingeführt, aber diese neuen Dinge machen die alten nicht unbedingt überholt.

Eine Analogie ... Ob Sie studieren, um ein Unfallchirurg zu sein, oder ein Chirurg, der sich auf Herztransplantation spezialisiert hat, Sie müssen immer noch wissen, wie der menschliche Körper funktioniert, wie die Zellchemie funktioniert, wie man die Brust öffnet und wie man schnell Hören Sie auf zu bluten, wenn es auftritt, etc ... Nur weil sie endoskopische Geräte und weniger invasive Techniken erfunden haben, heißt das nicht, dass Sie nicht bereit sind, die Grundlagen zu erlernen. Es bedeutet nur, dass Sie mehr lernen müssen.


Ja, Gray's Anatomy (das wahre Buch, nicht die Fernsehsendung) wurde 1918 geschrieben und wird von Medizinstudenten immer noch verwendet.
HLGEM

7

Die "Wolke" ist kein Faktor. Die "Wolke" ist tatsächlich viel älter als die meisten Bücher, die Sie aufgelistet haben. Die meisten dieser Bücher handeln von Grundprinzipien, sie ändern sich jedoch nie zu oft. Frameworks und Bibliotheken ändern sich ständig, aber wie Sie Ihren Code strukturieren sollten, ändert sich nicht wesentlich. In ähnlicher Weise ist ein Zeiger immer noch ein Zeiger, der keine anderen Aufgaben ausführt, nur weil. Das einzige sprachspezifische Buch, das Sie aufgelistet haben, befasst sich mit C. In diesem Fall ist dieses alte Buch viel nützlicher als alles Neue, da es wahrscheinlich näher an dem Zeitraum geschrieben wurde, in dem jeder C-Code entwickelt wurde, mit dem Sie arbeiten würden.


6

Die Liste, die Sie zitiert haben, ist nicht veraltet. Ein Buch ist nur dann überholt, wenn sich das Thema so verändert hat, dass es nicht mehr nützlich ist. Sowohl die Programmiersprache als auch die Programmiersprache C haben sich seit der Veröffentlichung kaum verändert


6

Eines der Dinge, die Sie erkennen müssen, ist, dass es zugrunde liegende Prinzipien gibt, die im Wesentlichen zeitlos sind, und Implementierungen, die dazu neigen, zu kommen und zu gehen.

Die zugrunde liegenden Prinzipien sind im Wesentlichen alle langweiligen Theorien, mit denen die Informatik viel Zeit verbringt, und die auch dann gültig bleiben, wenn sich die Welt um sie herum verändert. Dies im Gegensatz zu Dingen wie „Wie Win32s unter Windows 3.11 verwenden“ , das ist sehr alt und überholt.

Um die Dinge in die richtige Perspektive zu rücken - der kanonische Text zur Geometrie ist zweitausend Jahre alt. Die meisten Mathematiklehrer sind mindestens 300 Jahre alt. Der einzige Grund, warum die CS-Bücher nicht älter sind, ist, dass das Feld noch neu ist.


Euklids Satz 1 von Buch 1 kann aus den gelieferten Definitionen, Axiomen und Postulaten nicht bewiesen werden. Es ist keine gute Wahl, von heute zu lernen, und nach Jahrtausenden kann man davon ausgehen, dass es veraltet ist.
David Thornley

1
@ DavidThornley Wenn Euclids Elements nicht der kanonische Text zu Geometrie ist, was ist das?

6

Einige Bücher sind zeitlos, weil sie Ideen diskutieren, die für die Praxis der Softwareentwicklung so grundlegend sind, dass sie immer zutreffen.

Nehmen wir zum Beispiel den Monat des mythischen Mannes , als ich dieses Buch las, und ich vergaß immer wieder, dass es 1975 geschrieben wurde Buch. Alles andere gilt hier und jetzt. Ich behalte immer noch meine Kopie von Martin Fowlers Patterns of Enterprise Application Architecture , jetzt 9 Jahre alt, aber wieder zeitlos und immer noch auf die Arbeit anwendbar, die ich heute mache.

Mein aktuelles Lieblingsbuch ist Peter Coads Java-Modellierung in Farbe mit UML (1999), obwohl ich C # -Entwickler bin und UML meide, weil mich die Techniken und Konzepte zu einem besseren Codierer machen.

Wir tun gut daran, von der ersten Generation von Entwicklern zu lernen, weil sie den Boden betreten haben, den wir gerade betreten, und ihre hart erarbeitete Weisheit uns dabei helfen kann, einen Startschuss für das zu bekommen, was wir heute tun / lernen.


MMM - Ich mag den Teil über das Team, der ständig Fehler
behebt,

5

Die Grundprinzipien von Software haben sich in den letzten 20 Jahren nicht geändert. Ein Stapel, ein Baum und eine verknüpfte Liste funktionieren immer noch so wie damals. "XOR" bedeutet immer noch dasselbe. Ein Byte hat noch 8 Bits.

Schlagen Sie ernsthaft vor, dass "Multiplattform-Entwicklung" eine neue Idee ist? Warum wurde C erfunden?

"Cloud" ist ein Marketing-Schlagwort. Früher bedeutete es etwas Besonderes, wurde aber durch Überbeanspruchung geschwächt. Heutzutage kleben die Vermarkter jedes Mal, wenn Sie etwas haben, das über ein Netzwerk mit einem Remote-Server kommuniziert, das "Cloud" -Label darauf. Es hat also wirklich keinen Sinn, darüber zu sprechen, weil es ein bedeutungsloses Wort ist.

Ich kenne Ihren 61-jährigen Professor nicht, deshalb kann ich nicht für ihn bürgen. Auf der anderen Seite sind Sie eindeutig nicht so schlau, wie Sie denken. Hör dem Professor zu, es ist möglich, dass du etwas lernst.


"Du wirst nicht alt, wenn du kein Dummkopf bist. Viele junge Weise sind tot wie ein Arschloch." - Richard Pryor


2
"Sie hingegen sind eindeutig nicht so schlau, wie Sie denken". Wenn ich dachte , war ich , dass smart, würde ich noch nie so eine Frage gestellt haben.
Olivier Pons

4

Hier sind einige sehr alte und veraltete Bücher:

  • Die Kunst der Computerprogrammierung, vol. 1-3 von D. Knuth. Diese wurden zwischen 1968 und 1981 veröffentlicht! Wir benutzen keine Vakuumröhren mehr, Leute! Alles in diesen Büchern ist lahm. Wo ist die Diskussion über Python und Ruby?

  • Computer und Intraktabilität: Ein Leitfaden zur Theorie der NP-Vollständigkeit von MR Garey und DS Johnson, 1979. Super lahm! All diese Probleme sind wahrscheinlich inzwischen gelöst.

Wenn ein Buch in den letzten drei Jahren nicht mit dem Schwerpunkt Python geschrieben wurde, ist es nicht lesenswert.


Fairerweise gibt es zumindest einen Grund dafür, dass TAoCPs Verwendung eines Assemblers für seinen Pseudocode bedeutet, dass modernere Algorithmenbücher, die Pseudocode verwenden, der näher an moderneren Sprachen liegt, für mehr als 90% von uns, die nicht für Embedded schreiben, nützlicher sind systeme.
Peter Taylor

-1: Ich sehe jede oder jede zweite Woche jemanden, der nach einem Algorithmus fragt, um etwas zu handhaben, das Knuth unglaublich detailliert beschrieben hat. Nur zum Spaß: Nennen Sie einen Sortieralgorithmus, der neuer als 1981 ist. Möchten Sie eine parallele Sortierung beantworten? Knuth hat Seiten zum parallelen Sortieren von Daten. Sie haben vielleicht Recht mit den Python-Büchern, aber es gibt einen großen Unterschied zwischen "Flavor of the week" -Büchern und technischen Bastelbüchern.
Sarnold

5
Anscheinend sind einige Sarkasmusdetektoren defekt ...
DaveE

1
<Sarcasm> "Comment" </ Sarcasm>
NWS

1
Ich denke, diese Antwort würde es noch besser machen, wenn sie die Erwähnung von The Art of Computer Programming Volume 4A einschließt , das 2011 veröffentlicht wurde und Volume 5, das für 2020 geplant ist!
Mark Booth

3

Diese Bücher sind nicht veraltet, diese Bücher sind Klassiker.

Um Kaplansky zu zitieren : " Nehmen Sie sich jeden Tag etwas Zeit, um etwas Neues zu lernen, das nicht mit dem Problem zu tun hat, an dem Sie gerade arbeiten (denken Sie daran, dass die Disjunktion vorübergehend sein kann), und lesen Sie die Meister . "


3

Ich weiß, was Sie meinen, wenn wir Fortschritte (LINQ kommt in den Sinn) haben, die die Lesbarkeit und Verwendung von Code ändern, aber nur, weil diese Bücher alt sind, heißt das nicht, dass sie dem Leser keine großartigen Lektionen bieten.

Während die verwendeten Programmiersprachen möglicherweise aus der Mode gekommen sind, stimmt die Theorie hinter den Programmiersprachen auch heute noch. Die meisten dieser Bücher legen Wert darauf, die Grundlagen sehr gut zu behandeln, und die Grundlagen haben sich nicht allzu sehr geändert.


2
Die verwendeten Programmiersprachen sind meistens "C" - sie sind zwar nicht mehr im Trend, werden aber immer häufiger verwendet.
Martin Beckett

3
Sie sollten SICP lesen, es könnte Ihnen die Augen öffnen, woher LINQ kommt :)
Joris Timmermans

1

Die Informatikbranche ist noch sehr jung. Bücher, die vor 30 Jahren geschrieben wurden, halte ich immer noch für wertvoll und notwendig, um alles zu verstehen. Abstrakte Konzepte brauchen manchmal eine Weile, um zu verdauen.


1

Einige kleinere Teile sind in all diesen Büchern veraltet, aber 99% sind immer noch großartig.

Algorithmenbücher werden langsam altern. Algorithmen sind Mathematik und die Mathematik ändert sich nicht schnell. Sicher, es gibt immer noch Forschungen zu neuen Algorithmen, die unter bestimmten Umständen überlegen sind (z. B. Furer-Algorithmus (2007) Schonhage-Strassen zum Multiplizieren von mehr als 40000 Ziffern langen Zahlen), aber in der Einführung müssen Sie die Grundlagen lernen (Teilen und Erobern) / Dynamische Programmierung / Lineare Programmierung / etc), damit Sie lernen, über Algorithmen sinnvoll nachzudenken.

Das Erlernen von Standard C von K & R ist immer noch die beste Quelle. Ich bin mir jedoch nicht sicher, ob ich ihren Abschnitten zur Einrichtung Ihrer Umgebung vertrauen würde.

SICP ist ein wundervolles Buch und lehrt die Grundlagen des modernen CS durch das Unterrichten von Lispeln, das eine wundervolle Sprache ist. Lisp ist heutzutage wohl nicht die nützlichste Sprache; obwohl andere argumentieren werden, dass lisp ihre Geheimwaffe ist und dass das Lernen von Sprachen wie Java oder Python zuerst sehr schlechte Programmierer macht, die nie lernen müssen, wie man Sortier- oder verknüpfte Listen oder Arrays oder Big-O-Notation implementiert, und am Ende sehr ineffiziente Dinge tun.

Einige Funktionen von Code Complete oder Pragmatic Programmer sind weniger relevant, insbesondere, wenn Sie in neueren Sprachen programmieren (z. B. Python / Ruby / C ++ 11), da sie sich häufig darauf konzentrieren, wie man etwas in C macht, oder empfohlene Lösungen unter Verwendung der besten Zu diesem Zeitpunkt verfügbare Tools (wie CVS / RCS für die Versionskontrolle anstelle eines modernen Tools wie git / bzr / hg / svn). Aber es ist immer noch gut darüber nachzudenken, wie Versionskontrolle ein Muss ist und wie sie nahtlos und selbstdokumentierend sein muss, und die Logik durchzugehen, warum sie ein absolutes Muss ist.

Oder die Empfehlungen von PP gegen IDEs für grundlegende Unix-Editoren und Unix-Tools - ganz zu schweigen davon, dass Sie nicht lernen sollten, wie man find / awk / locate / grep / sed verwendet, aber eine gute IDE kann oft viel Zeit sparen. Emacs kann z. B. Syntaxhervorhebungen oder einfache Code-Vervollständigung durchführen. Angenommen, eine gute IDE gibt Tooltipps mit Funktionsdeklarationen, wenn Sie sie eingeben, oder analysiert Code und markiert nicht verwendete Variablen, um Codeabschnitte zu minimieren usw.


1

Gibt es keinen Unterschied zwischen modernem Computing und dem, was aktuell war, als das Buch geschrieben wurde? Glaubst du, es ändert sich, was wir lernen sollten? Sollten wir nicht die Entwicklungen der letzten 20 Jahre berücksichtigen?

Ja ja und ja

Das macht diese Bücher nicht überflüssig. "Modernes Computing" ist ein unglaublich weit gefasster Begriff. Es enthält jedoch C-Programmierung, sodass "The C Programming Language" immer noch ein relevantes Buch ist. Es enthält Algorithmen, daher ist "Introduction to Algorithms" immer noch ein relevantes Buch. Und so weiter und so fort.

Sollte der derzeitige Schwerpunkt auf der Multiplattform-Entwicklung die Multiplattform-Entwicklung (siehe phonegap) ändern, was wir heute lernen?

Die meisten Apps im App Store (um die beliebteste mobile Plattform als Beispiel zu verwenden) sind in Objective C geschrieben, einer Sprache aus den frühen 80ern, die eine Obermenge von C darstellt. Daher ist C auch weiterhin relevant.

Glaubst du, die "Wolke" ist eine Modeerscheinung oder die Zukunft?

Es ist unser Geschenk.

Wenn Studenten die Universität verlassen, sollen sie echte Entwickler sein und sofort arbeiten können

Aber was heißt das?

Die Schule verfügt über zu viele Sprachen, APIs, Frameworks, Plattformen, Tools, Strategien für die Zusammenarbeit usw., um Sie auf einen bestimmten Job vorzubereiten . Die Schule kann nur den Grundstein legen und Ihnen ein grundlegendes Arbeitsmodell geben, wie die Maschine funktioniert, über Algorithmen, Datenstrukturen, Codekonstruktion, Zerlegungsstrategien, einige Werkzeuge usw.

Ein "echter Entwickler" ist nicht jemand, der alles weiß, es ist jemand mit der Fähigkeit zu dieser Art von Arbeit, der eine Grundlage in Theorie und Praxis hat und der weiß, wie man lernt , weil Ihre Ausbildung niemals endet.


1
+1 für den Kommentar "Wie lerne ich?"
DaveE

1

Ok, also werde ich eine Antwort anbieten, die viel theoretischer ist. Ich stimme Ihnen allen zu, die auf die meiner Meinung nach naheliegende Frage geantwortet haben: Diese Bücher bilden die Grundlage für das, was wir als Programmierer tun, und all diese neuen Frameworks basieren auf denselben alten Säulen.

Hier sind meine zwei Cent - nicht wirklich meine, ich habe es von St. Aquinas und von Aristoteles vor ihm gelernt.

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

Die Mechanik eines Computers hat sich seit Von-Neumann nicht verändert. Ebenso sind die Details, die Sie benötigen, um ein großartiger Programmierer zu sein, dieselben, bis das von-Neumann-Modell veraltet ist. Versammlung, ist die Sprache der Computer ... lernen Sie es, keine Ausreden.

C ist die Muttersprache von Windows und Unix. Lerne es oder finde einen neuen Beruf. Wenn Sie einer der Typen sind, die direkt zu JAVA oder C # gewechselt sind, sind Sie vielleicht ein guter Programmierer, aber Sie wären ein viel besserer Programmierer, wenn Sie C-- lernen würden.

Algorithmen und Datenstrukturen sind die Grundlage von Computerprogrammen, lernen sie.

Alles andere ist eine Abstraktion dieser Kerndisziplinen. Abstraktionen sind wunderbar, wenn sie richtig eingesetzt werden. Ernsthaft, ich benutze C # für 75% aller meiner Projekte. Sie machen Sie jedoch dumm, wenn Sie sich nicht die Zeit nehmen, zu verstehen, wie sie funktionieren und wie Sie ohne sie funktionieren. Sie werden endlose Zeit damit verbringen, Software zu entwickeln, die durch das sprichwörtliche quadratische Loch passt, wenn es viel bessere Ansätze und Fehler gibt, die vermieden werden könnten. Softwareentwicklung ist ein Handwerk, das gemeistert werden muss, und am Ende des Tages ändern sich die Tools nur selten. Deshalb sind diese Bücher so wichtig.

All diese JAVA- und C # -Programmierer, tsk, ich wette, die meisten von ihnen haben noch nie eine Episode von Star Trek gesehen!


1

Ich hörte ein Sprichwort von einem Mentor:

"Guter Rat hat einen Grund, warum Sie wissen, wann er nicht mehr gut ist." Ein Buch, in dem erklärt wird, warum man X über Y macht, wird Sie wissen lassen, wenn dieser Rat nicht mehr gültig ist. Ein "Mach es immer so, mach es einfach" -Buch wie ein Teil des Crashkurses in Sprache X ist nicht so gut.

Ich sah ein Buch mit dem Titel "Unix in 24 Stunden lernen". Das Buch war ungefähr 8 cm dick. Ich bezweifle, dass viele Leute sogar jede Seite in 24 Stunden lesen konnten :)

Denken Sie daran, dass das, was heute angesagt ist, morgen verspottet werden könnte. Alle der folgenden Dinge galten einst als Mainstream (gestern in Mode), sind es jetzt aber nicht mehr:

  • Gehe zu
  • Single entry single exit
  • Ungarische Notation
  • Wasserfall Ansatz

Und es gibt ein paar Dinge, die einst völlig verblüffend waren, jetzt aber akzeptiert werden:

  • Rekursion als Werkzeug zur Lösung von Problemen (radikal in den frühen BASIC-Tagen)
  • Allokation von Speicher zur Laufzeit mit malloc / new
  • Verwendung der C ++ STL
  • Speicherbereinigte Sprachen für Echtzeitsysteme

Wenn Sie wissen, warum und wann alte Annahmen durch eine neue Realität ersetzt wurden, sollten Sie auch den Ratschlag befolgen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.