UNIX-Philosophie

UNIX ist unter anderem durch die diesem Betriebsystem zugrunde liegende Philosophie so erfolgreich geworden. Es gibt drei Grundprinzipien, die sich durch dieses System und seine Anwendungslandschaft wie ein roter Faden ziehen:

  • Schreibe Computerprogramme so, dass sie nur eine Aufgabe erledigen und diese gut machen.
  • Schreibe Programme so, dass sie zusammenarbeiten.
  • Schreibe Programme so, dass sie Textströme verarbeiten, denn das ist eine universelle Schnittstelle.

Die dritte Regel ist sehr auf unixoide Betriebssysteme ausgelegt und beschreibt den Datenaustausch mit Pipes. Diese Regeln können aber auch allgemeingültig ausgelegt werden; sie laufen darauf hinaus, kleine und dafür ausgereifte Programme zu schreiben. Komplexere Aufgabenstellungen sollten nach Möglichkeit dadurch gelöst werden, indem man mehrere solcher soliden kleinen Programme mit ihrem dedizierten Zweck zusammenarbeiten lässt – ein Prinzip, das viele Vorteile bietet; z.B. auch für die eigene Programmierung von (Astro-) Software.

Die obigen Regeln gehen auf D. McIlroy zurück. Es gibt auch andere Autoren, die ebenfalls schon vor Jahrzehnten ähnliche oder ausführlichere Regeln aufstellten. An dieser Stelle sollen die Eingänglichsten von ihnen zusammengefasst werden:

  • Klein ist schön.
  • Gestalte jedes Programm so, dass es eine Aufgabe gut erledigt.
  • Erzeuge so bald wie möglich einen funktionierenden Prototyp.
  • Bevorzuge Portierbarkeit vor Effizienz.
  • Speichere Daten in einfachen Textdateien.
  • Vermeide Benutzeroberflächen, die den Benutzer fesseln.
  • Regel der Modularität: Schreibe einfache Bestandteile, die durch saubere Schnittstellen verbunden werden.
  • Regel der Klarheit: Klarheit ist besser als Gerissenheit.
  • Regel des Zusammenbaus: Entwirf Programme so, dass sie mit anderen Programmen verknüpft werden können.
  • Regel der Trennung: Trenne den Grundgedanken von der Umsetzung, trenne die Schnittstellen von der Verarbeitungslogik.
  • Regel der Einfachheit: Entwirf mit dem Ziel der Einfachheit; füge Komplexität nur hinzu, wenn es unbedingt sein muss.
  • Regel der Sparsamkeit: Schreibe nur dann ein großes Programm, wenn sich klar zeigen lässt, dass es anders nicht geht.
  • Regel der Transparenz: Entwirf mit dem Ziel der Durchschaubarkeit, um die Fehlersuche zu vereinfachen.
  • Regel der Robustheit: Robustheit ist das Kind von Transparenz und Einfachheit.
  • Regel der Darstellung: Stecke das Wissen in die Datenstrukturen, so dass die Programmlogik dumm und robust sein kann.
  • Regel der geringsten Überraschung: Mache beim Entwurf der Schnittstellen immer das Nächstliegende, welches für die wenigsten Überraschungen beim Benutzer sorgt.
  • Regel der Stille: Wenn ein Programm nichts Überraschendes zu sagen hat, soll es schweigen.
  • Regel des Reparierens: Wenn das Programm scheitert, soll es das lautstark und so früh wie möglich tun.
  • Regel der Wirtschaftlichkeit: Die Arbeitszeit von Programmierern ist teuer; spare sie auf Kosten der Rechenzeit.
  • Regel der Code-Generierung: Vermeide Handarbeit; schreibe Programme, die Programme schreiben, falls möglich.
  • Regel der Optimierung: Erstelle Prototypen, bevor du dich an den Feinschliff machst. Mache es lauffähig, bevor du es optimierst. Optimiere nie auf Vorrat.
  • Regel der Vielseitigkeit: Misstraue allen Ansprüchen auf „den einzig wahren Weg“.
  • Regel der Erweiterbarkeit: Entwirf für die Zukunft, denn sie wird schneller kommen als du denkst.

Auf den ersten Blick denken wir natürlich an die wunderbare Welt der Software, mit der wir jeden Tag zu tun haben, denen diese Prinzipien offenkundig fremd geblieben sind. Ich empfehle, einfach mal die Tastatur beiseite zu legen und diese Anregungen auf sich wirken zu lassen…

Quelle: http://de.wikipedia.org/wiki/Unix-Philosophie