Symbolbild PC-Software

PC-Software

Moderne PCs bieten eine enorme Ver­arbeitungs­leis­tung und einen riesigen Funktionsumfang, der weit über das hinaus geht, was man von einem Mikrocontroller und seiner Firmware erwarten kann.

Dementsprechend lassen sich PCs schneller und ele­gan­ter programmieren. Aber es wird auch mehr von ihnen erwartet.

So entstanden dann im Laufe von Jahren Programme mit teilweise über einer halben Million Programm­zeilen.

Programmiersprachen und Werkzeuge

Obwohl ich auch schon Programme in anderen aktuellen Sprachen wie Java oder PHP geschrieben habe und viel mit heute veralteten Sprachen wie COBOL, Pascal oder Delphi gearbeitet habe, ist mein bevorzugtes Werkzeug C++ in Kombination mit wxWidgets.

In jedem Falle ist es mir wichtig, Software so zu schreiben, dass sie nicht zu sehr von einem einzigen Betriebssystem abhängig ist. Typisch ist neben Windows auch die Unterstützung von Linux. Gelegentlich habe ich auch schon für MacOS X, Solaris, HP-UX, Solaris und OS/400 entwickelt.

SIMD

C++ (und C) erlauben direkt die Programmierung mit Single Instruction Multiple Data-Techniken moderner CPUs wie AVX-2. Dort, wo Rechenleistung für hohe Echtzeit-Performance wichtig ist, setze ich diese SIMD-Techniken gezielt zur Optimierung einzelner Funktionen ein.

Multithreading

Je nach Projekt hat Software von mir schon eine Milliarde Pixel je Sekunde in einem System mit harten Echtzeit­anforderungen verarbeitet.

Dies gelingt natürlich nur, wenn die Software die verfügbaren Prozessorkerne klug auslastet. Dabei müssen viele Fallstricke der Nebenläufigkeit berück­sichtigt werden, die andernfalls zu Fehlfunktionen führen könnten.

Versionskontrollsysteme

Als Versionskontrollsysteme, auch zur Kooperation mit den Entwicklern von Kunden und anderen beauf­tragten Dienstleistern, setze ich gerne CVS oder GIT ein, insbesondere in Kombination mit ssh und ggf. openvpn.

Siehe auch