Logo BKs Home - Ein neuer Versuch. Logo

Rund um die Programmierung

   
Premature optimization is the root of all evil.
- Donald Knuth

One of the aims in programming is to be precise.If you are not being precise,you are being vague.If you are being vague,you don ’t need the help of a programming language —beer is a far better medium for this.
- Kevlin Henney

    
   

Auf dieser Seite haben Sie die Möglichkeit an meinen bescheidenen Programmierkenntnissen teilzuhaben. Sie finden hier kleine Beispielprogramme, Tutorials sowie ein paar Buchempfehlungen.

Natürlich übernehme ich keinerlei Garantie für die Richtigkeit und Fehlerfreiheit der hier aufgelisteten Programme. Eine Benutzung der hier angebotenen Beispiele geschieht auf eigene Gefahr.

Da ich hauptsächlich in C/C++ programmiere, steht diese Sprache hier im Vordergrund. In meinem Linkbereich finden Sie aber auch eine Menge interessanter Links zu anderen Themen rund um die Programmierung.

Jeder der sinnvoll mit C/C++ arbeiten will, sollte das ein oder andere Buch zur Hand haben. Die Bücherfülle zu diesem Thema kann aber gerade für Einsteiger sehr verwirrend sein. Aus diesem Grund habe ich hier ein paar wirklich sehr gute und empfehlenswerte Bücher aufgelistet. Ein Klick auf den Titel eines Buches führt Sie zu einer Inhaltsbeschreibung. Über das Titelbild gelangen Sie dann direkt zu Amazon.de wo Sie die einzelnen Titel bestellen können. Eine genaue Beschreibung der Bewertungskriterien finden Sie hier.

Eine weitere sehr gute Buchbesprechung finden Sie auf www.c-plusplus.de. Das Forum ist außerdem das Beste deutschsprachige C++ Forum das man im Internet finden kann (vertrauen Sie mir, ich weiß das :-)

C++ Allgemein

  • A. Alexandrescu: Modern C++ Design
  • B. Stroustrup: Die C++ Programmiersprache
  • Bruce Eckel: Thinking in C++ Volume one
  • Bruce Eckel: Thinking in C++ Volumen two
  • David Abrahams, Aleksey Gurtovoy: C++ Template Metaprogramming


  • cover    
    LevelVerständlichkeitAufbewahrungsortGesamteindruck
    punkpunkpunkpunkpunkpunkpunkpunkpunkpunk

    Eins vorweg: C++ Template Metaprogramming ist kein Buch, dass einem die Template-Techniken und Tricks beibringt, die man für die Implementation eigener Metaprogramme (unabhängig von der boost.mpl Library) benötigt. Vielmehr beschäftigt sich der Hauptteil des Buches mit der boost.mpl Library und ihrer Nutzung bzw. Erweiterung. Es stehen weniger low-level Implementationsdetails im Vordergrund sondern vielmehr Konzepte (metafunction, metafunction class, lambda expressions usw.), die für das Verständnis der boost.mpl Library notwendig sind.

    Die ersten drei Kapitel legen die Grundlagen, die für das Verständnis der restlichen Kapitel notwendig sind. Hier werden grundlegende Begriffe, wie Metaprogramm und Metafunktion, definiert. Außerdem wird erklärt warum eine high-level Metaprogramming-Bibliothek wie die boost.mpl Library Voraussetzung dafür ist, damit Template Metaprogramming sein Nischendasein ablegen und in den Programmieralltag vordringen kann. Ein Beispiel zum Thema Dimensional Analysis, das auch online zu finden ist, rundet die ersten drei Kapitel ab.

    Die Kapitel vier bis acht liefern einen detaillierten Überblick über die boost.mpl Library. Hier werden die Elemente der boost.mpl Library (Algorithmen, Iteratoren, Views und Adaptors) aufgelistet und Beispiele für mögliche eigene Erweiterungen demonstriert. Das achte Kapitel ist dabei besonders interessant, da es Techniken aufzeigt wie man mittels der boost.mpl Library Fehlermeldungen, die aus fehlerhaften Templateinstanziierungen resultieren, lesbarer gestalten kann. Jeder der sich schonmal durch eine 500 Zeilen Fehlermeldung gequält hat, wird die Informationen die in diesem Kapitel zum Besten gegeben werden zu schätzen wissen.

    Das neunte Kapitel beschreibt Techniken für die Verknüpfung von Compilezeit-Metaprogrammen mit Laufzeitkonstrukten. Es ist damit meiner Meinung nach eines der wichtigsten Kapitel da Metaprogramme letztlich erst durch genau diese Verknüpfung interessant werden. Hier wird u.A. auch das type erasure-Prinzip erklärt. Type erasue, definiert als the process of turning a wide variety of types with a common interface into one type with that same interface, gehört zu den Techniken für die man, nachdem man sie einmal kennen gelernt hat, ständig neue Anwendungsfälle findet.

    Die Kapitel zehn und elf widmen sich ausführlich dem Thema domain-specific embedded languages (DSELs) und damit dem wichtigsten Einsatzgebiet der Metaprogrammierung. Zuerst wird am Beispiel von YACC erklärt, was eine domain-specific language (DSL) ist und wo die Vorteile solcher Sprachen liegen. Bis dahin ist das Ganze noch recht unspektakulär. Das besondere an C++ ist nun aber, dass solche domain-specific languages, dank Templates und Operator-Überladung, direkt in die Sprache selbst integriert werden können. Am Beispiel von Bibliotheken wie z.B. Blitz++, Boost.Lambda und Boost.Spirit wird das Ergebnis einer solchen Integration demonstriert. Abgerundet wird das Thema durch ein Beispiel. Im elften Kapitel wird dazu die Implementation einer kleinen DSEL für Finite State Machines vorgestellt.

    Appendix A ist der Boost.Preprocessor Library gewidmet. Dazu nur soviel: wer bereits beim Anblick von Templatemetaprogrammen nervös wird, der wird beim Anblick dieser Bibliothek wahrscheinlich vollständig vom Stuhl kippen.

    Appendix B behandelt das Thema dependent vs. non-dependent names. Genaugenommen wird hier erklärt wann und warum welche Namen in Templates mit den Schlüsselwörtern typename bzw. template qualifiziert werden müssen. Kurz: eine bessere Abhandlung des Themas habe ich bisher nirgends gefunden.

    Appendix C liefert eine ausführliche Studie zum Thema Compile-Zeit Performanz. Hier wird untersucht, wie sich einzelner Compiler (gcc 2.95, gcc 3.3, MSVC 6.0 und 7.1, Intel C++ 6.0 und 7.1 sowie Metroworks CodeWarrior 9.2) im Punkte Template-Instanziierung verhalten. Ein Kapitel, dass für angehennde Metaprogrammierer besonders interessant sein dürfte.

    Fazit: C++ Template Metaprogramming - Concepts, Tools, and Techniques from Boost und Beyond gehört meiner Meinung nach nicht zu den must-have C++ Büchern. Dafür ist der Inhalt zu speziell. Nichtsdestotroz ist es aber ein gelungenes und lesenswertes Buch das ich besonders denjenigen empfehlen kann, die sich für die Philosophie und Terminologie der Metaprogrammierung und konkret für die boost.mpl Library interessieren. Besonders die Kapitel 9-11 sowie Appendix C enthalten sehr interessante Informationen die man sonst nicht so ohne weiteres findet.

    Als Warnung sei aber noch einmal gesagt: wer sich hauptsächlich für Implementationstechniken die hinter Templatemetaprogrammen stehen interessiert, der wird mit diesem Buch wenig freude haben. In diesem Fall ist Jossutis' und Vandevoordes C++ Templates - The Complete Guide eine deutlich bessere Informationsquelle.




  • David Vandevoorde, Nicolai M. Josuttis: C++ Templates - The Complete Guide
  • H. Sutter: Exceptional C++
  • Herb Sutter: More Exceptional C++
  • M. Cline, G. Lomow, M. Girou: C++ FAQs Second Edition
  • S. B. Lippmann, J. Lajoie: C++ Primer

