Unix-filosofin är ett sätt att göra saker, kopplat till operativsystemet Unix. Framförallt ligger den som grund till själva operativsystemet och dess grundläggande program och utvecklingsmiljö. Som ett paradigm för programvaruutveckling kan den tillämpas också i andra miljöer.

Ken Thompson och Dennis Ritchie, stora utvecklare av operativsystemet Unix.

Operativsystemet Unix följer inte ett särskilt sätt att göra saker på, men det har beskrivits som en minimalistisk och modulär princip, som McIlroy har beskrivit på följande sätt[1][2][3][4]:

  1. Få ett program att utföra en uppgift och göra det bra. För en ny uppgift, skapa ett nytt program istället för att komplicera gamla program med nya funktioner.
  2. Räkna med att utdata från programmet utgör indata till ett annat, ännu okänt, program. Blanda inte ihop utskriften med onödig information. Undvik strikt kolumnindelade eller binära indata. Insistera inte på interaktiv inmatning.
  3. Konstruera program, även operativsystem, för att provas tidigt, helst inom några veckor. Tveka inte att slänga klumpiga delar och konstruera om dem.
  4. Använd verktyg snarare än oerfarna medhjälpare för att förenkla programmeringen, även om du behöver ta en omväg för att konstruera verktygen och räkna med att slänga några av dem när de inte längre behövs.

McIlroy sammanfattade senare detta i Peter H. Salus bok A Quarter Century of Unix[5]:

Skriv program som gör en sak och gör det bra. Skriv program som arbetar tillsammans. Skriv program för att hantera textflöden eftersom det är ett universellt gränssnitt.[5]

Brian Kernighan bidrog till populariseringen av filosofin genom att utveckla flera specialiserade hjälpspråk: ratfor, eqn, awk och pic[6].

Däremot teknisk förändring: under utvecklingen av operativsystemet behandlades program som vetenskaplig och matematisk kunskap i motsats till kommersiella produkter.

Eric Raymond öppnar ytterligare filosofin genom att lista 17 vägledande rättesnören inom The Art of Unix Programming i underavdelningen Grunderna för Unix-filosofin[7].

Källor redigera

  1. ^ homepage.cs.uri.edu. ”Basics of the Unix Philosophy” (på (engelska)). Arkiverad från originalet den 22 september 2019. https://web.archive.org/web/20190922110201/https://homepage.cs.uri.edu/~thenry/resources/unix_art/ch01s06.html. Läst 21 november 2021. 
  2. ^ ”The Unix Philosophy: A Brief Introduction” (på (engelska)). The Unix Philosophy: A Brief Introduction. http://www.linfo.org/unix_philosophy.html. Läst 21 november 2021. 
  3. ^ ”UNIX Time-Sharing System: Forward” (på (engelska)). danluu.com. https://danluu.com/mcilroy-unix/. Läst 21 november 2021. 
  4. ^ ”The Bell System Technical Journal” (på (engelska)). PDF. emulator.pdp-11.org.ru. 1 augusti 1978. http://emulator.pdp-11.org.ru/misc/1978.07_-_Bell_System_Technical_Journal.pdf. Läst 21 november 2021. 
  5. ^ [a b] Raymond, Eric S. (2003). ”Onlineversion av boken” (på (engelska)). The Art of Unix Programming. Addison-Wesley. ISBN 0-13-142901-9. 
  6. ^ McIlroy. ”A Research UNIX Reader: Annotated Excerpts from the Programmer’s Manual, 1971-1986” (på (engelska)). PDF. cs.dartmouth.edu. https://www.cs.dartmouth.edu/~doug/reader.pdf. Läst 21 november 2021. 
  7. ^ Raymond, Eric S. (2003). ”Onlineversion av boken” (på (engelska)). The Art of Unix Programming. "I. Context: 1. Philosophy: Basics of the Unix Philosophy". Addison-Wesley. sid. 35–36. ISBN 0-13-142901-9.. ”Looking at the whole, we can abstract the following ideas:”