Unix-filosofia
Unix-filosofia on tapa tehdä asioita, joka liitetään Unix-käyttöjärjestelmään.
Pääpiirteet
Unix-käyttöjärjestelmä ei noudata yhtä tiettyä tapaa tehdä asioita, mutta sitä on kuvailtu minimalistiseksi ja modulaariseksi periaatteeksi, jota Malcolm Douglas McIlroy on kuvannut seuraavasti:[1][2][3][4][5]
- Tee yksi ohjelma suorittamaan yksi asia hyvin. Uutta asiaa varten tee uusi ohjelma sen sijaan että monimutkaistat vanhaa ohjelmaa uusilla ominaisuuksilla.
- Odota ohjelman tulosteen olevan syöte toiselle vielä tuntemattomalle ohjelmalle. Älä sotke tulostetta tarpeettomalla tiedolla. Vältä tiukasti sarakkeistettua tai binäärimuotoista tulostetta. Älä odota interaktiivista syötettä.
- Suunnittele ohjelmat, jopa käyttöjärjestelmät, kokeiltavaksi varhain, ideaalisesti viikoissa. Älä epäröi heittää pois kömpelöitä osia ja toteuttaa ne uudelleen.
- Käytä työkaluja mieluummin kuin kokemattomia apulaisia ohjelmointityön helpottamisessa, edes jos tarvitset kiertotietä ja odotat heittävästi pois osan niistä lopuksi.
McIlroy on myöhemmin tiivistänyt asiaa Peter H. Salusin kirjassa A Quarter Century of Unix:[6]
- Kirjoita ohjelmia jotka tekevät yhden asian ja tekevät sen hyvin. Kirjoita ohjelmia toimimaan yhdessä. Kirjoita ohjelma tukemaan tekstivirtaa koska se on universaali rajapinta.
Brian Kernighan vaikutti filosofian popularisointiin kehittämällä useita erikoistuneita apukieliä: ratfor, eqn, awk ja pic.[7]
Tähän kontrastina on tekniikan muuttuminen: käyttöjärjestelmän kehitysaikana ohjelmia kohdeltiin kuten tieteellistä ja matemaattista tietoa toisin kuin kaupallisia tuotteita.[2]
Eric Raymond avaa filosofiaa vielä lisää luetteloimalla 17 viitteellistä ohjenuoraa kirjan The Art of Unix Programming alaluvussa Basics of the Unix Philosophy.[8]
Kritiikki
The UNIX-haters handbook
Unix-filosofiaa kritisoitiin 1990-luvun alussa julkaistussa The UNIX-haters handbook -teoksessa (suom. Unix-vihaajien käsikirja)[9]:
- Kirjan toimittajien mukaan Unix-lähestymistapa johtaa ratkaisuihin, jotka tehdään hätäisesti ilman kunnollista arkkitehtuuriajattelua, ja sitten nämä ratkaisut kanonisoidaan eli julistetaan ajattomiksi 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.
- X Window System ikkunointijärjestelmää on arvosteltu ohjelmistoalustan erottamisesta käytännöstä, mikä on johtanut UNIX-standardin puuttumiseen käyttöliittymäkäytäntöjä varten ja suuriin vaikeuksiin graafista käyttöliittymää hyödyntävien sovellusten kehittämisessä.
- NFS:ää on kritisoitu sen luonnostaan virheellisestä lähestymistavasta arkkitehtuuriin - pyrkimyksestä luoda tilaton tiedostopalvelin, vaikka se on pohjimmiltaan mahdotonta. Kun kävi ilmeiseksi, että joitakin tärkeitä asioita ei voitu tukea, NFS:ään liitettiin ”kainalosauva” nimeltä lockd-prosessi.
Samaan aikaan tässä kirjassa kritisoidut lähestymistavat, jotka aloitettiin Unixista, ovat vakiintuneet sujuvasti Microsoft Windowsissa ja Applen Mac OS:ssä.
Unix-työkaluohjelmien ylityöstäminen
On kiistaa siitä, missä määrin Free Software Foundationin GNU-projektin ohjelmat noudattavat Unix-filosofian periaatteita. Monet sanoisivat ei, koska GNU-työkalut ovat suurempia ja sisältävät enemmän ominaisuuksia kuin Unix-vastineensa. Vuonna 1983 Rob Pike kirjoitti artikkelin, jossa hän kritisoi BSD-järjestelmissä toteutettujen Unix-perusominaisuuksien laajentamista, kuten cat-komennon tapauksessa.[10][11]
Käyttöliittymä
Datamation-lehdessä vuonna 1981 julkaistussa artikkelissa ”The truth about Unix: The user interface is horrid”[12] (Totuus Unixista: käyttöliittymä on kauhea) Don Norman kritisoi Unixin suunnittelufilosofiaa siitä, ettei se ollut kiinnostunut käyttöliittymästä[12]. Norman kirjoitti asiasta kognitiotieteen taustansa ja silloisen kognitiivisen suunnittelun näkökulmasta[13]. Hän keskittyi siihen, miten loppukäyttäjät ymmärtävät ja muodostavat tai eivät muodosta henkilökohtaista kognitiivista mallia järjestelmistä[13]. Unixin tapauksessa väärinymmärryksen seurauksena virheet, kuten tunnin työajan menettäminen ovat aivan liian helppoja[12][13].
Lähteet
- Basics of the Unix Philosophy homepage.cs.uri.edu. Arkistoitu 22.9.2019. Viitattu 8.9.2019. (englanniksi)
- The Unix Philosophy: A Brief Introduction linfo.org. Viitattu 8.9.2019. (englanniksi)
- UNIX Time-Sharing System: Forward danluu.com. Viitattu 8.9.2019. (englanniksi)
- McIlroy, Doug & Pinson, E. N. Pinson & Tague, B. A.: Unix Time-Sharing System Forward. The Bell System Technical Journal, 1978, 6. vsk, s. 1902–1903. Bell Laboratories. Teoksen verkkoversio (PDF). Viitattu 18.1.2022. (englanniksi)
- The Bell System Technical Journal (PDF) emulator.pdp-11.org.ru. elokuu 1978. Viitattu 8.9.2019. (englanniksi)
- Raymond, Eric S.: The Art of Unix Programming. Addison-Wesley, 2003. ISBN 0-13-142901-9. Teoksen verkkoversio (viitattu 17.1.2022). (englanniksi)
- M. Douglas McIlroy: A Research UNIX Reader: Annotated Excerpts from the Programmer’s Manual, 1971-1986 (PDF) cs.dartmouth.edu. Viitattu 6.9.2019. (englanniksi)
- Raymond, Eric S.: ”I. Context: 1. Philosophy: Basics of the Unix Philosophy”, The Art of Unix Programming, s. 35–36. sitaatti, s. 35: ”Looking at the whole, we can abstract the following ideas:”. Addison-Wesley, 2003. ISBN 0-13-142901-9. Teoksen verkkoversio (viitattu 17.1.2022). (englanniksi)
- Garfinkel, Simson & Strassmann, Steven & Weise, Daniel & Klossner, John: The UNIX-haters handbook: The Best of UNIX-Haters On-line Mailing Reveals Why UNIX Must Die!. (Unix-vihaajien käsikirja). San Mateo: IDG Books Worldwide, 1994. ISBN 1-56884-203-1. Teoksen verkkoversio (PDF) (viitattu 17.1.2022). (englanniksi)
- Pike, Rob: UNIX Style, or cat -v Considered Harmful USENIX Summer Conference Proceedings. 1983. Gaul, Andrew. Viitattu 17.1.2022. (englanniksi)
- Pike, Rob & Hill, Murray: UNIX Style, or cat -v Considered Harmful USENIX Summer Conference Proceedings. 1983. Encyclopedia of things considered harmful. Viitattu 18.1.2022. (englanniksi)
- Norman, Don: The truth about Unix: The user interface is horrid. Datamation, 1981, 27. vsk, nro 12. Cahners Publishing Company. Artikkelin verkkoversio (PDF). Viitattu 17.1.2022. (englanniksi)
- Condon, Joseph H..: Interview with Joseph H. Condon An Oral History of Unix. Princeton University, History of Science. Viitattu 17.1.2022. (englanniksi)