Empfehlenswerte Literaturliste zur Software-Entwicklung im Allgemeinen und C++-Entwicklung im Speziellen.
Zurück   Home

Meiner Ansicht nach empfehlenswerte Lektüre für C++-Entwickler, natürlich subjektiv und unvollständig. In diesem Zusammenhang kann ich persönlich das Lesen von Fachbüchern als eBook empfehlen; die Möglichkeit, Begriffe sehr schnell zu übersetzen, Lesezeichen anzulegen und vor allem nach Begriffen zu suchen habe ich sehr schätzen gelernt...
Ganz abgesehen von der Möglichkeit, eine (Referenz-) Bibliothek unter dem Arm davontragen zu können und überall verfügbar zu haben...

I. "Pflichtlektüre":

Andrew Hunt, David Thomas: Der Pragmatische Programmierer
- sehr gutes, nicht-C-spezifisches Einstiegswerk mit empfehlenswerter Übersetzung (Sample-Code ist nicht übersetzt); die enthaltenen Postulate kann man sich als Kurzfassung aus dem Buch heraustrennen und unters Kissen legen.

Scott Meyers: Effective C++ (Third Edition): 55 specific ways to improve your programs and designs
- sehr gut im Original zu lesen, auf die dritte Edition (55! ways) achten; die 55 ways kommen ebenfalls unters Kissen.

Gamma, Helm, Johnson, Vlissides (The "Gang Of Four"): Entwurfsmuster; Elemente wiederverwendbarer Software
- sprachunabhängiges Standardwerk, Übersetzung ist ok, Sample-Code ist leider übersetzt; wer kann sollte vielleicht das Original nehmen; beschreibt immer wiederkehrende Code-Strukturen und die enthaltenen Muster sind eine Kommunikationsgrundlage ("factory", "proxy", ...), auf dieses Buch beziehen sich viele andere, auch in dieser Liste.

Robert C. Martin: Clean Code: A Handbook of Agile Software Craftsmanship
- vermittelt rundum (und teilweise sehr detailliert) Ideen/Erfahrungen/Richtlinien der Programmierung an konkreten Beispielen; nicht abschrecken lassen von den Rezensionen, die etwas langatmigen Stil kritisieren (das kann man locker aushalten) und Java-Lastigkeit behaupten (das kann man problemlos lesen und erweitert gleich den Horizont); am besten im Original lesen

Martin Fowler: Refactoring; improving the design of existing code
- da man nicht immer nur im eigenen, gerade frisch geschriebenen Code herumwühlt ist dieses Buch eine exzellente Handreichung zum Thema, wie man mit Änderungen an etabliertem Code (auch eigenem) umgehen sollte; am besten im Original lesen

Joel Spolsky: Joel on Software: And on Diverse and Occasionally Related Matters...
- stellvertretend eine Auswahl der Texte von www.joelonsoftware.com (dort empfehle ich, regelmäßig vorbeizuschauen) in Buchform; dies ist die vor dem Hintergrund hervorragend aufgearbeiteter, praktischer Erfahrung aus dem Alltag der Software-Entwicklung für mich (nicht zuletzt stilistisch) beste Quelle von Erfahrungslernen auf diesem Gebiet; enthält zum Beispiel auch Artikel zum Thema Akquise/Personalführung, Umgang mit den Anforderungen des Management, wie man einen realistischen Plan für die Entwicklung aufstellt (und wie besser nicht)...


II. Als Referenz:

Bjarne Stroustrup: Die C++ Programmiersprache, 4. Auflage 2011
- sehr dick, zum "Durchlesen" auch wegen des Sprachstils definitiv ungeeignet, aber zum Vertiefen von Prinzipien und dem Anlesen von Details sehr nützlich; die Übersetzung ist passabel bzw. hatte ich bisher wenig ernsthafte Probleme damit (Sample-Code ist nicht übersetzt); man kommt auch ohne aus aber wenn man das Buch schnell zur Hand hat ist das angenehm. Eine aktualisierte Auflage (ich würde erwarten mit C++11-Themen als Erweiterung) ist derzeit in Arbeit glaube ich. Hier auf alle Fälle auf eine möglichst aktuelle Auflage achten.


III. Vertiefend:

Stephen C. Dewhurst: C++ Gotchas; Avoiding common problems in coding and design
- "was ich schon immer mal falsch machen wollte"; dem Buch-Untertitel ist nichts hinzuzufügen; die Punkte sind sehr praxisrelevant und lehrreich und wer im Stoff steht trifft natürlich etliche alte Bekannte wieder - hier sehr gründlich aufgearbeitet und mit der Vermittlung von Implikationen, an die man (d.h. ich) oft nicht gedacht hat...; ausgezeichnet im Original lesbar

Andrei Alexandrescu: Modern C++ Design; Generic programming and design patterns applied
- vertiefende Diskussion der design pattern in sehr konkreter Form; die deutsche Fassung kenne ich nicht, aber wer bis hierher gekommen ist sollte Originale lesen...

