2013-05-12
C++11: Zähl mich! Aber richtig!
Erfreulicherweise wird in letzter Zeit wieder vermehrt und positiv über C++ berichtet. Doch nicht in allen Fällen bin ich über die Darstellung restlos glücklich. Daher versuche ich anhand eines Beispiels aufzuzeigen, dass modernes C++ mehr als nur die Verwendung neuer Features ist.
2013-05-05
3 Gründe für Trailing-Return-Types in C++
C++ bietet eine alternative Syntax für Funktionen, bei der der Rückgabetyp hinter der Parameterliste steht. Diese Erweiterung wird potentiell bedeutenden Einfluss auf das Aussehen von C++ haben. Denn schließlich gibt es gute Gründe, primär die neue Syntax zu verwenden.
2013-04-21
Tipp: Editing Remote Files
Sich mit ssh auf einem entfernten Linux-Rechner anmelden und mit einem dort installierten Texteditor Dateien bearbeiten? Warum nicht einfacher umgekehrt und die Datei in die lokale Entwicklungsumgebung bringen?
2013-04-14
Rankings zu Programmiersprachen und Plattformen
Aus den Angaben der Mentoren-Organisationen zu Googles Summer-of-Code lässt sich ein Ranking für Programmiersprachen und Plattformen erstellen. Diese Rankings sind nicht repräsentativ, aber vielleicht gerade deshalb besonders interessant. Denn sie zeigen, wie Verbreitung und Beliebtheit spezifisch zum Umfeld sind.
2013-04-07
Java, LinkedList und ArrayList
LinkedList und ArrayList sind zwei Implementierungen der gleichen Schnittstelle. In einigen Situationen ist aufgrund der asymptotischen Laufzeit offensichtlich, welche der beiden Datenstrukturen besser geeignet ist. Doch welche Implementierung sollte man in allen anderen Fällen verwenden?
2013-03-31
java -XX:+UseCompressedOops
Die Option -XX:+UseCompressedOops halbiert den Speicherverbrauch von Referenzen in 64-Bit Laufzeitumgebungen. Die dadurch erreichten Einsparungen werden häufig unterschätzt. Denn in Java gibt es viel mehr Referenzen als man glaubt.
2013-03-24
5 Beispiele für Code-Duplizierung in der Java-Standardbibliothek
Trotz vergleichsweise hoher Qualitätsansprüche finden sich in der Standardbibliothek von Java 7 große Mengen duplizierten Codes. Fünf Beispiele sollen dabei helfen, ein Verständnis dafür zu entwickeln.
2013-03-17
User-defined Literals for C++ Standard Library Types
Die kommende Erweiterung der C++-Standardbibliothek bringt Benutzer-definierte Literale für Zeichenketten, komplexe Zahlen und Zeitdauern. Diese Standardisierung führt zu einer Vereinheitlichung, erhöht den Wiedererkennungswert und verbessert die Lesbarkeit.
2013-03-10
java.util.Objects
Die Klasse java.util.Objects wurde mit Java 7 eingeführt und enthält ohne Kommentare gerade mal 40 Zeilen Quelltext. Doch die Hilfsmethoden war längst überfällig und werden immer noch unterschätzt. An dieser Stelle beschreibe ich die drei Wichtigsten.
2013-03-03
Variationen der get-Methode von java.util.Map
Die get-Methode der java.util.Map unterstützt wichtige Anwendungsfälle nur unzureichend und ist die Ursache für viele NullPointerExceptions. Wie sieht eine alternative und bessere Schnittstelle aus?
2013-02-24
Tipp: SSH-Multiplexing
SSH enthält zahlreiche, kaum bekannte Features. Dazu gehört auch das Multiplexing, mit dem der sonst gefühlt langsame Verbindungsaufbau rasend schnell wird.
2013-02-17
Java: Top 3 Anti-Patterns für NullPointerExceptions
NullPointerExceptions gehören gefühlt zu den ärgerlichsten Laufzeitproblemen von Java-Programmen. Durch Vermeidung der häufigsten Anti-Patterns verschwinden auch viele Probleme. Dieser Artikel beschreibt die drei Wichtigsten.
2013-02-10
Java: Über Type-Erasure und Type-Variance
Wie weist man eine Referenz vom Typ Iterable<String> einer Referenz vom Typ Iterable<Object> zu? Die Aufgabe klingt einfacher als sie ist, doch Type-Erasure und Type-Variance hilft.
2013-02-03
Über Kovarianz und Kontravarianz generischer Typen in Java
Was bedeutet Kovarianz und Kontravarianz für generische Typen in Java? Und wofür wird das benötigt?
2013-01-27
System-nahe Programmierung mit Python
Die Programmiersprache Python ist hervorragend für die System-nahe Entwicklung unter Linux geeignet. Spätestens seit Version 3.3 geht das deutlich über den Umfang anderer Programmiersprachen hinaus. Ein paar Beispiele.
2013-01-20
Java: try-with-resources
Es gibt gute Gründe für die Einführung von try-with-resources mit Java 7. Erst damit ist eine einfache und zuverlässige Ressoucenverwaltung in Java möglich. Es fehlt nur noch der konsequente Einsatz.
2013-01-13
Java: Call-by-Value oder Call-by-Reference?
Verwendet Java Call-by-Value oder Call-by-Reference? Zu dieser Frage gibt es immer wieder Diskussionen. Dabei ist die Sache doch ganz einfach.
2013-01-06
Wofür sind Speichermodelle in Programmiersprachen gut?
Mittlerweile spezifizieren viele verbreitete Programmiersprachen Speichermodelle und verwenden sie zur Definition der Ausführungssemantik. Warum werden diese Speichermodelle benötigt? Und warum spielten sie früher keine Rolle?
2012-12-30
Middleware, Middleware und Middleware
Was ist eigentlich Middleware? Dieser Begriff wird inflationär verwendet – doch zumindest in meinem Umfeld nur selten nach meinem Verständnis.
2012-12-23
Overhead von Atomic-Operationen
Welchen Overhead haben Atomic-Operationen gegenüber regulären Spreicherzugriffen auf der x86-Architektur?
2012-12-16
Performance: 1.2 Trillion Google Searches
Wie viele Suchanfragen beantwortet Google pro Tag? Und wie viele Rechner benötigt man, um so viele HTTP-Requests zu beantworten?
2012-12-09
Apache Subversion: Feature Branches
Wie setzt man Feature Branches mit Apache Subversion richtig ein? Wie sieht die richtige Vorgehensweise aus? Und wie verwendet die Werkzeuge richtig?
2012-12-02
Apache Subversion: Release Branches
Release Branches sind mit Apache Subversion mit der richtigen Vorgehensweise und den richtigen Werkzeugen eine ganz einfache Sache.
2012-11-25
Überladung für Zeichenkettenliterale in C++
Kann eine Funktion in C++ unterscheiden, ob sie mit einem Zeichenkettenliteral oder einer dynamisch zusammengebauten Zeichenkette aufgerufen wird? Die kurze Antwort ist: Nein. In vielen Anwendungsfällen geht es dennoch.