Menü
aus ein
Ansicht umschalten Baum an
Avatar von Casandro
  • Casandro

mehr als 1000 Beiträge seit 04.05.2000

Ich bin da ein Verfechter der Unix-Philosophie

Eines der Grundideen hinter Unix ist es, dass der Text und
Textdateien die Schnittstellen zwischen unterschiedlichen Subsystemen
ist. Sprich, Programme geben Text aus, und nehmen Text als Eingabe.
Sprich wenn ich beispielsweise das CD-Rom Laufwerk öffnen möchte, so
kann ich "eject /dev/cdrom" ausführen. Und das kann nicht nur ich
(was schon etwas albern wäre), sondern auch ein anderes Programm. Ich
kann beispielsweise das CD-Rom-Laufwerk von cron (ein Programm
welches Programme zu bestimmten Zeiten ausführt) in der Frühe öffnen
lassen, damit es einen Topfdeckel vom Tisch schiebt damit ich
aufwache.

Oder ich kann von meiner FritzBox die Telefonnummern von Anrufern
holen, diese Nummer im Telefonbuch nachschlagen, und dann gleich
einen Brief mit adressiertem Rückumschlag ausdrucken, damit ich denen
ihn zuschicken kann.

Kurz um, wenn alles Text ist, dann "schnappen" Programme einfach
zusammen wie Lego. Es funktioniert einfach, und man kann mit relativ
wenig Aufwand wirklich tolle Sachen machen.

Das geht heute leider verloren. Viel zu oft gibt es bestimmte
Funktionen nur über eine Bibliothek gegen die man linken muss. Ändert
sich da ein wenig, so zerbricht die Verknüpfung. Binäre Verbindungen
sind sehr brüchig, Text hingegen ist flexibler und stabiler. Ich kann
an eine Textdatei mit Spalten beliebig neue Spalten anhängen, die
Spalten die schon da waren kann alte Software weiter verarbeiten.
Übergebe ich einem Programm jedoch ein Array an Structs, so verändert
jede kleine Änderung die komplette Schnittstelle.

Die Unix-Schöpfer haben das frühzeitig erkannt und dem vorgebeugt, in
dem sie möglichst alles im Text speichern.

Der erste Sündenfall war der TCP/IP Stack. Dort hat man plötzlich
keine dateibasierte Schnittstelle mehr. Man kann nicht einfach
/dev/ip/tcp/1.2.3.4:5678 aufmachen und hat eine TCP/IP Verbindung
(unter Plan 9 wurde das übrigens so in der Art gelöst), sondern man
muss eine spezielle Socket-API benutzen.

Inzwischen kümmern sich viele Entwickler nicht mehr um die Unix
Philosophie. Als ich mit Linux begann gab es OSS. Man konnte "cat
/dev/dsp > test.pcm" tippen, und Ton wurde von der Soundkarte
aufgezeichnet. Mit "cat temp.pcm >> /dev/dsp" wurde der wieder
abgespielt. Das ging einfach. Dank Alsa sollte man plötzlich
Bibliotheken linken, und bei Pulseaudio hat man Bibliotheken und noch
nicht mal ein Kommandozeilenwerkzeug mit dem man vernünftig die
Toneinstellungen machen kann.

Plötzlich sind die oben erwähnten Dinge nicht mehr so einfach
möglich. Ich kann nicht mehr die Lautstärke einfach über ein Programm
steuern, so dass ich ein "Heimkinoskript" habe, welches die Vorhänge
zuzieht, das Fernsehgerät bootet und die Lautstärke auf "Kino"
schaltet.

Bewerten
- +
Anzeige