Unix-filosofia
Unix-filosofia on tapa tehdä asioita, joka liitetään Unix-käyttöjärjestelmään.
Pääpiirteet
[muokkaa | muokkaa wikitekstiä]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
[muokkaa | muokkaa wikitekstiä]The UNIX-haters handbook
[muokkaa | muokkaa wikitekstiä]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
[muokkaa | muokkaa wikitekstiä]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ä
[muokkaa | muokkaa wikitekstiä]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].
Tehottomat ohjelmat
[muokkaa | muokkaa wikitekstiä]Vuonna 2020 On podcast On the Metal -puheohjelmassa Jonathan Blow kritisoi Unix-filosofiaa vanhentuneeksi[14]. Hän väitti, että modulaaristen työkalujen sitominen toisiinsa johtaa hyvin tehottomiin ohjelmiin[14]. Hänen mukaansa Unix-filosofia kärsii samankaltaisista ongelmista kuin mikropalvelut: ilman kokonaisvaltaista valvontaa suuret arkkitehtuurit päätyvät hyvin tehottomiin lopputuloksiin[14].
Lähteet
[muokkaa | muokkaa wikitekstiä]- ↑ Basics of the Unix Philosophy homepage.cs.uri.edu. Arkistoitu 22.9.2019. Viitattu 8.9.2019. (englanniksi)
- ↑ a b The Unix Philosophy: A Brief Introduction linfo.org. Arkistoitu 13.1.2013. Viitattu 8.9.2019. (englanniksi)
- ↑ UNIX Time-Sharing System: Forward danluu.com. Arkistoitu 30.9.2017. 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. Arkistoitu 27.2.2017. Viitattu 8.9.2019. (englanniksi)
- ↑ Raymond, Eric S.: The Art of Unix Programming. (arkistoitu 20.12.2012) 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. Arkistoitu 19.9.2018. 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:”, arkistoitu 20.12.2012) 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), Finna.fi-tietokanta) 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. Arkistoitu 15.7.2012. 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. Arkistoitu 15.12.2018. Viitattu 18.1.2022. (englanniksi)
- ↑ a b c Norman, Don: The truth about Unix: The user interface is horrid. (arkistoitu 16.4.2014) Datamation, 1981, 27. vsk, nro 12. Cahners Publishing Company. Artikkelin verkkoversio. (PDF) Viitattu 17.1.2022. (englanniksi)
- ↑ a b c Condon, Joseph H..: Interview with Joseph H. Condon An Oral History of Unix. Princeton University, History of Science. Arkistoitu 15.10.2003. Viitattu 17.1.2022. (englanniksi)
- ↑ a b c Cantrill, Bryan & Frazelle, Jess & Tuck, Steve & Blow, Jonathan: On the Metal: Jonathan Blow (podcastin lähteet ja pöytäkirja PDF-tiedostoissa tekstimuodossa) On the Metal. 27.1.2020. Oxide. Arkistoitu 2.10.2022. Viitattu 25.11.2023. (englanniksi)
Kirjallisuutta
[muokkaa | muokkaa wikitekstiä]- Schroeder, M. D.; Clark, D. D.; Saltzer, J. H.; Wells, D. H: Final Report of the Multics Kernel Design Project. Cambridge: Massachusetts Institute of Technology, 1977. Finna:vaari.371086 (englanniksi)
- Kernighan, Brian W. & Pike, Rob: The UNIX programming environment. Prentice-Hall, 1984. ISBN 0-13-937681-X Finna:aalto.99146904406526 (englanniksi)
- Salus, Peter H.: A Quarter Century of Unix. Addison-Wesley, 1994. ISBN 0-201-54777-5 Libris-tietokanta. (englanniksi)
- Gancarz, Mike: The Unix Philosophy. Digital Press, 1995. ISBN 1-55558-123-4 Finna:vaari.2683289 (englanniksi)
- Gancarz, Mike: Linux and the Unix philosophy. Digital Press, 2003. ISBN 9781555582739 Finna:jamk.993722623906251 (englanniksi)
- Raymond, Eric Steven: The Art of Unix Programming. Addison-Wesley, 2004. ISBN 0131429019 Libris-tietokanta. (englanniksi)
Aiheesta muualla
[muokkaa | muokkaa wikitekstiä]- Schnalke, Markus: Why the Unix Philosophy still matters (PDF) marmaro.de. 2010. Arkistoitu 10.1.2024. Viitattu 27.3.2024. (englanniksi)
- Blair, Gordon S.; Malone, Jon R.; Mariani, John A.: A Critique of UNIX. Software: Practice and Experience, 1985, 15. vsk, nro 12, s. 1125-1139. John Wiley & Sons. doi:10.1002/spe.4380151202 Artikkelin verkkoversio. (PDF) Viitattu 31.3.2024. (englanniksi)