Tämä asiakirja on saatavilla myös suomeksi. This document is also available in English.

Marko Mäkelä: Programmieren

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.

Programmierstil

In meinen eigenen C- oder C++-Projekten versuche ich, den Regeln und Empfehlungen von Ellemtel (auch in PDF verfügbar) zu folgen, mit einigen Ausnahmen.

Formale Methoden

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 in ein paar CPU-Wochen auf einigen 266 MHz Pentium II Rechnern berechnet. Ich habe auch einige farbige Bettdecken mit hilfe von C-Programmen entworfen.

Bildverarbeitung

pHoToMoLo
Ich habe das Programm entwickelt, um meine Hochzeitsbilder in ein Format umzuwandeln, das einfach zu blättern ist. Für ein Dateisystem von JPEG-Bildern erzeugt das Programm kleine sogenannte Thumbnail-Bilder in den gewünschten Größen und erzeugt eine HTML-Dokumentstruktur zum Blättern. Das Softwarepaket enthält auch 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.
webcamfloppy
Eine Linux-basierte Boot-Floppy, mit der ein Programm von mir ausgeführt werden kann. Das Programm empfängt Bilder von einer Firewire-Kamera, korrigiert Verzeichnung, komprimiert mit JPEG und sendet die Bilder in eine Pfeife, normalerweise per OpenSSH zu einem Web-Server.

Experimente mit der Programmiersprache Java

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.

Dreidimensionale Fraktale
Meine Applets für JDK 1.0 und 1.1 zeigen die Mengen von Mandelbrot und Julia in drei Dimensionen an.
Wertungsprogramm für einen Schönheitswettkampf
Mit dem Programm ist Helsinki Hair Open mehrere Jahre bewertet geworden. Die Schnittstelle zur Eingabe der Punkte ist ähnlich wie Tabellenkalkulation und ist dadurch schnell zu bedienen. Die Bedieneroberfläche ist in mehreren Sprachen verfügbar. Die Bedienungsanleitung fehlt, und einige Kleinigkeiten könnten in dem Programm verbessert werden.

Eingebettete Systeme

cisp
Dieses Programm für mehrere Unix-ähnliche Systeme und Windows liest und schreibt den Flash- ja EEPROM-Speicher von Atmel AVR® Microcontrollern über die parallele oder serielle Schnittstelle per SPI. Ich schrieb das Programm, um den Benutzern meines C2N232-Adapters es zu ermöglichen, die Firmware leicht zu aktualisieren. Vorhandene Lösungen funktionierten nur entweder auf Unix-ähnlichen Systemen oder Windows und unterstützten nicht derartigen RS-232-Schnittstellen, die benötigt wurde.
Veränderungen für VDR
Ich habe ein Aufnahme- und Abspielgerät für DVB-T aus Debian GNU/Linux, VDR und den Zusatzmodulen vdr-softdevice und vdr-subtitles eingerichtet. Die wichtigsten Veränderungen, die ich gemacht habe, sind hier verfügbar.

Schauen Sie sich auch meine gemischte Hilfsprogramme, Schaltungen und Programme für alte Rechner an.