Entwicklung

Hier beleuchte ich alles, was die Software-Entwicklung im Kleinen betrifft: Paradigmen, Sprachkonstrukte, Syntaxen und Entwurfsmuster

The Billion Dollar Mistake

Lesezeit: 11 MinutenDer britische Informatiker Sir Charles Antony Richard Hoare, besser bekannt als Tony Hoare, gilt als Erfinder des Quicksort-Algorithmus. Zu seinen weiteren Errungenschaften zählen das Hoare-Kalkül, die formale Sprache CSP (Communicating Sequential Processes) und seine Arbeit an der Programmiersprache ALGOL W, in der er die Nullreferenz einführte. Auf der QCon-Konferenz in London im Jahr 2009 reflektierte er […]

The Billion Dollar Mistake Weiterlesen »

Law of Demeter

Lesezeit: 11 MinutenDas Law of Demeter ist ein Entwurfsprinzip aus der – vornehmlich objektorientierten – Programmierung. Die direkte deutsche Übersetzung „Gesetz von Demeter“ ist weniger geläufig. Gelegentlich wird auch vom Principle of Least Knowledge gesprochen. Das Law of Demeter wird auch gerne mit dem Spruch „Don’t talk to strangers“ (rede nicht mit Fremden) verbunden. Das Law of

Law of Demeter Weiterlesen »

Zeitkomplexität

Lesezeit: 16 MinutenZeitkomplexität (Englisch: Time Complexity) bezeichnet den Zeitbedarf eines Algorithmus in Bezug auf seine Eingabedaten. Über sie lässt sich die zeitliche Effizienz eines Algorithmus bewerten und Alternativen gegenüberstellen, etwa zur Verschlüsselung, Komprimierung, Suche oder Sortierung von Daten. Die Zeitkomplexität ist eine der wichtigsten Metriken der allgemeineren Computational Complexity, zu Deutsch einfach „Komplexität“, von Algorithmen. Eine weitere

Zeitkomplexität Weiterlesen »

Currying

Lesezeit: 10 MinutenCurrying ist eine Technik, um eine Funktion mit mehreren Argumenten in eine Abfolge von Funktionen mit jeweils nur einem Argument umzuwandeln. Currying ist nach dem US-amerikanischen Mathematiker Haskell Brooks Curry benannt, der sich zwar ausführlich damit auseinandergesetzt, das Verfahren aber tatsächlich nicht erfunden hat. Als Erfinder gilt Moses Schönfinkel, der wiederum auf den Ideen von

Currying Weiterlesen »

Code-Duplikate

Lesezeit: 14 MinutenAls Code-Duplikate, auf Wikipedia Quelltextklone, bezeichnet man Redundanzen im Quellcode. Es kann sich dabei um identische oder sehr ähnliche Abschnitte handeln. Code-Duplikate werden überwiegend negativ wahrgenommen, können aber auch Vorteile haben. Ursachen Code-Duplikate entstehen meistens durch Copy-Paste-Programmierung. Dabei dient ein bestehender Code-Abschnitt als Vorlage, wird kopiert und an anderer Stelle eingefügt, und manchmal im Anschluss

Code-Duplikate Weiterlesen »

Design by Contract

Lesezeit: 13 MinutenDesign by Contract (DbC) ist ein Konzept aus der strukturierten bzw. prozeduralen Programmierung, das sich auch auf objektorientierte Programmierung und andere Paradigmen übertragen lässt. Der Begriff wurde von Bertrand Meyer geprägt und fand das erste Mal 1986 Erwähnung. In seiner Programmiersprache Eiffel ist Design by Contract als fester Bestandteil verankert. Definition DbC formalisiert den Schnittstellenvertrag

Design by Contract Weiterlesen »

Bitoperationen

Lesezeit: 12 MinutenBitweise Operationen sind die einfachsten und schnellsten Operationen, die Computer durchführen können, und auf die sich alle höheren Operationen zurückführen lassen. Dieser Artikel befasst sich auf der einen Seite mit den Grundlagen von Bitoperationen und auf der anderen Seite damit, wie und wo man sie praktisch verwenden kann. In diesem Artikel werde ich viele Zahlenbeispiele

Bitoperationen Weiterlesen »

Syntactic Sugar

Lesezeit: 13 MinutenSyntactic Sugar, zu Deutsch syntaktischer Zucker, ist diejenige Syntaxerweiterung einer Programmiersprache, die eine alternative Schreibweise ermöglicht, dabei aber keine neue Funktionalität einführt. Das Ziel von Syntactic Sugar ist es, Code expliziter zu machen bzw. die Lesbarkeit zu verbessern. Eine Syntaxerweiterung kann als Syntactic Sugar bezeichnet werden, wenn sich der Code auch gleichbedeutend mit der vorherigen

Syntactic Sugar Weiterlesen »

Prototypenbasierte Programmierung

Lesezeit: 6 MinutenDie prototypenbasierte Programmierung ist ein objektorientiertes Programmierparadigma und eine Alternative zur klassenbasierten Programmierung. Prototypenbasierte Programmierung kam erstmals Mitte der 80er Jahre mit der Programmiersprache Self auf. Der populärste Vertreter dieses Paradigmas ist JavaScript. Einige weitere prototypenbasierte Sprachen sind Lua, Io, Kevo, Rebol und Cecil. Da mir keine offizielle Kurzschreibweise geläufig ist, verwende ich für diesen

Prototypenbasierte Programmierung Weiterlesen »

Dependency Injection

Lesezeit: 12 MinutenDependency Injection (DI) ist ein Design Pattern zur Umsetzung von Inversion of Control. DI verlagert Auflösung und Erstellung von Abhängigkeiten einer Instanz nach außerhalb dieser Instanz. Durch die Trennung von Erstellung und Verwendung einer Abhängigkeit erreicht DI damit Separation of Concerns. Der Begriff Dependency Injection wurde durch Martin Fowler in einem im Jahr 2004 von

Dependency Injection Weiterlesen »