Herb Sutter: Exceptional C++; 47 technische Denkaufgaben, Programmierprobleme und ihre Lösungen
- "exceptional" im Sinne des Wortes, d.h. es geht (auch) um Fehlerbehandlungen im Detail, sowohl während der Programmausführung als auch bei der Programmierung selbst (typische Fehler...); es wird jeweils ein Problem aufgeworfen, man kann selbst eine Lösung entwickeln und dann mit der von Mr. Sutter vergleichen - frappierend, was man oft so alles übersieht! Die deutsche Fassung ist gut lesbar (Sample-Code ist nicht übersetzt, aber mit deutschen Kommentaren versehen - sehr gut!), bei Amazon finde ich verfügbar nur die englische Variante

Bruce Eckel: Thinking in C++, Volumes one and two.
- habe ich selbst nicht gelesen, wurde mir aber auffällig oft (von Entwicklern meines Vertrauens) empfohlen (vor allem Vol. 2), insofern könnte das einen Blick wert sein.

Scott Meyers: Effective STL: 50 Specific Ways to Improve the Use of the Standard Template Library
- die in den "55 ways" angekündigten, vertiefenden Betrachtungen zur STL. Sehr gute Punkte, sehr guter Stil - sehr gutes Buch.
   
Scott Meyers: More Effective C++: 35 New Ways to Improve Your Programs and Designs
- vertieft die "55 ways" um etwas weiter vom mainstream entfernt liegende (aber dennoch für den Profi sehr relevante) Themen. Ich gebe zu, ich bin ein Meyers-Fan...

Robert C. Martin: The Clean Coder: A Code of Conduct for Professional Programmers
- das Pendant zu "Clean Code" - hier geht es nicht um's Handwerk an sich, sondern um das Drumherum der Ausführung mit die Phantasie stimulierenden Kapitelüberschriften wie "Saying No" und "Saying Yes". Stilistisch nicht die allerleichteste Kost, aber auf alle Fälle empfehlenswert. Einige Dinge aus dem "Pragmatischen Programmierer" finden sich hier wieder, aber der nicht-überlappende Themenkreis ist groß genug.

Bruce A. Tate: Sieben Wochen, sieben Sprachen; Verstehen Sie die modernen Sprachkonzepte
- habe ich ehrlich gesagt bisher nur punktuell, nicht systematisch gelesen, aber ich freue mich sehr darauf; es geht darum, über den Tellerrand zu blicken, zu verstehen, für welchen Zweck welche Sprachen entwickelt wurden, wie sie sich strukturell unterscheiden (natürlich nicht darum, sieben Sprachen in dem Sinne zu "erlernen"). Vom Autor gedacht zum "Durcharbeiten" und eigenständigen Lösen von kleinen Aufgaben, auch in "fremden" Sprachen. Dürfte in Analogie zum Umgang mit natürlichen Sprachen ein sehr guter Beitrag zur fachlichen "Völkerverständigung" sein! Die Kandidaten sind: Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell.

Harold Abelson, Gerald J. Sussman: Structure and Interpretation of Computer Programs
- ein schon älterer, aber immer noch guter Klassiker. Ganz allgemeine Gegenstände der Programmierung werden aus wohltuend abstrakter Sicht besprochen und am Beispiel von Scheme (einem LISP-Abkömmling, Sussman hat Scheme mit"erfunden") erläutert. Gerade wenn man sich noch nie mit deklarativen Sprachen beschäftigt hat wird das Buch erhellend sein. Der Schreibstil ist "eher akademisch" und recht dicht.
       
Donald A. Norman, Stephen W. Draper: User Centered System Design: New Perspectives on Human-Computer Interaction
- das Büchle ist zugegebenermaßen schon betagt, hat mir aber einst beim Einstieg in die Ergonomie sehr geholfen. Ich schätze es lohnt sich, mal nachzuvollziehen, was in der Folge veröffentlicht worden ist (Stichwort "UX" vielleicht?!). Mr. Norman ist auf alle Fälle ein paar Lesestunden wert...
         
Bill Gates: Der Weg nach vorn. Die Zukunft der Informationsgesellschaft; Ausgabe von 1995  
- Verwundert? Nun, über die Microsoft Corporation und ihre Personifikation kann man bei unangenehmen Gesprächspausen auf jedem geselligen Beisammensein sehr leicht lästern und findet dabei meistens schnell und eifrig zustimmende Konversationspartner. Dieses Buch stellt die Visionen von Herrn Gates mit Blick auf das kommende HighTech-Zeitalter dar (es geht hier also nicht um die Produkte seiner Firma) - allerdings aus der Sicht von 1995.
Und das ist heute sehr faszinierend: Aus der Perspektive von "15 years after" ist es äußerst interessant zu sehen, was aus den seinerzeit teilweise phantastisch anmutenden Ideen geworden ist. Und sehr oft - Realität! Weshalb ich denke, daß Herr Gates durchaus als Visionär taugt und ihm dafür großer Respekt gebührt und was mich nach der Lektüre oft hat irgendwie milder über Microsoft urteilen lassen - wenn das auch nicht rational ist. Die Gelegenheit, innerhalb erlebbarer Zeitspannen über revolutionäre Visionen und was daraus wirklich wurde zu urteilen, hat man nicht so oft...
Die Originalausgabe ("The road ahead") ist vermutlich besser als die von mir gelesene deutsche. So furchtbar viele Bücher hat Bill Gates gar nicht geschrieben...

