Was ist das einflussreichste Buch, das jeder Programmierer lesen sollte? [geschlossen]
1439
Wenn Sie in die Vergangenheit reisen und sich zu Beginn Ihrer Karriere als Entwickler ein bestimmtes Buch vorlesen könnten, welches Buch wäre das?
Ich erwarte, dass diese Liste vielfältig ist und eine breite Palette von Dingen abdeckt.
So suchen Sie: Verwenden Sie das Suchfeld in der oberen rechten Ecke. Verwenden Sie, um die Antworten der aktuellen Frage zu suchen inquestion:this. Zum Beispiel:
Durch das Durchsuchen dieses Threads wird mir klar, wie hässlich die meisten programmierbezogenen Bücher sind. Sehr guter Thread!
Carl Bergquist
23
Interessant ist, dass, während der Titel lautet "Was ist das einflussreichste Buch, das jeder Programmierer lesen sollte?", Es einige Bücher gibt, die sich mit sprachspezifischen Themen befassen. Per Definition und per Frage sollten sich die hier vorgeschlagenen Bücher mit sprachunabhängigen Themen befassen, was beweist, dass die meisten Programmierer noch nicht lesen gelernt haben.
Turm
19
Wenn ich in die Vergangenheit reisen und mir sagen könnte, ich solle etwas lesen, wäre es besser, eine Zeitung oder ein Sportfaktenbuch mitzunehmen. Alles andere ist eine Verschwendung guter Zeitreisen. :-)
jmucchiello
32
Weißt du, wenn ich mir keine Sorgen machen würde, dass ich ein GANZES Los wählen könnte, würde ich trollisch Twilight vorschlagen. "Es geht AUCH um Menschen, die blass sind und der Sonne aus dem Weg gehen!"
Jacob Bellamy
3
Kann jemand Antworten bereinigen, indem er wiederholte Einträge in Büchern löscht? Die meisten von ihnen haben bereits abgestimmt.
Rao
Antworten:
1746
Code Complete (2. Auflage) von Steve McConnell
Der pragmatische Programmierer
Struktur und Interpretation von Computerprogrammen
Die C-Programmiersprache von Kernighan und Ritchie
Einführung in Algorithmen von Cormen, Leiserson, Rivest & Stein
Design Patterns von der Viererbande
Refactoring: Verbesserung des Designs vorhandenen Codes
Der Monat des mythischen Mannes
Die Kunst der Computerprogrammierung von Donald Knuth
Compiler: Prinzipien, Techniken und Werkzeuge von Alfred V. Aho, Ravi Sethi und Jeffrey D. Ullman
Gödel, Escher, Bach von Douglas Hofstadter
Clean Code: Ein Handbuch für agiles Software-Handwerk von Robert C. Martin
Effektives C ++
Effektiveres C ++
CODE von Charles Petzold
Programmierperlen von Jon Bentley
Effektiv mit Legacy Code von Michael C. Feathers arbeiten
Peopleware von Demarco und Lister
Programmierer bei der Arbeit von Peter Seibel
Sicher scherzen Sie, Mr. Feynman!
Effektive Java 2nd Edition
Muster der Unternehmensanwendungsarchitektur von Martin Fowler
Der kleine Schemer
Der erfahrene Schemer
Warum (ergreifender) Leitfaden für Ruby
Die Insassen leiten das Asyl: Warum High-Tech-Produkte uns verrückt machen und wie man die geistige Gesundheit wiederherstellt
Die Kunst der Unix-Programmierung
Testgetriebene Entwicklung: Am Beispiel von Kent Beck
Praktiken eines agilen Entwicklers
Lass mich nicht nachdenken
Agile Softwareentwicklung, Prinzipien, Muster und Praktiken von Robert C. Martin
Domain Driven Designs von Eric Evans
Das Design alltäglicher Dinge von Donald Norman
Modernes C ++ - Design von Andrei Alexandrescu
Best Software Writing I von Joel Spolsky
Die Programmierpraxis von Kernighan und Pike
Pragmatisches Denken und Lernen: Refactor Your Wetware von Andy Hunt
Software Estimation: Entmystifizierung der schwarzen Kunst von Steve McConnel
Der leidenschaftliche Programmierer (Mein Job ging nach Indien) von Chad Fowler
Hacker: Helden der Computerrevolution
Algorithmen + Datenstrukturen = Programme
Soliden Code schreiben
JavaScript - Die guten Teile
Durch 37 Signale real werden
Grundlagen der Programmierung von Karl Seguin
Computergrafik: Prinzipien und Praxis in C (2. Auflage)
Denken in Java von Bruce Eckel
Die Elemente von Computersystemen
Refactoring zu Mustern von Joshua Kerievsky
Moderne Betriebssysteme von Andrew S. Tanenbaum
Das kommentierte Turing
Dinge, die uns schlau machen von Donald Norman
Die zeitlose Bauweise von Christopher Alexander
Die Frist: Ein Roman über das Projektmanagement von Tom DeMarco
Die C ++ - Programmiersprache (3. Auflage) von Stroustrup
Muster der Unternehmensanwendungsarchitektur
Computersysteme - Die Perspektive eines Programmierers
Agile Prinzipien, Muster und Praktiken in C # von Robert C. Martin
Wachsende objektorientierte Software, die von Tests geleitet wird
Framework Design Guidelines von Brad Abrams
Objektdenken von Dr. David West
Erweiterte Programmierung in der UNIX-Umgebung von W. Richard Stevens
Hacker und Maler: Große Ideen aus dem Computerzeitalter
Die Seele einer neuen Maschine von Tracy Kidder
CLR über C # von Jeffrey Richter
Die zeitlose Bauweise von Christopher Alexander
Design Patterns in C # von Steve Metsker
Alice im Wunderland von Lewis Carol
Zen und die Kunst der Motorradpflege von Robert M. Pirsig
Über das Gesicht - Die Grundlagen des Interaktionsdesigns
Hier kommt jeder: Die Kraft des Organisierens ohne Organisationen von Clay Shirky
Das Tao der Programmierung
Computergestützte Schönheit der Natur
Schreiben von Solid Code von Steve Maguire
Philip und Alex 'Leitfaden zum Web Publishing
Objektorientierte Analyse und Design mit Anwendungen von Grady Booch
Effektives Java von Joshua Bloch
Berechenbarkeit von NJ Cutland
Masterminds der Programmierung
Das Tao Te Ching
Der produktive Programmierer
Die Kunst der Täuschung von Kevin Mitnick
Der Karriereprogrammierer: Guerilla-Taktiken für eine unvollkommene Welt von Christopher Duncan
Paradigmen der Programmierung künstlicher Intelligenz: Fallstudien in Common Lisp
Meister des Schicksals
Pragmatische Unit-Tests in C # mit NUnit von Andy Hunt und Dave Thomas mit Matt Hargett
Wie man es löst von George Polya
Der Alchemist von Paulo Coelho
Smalltalk-80: Die Sprache und ihre Implementierung
Schreiben von sicherem Code (2. Auflage) von Michael Howard
Einführung in die funktionale Programmierung von Philip Wadler und Richard Bird
Code Complete ist ein schönes Buch, wenn Sie vielleicht im College sind. Wenn Sie mindestens 1 Jahr Programmiererfahrung haben, ist dies eine totale Langeweile.
Bogdan Gavril MSFT
19
Code Complete enthält viele nützliche Informationen, die jedoch in Übertreibungen, Waffeln und Wiederholungen vergraben sind, was das Lesen erschwert.
Jeff Yates
76
Ich habe Code Complete 3 Jahre nach meiner Karriere gelesen . Ich hatte weder einen Kurs für Softwareentwicklung noch einen Kurs für Programmiersprachenkonstruktionen belegt, sondern einige CS-Einführungskurse belegt. Es ist mit Abstand das beste Einzelbuch, das ich je gelesen habe, um ein besserer Programmierer zu werden. Es macht Sie nicht zum Spezialisten, aber es macht Sie viel mehr als zum Bastler.
Shea
119
Das Problem mit diesem Buch ist, dass es für Anfänger nicht wirklich sinnvoll ist, da die Konzepte etwas fortgeschritten sind. Wenn Sie bereit sind, es lesen zu können, sollten Sie bereits 99% der Konzepte im Buch kennen und üben.
Esac
57
Das ist der Umgang mit vernünftigen Vorschlägen, wie sie in diesem Buch zu finden sind. Von Zeit zu Zeit müssen Sie daran erinnert werden, dass Sie in die Reihe zurückfallen.
@ Juan: Ich kenne Juan, ich weiß - aber es gibt einige Dinge, die nur gelernt werden können, wenn man sich tatsächlich der eigentlichen Aufgabe widmet. Den ganzen Tag in abstrakten Idealen zu sprechen, macht Sie einfach zu einem Akademiker. In der Anwendung des Abstrakten haben wir den Grund für ihre Existenz wirklich herausgearbeitet. : P.
@Keith: Große Erwähnung von "The Inmates are Running the Asylum" von Alan Cooper - ein Augenöffner für jeden Entwickler, der mit mir zusammengearbeitet hat, seit ich dieses Buch gelesen habe, hat mich die Ideen erwähnen hören, für die er sich einsetzt. +1
Dies lehrt Sie zwar nicht das Programmieren, aber es bringt Ihnen grundlegende Mathematik bei, die jeder Programmierer kennen sollte. Sie erinnern sich vielleicht an dieses Zeug von der Universität, aber wenn Sie Prädikatenlogik verwenden, verbessern Sie Ihre Programmierkenntnisse. Sie müssen die Mengenlehre lernen, wenn Sie mit Sammlungen programmieren möchten.
Hier gibt es wirklich viele interessante Informationen, die Sie dazu bringen können, auf unterschiedliche Weise über Probleme nachzudenken. Es ist praktisch, nur ab und zu etwas Neues zu lernen.
Die Schönheit des Buches ist das Jahr des Urheberrechts.
Wahrscheinlich das tiefgreifendste "Gesetz" zum Mitnehmen, das in dem Buch vorgestellt wird:
Das Fundamental Failure-Mode Theorem (FFT): Komplexe Systeme arbeiten normalerweise im Failure-Modus.
Die Idee ist, dass in einer bestimmten Software fehlerhafte Teile vorhanden sind, die durch Fehler in anderen Teilen oder durch Validierungen in anderen Teilen maskiert sind. Sehen Sie sich ein Beispiel aus der Praxis an der Therac-25-Strahlungsmaschine an , deren Softwarefehler durch Hardware-Failafes maskiert wurden. Als die Hardware-Failafes entfernt wurden, führte die Software-Race-Bedingung, die all die Jahre unentdeckt geblieben war, dazu, dass die Maschine 3 Menschen tötete.
Lesen Sie auch die Systembibel des gleichen Autors (John Gall). Es ist die dritte Ausgabe von Systemantics, er hat gerade den Titel geändert. Dies ist das Buch, das du aus der Schule stehlen würdest. Es ist das Buch, das erwachsene Erwachsene unter einer Decke mit einer Taschenlampe lesen.
Chris Wenham
9
Einer meiner persönlichen Favoriten ist Hacker's Delight , weil das Lesen genauso viel Spaß machte wie lehrreich.
Ich hoffe, dass die zweite Ausgabe bald veröffentlicht wird!
+1 für "Hacker's Delight" von Henry S. Warren Jr - es geht nicht um Hacking im populären Sinne, sondern um Hacking wie beim Low-Level-Bit-Twiddling und andere "Hacks" im wahrsten und originellsten Sinne des Wortes. Nicht für jedermann, aber wenn Sie an Codeoptimierung, Compilern usw. beteiligt sind oder nur ein allgemeiner Nerd sind, der sich für Low-Level-Sachen interessiert, dann ist dies ein großartiges Buch.
Brillant zeigt das Buchcover "La Sagrada Família", eine große römisch-katholische Basilika im Bau in Barcelona, Katalonien, Spanien. Wird 2026 fertiggestellt (nur noch 17 Jahre). Wie die meisten Programme, auch mit den besten Büchern, wurden sie nie fertiggestellt ...
PeterMmm
9
Extreme Programmierung erklärt: Umfassen Sie Veränderung von Kent Beck. Ich befürworte zwar keine Hardcore-XP-or-the-Highway-Version der Softwareentwicklung, aber ich wünschte, ich wäre viel früher in meiner Karriere in die Prinzipien dieses Buches eingeführt worden. Unit-Tests, Refactoring, Einfachheit, kontinuierliche Integration, Kosten / Zeit / Qualität / Umfang - dies hat meine Sicht auf die Entwicklung verändert. Vor Agile drehte sich alles um den Debugger und die Angst vor Änderungsanforderungen. Nach Agile waren diese Dämonen nicht mehr so groß.
Die Praxis des Programmierens. Von Brian W. Kernighan, Rob Pike.
Der hier gezeigte Stil ist ausgezeichnet - der Code spricht nur für sich selbst und das ganze Buch folgt dem KISS-Prinzip. Persönlich nicht meine bevorzugte Sprache, aber dennoch einflussreich für mich.
Ich fing an, es zu lesen, weil ich Common Lisp lernen wollte. Als ich auf halbem Weg war, wurde mir klar, dass dies das größte Buch über Programmierung war, das ich bisher gelesen hatte.
Dieses Buch erklärt viele Dinge über Software-Engineering und Systementwicklung. Es ist auch äußerst nützlich, den Unterschied zwischen verschiedenen Arten der Produktentwicklung zu verstehen: Web-VS-Shrinkwrap-VS-IBM-Framework. Was hatten die Leute vor, als sie ein Wasserfallmodell konzipierten? Lesen Sie dies und alles, was wir (hoffentlich) klar werden
Dieses Buch muss von Grund auf neu geschrieben werden. Das Thema ist sehr interessant, aber das Buch ist ziemlich verrückt.
Chris Mountford
Chris, es fällt mir schwer, deinen Kommentar zu verstehen ... Kannst du mehr erklären? Warum "verrückt"?
Dario Minonne
Erstens ist es voller Tippfehler. Die normalerweise erstklassige redaktionelle Hand von Addison Wesley fehlt in diesem Band seltsamerweise.
Chris Mountford
... weiter und hier nicht genug Platz, aber: 2. Im Text ist nie klar, wo der Autor zwischen Fakten und Meinungen, Anekdoten und Grundprinzipien usw. wechselt. 3. Software-Handwerkskunst ist eine Metapher und eine Strategie für den Umgang mit mehreren schwierige Aspekte der Softwareentwicklung. Es hat spezifische Vorteile gegenüber Alternativen und vermutlich Nachteile. Ich glaube, das ist der vernünftige Ansatz. Es ist bedeutungslos zu sagen, dass Software von Natur aus ein Handwerk ist. Sehr nervige Lektüre, aber um fair zu sein, es ist eine Weile her und viele Details habe ich vergessen. Mein Ekel bleibt jedoch.
Chris Mountford
8
@ Peter Coulton - du liest Knuth nicht, du studierst es.
Für mich und meine Arbeit ... Rein funktionale Datenstrukturen eignen sich hervorragend zum Denken und Entwickeln unter Berücksichtigung funktionaler Sprachen.
Hervorragende Programmierkenntnisse erfordern eine Investition in geistige Energie und ein Engagement für kontinuierliches Lernen, das mit den Berufen der Medizin oder des Rechts vergleichbar ist. Es zahlt einen Bruchteil dessen, was diese Berufe zahlen, geschweige denn die Löhne, die an mathematisch versierte Personen gezahlt werden, die in den Finanzsektor einsteigen. Und die Löhne für die Erstellung von Code schwinden, weil es ein Beruf ist, in den Intelligente und Selbstdisziplinierte in den meisten Volkswirtschaften relativ leicht eintreten können.
Die Programmierung ist bereits so weit erodiert, dass weniger bezahlt wird als beispielsweise Sanitär. Sanitär kann nicht "offshored" werden. Sie müssen nicht alle zwei Jahre 2395 US-Dollar bezahlen, um an der Professional Plumber's Conference teilzunehmen, um das Privileg zu erhalten, einen völlig neuen Satz von Sanitärtechnologien zu erhalten, für dessen Erlernen Sie ein Jahr benötigen.
Wenn Sie in Nordamerika oder Europa leben, jung und klug sind, ist Programmieren keine rationale Berufswahl. Unternehmen, bei denen es unbedingt um Programmierung geht. Studieren Sie Business, wissen Sie genug über Programmierung, um Ihren BS-Detektor zu verfeinern: brillant. Aber den Löwenanteil Ihrer mentalen Energie der Beherrschung von Bibliotheken, Datenstrukturen und Algorithmen widmen? Das macht nur Sinn, wenn Programmieren für Sie mehr ist als eine wirtschaftliche Entscheidung.
Wenn Sie das Programmieren lieben und aus diesem Grund beabsichtigen, es zu Ihrer Karriere zu machen, müssen Sie ein kaltäugiges Verständnis für die Kräfte entwickeln, die es sind und auch weiterhin machen werden, es zu einem immer schwierigeren Beruf zu machen, um seinen Lebensunterhalt zu verdienen . "The World is Flat" bringt Ihnen nicht bei, wie Sie Ihre Variablen benennen sollen, sondern taucht Sie 6 oder 8 Stunden lang in die bereits eingetretenen wirtschaftlichen Realitäten ein. Wenn Sie es lesen können, und keine Angst zu bekommen, dann gehen und kaufen „Code Complete“ .
Jedes Buch war erstaunlich, aber das Innovator's Dilemma von Clayton Christensen (1997 !!!) ist wirklich ein fantastisches Buch, und ich habe wirklich über die moderne Software-Welt nachgedacht. Die Herausforderung besteht in der disruptiven Technologie und darin, wie Festplattenunternehmen und nichttechnische Unternehmen immer durch neue, bahnbrechende Technologien gestört werden. Es gibt einem eine neue Perspektive, wenn man an Google denkt, das wahrscheinlich größte "Web" -Unternehmen. Warum haben sie ihre Hände in ALLES? Es ist, weil sie nicht wollen, dass ihre Position durch etwas Neues gestört wird. Die Vorschau auf Google ist genug, um auf die Idee zu kommen. Lies es!
Die Python-Sprache war sehr einflussreich für mich, ich wünschte, ich hätte dieses Buch vor Jahren gelesen. Die Schönheit und Einfachheit der Python-Sprache hat sich wirklich darauf ausgewirkt, wie ich Code in anderen Sprachen geschrieben habe.
Ich denke, das Starten neuer Programmierer mit Python würde die Menge an hässlichem Code in der Welt reduzieren. Ich arbeite mit jemandem zusammen, der zufällig Zeilen einrückt - diese Person würde das nicht tun, wenn sie einige Monate mit Python gearbeitet hätte.
xnine
6
Ich denke, das Starten neuer Programmierer mit Python würde die Anzahl anderer Sprachen reduzieren.
Wirklich gutes Buch. Hat einen guten Einblick in die wichtigsten Bereiche der Informatik. Ja, CS! = Programmierung, aber dies ist immer noch für jeden Programmierer nützlich.
Ich denke, dass "The Art of Unix Programming" ein exzellentes Buch ist, von einem exzellenten Hacker / brillanten Verstand wie Eric S. Raymond, der versucht, uns einige Prinzipien des Software-Designs verständlich zu machen (hauptsächlich Einfachheit). Dieses Buch ist ein Muss für jede Programmierung, die ein Projekt unter der Unix-Plattform starten möchte.
Ich stimme zwar zu, dass viele der oben genannten Bücher ein Muss sind (Pragmatischer Programmierer, Mythischer Mann-Monat, Kunst der Computerprogrammierung und SICP fallen mir sofort ein), aber ich möchte in eine etwas andere Richtung gehen und A Discipline empfehlen der Programmierung von Edsger Dijkstra. Obwohl es 32 Jahre alt ist, ist die Betonung auf "Design für Überprüfbarkeit" von hoher Relevanz (auch wenn "Überprüfbarkeit" "Beweis" statt "Komponententests" bedeutet).
Ich hatte große Hoffnungen auf dieses Buch, aber es tut es nicht für mich. Ich denke, es ist das Offensichtliche. Es ist wahrscheinlich gut für diejenigen, die neu in der Programmierung sind.
Das Wesentliche des gesamten Buches ist die Strukturierung von Code, damit er für Menschen einfacher zu lesen und zu verstehen ist . Es lehrt mich nachdrücklich, dass der Code, den ich schreibe, für meine Kollegen und Nachfolger gedacht ist, um etwas Gutes daraus zu konsumieren und möglicherweise daraus zu lernen . Es inspiriert mich, bewusst so zu programmieren, dass die Leute meinen Namen loben und mich nicht für alle Ewigkeit zur Verdammnis verfluchen .
Ich bin vollkommen einverstanden. Deitels Ansatz beim Erlernen einer Programmiersprache ist erstaunlich. Ich betrachte Java How to Program als meine Programmierbibel!
Was ist das Besondere daran? Nun, klar, jeder hat den Begriff "Agil" gehört, und es scheint, dass die meisten heutzutage Gläubige sind. Ob Sie glauben oder nicht, es gibt einige tiefe Prinzipien, warum die Agile-Bewegung existiert. Dieses Buch deckt diese Prinzipien auf präzise, wissenschaftliche Weise auf und artikuliert sie. Einige der Prinzipien sind (übrigens sind dies meine Worte, nicht die von Alistair):
Das Schwierigste an der Entwicklung von Team-Software ist, dass alle Köpfe das gleiche Verständnis haben. Wir bauen riesige, ausgefeilte und komplexe Systeme, die in der greifbaren Welt unsichtbar sind. Je besser Sie in der Lage sind, mehr Menschen dazu zu bringen, ein tieferes Verständnis zu teilen, desto effektiver wird Ihr Team bei der Softwareentwicklung sein. Dies ist der Grund, warum Paarprogrammierung sinnvoll ist. Die meisten Leute lehnen es ab (und ich tat es auch anfangs), aber unter Berücksichtigung dieses Prinzips empfehle ich dringend, dass Sie es noch einmal versuchen. Sie haben ZWEI Leute, die das soeben erstellte Subsystem genau verstehen ... es gibt nicht viele andere Möglichkeiten, um so schnell eine so tiefe Informationsübertragung zu erhalten. Es ist wie eine vulkanische Gedankenverschmelzung.
Sie brauchen nicht immer Worte, um schnell tiefes Verständnis zu vermitteln. Und eine Konsequenz: Zu viele Wörter, und Sie überschreiten die Kapazität des Hörers / Lesers, was bedeutet, dass die von Ihnen versuchte Übertragung des Verständnisses nicht stattfindet. Bedenken Sie, dass Kinder lernen, wie man Sprache spricht, indem sie "eingetaucht" und "absorbiert" werden. Nicht nur die Sprache ... er gibt das Beispiel einiger Kinder, die mit Zügen auf dem Boden spielen. Da kommt ein anderes Kind, das noch nie zuvor einen Zug gesehen hat ... aber indem er die anderen Kinder beobachtet, nimmt er den Kern des Spiels auf und spielt mit. Dies geschieht ständig zwischen Menschen. Dies zusammen mit der Folgerung über zu viele Wörter hilft Ihnen zu sehen, wie falsch es in den alten "Wasserfall" -Tagen war, zu versuchen, 700 Seiten detaillierte Anforderungsspezifikationen zu schreiben.
Da ist auch so viel mehr drin. Ich werde jetzt die Klappe halten, aber ich kann dieses Buch nur wärmstens empfehlen!
Ein einzigartiger Beitrag, und Sie haben sich die Zeit genommen, um klar zu erklären, warum es sich zu lesen lohnt. +1 für Originalität und Mühe! Ich freue mich darauf, dies bald zu lesen ...
Avery Payne
Gut. Ich glaube nicht, dass Sie enttäuscht sein werden.
Charlie Flowers
7
Meister des Untergangs. Was Motivation und Liebe zu Ihrem Beruf angeht: Es wird nicht besser als das, was in diesem Buch beschrieben wurde, eine wahrhaft inspirierende Geschichte!
Antworten:
quelle
K & R.
@ Juan: Ich kenne Juan, ich weiß - aber es gibt einige Dinge, die nur gelernt werden können, wenn man sich tatsächlich der eigentlichen Aufgabe widmet. Den ganzen Tag in abstrakten Idealen zu sprechen, macht Sie einfach zu einem Akademiker. In der Anwendung des Abstrakten haben wir den Grund für ihre Existenz wirklich herausgearbeitet. : P.
@Keith: Große Erwähnung von "The Inmates are Running the Asylum" von Alan Cooper - ein Augenöffner für jeden Entwickler, der mit mir zusammengearbeitet hat, seit ich dieses Buch gelesen habe, hat mich die Ideen erwähnen hören, für die er sich einsetzt. +1
quelle
Diskrete Mathematik für Informatiker http://ecx.images-amazon.com/images/I/51HCJ5R42KL
Diskrete Mathematik für Informatiker von JK Truss.
Dies lehrt Sie zwar nicht das Programmieren, aber es bringt Ihnen grundlegende Mathematik bei, die jeder Programmierer kennen sollte. Sie erinnern sich vielleicht an dieses Zeug von der Universität, aber wenn Sie Prädikatenlogik verwenden, verbessern Sie Ihre Programmierkenntnisse. Sie müssen die Mengenlehre lernen, wenn Sie mit Sammlungen programmieren möchten.
Hier gibt es wirklich viele interessante Informationen, die Sie dazu bringen können, auf unterschiedliche Weise über Probleme nachzudenken. Es ist praktisch, nur ab und zu etwas Neues zu lernen.
quelle
Systemantik: Wie Systeme funktionieren und insbesondere wie sie versagen . Holen Sie es billig verwendet. Aber Sie werden vielleicht nicht den Humor bekommen, bis Sie an ein paar fehlgeschlagenen Projekten gearbeitet haben.
Die Schönheit des Buches ist das Jahr des Urheberrechts.
Wahrscheinlich das tiefgreifendste "Gesetz" zum Mitnehmen, das in dem Buch vorgestellt wird:
Das Fundamental Failure-Mode Theorem (FFT): Komplexe Systeme arbeiten normalerweise im Failure-Modus.
Die Idee ist, dass in einer bestimmten Software fehlerhafte Teile vorhanden sind, die durch Fehler in anderen Teilen oder durch Validierungen in anderen Teilen maskiert sind. Sehen Sie sich ein Beispiel aus der Praxis an der Therac-25-Strahlungsmaschine an , deren Softwarefehler durch Hardware-Failafes maskiert wurden. Als die Hardware-Failafes entfernt wurden, führte die Software-Race-Bedingung, die all die Jahre unentdeckt geblieben war, dazu, dass die Maschine 3 Menschen tötete.
quelle
Einer meiner persönlichen Favoriten ist Hacker's Delight , weil das Lesen genauso viel Spaß machte wie lehrreich.
Ich hoffe, dass die zweite Ausgabe bald veröffentlicht wird!
quelle
Konzepte, Techniken und Modelle der Computerprogrammierung.
Alternativtext http://ecx.images-amazon.com/images/I/51YZ50ZR13L._SL500_AA240_.jpg
quelle
Extreme Programmierung erklärt: Umfassen Sie Veränderung von Kent Beck. Ich befürworte zwar keine Hardcore-XP-or-the-Highway-Version der Softwareentwicklung, aber ich wünschte, ich wäre viel früher in meiner Karriere in die Prinzipien dieses Buches eingeführt worden. Unit-Tests, Refactoring, Einfachheit, kontinuierliche Integration, Kosten / Zeit / Qualität / Umfang - dies hat meine Sicht auf die Entwicklung verändert. Vor Agile drehte sich alles um den Debugger und die Angst vor Änderungsanforderungen. Nach Agile waren diese Dämonen nicht mehr so groß.
quelle
Typen und Programmiersprachen von Benjamin C Pierce für ein gründliches Verständnis der Grundlagen von Programmiersprachen.
quelle
Alternativtext http://ecx.images-amazon.com/images/I/51E0Ojkz8iL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg
quelle
Database System Concepts ist eines der besten Bücher, die Sie zum Verständnis guter Prinzipien des Datenbankdesigns lesen können.
quelle
Die Praxis des Programmierens. Von Brian W. Kernighan, Rob Pike.
Der hier gezeigte Stil ist ausgezeichnet - der Code spricht nur für sich selbst und das ganze Buch folgt dem KISS-Prinzip. Persönlich nicht meine bevorzugte Sprache, aber dennoch einflussreich für mich.
quelle
Programmierung von Grund auf. Es ist kostenlos im Internet. Dieses Buch hat mir AT & T asm beigebracht. Es ist sehr leicht zu lesen.
quelle
Paradigmen der Programmierung künstlicher Intelligenz : Fallstudien in Common Lisp von Peter Norvig
Ich fing an, es zu lesen, weil ich Common Lisp lernen wollte. Als ich auf halbem Weg war, wurde mir klar, dass dies das größte Buch über Programmierung war, das ich bisher gelesen hatte.
quelle
Definitiv Software-Handwerkskunst
Alternativtext http://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg
Dieses Buch erklärt viele Dinge über Software-Engineering und Systementwicklung. Es ist auch äußerst nützlich, den Unterschied zwischen verschiedenen Arten der Produktentwicklung zu verstehen: Web-VS-Shrinkwrap-VS-IBM-Framework. Was hatten die Leute vor, als sie ein Wasserfallmodell konzipierten? Lesen Sie dies und alles, was wir (hoffentlich) klar werden
quelle
@ Peter Coulton - du liest Knuth nicht, du studierst es.
Für mich und meine Arbeit ... Rein funktionale Datenstrukturen eignen sich hervorragend zum Denken und Entwickeln unter Berücksichtigung funktionaler Sprachen.
quelle
"Die Welt ist flach" von Thomas Friedman.
Hervorragende Programmierkenntnisse erfordern eine Investition in geistige Energie und ein Engagement für kontinuierliches Lernen, das mit den Berufen der Medizin oder des Rechts vergleichbar ist. Es zahlt einen Bruchteil dessen, was diese Berufe zahlen, geschweige denn die Löhne, die an mathematisch versierte Personen gezahlt werden, die in den Finanzsektor einsteigen. Und die Löhne für die Erstellung von Code schwinden, weil es ein Beruf ist, in den Intelligente und Selbstdisziplinierte in den meisten Volkswirtschaften relativ leicht eintreten können.
Die Programmierung ist bereits so weit erodiert, dass weniger bezahlt wird als beispielsweise Sanitär. Sanitär kann nicht "offshored" werden. Sie müssen nicht alle zwei Jahre 2395 US-Dollar bezahlen, um an der Professional Plumber's Conference teilzunehmen, um das Privileg zu erhalten, einen völlig neuen Satz von Sanitärtechnologien zu erhalten, für dessen Erlernen Sie ein Jahr benötigen.
Wenn Sie in Nordamerika oder Europa leben, jung und klug sind, ist Programmieren keine rationale Berufswahl. Unternehmen, bei denen es unbedingt um Programmierung geht. Studieren Sie Business, wissen Sie genug über Programmierung, um Ihren BS-Detektor zu verfeinern: brillant. Aber den Löwenanteil Ihrer mentalen Energie der Beherrschung von Bibliotheken, Datenstrukturen und Algorithmen widmen? Das macht nur Sinn, wenn Programmieren für Sie mehr ist als eine wirtschaftliche Entscheidung.
Wenn Sie das Programmieren lieben und aus diesem Grund beabsichtigen, es zu Ihrer Karriere zu machen, müssen Sie ein kaltäugiges Verständnis für die Kräfte entwickeln, die es sind und auch weiterhin machen werden, es zu einem immer schwierigeren Beruf zu machen, um seinen Lebensunterhalt zu verdienen . "The World is Flat" bringt Ihnen nicht bei, wie Sie Ihre Variablen benennen sollen, sondern taucht Sie 6 oder 8 Stunden lang in die bereits eingetretenen wirtschaftlichen Realitäten ein. Wenn Sie es lesen können, und keine Angst zu bekommen, dann gehen und kaufen „Code Complete“ .
quelle
Im letzten Jahr habe ich mehrere Kurse besucht. ich lese
Das Dilemma des Innovators (disruptive Tech)
Der Monat des mythischen Mannes (Verwaltungssoftware)
Crossing the Chasm (Startup)
Datenbankverwaltungssysteme, Die COW-
Buchprogrammierung C #, Das OSTRICH-Buch für
iPhone-Entwickler, Das GRAPEFRUIT-Buch
Jedes Buch war erstaunlich, aber das Innovator's Dilemma von Clayton Christensen (1997 !!!) ist wirklich ein fantastisches Buch, und ich habe wirklich über die moderne Software-Welt nachgedacht. Die Herausforderung besteht in der disruptiven Technologie und darin, wie Festplattenunternehmen und nichttechnische Unternehmen immer durch neue, bahnbrechende Technologien gestört werden. Es gibt einem eine neue Perspektive, wenn man an Google denkt, das wahrscheinlich größte "Web" -Unternehmen. Warum haben sie ihre Hände in ALLES? Es ist, weil sie nicht wollen, dass ihre Position durch etwas Neues gestört wird. Die Vorschau auf Google ist genug, um auf die Idee zu kommen. Lies es!
quelle
Hacker von Steven Levy.
Die Persönlichkeit und Lebensweise müssen an erster Stelle stehen. Alles andere kann gelernt werden.
quelle
Die Praxis des Programmierens
und
Wie man es per Computer löst
Alternativtext http://img.infibeam.com/img/7101e0ee/496b1/05/629/PMB-9788131705629.jpg?hei=200&wid=160&op_sharpen=1
quelle
Die Python-Sprache war sehr einflussreich für mich, ich wünschte, ich hätte dieses Buch vor Jahren gelesen. Die Schönheit und Einfachheit der Python-Sprache hat sich wirklich darauf ausgewirkt, wie ich Code in anderen Sprachen geschrieben habe.
quelle
Der neue Turing Omnibus http://ecx.images-amazon.com/images/I/51HlYd-%2BRwL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg
Wirklich gutes Buch. Hat einen guten Einblick in die wichtigsten Bereiche der Informatik. Ja, CS! = Programmierung, aber dies ist immer noch für jeden Programmierer nützlich.
quelle
Objektorientierte Analyse und Design mit Anwendungen von Brady Booch
quelle
Der mythische Mannmonat von Fred Brooks http://en.wikipedia.org/wiki/The_Mythical_Man-Month
quelle
Ich denke, dass "The Art of Unix Programming" ein exzellentes Buch ist, von einem exzellenten Hacker / brillanten Verstand wie Eric S. Raymond, der versucht, uns einige Prinzipien des Software-Designs verständlich zu machen (hauptsächlich Einfachheit). Dieses Buch ist ein Muss für jede Programmierung, die ein Projekt unter der Unix-Plattform starten möchte.
quelle
Ich stimme zwar zu, dass viele der oben genannten Bücher ein Muss sind (Pragmatischer Programmierer, Mythischer Mann-Monat, Kunst der Computerprogrammierung und SICP fallen mir sofort ein), aber ich möchte in eine etwas andere Richtung gehen und A Discipline empfehlen der Programmierung von Edsger Dijkstra. Obwohl es 32 Jahre alt ist, ist die Betonung auf "Design für Überprüfbarkeit" von hoher Relevanz (auch wenn "Überprüfbarkeit" "Beweis" statt "Komponententests" bedeutet).
quelle
Code Craft von Pete Goodliffe ist eine gute Lektüre!
Code Craft http://ecx.images-amazon.com/images/I/51WZ9AEC3GL._SL500_BO2,204,203,200_PIsitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_.jpg
quelle
Martin Fowlers Refactoring: Verbesserung des Designs vorhandenen Codes wurde bereits aufgeführt. Aber ich werde detailliert beschreiben, warum es mich beeinflusst hat.
Das Wesentliche des gesamten Buches ist die Strukturierung von Code, damit er für Menschen einfacher zu lesen und zu verstehen ist . Es lehrt mich nachdrücklich, dass der Code, den ich schreibe, für meine Kollegen und Nachfolger gedacht ist, um etwas Gutes daraus zu konsumieren und möglicherweise daraus zu lernen . Es inspiriert mich, bewusst so zu programmieren, dass die Leute meinen Namen loben und mich nicht für alle Ewigkeit zur Verdammnis verfluchen .
quelle
Alternativtext http://ecx.images-amazon.com/images/I/61dECNkdnTL._SL500_AA240_.jpg
C ++ Programmieren Es ist gut für Anfänger. Dies ist ein ausgezeichnetes Buch mit 1500 Seiten.
quelle
Hier ist ein ausgezeichnetes Buch, das nicht so viel Beifall findet, aber voller tiefer Einsichten ist: Agile Softwareentwicklung: Das kooperative Spiel von Alistair Cockburn.
Was ist das Besondere daran? Nun, klar, jeder hat den Begriff "Agil" gehört, und es scheint, dass die meisten heutzutage Gläubige sind. Ob Sie glauben oder nicht, es gibt einige tiefe Prinzipien, warum die Agile-Bewegung existiert. Dieses Buch deckt diese Prinzipien auf präzise, wissenschaftliche Weise auf und artikuliert sie. Einige der Prinzipien sind (übrigens sind dies meine Worte, nicht die von Alistair):
Da ist auch so viel mehr drin. Ich werde jetzt die Klappe halten, aber ich kann dieses Buch nur wärmstens empfehlen!
quelle
Meister des Untergangs. Was Motivation und Liebe zu Ihrem Beruf angeht: Es wird nicht besser als das, was in diesem Buch beschrieben wurde, eine wahrhaft inspirierende Geschichte!
quelle