De Unix filosofie — waarvan Ken Thompson1 de grondlegger is — bestaat uit een reeks culturele normen en filosofische benaderingen die moeten leiden tot minimalistische, modulaire softwareontwikkeling. Ze is gebaseerd op de ervaring van toonaangevende ontwikkelaars van het Unix besturingssysteem.

De eerste generatie van Unix-ontwikkelaars waren immers echte trendsetters om de concepten van modulariteit en herbruikbaarheid in te voeren binnen de softwareontwikkelingspraktijk, waaruit een beweging van "software tools" ontsproot. Na verloop van tijd hebben die toonaangevende ontwikkelaars van Unix (en de programma's die erop uitgevoerd worden) een reeks culturele normen vastgelegd voor het ontwikkelen van software. Normen die even belangrijk en invloedrijk geworden zijn als de technologie van Unix zelf en die worden aangeduid met de term "Unix filosofie".

Thompson en Richie
Ken Thompson en Dennis Ritchie, belangrijke voorstanders van de Unix filosofie.

De Unix filosofie legt de nadruk op het bouwen van eenvoudige, korte, duidelijke, modulaire en uitbreidbare code die gemakkelijk kan worden onderhouden en hergebruikt door andere softwareontwikkelaars dan de originele makers ervan. De Unix filosofie geeft de voorkeur aan combineerbaarheid, in tegenstelling tot monolithisch ontwerp. Doug McIlroy2 — die toen aan het hoofd stond van het Bell Labs3 Computing Sciences Research Center en die de uitvinder is van de Unix pipe4 — vatte de Unix filosofie als volgt samen:

Dit is de Unix filosofie: Schrijf programma's die één ding doen en die dat ook goed doen. Schrijf programma's die kunnen samenwerken. Schrijf programma's die tekststromen verwerken, omdat dat een universele interface is.

Zoals McIlroy het zegt — en zoals algemeen aanvaard wordt binnen de Unix gemeenschap — wordt van Unix programma's altijd verwacht dat ze het DOTADIW-concept volgen: "Do One Thing and Do It Well" (doe één ding en doe dat goed).

Opgave

Probeer te achterhalen welke opdracht de volgende Unix commando's uitvoeren:

Dit kan je (onder andere) op de volgende drie manieren doen:

Hou hierbij rekening met het feit dat niet alle Unix commando's al deze hulpmiddelen ondersteunen.

Elk van de volgende opdrachten kan door minstens één van bovenstaande commando's uitgevoerd worden. Bepaal welk commando kan gebruikt worden om de opdracht uit te voeren en ga na welke opties (vlaggen) en argumenten je moet opgeven samen met commando.

  1. wacht drie seconden

  2. meet hoe lang het effectief duurt om het commando uit te voeren om drie seconden te wachten

  3. schrijf vier regels uit de elk één natuurlijk getal bevatten; deze getallen moeten respectievelijk de huidige dag, de huidige maand, het huidige uur en de huidige minuut aanduiden

  4. toon de laatste drie commando's die op de Unix command line uitgevoerd werden

Richtlijnen voor het indienen

Voor deze opgave moeten de vier gevraagde commando's ingediend worden. Plaats hiervoor je oplossingen voor de vier opdrachten onder de corresponderende titels in het indienvenster. Enkel het derde commando worden automatisch op correctheid getest.