Aus Linux-Magazin 12/2003

Software entwickeln unter Linux

Wer den Quellcode hat, der weiß wie ein Programm arbeitet – vorausgesetzt er versteht den Code. Doch genau hier scheitern viele Entwickler. Nicht, weil sie nicht programmieren könnten, sondern weil die Sourcen unverständlich geschrieben sind, oft sogar mit Absicht.

Inhalt

96 | IOCCCThe International Obfuscated C Code Contest: Gesucht wird das schönste undurchschaubare Programm.

99 | Coffee-ShopBildbearbeitung mit dem Java-API von Image Magick.

102 | STL im Shared MemoryObjekte der Standard Template Library gleichzeitig in vielen Prozessen nutzen.

106 | Perl-SnapshotEine ausgefallene Kombination: Kasinospiel und Quantenphysik.

Wenn sie deinen Code verstehen, brauchen sie dich nicht – das behauptet zumindest die Programmierer-Anleitung “How to write unmaintainable code”[1]. Mit einem deutlichen Augenzwinkern beschreibt dieser Essay Hunderte von Techniken, die den eigenen Job sichern. So geschriebener Code sieht zwar einfach und übersichtlich aus, die verborgenen Fallen sind dafür um so teuflischer. Sie sorgen dafür, dass außer dem Originalautor niemand die Zusammenhänge versteht, er scheitert selbst an trivialen Änderungen.

Das Versteckspiel beginnt bei der Namenswahl. Eine gute Quelle für kreative Bezeichner sind Bücher wie “20001 Namen für ein Baby”, aber auch einzelne Buchstaben, Akronyme oder absichtlich falsch geschriebene Wörter bewähren sich. Besonders fies: identische Namen für grundverschiedene Aufgaben verwenden. Verräterischer ist es, wenn eine Methode das Gegenteil von dem berechnet, was ihr Name andeutet. Gezielter Unfug gelingt auch gut mit Define- und Typedef-Anweisungen.

Tausend Techniken

Die komplexen Sprachen wie C++ bieten ein wahres Arsenal an Techniken, um Code völlig unverständlich zu gestalten. Beliebte Spielwiesen sind überladene Methoden, die je nach Klasse völlig unterschiedliche Aufgaben erfüllen. Mit überladenen Operatoren sind besonders elegante Tricks möglich.

Ein ganzes Kapitel geht auf Kommentare ein, schließlich ist falsche Dokumentation schlimmer als überhaupt keine. Der erste Tipp lautet hier: “Lüge in den Kommentaren. Du musst nicht einmal aktiv lügen, verzichte einfach nur drauf, die Kommentare anzupassen, wenn sich der Code ändert.”

Das Kapitel “Coding Obfuscation” verweist an erster Stelle auf Obfuscated-C-Contests: Die Teilnehmer treiben es hier auf die Spitze und schreiben Quellcode, dessen Layout künstlerischen Ansprüchen genügt und dessen Funktionsweise ohne zusätzliche Tools praktisch nicht zu ermitteln ist. Dennoch funktionieren diese Programme, wie der folgende Artikel anschaulich belegt.

Perl genießt bereits den Ruf, sich besonders für unverständliche Programme zu eignen. Das CPAN-Modul Quantum::Superpositions führt eine völlig neue Variante ein: Hier nehmen die Variablen gleichzeitig mehrere Zustände an. Die Idee dafür stammt aus der Quantenphysik. So kann es durchaus passieren, dass »if (a==23 && a==42)« wahr ist … – der Perl-Snapshot verrät, dass das Modul auch sinnvolle Aufgaben erledigt.

Infos

[1] Roedy Green, “How to write unmaintainable code”: [http://mindprod.com/unmain.html]

Programmierer-Software

Versionsnummern der aktuellen stabilen Releases am 16.10.2003 und Änderungen gegenüber dem Vormonat.

Skriptsprachen

Guile 1.6.4

Object Rexx 2.3.3

Perl 5.8.1

PHP 4.3.3

Python 2.3.2

Ruby 1.8.0

Tcl 8.4.4

Java

Blackdown 1.4.1-01

IBM Java2 SDK 1.4.1

Kaffee 1.0.7

Sun SDK 1.4.2_01

Compiler

Binutils 2.14

Clisp 2.31

Free Pascal 1.0.10

GCC 3.3.1

GForth 0.6.2

GNU Pascal 2.1

Intel C++ 7.1

Libraries

Coin 2.1.0

FLTK 1.1.4

glibc 2.3.2

glut 3.7

GTK+ 2.2.4

libpng 1.2.5

libsdl 1.2.6

libxml 2.5.11

Mesa 5.0.2

OpenSSL 0.9.7c

QT 3.2.2

wxWindows 2.4.2

zlib 1.1.4

Debugger

Code Medic 1.1.3

DDD 3.3.7

GDB 6.0

Insight 5.3

Mpatrol 1.4.8

Valgrind 20031012

Build-Tools

Autoconf 2.57

Automake 1.7.8

Libtool 1.5

GNU Make 3.80

SWIG 1.3.19

IDEs

Anjuta 1.0.2

Code Crusader 3.0.3

C-Forge 3.5

CodeWarrior 6

Eclipse 2.1.1

Emacs 21.3

KDevelop 2.1.5

Kylix 3

Motor 3.2.4

Source-Navigator 5.1.4

VIDE 2.0

VIM 6.2

XEmacs 21.4.14

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben