Unix filosofi
Unix-filosofien er et sæt kulturelle normer og filosofiske tilgange til softwareudvikling baseret på erfaringen fra de førende udviklere af Unix -operativsystemet .
McIlroy: Et kvart århundrede af Unix
Doug McIlroy , opfinderen af Unix-rør og en af grundlæggerne af Unix-traditionen, opsummerede filosofien som følger:
"Unix-filosofien siger:
Skriv
programmer , der gør én ting og gør det godt.
Skriv programmer, der arbejder sammen.
Skriv programmer, der understøtter
tekststreams, fordi det er en generisk grænseflade."
Normalt kommer disse udsagn ned til én ting: "Gør én ting, men gør det godt."
Af disse tre principper er kun det tredje specifikt for Unix, selvom Unix-udviklere er mere tilbøjelige end andre til at understrege alle tre principper.
Mike Guntzarz: Unix-filosofien
I 1994 kombinerede Mike Gancarz sin erfaring med Unix (han er medlem af X Window System- udviklingsteamet ) med kommentarer fra diskussioner, han havde med andre programmører og folk fra andre områder, afhængigt af Unix på den ene eller anden måde, for at skabe Unix Philosophy , som koger ned til 9 grundlæggende principper:
- Smukt lille.
- Lad hvert program gøre én ting, men godt.
- Byg et prototypeprogram så tidligt som muligt.
- Foretrækker bærbarhed frem for effektivitet.
- Gem data i almindelige tekstfiler.
- Drag fordel af eksisterende softwareløsninger.
- Brug scriptsprog til at reducere arbejdsomkostninger og forbedre portabiliteten.
- Undgå brugergrænseflader, der begrænser brugerens mulighed for at interagere med systemet.
- Gør hvert program til et "filter".
Mindre vigtige 10 principper er ikke blevet universelt accepteret som en del af Unix-filosofien, og har i nogle tilfælde været genstand for heftig debat ( monolitisk kerne vs. mikrokerne ):
- Lad brugeren tilpasse miljøet.
- Hold operativsystemkernerne små og lette.
- Brug små bogstaver og hold titler korte.
- Gem ikke programtekster i form af udskrifter ("Gem træerne!").
- Fortæl ikke brugeren det åbenlyse ("Stilhed er gyldent").
- Opdel komplekse opgaver i simple, parallelle opgaver ("Tænk parallelt").
- De samlede dele af helheden er mere end blot deres sum.
- Leder efter en 90 procent løsning .
- Hvis det er muligt ikke at tilføje ny funktionalitet, skal du ikke tilføje det (" Jo værre, jo bedre ").
- Tænk hierarkisk.
Raymond: Kunsten at Unix-programmering
Eric Raymond ( eng. Eric S. Raymond ), i The Art of Unix Programming, opsummerede Unix-filosofien som den almindeligt anvendte ingeniørfilosofi "Keep it simple, fool" ( KISS-princippet ). Han beskrev derefter, hvordan denne generaliserede filosofi gælder som Unix kulturelle normer. Dette på trods af, at det er let at finde flere overtrædelser i følgende aktuelle Unix-filosofi:
- Modularitetsregel: Skriv enkle dele forbundet med forståelige grænseflader.
- Regel om klarhed: Klarhed er bedre end klogskab.
- Sammensætningsregel: Design programmer, så de kan forbindes med andre programmer.
- Adskillelsesregel: Adskil reglerne ( politikken ) fra mekanismen ( mekanismen ); adskille grænsefladen fra motoren .
- Simplicity Regel: Sigt efter enkelhed; tilføje kompleksitet kun, hvor det er nødvendigt.
- Reglen for sparsommelighed: Skriv kun et stort program, når andre midler ikke kan udføre den ønskede opgave.
- Regel for gennemsigtighed: Udvikl gennemsigtige programmer for at lette senere revision og fejlfinding.
- Pålidelighedsregel: Pålidelighed er et barn af gennemsigtighed og enkelhed.
- Repræsentationsregel: Gem viden i data, så programlogikken er dum og pålidelig.
- Regel om mindste overraskelse : Når du designer en grænseflade, skal du altid få velkendte grænsefladeelementer til at udføre velkendte funktioner.
- Tavshedsregel: Hvis programmet ikke har noget at sige, er det bedre at tie.
- Gendannelsesregel: Hvis et program skal gå ned, så gør det støjende og så hurtigt som muligt.
- Økonomiregel: En programmørs tid er kostbar; forkort det ved hjælp af maskintid.
- Generationsregel: Undgå manuel kodning; når det er muligt, skriv programmer, der skriver programmer.
- Optimeringsregel: Først - en prototype, derefter - "kæmning". Opnå stabil drift, først derefter optimer.
- Rule of Diversity: Afvis alle "den eneste rigtige måde" påstande.
- Udvidelsesregel: Design til fremtiden. Det kommer hurtigere, end du tror.
De fleste af disse konventioner er accepteret uden for Unix-fællesskabet – selvom de ikke var det, da de første gang blev anvendt på Unix, er de siden blevet det. Derudover er mange regler ikke unikke eller originale for Unix-fællesskabet. Men tilhængere af Unix-programmering har en tendens til at acceptere en kombination af disse ideer som grundlag for Unix-stilen.
Citater
- Unix er simpelt. Men du skal være et geni for at forstå dens enkelhed " - Dennis Ritchie .
- " Unix er ikke designet til at beskytte sine brugere mod dumme ting, for det ville også beskytte dem mod smarte ting " - Doug Gwin .
- " Unix siger aldrig venligst" - Rob Pike .
Kritik
UNIX-HATERS-håndbogen
UNIX-filosofien blev kritiseret i The UNIX-HATERS Handbook , udgivet i begyndelsen af 1990'erne.
- Ifølge bogens redaktører fører Unix-tilgangen til beslutninger, der træffes i hast, uden ordentlig gennemtænkt arkitektur, hvorefter disse beslutninger kanoniseres (fæstes), det vil sige, at de er erklærede evige klassikere. For eksempel er en sådan løsning efter deres mening låsefiler - midlertidige filer uden indhold, oprettet som et tegn på, at et eller andet program er i gang med at blive eksekveret.
- X Window System er blevet kritiseret for at adskille motoren fra politikken, hvilket har ført til manglen på en UNIX-standard for brugergrænsefladekontrolpolitikker og til store vanskeligheder med at udvikle applikationer, der bruger GUI .
- NFS er blevet kritiseret for sin iboende fejlbehæftede tilgang til arkitektur - et forsøg på at skabe en statsløs filserver, på trods af at dette grundlæggende er umuligt. Da umuligheden af at understøtte nogle vigtige ting blev indlysende, blev en "krykke" kaldet lockd-processen skruet på NFS.
Men på samme tid er de tilgange, der kritiseres i denne bog, som begyndte i *NIX, gnidningsløst begrundet i Microsoft Windows og Apple Mac OS .
Noter
Links