Tämä asiakirja on saatavilla myös suomeksi. This document is also available in English.
Ich bevorzuge freie Software. Nicht nur, weil es Geld spart, sondern auch, weil ich und andere die Programme anpassen können, so daß sie mein Bedarf besser füllen. Ich habe einige freie Programme geschrieben, meist in der Programmiersprache C.
In meinen eigenen C- oder C++-Projekten Anfang der 2000er Jahren hatte ich versucht, den Regeln und Empfehlungen von Ellemtel (auch in PDF verfügbar) zu folgen, mit einigen Ausnahmen.
Heutzutage sieht es so aus, dass man am besten Google C++ Style Guide und C++ Core
Guidelines folgt und sich an Werkzeuge für statische Analyse
verläßt. Der Clang-Kompilierer erzeugt nützliche Warnungen und bietet
unterschiedliche Sanitizer
an, die die Fehlersuche
in der Laufzeit erleichtern: ASAN, MSAN,
UBSAN und
TSAN. Diese zusammen
mit Regressionstesten und Ananlyse der Code-Überdeckung ermöglichen einen
effizienten Einsatz von Versionsverwaltungssysteme und Werkzeuge wie
git bisect
.
In professioneller Software-Entwicklung sind die Randbedingungen oft im Voraus festgelegt. Während es schön wäre, immer den neuesten Programmierstil oder Werkzeuge einzusetzen, könnte die Verfügbarkeit durch die Auswahl von Zielsystemen beschränkt werden. Zum Glück ist in der 2000er Jahren die Auswahl von wahrzunehmender C- und C++-Kompilierer und Betriebssysteme geringer geworden, und die verbleibenden Kompilierfamilien (hauptsächlich GCC, Clang, Microsoft) folgen der Entwicklung der Standards. In 2016 ist es tatsächlich denkbar, ISO/IEC 14882:2011 bzw. C++11 einzusetzen. Dies ist eine klare Verbesserung von 2003, als der damals 5 Jahre alter C++98 Standard noch nicht ganz praktisch verfügbar war. Die Zukunft sieht gut aus auch für C++14 und für den künftigen C++17.
Als Doktorand schrieb ich einen Erreichbarkeitsanalysator und Modellprüfer für höhere Petrinetze in C++ und C. Er kann helfen, Fehler in nebenläufigen und verteilten Systemen zu finden. Die Software ist in der Debian GNU/Linux Verteilung enthalten.
Ich mag kombinatorische Probleme, aber wenn möglich, löse ich sie mit roher Gewalt. Ich habe die Lösungen des 6×10 Pentomino Puzzle berechnet. Ich habe auch einige farbige Bettdecken mit hilfe von C-Programmen entworfen.
jpegcom
zum
Ändern der Anmerkungen zu Bildern, exifiron
zum Rotieren
und Komprimieren der Bilder von einer digitalen Kamera und
jpegnail
zum Einbetten oder Entfernen kleiner
Vorschaubilder in JPEG-Bildern.Für die Programmiersprache Java wurde 1995 viel Werbung gemacht. Wenn eine Anwendung einmal kompiliert und getestet worden sei, werde sie in allen Bedienungsumgebungen funktionieren. Das war doch nicht der Fall: besonders die Programmschnittstellen von graphischen Bedieneroberflächen sind in nahezu allen Versionen des Java-Laufzeitsystems verändert worden. Außerdem ist das Laufzeitsystem sehr groß geworden, und es gibt keine komplette freie Implementierung. Für diese Gründe versuche ich die Programmiersprache Java zu vermeiden, obwohl ich damit einige Experimente gemacht habe.
Schauen Sie sich auch meine gemischte Hilfsprogramme, Schaltungen und Programme für alte Rechner an.