www.wikidata.de-de.nina.az
Die Unix Philosophie ist eine Menge von Regeln und Herangehensweisen bei der Software die auf den Erfahrungen der fuhrenden Unix Programmierer basieren Inhaltsverzeichnis 1 McIlroy A Quarter Century of Unix 2 Pike Notes on Programming in C 3 Mike Gancarz The UNIX Philosophy 4 Schlechter ist besser 5 Raymond The Art of Unix Programming 6 Rolle des Betriebssystems 6 1 Alles ist eine Datei 6 2 Client Server Modell 7 Zitate 8 Siehe auch 9 Weblinks 10 EinzelnachweiseMcIlroy A Quarter Century of Unix BearbeitenDouglas McIlroy der Erfinder der Unixpipes fasste die Philosophie folgendermassen zusammen Schreibe Computerprogramme so dass sie nur eine Aufgabe erledigen und diese gut machen Schreibe Programme so dass sie zusammenarbeiten Schreibe Programme so dass sie Textstrome verarbeiten denn das ist eine universelle Schnittstelle Gewohnlich wird das verkurzt zu Mache nur eine Sache und mache sie gut Von diesen drei Lehrsatzen sind vor allem die ersten beiden nicht auf Unix beschrankt jedoch betonen Unix Programmierer alle drei Lehrsatze starker als andere Programmierer Pike Notes on Programming in C BearbeitenRob Pike schlagt die folgenden Regeln als Grundsatze des Programmierens vor 1 jedoch kann man sie genauso als Kerngedanken der Unix Philosophie sehen Regel 1 Man kann nicht sagen welcher Programmteil den Hauptteil der Leistung fressen wird Da Engpasse oft an uberraschenden Stellen auftauchen soll man nichts zur Erhohung der Geschwindigkeit einbauen bevor man gezeigt hat wo der Engpass sitzt Regel 2 Miss die Programmlaufzeit Feile erst an der Geschwindigkeit wenn du sie gemessen hast und selbst dann erst wenn der betrachtete Teil einen dominierenden Anteil der Rechenzeit frisst Regel 3 Hochgezuchtete Algorithmen sind langsam wenn die Eingabedatenmenge n displaystyle n nbsp siehe Komplexitatstheorie klein ist und das ist der Normalfall Hochgezuchtete Algorithmen haben grosse Fixkosten Solange man nicht weiss dass n displaystyle n nbsp haufig grosse Werte annehmen wird sollte man auf hochgezuchtete Algorithmen verzichten Und selbst wenn n displaystyle n nbsp gross wird gilt zuerst Regel 2 Regel 4 Hochgezuchtete Algorithmen sind fehleranfalliger als einfache und viel schwieriger zu implementieren Benutze sowohl einfache Algorithmen als auch einfache Datenstrukturen Regel 5 Daten sind wichtiger Wenn du die richtigen Datenstrukturen gewahlt hast und alles gut gestaltet ist werden sich die Algorithmen fast immer von alleine ergeben Datenstrukturen sind das zentrale Thema des Programmierens nicht Algorithmen Regel 6 Es gibt keine Regel 6 Die Regeln 1 und 2 wiederholen den beruhmten Grundsatz von Donald E Knuth Zu fruhe Optimierung ist die Wurzel allen Ubels Ken Thompson formulierte die Regeln 3 und 4 als Verwende im Zweifelsfall rohe Gewalt diese Regeln sind Beispiele fur das KISS Prinzip Regel 5 stammt von Fred Brooks der sie im Buch Vom Mythos des Mann Monats erwahnt hat und wird oft als Schreibe dummen Code der schlaue Daten verwendet formuliert Die Regel 6 ist dem Sketch von Bruces aus Monty Python s Flying Circus Folge 22 entlehnt Mike Gancarz The UNIX Philosophy Bearbeiten1994 veroffentlichte Mike Gancarz er gehorte zu den Entwicklern des X Window Systems seine Erfahrungen mit Unix in Form des Buches The Unix Philosophy das sich auch auf Anekdoten aus Diskussionen mit Kollegen stutzt sowie mit Leuten aus anderen Gebieten die selbst auf Unix angewiesen waren Darin werden neun Hauptforderungen genannt Klein ist schon Gestalte jedes Programm so dass es eine Aufgabe gut erledigt Erzeuge so bald wie moglich einen funktionierenden Prototypen Bevorzuge Portierbarkeit vor Effizienz Speichere Daten in einfachen Textdateien Nutze die Hebelwirkung der Software zu deinem Vorteil Verwende Shellskripte um die Hebelwirkung und die Portierbarkeit zu verbessern Vermeide Benutzeroberflachen die den Benutzer fesseln Mache jedes Programm zu einem Filter Die folgenden zehn weniger strengen Forderungen werden nicht allgemein als Teil der Unixphilosophie akzeptiert und fuhrten zum Teil auch zu heftigen Debatten beispielsweise ob ein monolithischer Kernel oder ein Mikrokernel bevorzugt werden solle Lasse den Benutzer die Umgebung nach seinen Bedurfnissen festlegen Mache Betriebssystemkerne klein und leichtgewichtig Schreib klein und halte Befehlsnamen kurz Verschone Baume Schweigen ist Gold Denke parallel Die Summe der Teile ist mehr als das Ganze Suche die 90 10 Losung Schlechter ist besser Denke hierarchisch Schlechter ist besser BearbeitenRichard P Gabriel behauptet ein grundlegender Vorteil von Unix komme von einer Designphilosophie die er als schlechter ist besser bezeichnet Nach dieser Philosophie ist die Einfachheit sowohl der Benutzerschnittstelle als auch der Umsetzung im Programm viel wichtiger als jede andere Eigenschaft des Systems inklusive Eigenschaften wie Fehlerfreiheit Konsistenz und Vollstandigkeit Gabriel argumentiert dass diese Vorgehensweise grundlegende Vorteile bei der Weiterentwicklung der Software biete allerdings zweifelt er auch an der Qualitat der Programme bei so mancher Umsetzung dieser Vorgehensweise Beispielsweise besassen die ersten Unixsysteme einen rein monolithischen Kernel Benutzerprozesse die Kernelfunktionsaufrufe durchfuhrten verwendeten fur diese den Userstack Wenn nun ein Signal an einen Prozess geschickt werden sollte wahrend dieser durch einen langer andauernden Kernelfunktionsaufruf blockiert war konnte der Signalhandler nicht ausgefuhrt werden denn es befanden sich moglicherweise kritische Daten fur den Kernel auf dem Stack Was sollte getan werden Eine Moglichkeit ware mit dem Signal zu warten bis der Kernelaufruf beendet ist das kann jedoch sehr lange dauern manchmal zu lange Eine weitere Moglichkeit ware den Kernelaufruf unter der Voraussetzung dass beim Signalhandler alles glattlauft zwischenzuspeichern um ihn spater fortsetzen zu konnen In solchen Fallen bevorzugten Ken Thompson und Dennis Ritchie Einfachheit vor Perfektion Wenn ein solcher Fall eintritt beendet der Kernel den Funktionsaufruf mit einer Fehlermeldung die besagt dass der Funktionsaufruf nicht ausgefuhrt wurde dies ist der Interrupted System Call mit der Fehlernummer 4 EINTR diese Unterbrechung kam naturlich vom Signalhandler Das kommt nur bei einer Handvoll lang andauernder Systemaufrufe wie z B read write open select usw vor Diese Vorgehensweise hat den Vorteil dass sie das I O System wesentlich einfacher macht da Sonderfalle nicht berucksichtigt werden mussen Die meisten Programme stort das nicht weil sie sowieso keine Signale verwenden bzw sich bei einem SIGINT beenden Die paar wenigen Programme die Signale verwenden konnen auf dieses Problem reagieren indem sie die Kernelfunktionsaufrufe mit einem Wrapper umgeben der bei einem aufgetretenen EINTR den Aufruf gleich noch einmal wiederholt Damit ist das Problem auf eine einfache Art gelost Aus diesen Grunden war Unix in seiner Anfangszeit das Betriebssystem das am haufigsten absturzte mehrmals pro Tag allerdings auch den schnellsten Neustart hatte Wegen seiner Einfachheit wurde innerhalb von zehn Jahren aus Unix das stabilste System das mit fehlerfreien Laufzeiten im Bereich von Monaten und Jahren statt Stunden aufwarten konnte Raymond The Art of Unix Programming BearbeitenEric S Raymond fasst in seinem Buch The Art of Unix Programming die Unixphilosophie mit der allseits bekannten Ingenieursweisheit Keep it Simple Stupid KISS zusammen Anschliessend beschreibt er wie diese Grundhaltung seiner Meinung nach in der Praxis der Unixkultur umgesetzt wird wobei in der Praxis naturlich gelegentlich sehr deutlich gegen diese Regeln verstossen wird Regel der Modularitat 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 verknupft werden konnen Regel der Trennung Trenne den Grundgedanken von der Umsetzung trenne die Schnittstellen von der Verarbeitungslogik Regel der Einfachheit Entwirf mit dem Ziel der Einfachheit fuge Komplexitat nur hinzu wenn es unbedingt sein muss Regel der Sparsamkeit Schreibe nur dann ein grosses Programm wenn sich klar zeigen lasst 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 Uberraschung Mache beim Entwurf der Schnittstellen immer das Nachstliegende welches fur die wenigsten Uberraschungen beim Benutzer sorgt Regel der Stille Wenn ein Programm nichts Uberraschendes zu sagen hat soll es schweigen Regel des Reparierens Wenn das Programm scheitert soll es das lautstark und so fruh wie moglich 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 moglich Regel der Optimierung Erstelle Prototypen bevor du dich an den Feinschliff machst Mache es lauffahig bevor du es optimierst Regel der Vielseitigkeit Misstraue allen Anspruchen auf den einzig wahren Weg Regel der Erweiterbarkeit Entwirf fur die Zukunft denn sie wird schneller kommen als du denkst Viele dieser Normen werden auch ausserhalb der Unix Gemeinde anerkannt 2 wenn sie nicht zuerst bei Unix verwendet wurden wurden sie bald ubernommen Trotzdem betrachten Unix Experten eine Kombination dieser Regeln als die Grundlage des Unix Stils Rolle des Betriebssystems BearbeitenObige Aussagen beschreiben welche Eigenschaften Programme haben die Unix zu dem machen was es ist Ein weiterer Aspekt der Unix Philosophie betrifft jedoch auch das Betriebssystem selbst Damit Programme moglichst einfach klar und modular gehalten werden konnen damit sie gut zusammenarbeiten konnen und damit sie gut portierbar sein konnen muss das Betriebssystem die entsprechenden Voraussetzungen in Form von klaren Schnittstellen und hoher Abstraktion schaffen In der Praxis Alles ist eine Datei Bearbeiten Hauptartikel Everything is a file Der Zugriff sowohl auf lokale Laufwerke wie auch Netzlaufwerke erfolgt uber dieselbe Verzeichnisstruktur es gibt nicht verschiedene Laufwerke sondern alles sind Verzeichnisse und Dateien in derselben Baumstruktur Virtuelle Laufwerke konnen ebenfalls problemlos realisiert werden denn sie erscheinen ebenfalls nur als Verzeichnis Jede Image Datei an jedem Ort kann durch mounten in den Verzeichnisbaum an jeder Stelle eingebunden werden Auch der Zugriff auf Gerate erfolgt uber das Dateisystem Einem Geratetreiber wird eine Geratedatei im Verzeichnis dev zugeordnet durch Lesen und Schreiben dieser Datei kann ein Programm mit dem Geratetreiber kommunizieren Auf Kernel Daten kann ebenfalls uber die Verzeichnisstruktur zugegriffen werden und zwar uber das Verzeichnis proc Client Server Modell Bearbeiten Hauptartikel Client Server Modell Kommunikation erfolgt grundsatzlich uber Netzwerk Verbindungen Auch die interne Kommunikation zwischen beispielsweise Client Programmen und Daemons wird uber Netzwerkschnittstellen gefuhrt so dass die Programmierung einheitlich ist und die Programme auch wahlweise uber das Netzwerk verwendet werden konnen Aus diesem Grund gibt es bei Unix nicht fur jedes Anwendungsgebiet eine spezialisierte Programmierschnittstelle sondern auch vergleichsweise exotische Anwendungen werden auf Dateien oder Netzwerkverbindungen abgebildet Zitate Bearbeiten Unix ist einfach Es erfordert lediglich ein Genie um seine Einfachheit zu verstehen Dennis Ritchie Unix wurde nicht entwickelt um seine Benutzer daran zu hindern dumme Dinge zu tun denn das wurde diese auch davon abhalten schlaue Dinge zu tun Doug Gwyn Unix sagt niemals bitte Rob Pike Siehe auch BearbeitenPlan 9 Betriebssystem mit konsequenter Weiterentwicklung des Unix Prinzips alles ist eine Datei Pipe Informatik Unix Kommandos MenschenlesbarkeitWeblinks BearbeitenBrian Kernighan Rob Pike The Unix Programming Environment PDF 1984 Rob Pike Notes on Programming in C 21 September 1989 Peter H Salus A Quarter Century of Unix Addison Wesley 1994 ISBN 0 201 54777 5 Philosophy In Eric S Raymond The Art of Unix Programming Addison Wesley 2003 ISBN 0 13 142901 9 Mike Gancarz The UNIX Philosophy Digital Press 1995 M D Schroeder D D Clark J H Saltzer D H Wells Final Report of the Multics Kernel Design Project PDF 3 7 MB 1977 Die Unix Philosophie deutsche Zusammenfassung des Buches The UNIX Philosophy von Mike Gancarz Joel on Software Biculturalism The Unix Programming Environment Memento vom 6 Dezember 2012 im Webarchiv archive today gesammelte Zitate von Unix Programmierern und anderenEinzelnachweise Bearbeiten Notes on Programming in C Etwa Allen I Holub Enough Rope to Shoot Yourself in the Foot Rules for C and C Programming McGraw Hill 1995 Abgerufen von https de wikipedia org w index php title Unix Philosophie amp oldid 235801846 Raymond The Art of Unix Programming