Walter Isaacson: Steve Jobs: A Biography
- Ein Vertreter der Gattung: "Wer fundiert mitreden will tut besser daran, sich fundiert zu informieren". Mir hat das Buch sehr viel Spaß gemacht - obwohl es recht dick ist und man zur Lektüre besser mit einem exzellenten Wörterbuch ausgestattet ist (ein klarer Fall für eBook plus PONS Premium Dictionary App). Die Details der Zusammenhänge von Herrn Jobs, Apple, Atari, Pixar, NeXT etc. waren mir meist nicht vertraut und oft überraschend. In Sachen Philosophie der HighTech-Entwicklung nimmt man hier auf alle Fälle eine Menge mit (und vielleicht auch in Sachen "Psychologie von charismatischen Führungskräften").
Ob es einen Unterschied zwischen der autorisierten und der nicht von Steve Jobs autorisierten Fassung gibt und worin der ggf. besteht, weiß ich nicht.

Kent Beck: Test Driven Development. By Example
- Django empfiehlt das, und ich finde das Thema sehr spannend und werde das Buch bei nächster Gelegenheit mal lesen.


IV. freaky stuff:

David Abrahams, Alexej Gurtovoy: C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond
- ok, wer das liest ist - echt an der Materie interessiert? Falls man sich für Template Metaprogramming begeistern kann (und man muß sich m.E. nicht schämen, falls nicht), scheint mir das eine amtliche Quelle fortgeschrittener Erkenntnis. Themen u.a.: domain-specific languages, lambda-Funktionen, Traits u.a.; es ist immer wieder schön, zu erleben, wie einem nach der der Ratlosigkeit folgenden Erleuchtung/Erkenntnis ein Grinsen nicht aus dem Gesicht weichen will... Die deutsche Fassung kenne ich nicht, aber die englische ist ok. Hier liest man wahrscheinlich ohnehin nicht schell durch, eine höhere Lesegeschwindigkeit tritt zumindest bei mir hinter dem erforderlichen Denkaufwand ins Unwesentliche zurück.

Jason Sanders, Edward Kandrot: CUDA by example; An introduction to general-purpose GPU programming
- hervorzuheben, weil der Einstieg in die Thematik mit diesem Buch bemerkenswert leicht fallen kann; sehr praktisch ("zum Mitmachen"), sehr konkret. Hierbei nicht nur an Grafik denken, der Tellerrand sitzt hier weniger hoch ("general-purpose"). Falls es das auf deutsch überhaupt gibt: Ist nicht nötig.

Nachum Dershowitz, Edward M. Reingold: Calendrical calculations (Third edition)
- wer sich jemals dabei ertappt hat, an Kalendern und verwandten Zeit- und Datums-orientierten Themen ob ihrer tiefliegenden Kompliziertheit Gefallen zu finden kommt an diesem Buch nicht vorbei. Und auch im anderen Fall: Ein absolut faszinierendes Buch mit einer gehaltvollen "historischen" Komponente - angesichts der vermittelten Hintergründe z.B. zur Entstehung und Struktur uns fremder Kalender kommt man öfters aus dem Staunen nicht heraus!

Simon Singh: Geheime Botschaften: Die Kunst der Verschlüsselung von der Antike bis in die Zeiten des Internet.
- eher belletristisch verfaßt liest sich das Buch sehr gut "durch" und hinterläßt fundiertes Verständnis für grundlegende kryptographische Prinzipien und Technologien. Wer sie noch nicht kennt kann hier Alice und Bob und vor allem Marvin's Ideen kennenlernen und was man gegen diese Ideen unternehmen kann. Der Kreis wird gezogen von Geheimschriften des Altertums über das Schicksal der "Enigma" im II. Weltkrieg bis zum quantenphysikalisch gesicherten Geldschein der Zukunft...


Für das tägliche sich-auf-dem-Laufenden-Halten sind mein Favorit die "HackerNews". Mit "hacken" ist hier ganz allgemein "coding" gemeint und das Portal hält (ähnlich wie Reddit) eine aktuelle Mischung aus handwerklichen und "politischen" Themen bereit. Und nicht vergessen immer mal wieder bei Joel vorbeizuschauen, inzwischen gibt es dort auch eine ganze Reihe von von ambitionierten Leuten in Deutsche übersetzten Artikeln. Apropos "politisch": Falls jemand Fefe's Blog noch nicht kennt...

Ergänzungen und Kommentare sind willkommen, wenig ist älter als die Literaturliste von gestern!


Hoch   Zurück   Home   


zuletzt aktualisiert: 09. Juni 2012