Philosophie von Unix

Die Unix Philosophie ist eine Reihe kultureller Normen und philosophische Annäherungen an die sich entwickelnde Software, die auf der Erfahrung von Hauptentwicklern von Unix Betriebssystem gestützt ist.

McIlroy: Ein Viertel-Jahrhundert von Unix

Doug McIlroy, der Erfinder von Pfeifen von Unix und einer der Gründer der Tradition von Unix, hat die Philosophie wie folgt zusammengefasst:

Das wird gewöhnlich gekürzt, um Programme "zu schreiben, die eine Sache machen und es gut tun."

Eric Raymond

Eric S. Raymond, in seinem Buch Die Kunst der Unix-Programmierung, fasst die Philosophie von Unix zusammen, weil der weit verwendete KUSS-Grundsatz "Es Einfach, Dumm hält." Er stellt auch eine Reihe von Designregeln zur Verfügung:

  • Regel der Modularität: Schreiben Sie einfache durch saubere Schnittstellen verbundene Teile.
  • Regel der Klarheit: Klarheit ist besser als Klugheit.
  • Regel der Zusammensetzung: Mit anderen Programmen zu verbindende Designprogramme.
  • Regel der Trennung: Getrennte Politik vom Mechanismus; trennen Sie Schnittstellen von Motoren.
  • Regel der Einfachheit: Design für die Einfachheit; fügen Sie Kompliziertheit hinzu nur dort, wo Sie müssen.
  • Regel des Geizes: Schreiben Sie ein großes Programm nur, wenn es durch die Demonstration klar ist, dass nichts anderes tun wird.
  • Regel der Durchsichtigkeit: Design für die Sichtbarkeit, um Inspektion und das leichtere Beseitigen zu machen.
  • Regel der Robustheit: Robustheit ist das Kind der Durchsichtigkeit und Einfachheit.
  • Regel der Darstellung: Falte-Kenntnisse in Daten so Programm-Logik können dumm und robust sein.
  • Regel von Kleinster Überraschung: Im Schnittstelle-Design, machen Sie immer die am wenigsten überraschende Sache.
  • Regel des Schweigens: Wenn ein Programm nichts hat überraschend, um zu sagen, sollte es nichts sagen.
  • Regel der Reparatur: Wenn Sie scheitern müssen, laut und so bald wie möglich zu scheitern.
  • Regel der Wirtschaft: Programmierer-Zeit ist teuer; erhalten Sie es in der Bevorzugung vor der Maschinenzeit.
  • Regel der Generation: Vermeiden Sie Handhacken; schreiben Sie Programme, um Programme zu schreiben, wenn Sie können.
  • Regel der Optimierung: Prototyp vor dem Polieren. Bekommen Sie es arbeitend, bevor Sie es optimieren.
  • Regel der Ungleichheit: Misstrauen Sie allen Ansprüchen auf "einen wahren Weg".
  • Regel der Dehnbarkeit: Das Design für die Zukunft, weil es hier eher sein wird als Sie, denkt.

Mike Gancarz: Die UNIX Philosophie

1994 hat sich Mike Gancarz (ein Mitglied der Mannschaft, die das X Fenstersystem entworfen hat), auf seine eigene Erfahrung mit Unix, sowie Diskussionen mit Mitprogrammierern und Leuten in anderen Feldern gestützt, die von Unix abgehangen haben, um Die UNIX Philosophie zu erzeugen, die es in 9 obersten Moralprinzipien summiert:

  1. Klein ist schön.
  2. Lassen Sie jedes Programm eine Sache gut machen.
  3. Bauen Sie einen Prototyp so bald wie möglich.
  4. Wählen Sie Beweglichkeit über die Leistungsfähigkeit.
  5. Lager-Daten in flachen Textdateien.
  6. Verwenden Sie Softwareeinfluss zu Ihrem Vorteil.
  7. Verwenden Sie Schale-Schriften, um Einfluss und Beweglichkeit zu vergrößern.
  8. Vermeiden Sie gefangene Benutzerschnittstellen.
  9. Machen Sie jedes Programm einen Filter.

Schlechter ist besser

Richard P. Gabriel schlägt vor, dass ein Schlüsselvorteil von Unix darin bestand, dass er eine Designphilosophie aufgenommen hat, die er "schlechter genannt hat, ist", besser, in der Einfachheit sowohl der Schnittstelle als auch der Durchführung wichtiger sind als irgendwelche anderen Attribute des Systemumfassens der Genauigkeit, Konsistenz und Vollständigkeit. Gabriel behauptet, dass dieser Designstil Schlüssel Entwicklungsvorteile hat, obwohl er die Qualität von einigen Ergebnissen infrage stellt.

Zum Beispiel in den frühen Tagen war Unix ein monolithischer Kern (was bedeutet, dass Benutzer in einer Prozession geht, nennt ausgeführtes Kernsystem alle auf dem Benutzerstapel). Wenn ein Signal an einen Prozess geliefert wurde, während es auf einer langfristigen Eingabe/Ausgabe im Kern, dann blockiert wurde was sollte getan werden? Sollte das Signal vielleicht seit langem verzögert werden (vielleicht unbestimmt), während die Eingabe/Ausgabe vollendete? Der Signaldressierer konnte nicht hingerichtet werden, als der Prozess in der Kernweise mit empfindlichen Kerndaten auf dem Stapel war. Sollte der Kern der Systemanruf zurücktreten, und ihn für das Wiederholungsspiel versorgen und später wiederanfangen, annehmend, dass der Signaldressierer erfolgreich vollendet?

In diesen Fällen haben Ken Thompson und Dennis Ritchie Einfachheit über die Vollkommenheit bevorzugt. Das Unix System würde gelegentlich früh von einem Systemanruf mit einem Fehler zurückkehren feststellend, dass es nichts - der "Unterbrochene Systemanruf" oder ein Fehler Nummer 4 in heutigen Systemen getan hatte. Natürlich war der Anruf abgebrochen worden, um den Signaldressierer zu nennen. Das konnte nur für eine Hand voll Langzeitsystemanrufe, d. h. usw. geschehen. Auf plus die Seite hat das das Eingabe/Ausgabe-System oft einfacher gemacht, zu entwickeln und zu verstehen. Die große Mehrheit von Benutzerprogrammen wurde nie betroffen, weil sie nicht behandelt oder Signale außer oder Kontroll-C erfahren haben und sofort sterben würden, wenn man erhoben wurde. Für die wenigen anderen Programm-Dinge wie Schalen oder Textaufbereiter, die auf den Job-Kontrollschlüssel antworten, konnten pressekleine Streifbänder zu Systemanrufen hinzugefügt werden, um den Anruf sofort neu zu verhandeln, wenn dieser Fehler erhoben wurde. So wurde das Problem auf eine einfache Weise behoben.

Notierungen

  • "Unix ist einfach. Es nimmt gerade ein Genie, um seine Einfachheit zu verstehen." - Dennis Ritchie
  • "Unix wurde nicht entworfen, um seine Benutzer zu verhindern, dumme Sachen zu machen, weil das sie auch verhindern würde, kluge Sachen zu machen." - Doug Gwyn
  • "Unix sagt nie 'bitte'." - Rauben Hecht Aus
  • "Unix ist benutzerfreundlich. Es ist gerade nicht gemischt, über die Benutzer es damit freundlich ist." - Steven King
  • "Diejenigen, die Unix nicht verstehen, werden verurteilt, ihn schlecht wiederzuerfinden." - Henry Spencer

Siehe auch

Referenzen

Links


Adolphe, der großartige Herzog Luxemburgs / Kwik-E-Mart
Impressum & Datenschutz