C++ Standardbibliothek/STL

Design

Windowsprogrammierung

Natürlich ist diese Liste keinesfalls vollständig. Uneingeschränkt kann ich z.B. auch noch S. Meyers: Effective C++ empfehlen.

Da dies aber nur eine kleine, feine Liste sein soll möchte ich einfach noch einmal auf diese Buchsprechung hinweisen.

zurück zum Seitenanfang
   

Tutorials und Texte:

Diese Sektion ist noch in der Aufbauphase. Erstmal möchte ich jetzt auf die hervoragende Tutorialseite von Marcus Bäckmann hinweisen.

Name Beschreibung Autor
UML Tutorial Teil 1Dieser Teil beschreibt die Erstellung von Klassendiagrammen mittels der UML.
Größe: 19 kB
Robert C. Martin
UML Tutorial Teil 2Collaboration Diagramme mit der UML.
Größe: 30 kB
Robert C. Martin
UML Tutorial Teil 3Erstellung von Use Cases mittels der UML.
Größe: 13 kB
Robert C. Martin
UML Tutorial Teil 4Sequenz Diagramme mit der UML.
Größe: 38 kB
Robert C. Martin
Das MVC-ModellEin kleiner Text über das MVC-Modell, den ich mal für die Uni geschrieben habe.
Größe: 77 kB
Ich
Volkards C++ KursEin supi deutschsprachiger C++ Kurs, den ich allen C++ Anfängern ans Herz legen kann. Volkard Henkel
Tonis C++ KursEin schöner C++ Einsteigerkurs aufgeteilt in kleine, leicht verständliche Lektionen. Da Toni Schornböck derzeit noch fleißig an seinem Kurs arbeitet sollte man auf jeden Fall regelmäßig vorbeischauen.Toni Schornböck
zurück zum Seitenanfang
   

Meine ganz persönlichen C++ FAQs

...finden Sie hier.
Die FAQs sind noch im Aufbau. Mit der Zeit werden sie sich hoffentlich deutlich vermehren :-)


 
   

Codebeispiele:

Studium

Hier befinden sich Programme und Belege die ich für die Uni angefertigt habe. Den Schwerpunkt bilden zur Zeit Beispielprogramme zum Thema verteilte Systeme (unter Verwendung von Sockets, CORBA, COM und Java RMI). Bei den Belegen dürften vor allem die Dokumentationen sehr interessant sein. Auf diesen Teil einer Belegarbeit wird an der Uni (zumindest in Potsdam) besonders großen Wert gelegt. Jeder der bisher nur hobbymäßig programmiert hat, kann sich hier also ein Bild davon machen was ihn möglicherweise irgendwann einmal erwartet.


Tools

In dieser Kategorie befindet sich kleine Programme und Werkzeuge die das Programmiererleben leichter machen.


Sonstiges

Hier landet alles, was bisher nicht eingeordnet werden kann.


    
    Zuletzt aktualisiert am: 13.01.2007 zurück zur Startseite    
    © Benjamin Kaufmann - Fragen, Kritik und Anregungen bitte direkt an mich oder ins Gästebuch