Filosofin bakom verktygslådan var ett mycket viktigt koncept när Unix (av vilket GNU/Linux i stort sett är en klon) först designades och utvecklades. Olyckligtvis, i dagens värld av “webben” grafiska gränssnitt, “moln” och andra buzz-fjanterier, verkar denna filosofi till viss del glömts bort. Det är synd, eftersom denna filosofi ger oss den kraftfulla mentala modell, som är så användbar för att lösa många olika typer av problem.
Många människor bär dagligen en schweizisk armé-kniv i byxfickan, eller väskan. En schweizisk armé-kniv (fick-kniv i allmänhet också för den delen) är ett bra verktyg att ha till hands; Det har flera knivblad, en skruvmejsel, pincett, tandpetare, nagelfil, korkskruv, och kanske en mängd andra saker också. För att lösa småproblem och småjobb av olika slag i vardagen, som kräver ett enkelt allt-i-allo-verktyg, är fickkniven av schweizisk typ, (eller en multifunktionstång), helt okej.
Å andra sidan, en erfaren snickare bygger inte ett hus med en multifunktionskniv, eller multifunktionstång. Istället har han/hon en verktygslåda full av specialiserade verktyg — en såg, en hammare, en skruvmejsel, en borrmaskin, och så vidare. Snickaren vet precis när och var varje verktyg ska användas, du kommer inte att se honom slå in spik med skaftet på skruvmejseln. (Om han nu inte tycker detta är roligt, eller vill bevisa att det är möjligt, det finns sådana människor också, och i undantagsfall är det bra om man KAN använda saker på sätt som de inte var tänkta till från början. Mer om detta senare, men denna parentes visar bara på, och förstärker ännu mer, vad vi snart kommer till.)
Utvecklarna av Unix på Bell Labs var alla professionella programmerare och välutbildade datavetenskapsmänniskor. De hade av erfarenhet lärt sig att ett multifunktionsprogram kanske var vad slutanvändarna skulle tycka var bra och smidigt på alla vis, för att det just isåfall skulle vara just bara ett program att använda och hålla reda på. (Det finns alltid undantag. Emacs, tänkte du, eller hur?) I praktiken är dock sådana program:
- svåra att skriva
- svåra att underhålla och felsöka, och
- svåra att utöka för att klara av nya användningsområden.
Istället ansåg de, att program borde vara specialiserade verktyg. Kort och gott, varje program, “skall göra en sak bra”. Varken mer eller mindre. Sådana program är enklare att designa, skriva, och få till — de gör endast en sak, och de gör den bra (när de väl är skrivna).
Vidare fann de, att med det rätta maskineriet för att koppla samman program, blir summan av det hela, (funktionaliteten av de sammankopplade programmen) mycket större, än summan av delarna. Genom att kombinera de olika små programmen, får man alltså något som är mera värt och funktionellt, än värdet av att bara titta på programmen utlagda på rad. Genom att kombinera olika specialiserade program, kunde man lösa uppgifter som inget av programmen var tänkt att lösa, och lösa uppgifterna mycket snabbare, lättare och bättre, än om man skulle skrivit ett nytt specialprogram. Vi kommer titta närmare på några klassiska exempel på detta i de följande delarna. Ytterligare en viktig poäng med verktygslådans filosofi är att, om du inte redan har något för uppgiften lämpligt verktyg (för att lösa en del av uppgiften), så får man ta en liten omväg, och först bygga de verktyg som man kommer att behöva för uppgiften. Du kommer kunna använda dessa verktyg andra gånger, säkert för helt andra uppgifter, som varken du eller någon annan kunde tänka sig, när verktyget skrevs/konstruerades. (Detta är något som går igen inom många olika yrken, sysselsättningar, hantverk och filosofier. Jämför till exempel med en smed, som har många mycket specialiserade tänger och hammare, och tillbehör till sitt städ. Mycket specialiserade och gjorda för att lösa en uppgift, men kombinerade med andra verktyg, kan nya knivar, grindar, eller fordon, eller delar av dem, konstrueras, kanske flera år efter att de konstruerades. Har man dessutom möjlighet att låna verktyg av varandra, och förbättra dem, så blir det ännu bättre.)
Relaterade artiklar: