Unix-filosofia
Unix-filosofia on joukko ohjelmistokehityksen kulttuurisia normeja ja filosofisia lähestymistapoja, jotka perustuvat Unix - käyttöjärjestelmän johtavien kehittäjien kokemukseen .
McIlroy: Neljännes vuosisataa Unixia
Doug McIlroy , Unix-putkien keksijä ja yksi Unix-perinteen perustajista, tiivisti filosofian seuraavasti:
"Unix-filosofia sanoo:
Kirjoita
ohjelmia , jotka tekevät yhden asian ja tekevät sen hyvin.
Kirjoita ohjelmia, jotka toimivat yhdessä.
Kirjoita ohjelmia, jotka tukevat
tekstivirtoja, koska se on yleinen käyttöliittymä."
Yleensä nämä lausunnot liittyvät yhteen asiaan: "Tee yksi asia, mutta tee se hyvin."
Näistä kolmesta periaatteesta vain kolmas koskee Unixia, vaikka Unix-kehittäjät korostavat muita todennäköisemmin kaikkia kolmea periaatetta.
Mike Guntzarz: Unix-filosofia
Vuonna 1994 Mike Gancarz yhdisti kokemuksensa Unixista (hän on X Window System -kehitystiimin jäsen ) kommentteihinsa keskusteluista, joita hän kävi muiden ohjelmoijien ja muiden alojen ihmisten kanssa, riippuen Unixista tavalla tai toisella, luodakseen Unix-filosofia , joka tiivistyy yhdeksään perusperiaatteeseen:
- Kauniisti pieni.
- Anna jokaisen ohjelman tehdä yksi asia, mutta hyvin.
- Rakenna prototyyppiohjelma mahdollisimman varhain.
- Suosi siirrettävyyttä tehokkuuden sijaan.
- Tallenna tiedot pelkkää tekstiä oleviin tiedostoihin.
- Hyödynnä olemassa olevia ohjelmistoratkaisuja.
- Käytä komentosarjakieliä vähentääksesi työvoimakustannuksia ja parantaaksesi siirrettävyyttä.
- Vältä käyttöliittymiä, jotka rajoittavat käyttäjän kykyä olla vuorovaikutuksessa järjestelmän kanssa.
- Tee jokaisesta ohjelmasta "suodatin".
Vähemmän tärkeitä 10 periaatetta ei ole yleisesti hyväksytty osaksi Unix-filosofiaa, ja joissakin tapauksissa niistä on käyty kiivasta keskustelua ( monoliittinen ydin vs. mikroydin ):
- Anna käyttäjän muokata ympäristöä.
- Pidä käyttöjärjestelmän ytimet pieninä ja kevyinä.
- Käytä pieniä kirjaimia ja pidä otsikot lyhyinä.
- Älä tallenna ohjelmatekstejä tulosteena ("Pelasta puut!").
- Älä kerro käyttäjälle itsestäänselvyyksiä ("Hiljaisuus on kultaa").
- Jaa monimutkaiset tehtävät yksinkertaisiin rinnakkaisiin tehtäviin ("Think Parallel").
- Kokonaisuuden yhdistetyt osat ovat enemmän kuin pelkkä summa.
- Etsitkö 90 prosentin ratkaisua .
- Jos on mahdollista olla lisäämättä uusia toimintoja, älä lisää niitä (" Mitä huonompi, sen parempi ").
- Ajattele hierarkkisesti.
Raymond: Unix-ohjelmoinnin taito
Eric Raymond ( eng. Eric S. Raymond ), kirjassa The Art of Unix Programming, tiivisti Unixin filosofian yleisesti käytetyksi suunnittelufilosofiaksi "Pidä se yksinkertainen, typerys" ( KISS-periaate ). Sitten hän kuvaili, kuinka tämä yleinen filosofia soveltuu Unix-kulttuurinormeina. Tämä huolimatta siitä, että seuraavasta nykyisestä Unix-filosofiasta on helppo löytää useita rikkomuksia:
- Modulaarisuuden sääntö: Kirjoita yksinkertaisia osia, jotka on yhdistetty ymmärrettävillä liitännöillä.
- Selkeyden sääntö: Selkeys on parempi kuin älykkyys.
- Koostumussääntö: Suunnittele ohjelmat niin, että ne voidaan yhdistää muihin ohjelmiin.
- Erotussääntö: Erottele säännöt ( politiikka ) mekanismista ( mekanismista ); erota käyttöliittymä moottorista .
- Yksinkertaisuussääntö: Pyri yksinkertaisuuteen; lisää monimutkaisuutta vain tarvittaessa.
- Vähäisyyden sääntö: Kirjoita suuri ohjelma vain silloin, kun muut keinot eivät auta saavuttamaan haluttua tehtävää.
- Avoimuussääntö: Kehitä läpinäkyviä ohjelmia helpottaaksesi myöhempää tarkistusta ja virheenkorjausta.
- Luotettavuussääntö: Luotettavuus on läpinäkyvyyden ja yksinkertaisuuden lapsi.
- Esityssääntö: Tallenna tieto tietoihin niin, että ohjelman logiikka on tyhmää ja luotettavaa.
- Vähimmän yllätyksen sääntö : Kun suunnittelet käyttöliittymää, saa aina tutut käyttöliittymäelementit suorittamaan tuttuja toimintoja.
- Hiljaisuussääntö: Jos ohjelmalla ei ole mitään sanottavaa, on parempi olla hiljaa.
- Palautussääntö: Jos ohjelman täytyy kaatua, tee se äänekkäästi ja mahdollisimman nopeasti.
- Taloussääntö: Ohjelmoijan aika on arvokasta; lyhentää sitä käyttämällä koneen aikaa.
- Luomissääntö: Vältä manuaalista koodausta; aina kun mahdollista, kirjoita ohjelmia, jotka kirjoittavat ohjelmia.
- Optimointisääntö: Ensin - prototyyppi, sitten - "kampaus". Saavuta vakaa toiminta, vasta sitten optimointi.
- Monimuotoisuuden sääntö: Hylkää kaikki "ainoa oikean tavan" väitteet.
- Laajennettavuussääntö: Suunnittele tulevaisuutta varten. Se tulee nopeammin kuin uskotkaan.
Useimmat näistä sopimuksista hyväksytään Unix-yhteisön ulkopuolella – vaikka niitä ei olisikaan silloin, kun niitä sovellettiin ensimmäisen kerran Unixissa, niistä on sittemmin tullut sellaisia. Lisäksi monet säännöt eivät ole ainutlaatuisia tai alkuperäisiä Unix-yhteisölle. Unix-ohjelmoinnin kannattajat kuitenkin yleensä hyväksyvät näiden ideoiden yhdistelmän Unix-tyylin perustaksi.
Lainaukset
- Unix on yksinkertainen. Mutta sinun on oltava nero ymmärtääksesi sen yksinkertaisuuden " - Dennis Ritchie .
- " Unixia ei ole suunniteltu suojelemaan käyttäjiään typeriltä asioilta, koska se suojelisi heitä myös älykkäiltä asioilta " - Doug Gwin .
- " Unix ei koskaan sano kiitos" - Rob Pike .
Kritiikki
UNIX-HATERS-käsikirja
UNIX-filosofiaa kritisoitiin UNIX-HATERS Handbookissa , joka julkaistiin 1990-luvun alussa.
- Kirjan toimittajien mukaan Unix-lähestymistapa johtaa hätiköityihin päätöksiin, jotka tehdään ilman kunnollista arkkitehtuuria, minkä jälkeen nämä päätökset kanonisoidaan (saavutetaan), eli ne julistetaan ikuisiksi klassikoiksi. Esimerkiksi heidän mielestään tällainen ratkaisu on lukitustiedostot - väliaikaiset tiedostot ilman sisältöä, jotka on luotu merkkinä siitä, että jokin ohjelma on suoritusvaiheessa.
- NFS :ää on kritisoitu sen luonnostaan puutteellisesta lähestymistavasta arkkitehtuuriin - yrityksestä luoda tilaton tiedostopalvelin, vaikka se on pohjimmiltaan mahdotonta. Kun joidenkin tärkeiden asioiden tukemisen mahdottomuus kävi selväksi, NFS:ään ruuvattiin "sauva" nimeltä lockd process.
Mutta samaan aikaan tässä kirjassa kritisoidut lähestymistavat, joka alkoi *NIX:stä, ovat hyvin perusteltuja Microsoft Windowsissa ja Apple Mac OS :ssä .
Muistiinpanot
Linkit