Rekursion Ist Gut

Rekursion ist besser als ihr Ruf

An zahlreichen Literaturstellen wie auch in Unterlagen aus dem Internet ist immer wieder die Rede davon, dass Rekursion etwas Schlechtes sei und vermieden werden soll. Gleichzeitig gibt es wahrscheinlich keine einzige Universität auf diesem Erdball, an der Rekursion nicht gelehrt wird. Diesen vermeintlichen Widerspruch, dass Dinge gelehrt werden, die man nicht nutzen soll, sind wir auf den Grund gegangen.

Was ist Rekursion überhaupt?

Rekursion ist in der Informatik ein Programmiertrick, bei dem sich eine Funktion oder Methode immer wieder selbst aufruft.

Read more →

Der Stack ist dein Freund

Wie uns der Stack helfen kann, schöneren Code zu schreiben.

Moderne Trends in der Software-Entwicklung versuchen, uns dazu zu nötigen, den Kontrollfluss in kleine Häppchen zu zerstückeln. Konkret postuliert Robert C. Martin in seinem Buch Clean Code, dass Funktionen möglichst klein sein sollten und nur in Einzelfällen 20 Zeilen erreichen dürfen:

> “The first rule of functions is that they should be small. […] Functions should hardly ever be 20 lines long.” – Robert C. Martin

Read more →

Polymorphismus in C

Polymorphismus endlich auch in C

Neidisch und voller Bewunderung schauen C-Programmierer auf ihre objektorientierungsvirtuosen Kollegen, die sich in der Firma wie Götter gebärden. Warum nur hat der Chef C angeordnet? C-Programmierer wollen auch diese tollen Sachen machen und bewundert werden. Aber was ist das überhaupt, was die da machen?

Was ist diese Objektorientierung überhaupt?

Bei der Objektorientierung geht es darum, die Trennung zwischen statischer Struktur und Verhalten aufzubrechen. Wo in C noch Structs von Funktionen beackert wurden, kommen in C++ jetzt die Structs als „Klassen“ daher und bringen ihren Code gleich noch mit – ein mittlerer Alptraum für jeden Architekten, der Struktur und Verhalten lieber getrennt sehen möchte. Ein paar fiese Konzepte besiegeln dazu die restlose Verwirrung. Anders als in C kann eine Funktion (die jetzt „Methode“ heißt“) je nach Parametertyp unterschiedliche Implementierungen mitbringen:

Read more →

Leicht lesbarer Code? C++ war schon immer bereit dafür!

In unserem letzten Blog-Beitrag haben wir gesehen, wie hilfreich unions im Alltag jedes Programmierers sein können und dass unions vollkommen zu Unrecht einen schlechten Ruf in Applikationscode haben.

Code-Bloat durch Spracheigenschaften

So mancher C++-Programmierer blickt neidisch auf seine IT-Kollegen, die sich nicht mit Type-Safety und anderen nutzlosen Einschränkungen herumschlagen müssen, die ihnen durch die Sprache C++ auferlegt wird. Vermeintlich, wie wir sehen werden. Die Kollegen ohne diese Einschränkungen nutzen Perl, PHP, Python, JavaScript und werden bei ihrer Arbeit im Lösungsraum weit weniger behindert als jeder C++-Programmierer.

Read more →

Unions sind gut!

Im Internet verbreitet sich mehr und mehr das Gerücht, dass unions vermieden werden sollen. Diese Aussage ist absolut falsch. unions sind eines der besten Sprachfeatures von C/C++ und sollten in jedem Programm verwendet werden.

Unions haben einige sehr eindeutige Vorteile:

Unions sparen Unmengen an Speicherplatz

Ein großer Gegenspieler der union in C ist das struct. Beide verhalten sich sehr ähnlich, aber ein struct braucht unverhältnismäßig mehr Speicher!

Schauen wir uns zwei kleine Codebeispiele an:

Read more →