Store programmører finde enkle løsninger på komplekse problemer

30 Juni 2009 ved Prashant · Kommentarer
Filed under: misc

Efter en lang tid jeg kunne finde kilden til følgende citat,

Junior programmører at skabe enkle løsninger på enkle problemer. Senior programmører skaber komplekse løsninger på komplekse problemer. Store programmører finde enkle løsninger på komplekse problemer.

Det er fra et essay kaldet Smuk Software af Charles Connell.

En anden favorit af mine er Zen af Python -

Smuk er bedre end grim.
Eksplicit er bedre end implicit.
Simple er bedre end kompleks.
Complex er bedre end kompliceret.
Flat er bedre end indlejret.
Sparse er bedre end tæt.
Læsbarhed tæller.
Særlige tilfælde er ikke specielle nok til at bryde reglerne.
Selv praktiske slår renhed.
Fejl bør aldrig gå lydløst.
Medmindre det udtrykkeligt er tavshed.
I lyset af tvetydighed, nægte fristelsen til at gætte.
Der bør være en, og fortrinsvis kun en indlysende måde at gøre det.
Selv om denne måde ikke kan være indlysende ved første medmindre du er hollandsk.
Nu er bedre end aldrig.
Selvom aldrig er ofte bedre end * lige * nu.
Hvis implementeringen er svært at forklare, det er en dårlig idé.
Hvis implementeringen er let at forklare, kan det være en god idé.
Namespaces er en dytter rigtig god idé - lad os gøre flere af dem!
-------------------------
og så er der klassisk Tao for programmering

-

kreditter, som på den linkede site-

Oversat af Geoffrey James

Transskriberet af Duke Hillard

Overføres af Anupam Trivedi, Sajitha Tampi, og Meghshyam Jagannath

Re-html-ized og redigeret af Kragen Sittler

-

Book 1 - The Silent Void

Således talte skibsføreren programmør:

»Når du har lært at snuppe fejlkoden fra fælden rammen, det
vil være tid for dig at forlade. "

1,1

Noget mystisk er dannet, født i det tavse tomrum. Waiting alene og
ubevægelig, det er på en gang stille og alligevel i konstant bevægelse. Det er kilden
af alle programmer. Jeg kender ikke dens navn, så jeg vil kalde det Tao
Programmering.

Hvis Tao er stor, så operativsystemet er stor. Hvis driftstiden
systemet er stor, så compileren er stor. Hvis compileren er stor,
så ansøgningen er stor. Brugeren er glad og der findes
harmoni i verden.

Den Tao Programmering flyder langt væk, og afkast på vind morgen.

1,2

Tao fødte maskine sprog. Machine sprog fødte
assembler.

Den assembler fødte compileren. Nu er der 10.000
sprog.

Hvert sprog har sit formål, men ydmyg. Hvert sprog udtrykker
Yin og Yang af software. Hvert sprog har sin plads i Tao.

Men du behøver ikke programmerer i COBOL, hvis du kan undgå det.

1,3

I begyndelsen var Tao. Tao fødte rum og tid.
Derfor er rum og tid er Yin og Yang programmering.

Programmører, der ikke forstår Tao er altid løbe tør for tid
og plads til deres programmer. Programmører at forstå Tao altid
har nok tid og plads til at opnå deres mål.

Hvordan kunne det være anderledes?

1,4

Den kloge Programmøren fortalte om Tao og følger den. Den gennemsnitlige
programmør er fortalt om Tao og søger efter det. Den tåbelige programmør
er fortalte om Tao og griner på det.

Hvis det ikke var for latter, ville der ikke være Tao.

De højeste lyde er hårdest at høre.
Fremadrettet er en måde at trække sig tilbage.
Fantastisk talent viser sig sent i livet.
Selv en perfekt program stadig bugs.

-------------------------

Bog 2 - de gamle mestre

Således talte skibsføreren programmør:

"Efter tre dage uden programmering, bliver livet meningsløst."

2,1

Programmørerne gamle var mystisk og dyb. Vi kan ikke begribe
deres tanker, så alt, hvad vi gør, er beskrive deres udseende.

Aware, som en ræv krydse vandet. Alert, som en generel på
slagmark. Kind, som en værtinde hilser sine gæster. Enkel, ligesom
uncarved blokke af træ. Uigennemsigtig, som sorte pools i mørke huler.

Hvem kan fortælle hemmeligheder i deres hjerter og sind?

Svaret findes kun i Tao.

2,2

Grand Master Turing drømte engang, at han var en maskine. Da han vågnede han
udbrød:

"Jeg ved ikke, om jeg turerings drømmer at jeg er en maskine, eller en
maskine, drømmer, at jeg turerings! "

2,3

En programmør fra et meget stort computer selskab gik til en software
konference og vendte derefter tilbage til at rapportere til sin chef og sagde: "Hvad slags
af programmører arbejder for andre virksomheder? De opførte sig dårligt og var
ligeglade med optrædener. Deres hår var langt og usoigneret og deres
tøj var rynket og gammel. De styrtede ned vores gæstfrihed suite, og de
gjort uhøflig lyde under min præsentation. "

Lederen sagde: "Jeg aldrig skulle have sendt dig til konferencen. De
programmører leve over den fysiske verden. De mener, livet absurd, en
utilsigtet tilfældighed. De kommer og går uden at vide begrænsninger.
Uden en pleje, lever de kun for deres programmer. Hvorfor skulle de gider
med sociale konventioner?

"De er i live inden for Tao."

2,4

En novice spurgte Master: "Her er en programmør, der aldrig designer,
dokumenter eller test sine programmer. Men alle, der kender ham, betragter ham som en af
de bedste programmører i verden. Hvorfor er dette? "

Mesteren svarer: "Det programmør har styr på Tao. Han er gået
Ud over behovet for design, han ikke bliver vred, når systemet
nedbrud, men accepterer universet uden bekymring. Han er gået ud over den
behov for dokumentation, han ikke længere bekymrer sig om alle andre ser sin kode.
Han er gået ud over behovet for test, og hver af hans programmer er perfekte
i sig selv, rolig og elegant, deres formål selvindlysende. Sandelig,
Han er gået ind i mysteriet om Tao. "

-------------------------

Book 3 - Design

Således talte skibsføreren programmør:

"Når programmet er ved at blive testet, er det for sent at lave nyt design
ændringer. "

3,1

Der var engang en mand, som gik til en computer messe. Hver dag, som han
ind, manden fortalte vagten ved døren:

"Jeg er en stor tyv, berømt for mine bedrifter af butikstyveri. Vær
advaret, skal for denne messe ikke undslippe unplundered. "

Denne tale forstyrret vagt i høj grad, fordi der var millioner af
dollars af edb-udstyr inde, så han så manden omhyggeligt. Men
manden alene vandrede fra bod til bod, nynnede stille for sig selv.

Da manden forlod, vagten tog ham til side og søgte hans tøj, men
intet var at finde.

På den næste dag af handelen viser, vendte manden og skældt ud af vagten
sige: "Jeg slap med et stort bytte i går, men i dag vil være endnu
bedre. "Så vagten betragtede ham stadig tættere, men til ingen nytte.

På den sidste dag i messen, kunne vagten begrænse sin nysgerrighed
længere. "Sir Thief," sagde han, "Jeg er så forvirret, kan jeg ikke leve i
fred. Venligst oplyse mig. Hvad er det, at du stjæle? "

Manden smilede. "Jeg stjæle ideer," sagde han.

3,2

Der var engang en mester programmør, der skrev ustrukturerede programmer. En
novice programmør, der søger at efterligne ham, begyndte også at skrive
ustrukturerede programmer. Når novice bad føreren at vurdere hans
fremskridt, master kritiserede ham for at skrive ustrukturerede programmer,
sige, "hvad der er passende for master er ikke egnet til at
novice. Du skal forstå Tao før overskridende struktur. "

3,3

Der var engang en programmør, der var knyttet til retten i krigsherren
af Wu. Det krigsherre spurgte programmør: "Hvilket er lettere at designe: en
regnskabs-pakke eller et operativsystem? "

"Et operativsystem," svarede programmøren.

Den krigsherre udtalte et udråbstegn på vantro. "Sandelig en regnskabsmæssig
pakke er trivielt siden kompleksiteten af ​​et operativsystem, "siger han
nævnte.

"Ikke det," sagde programmør, "når designe en regnskabsmæssig pakke,
programmøren fungerer som en mægler mellem mennesker med forskellige
ideer: hvordan det skal fungere, hvordan dens rapporter skal vises, og hvordan det skal
i overensstemmelse med skattelovgivningen. Derimod er et operativsystem ikke er begrænset
af eksterne optrædener. Ved udformningen af ​​et operativsystem, programmøren
søger den enkleste harmoni mellem maskine og ideer. Derfor er en
operativsystemet er lettere at designe. "

Den krigsherre af Wu nikkede og smilede. "Det er alt godt og vel, men
som er lettere at fejlrette? "

Programmøren gjorde ingen svar.

3,4

En leder gik til master programmør og viste ham de krav,
dokument for en ny ansøgning. Lederen spurgte mester: "Hvor længe
vil det tage at designe dette system, hvis jeg tildeler fem programmører til det? "

"Det vil tage et år," sagde manden hurtigt.

"Men vi har brug for dette system med det samme eller endnu hurtigere! Hvor lang tid tager det
tage, hvis jeg tildeler ti programmører til det? "

Føreren programmør rynkede panden. "I så fald vil det tage to år."

"Og hvad hvis jeg tildeler hundrede programmører til det?"

Føreren programmør trak på skuldrene. "Så design vil aldrig være
afsluttet, "sagde han.

-------------------------

Bog 4 - Kodning

Således talte skibsføreren programmør:

"En velskrevet programmet er dets egen himmel, en dårligt skrevet program er
sit eget helvede. "

4,1

Et program skal være let og adræt, dets underprogrammer forbundet som en
perlerække af perler. Den ånd og hensigten med programmet bør bevares
hele. Der bør være ikke for lidt eller for meget, hverken
unødvendige loops eller ubrugelige variabler, hverken mangel på struktur eller
overvældende stivhed.

Et program skal følge `loven af ​​Least Overraskelse". Hvad er denne lov?
Det er simpelthen, at programmet altid skal svare til brugeren på den måde
der forbløffer ham mindst.

Et program, uanset hvor kompleks, skal fungere som en enkelt enhed. Programmet
bør ledes af logik i stedet for ydre optrædener.

Hvis programmet ikke disse krav, vil det være i en tilstand af
uorden og forvirring. Den eneste måde at rette dette på er at omskrive
program.

4,2

En novice spurgte mester: "Jeg har et program, der engang kører og
gange afbryder. Jeg har fulgt reglerne for programmering, men jeg
helt forvirret. Hvad er årsagen til dette? "

Skibsføreren svarede: "Du er forvirret, fordi du ikke forstår Tao.
Kun en tåbe forventer rationel adfærd fra sine medmennesker. Hvorfor gør du
forvente det fra en maskine, som mennesker har bygget? Computere simulere
determinisme, kun Tao er perfekt.

"Reglerne for programmering er forbigående, kun Tao er evigt. Derfor er
skal du overveje Tao, før du får oplysning. "

"Men hvordan vil jeg vide, når jeg har modtaget oplysning?" Spurgte
novice.

"Dit program vil køre korrekt," svarede mester.

4,3

En master blev forklarer karakteren af ​​Tao til en af ​​sine novicer. "The
Tao er indeholdt i al software - uanset hvor ubetydelig, "sagde
skibsføreren.

"Er Tao i en håndholdt lommeregner?" Spurgte den uerfarne.

"Det er," lød svaret.

"Er Tao i et videospil?" Fortsatte den uerfarne.

"Det er selv i et videospil," sagde manden.

"Og er Tao i DOS for en personlig computer?"

Skibsføreren hostede og flyttede sin stilling en anelse. "Lektionen er slut
for i dag, "sagde han.

4,4

Prince Wangs programmeringsenhed blev kodende software. Hans fingre dansede på
tastatur. Programmet kompileret uden en fejlmeddelelse, og programmet
løb som en blid vind.

"Excellent!" Prinsen udbrød, "Din teknik er fejlfri!"

"Teknik?" Sagde programmør dreje fra sin terminal, "Hvad jeg
følge er Tao - ud over alle teknikker! Da jeg først begyndte at programmere jeg
ville se for mig hele problemet i en masse. Efter tre år har jeg ingen
længere så denne masse. I stedet brugte jeg underrutiner. Men nu kan jeg ikke se noget.
Hele mit væsen eksisterer i en uformelig tomrum. Mine sanser er i brug. Min ånd,
fri til at arbejde uden plan, følger sin egen instinkt. Kort sagt, mit program
skriver sig selv. True, nogle gange er der vanskelige problemer. Jeg ser dem
kommer, jeg sætter tempoet ned, jeg ser lydløst. Så jeg ændre en eneste linje kode
og de vanskeligheder borte ligesom pust i tomgang røg. Jeg så kompilere
program. Jeg sidder stille og lod glæden ved arbejdet fylder min væsen. Jeg lukker min
øjne for et øjeblik og derefter logge af. "

Prins Wang sagde: "Ville, at alle mine programmører var så klog!"

-------------------------

Book 5 - Vedligeholdelse

Således talte skibsføreren programmør:

"Selvom et program være, men tre linjer lang, vil det en dag være
opretholdes. "

5,1

Et godt brugt dør behøver ingen olie på sine hængsler.
En hurtig-flydende strøm vokser ikke stillestående.
Hverken lyd eller tanker kan bevæge sig gennem et vakuum.
Software rådner hvis den ikke anvendes.

Det er store mysterier.

5,2

En leder spurgte en programmør hvor lang tid det ville tage ham til at afslutte
program, hvor han arbejdede. "Det vil være færdig i morgen," den
programmør hurtigt svarede.

"Jeg tror, ​​du bliver urealistisk," sagde lederen, "sandheden, hvordan
lang tid tager det? "

Programmøren troede et øjeblik. "Jeg har nogle funktioner, som jeg ønsker at
tilføje. Det vil tage mindst to uger, "sagde han til sidst.

"Selv det er for meget at forvente," insisterede lederen, "Jeg vil være
opfyldt, hvis du bare fortælle mig, hvornår programmet er afsluttet. "

Programmøren indforstået med dette.

Adskillige år senere, lederen pensioneret. På vej til sin pensionering
frokost, opdagede han programmøren i søvn på hans terminal. Han havde været
programmering hele natten.

5,3

En novice programmør engang blev tildelt til at kode en simpel finansiel pakke.

Den uerfarne arbejdede voldsomt i mange dage, men da hans herre revideret
hans program, opdagede han, at det indeholdt en skærm editor, et sæt af
generaliseret grafik rutiner, en kunstig intelligens-interface, men
ikke den mindste omtale af noget økonomisk.

Når føreren spurgt om dette, den uerfarne blev forarget. "Vær ikke
så utålmodig, "sagde han," Jeg sætter i den finansielle ting til sidst. "

5,4

Er en god landmand forsømmer en afgrøde, han har plantet?
Er en god lærer overser selv den mest ydmyge studerende?
Er en god far give et enkelt barn til at sulte?
Er en god programmør nægte at bevare sin kode?

-------------------------

Book 6 - Management

Således talte skibsføreren programmør:

"Lad programmører være mange, og de ledere få - så alle vil være
produktive. "

6,1

Når ledere holder endeløse møder, programmører skriver spil. Hvornår
revisorer taler om kvartalsvise overskud, udvikling budgettet er ved at
skæres. Når seniorforskere taler blå himmel, skyerne er ved at rulle
i.

Sandelig, det er ikke Tao programmering.

Når ledere indgå forpligtelser, der er vildt programmer ignoreres. Hvornår
revisorer foretage langsigtede planer, harmoni og orden er ved at være
genoprettet. Når seniorforskere løse problemerne ved hånden,
problemer vil snart blive løst.

Sandelig, dette er Tao programmering.

6,2

Hvorfor er programmører ikke-produktive?
Fordi deres tid er spildt på møder.

Hvorfor er programmører oprørske?
Fordi styring interfererer for meget.

Hvorfor er programmører fratræder én efter én?
Fordi de er brændt ud.

Efter at have arbejdet for dårlig ledelse, de ikke længere værdien af ​​deres job.

6,3

En leder var ved at blive fyret, men en programmør, der arbejdede for ham
opfundet et nyt program, der blev populær og solgte godt. Som et resultat heraf
leder bevaret sit job.

Lederen forsøgt at give programmøren en bonus, men programmøren
nægtede det, sagde: "Jeg skrev programmet, fordi jeg troede det var en
interessant koncept, og derfor forventer jeg ingen belønning. "

Lederen efter at have hørt denne bemærkede, "Denne programmør, selvom han har
en stilling lille selvværd, forstår godt den korrekte pligt til en
medarbejder. Lad os forfremme ham til den ophøjede ledende stilling
konsulent! "

Men da sagde det, programmøren igen nægtede og sagde: "Jeg eksisterer, så
at jeg kan programmere. Hvis jeg blev forfremmet, ville jeg gøre noget, men affald
alles tid. Kan jeg gå nu? Jeg har et program, jeg arbejder på. "

6,4

En leder gik til sine programmører og fortalte dem: "Med hensyn til dit arbejde
time: du er nødt til at komme ind på ni om morgenen og efterlade
klokken fem om eftermiddagen. "På dette, blev alle de vrede og flere
fratrådte på stedet.

Så leder sagde: "All right, i så fald kan du indstille din egen
arbejdstid, så længe du er færdig med dine projekter som planlagt. "The
programmører, der nu er opfyldt, begyndte at komme ind på middag og arbejde for The Wee
timer om morgenen.

-------------------------

Bog 7 - Corporate Wisdom

Således talte skibsføreren programmør:

"Du kan demonstrere et program for en corporate udøvende, men du kan ikke
gøre ham computer læse og skrive. "

7,1

En novice spurgte mester: "I øst er der et stort træ-struktur
at mænd kalder 'Corporate Headquarters'. Det er oppustet ud af form med
næstformænd og revisorer. Det udsteder en lang række notater, som hver
sige `Go, Derfor! ' eller `Go, hid!" og ingen ved, hvad der menes. Hver
år kommer der nye navne er sat på grenene, men alle uden held. Hvordan kan
sådan en unaturlig enhed være? "

Skibsføreren svarede: "Du opfatter dette enorme struktur og er
foruroliget over, at det ikke har noget rationelt formål. Kan du ikke tage morskab fra
sine endeløse gyrations? Kan du ikke nyde den ubesværede lethed af programmeringen
under sine skyggende grene? Hvorfor er du generet af sin
ubrugelighed? "

7,2

I øst er der en haj, der er større end alle andre fisk. Det
ændringer i en fugl, hvis vinger er som skyer fylder himlen. Når denne
Fuglen bevæger sig over hele landet, det bringer et budskab fra Corporate
Hovedkvarter. Denne meddelelse det falder ind midt i programmører,
som en måge gør sit præg på stranden. Fuglen monterer på
vind og med den blå himmel på ryggen, vender hjem.

De uerfarne programmør stirrer forundret på fuglen, for han forstår det
ikke. Den gennemsnitlige programmør frygter den kommende af fuglen, for han frygter
sit budskab. Skibsføreren programmør fortsætter med at arbejde på hans terminal, for
han ikke ved, at fuglen er kommet og gået.

7,3

The Magician af Ivory Tower bragte hans seneste opfindelse til
Master programmør til at undersøge. Tryllekunstneren hjul en stor sort boks i
master kontor, mens mester ventede i stilhed.

"Dette er en integreret, distribueret, til generelle formål arbejdsstation," begyndte
trolden, "ergonomisk designet med et proprietært operativsystem
system, sjette generation sprog, og multiple stade brugerens
grænseflader. Det tog mine assistenter flere hundrede mand år at konstruere.
Er det ikke fantastisk? "

Føreren hævede øjenbrynene en anelse. "Det er virkelig fantastisk," siger han
nævnte.

"Corporate hovedkvarter har befalet," fortsatte tryllekunstner, "at
alle bruge denne arbejdsstation som en platform for nye programmer. Er du enig
til dette? "

"Selvfølgelig," svarede mester, "jeg vil have det transporteret til
datacenter med det samme! "Og trolden tilbage til sit tårn, godt
tilfreds.

Adskillige dage senere, en novice vandrede ind på kontoret for master
programmør og sagde: "Jeg kan ikke finde listen for mit nye program. Gør
du ved, hvor det kunne være? "

"Ja," svarede mester, "de lister er stablet på platformen i
datacentret. "

7,4

Føreren programmør bevæger sig fra program til program uden frygt. Ingen
ændring i ledelsen kan skade ham. Han vil ikke blive affyret, selv om
Projektet er annulleret. Hvorfor er dette? Han er fyldt med Tao.

-------------------------

Book 8 - Hardware og software

Således talte skibsføreren programmør:

"Uden vinden, ikke græsset ikke bevæge sig. Uden software, er hardware
ubrugelig. "

8,1

En novice spurgte mester: "Jeg oplever, at en computer selskab er meget
større end alle andre. Det tårner sig op over sin konkurrence som en kæmpe blandt
dværge. En af dens afdelinger kan omfatte en hel virksomhed. Hvorfor er
det så? "

Skibsføreren svarede, "Hvorfor spørger du sådanne tåbelige spørgsmål? Dette selskab
er stor, fordi den er stor. Hvis det kun lavet hardware, ville ingen købe
den. Hvis det kun lavet software, ville ingen bruge det. Hvis det kun opretholdes
systemer, ville folk behandle det som en tjener. Men fordi det kombinerer alle
af disse ting, tror folk det en af ​​de guder! Ved ikke at forsøge at
stræbe efter, det erobrer uden indsats. "

8,2

En master programmør bestået en novice programmør en dag. Skibsføreren bemærkede
den uerfarne optagethed med en håndholdt computer spil. "Undskyld mig,"
sagde han, "kan jeg undersøge det?"

Den novice boltet til opmærksomhed og afleveres enheden til master. "I
se, at enheden hævder at have tre niveauer i spillet: Let, Medium, og
Hard, "sagde manden. "Men enhver sådan enhed har et andet niveau af
spil, hvor enheden søger ikke at erobre den menneskelige, eller at blive erobret
den menneskelige. "

"Pray, store mester," bønfaldt den novice, "hvordan finder man denne
mystisk indstilling? "

Føreren faldt enheden til jorden og knuste den under fødderne. Og
pludselig den uerfarne blev oplyst.

8,3

Der var engang en programmør, der arbejdede på mikroprocessorer. "Se på, hvordan
godt ud Jeg er her, "sagde han til en mainframe programmør, der kom på besøg,
"Jeg har mit eget operativsystem og fil lagerenhed. Jeg behøver ikke at
dele mine ressourcer med nogen. Softwaren er selvkonsistent og
nemme at bruge. Hvorfor ikke forlade dit nuværende job og deltag mig her? "

Den mainframe programmør derefter begyndte at beskrive sit system til sin ven,
at sige "Det mainframe sidder som en gammel vismand meditere midt i
af datacentret. Dens diskdrev ligger ende-til-ende som en stor hav af
maskiner. Softwaren er så mange facetter som en diamant, og som indviklede
som en ur-jungle. De programmer, der hver unik, bevæger sig gennem systemet
som en hurtig-strømmende flod. Derfor er jeg glad, hvor jeg er. "

Den mikrocomputer programmør, efter at have hørt dette, tav. Men de to
programmører forblev venner indtil slutningen af ​​deres dage.

8,4

Hardware mødtes Software på vej til Changtse. Software sagde: "Du er
Yin og jeg er Yang. Hvis vi rejser sammen, vil vi blive berømt og tjene
enorme summer af penge. "Og så er angivet sammen, tænker på at erobre
verden.

I øjeblikket mødte Firmware, der var klædt i lasede pjalter og humpede
sammen stablet på en tornet pind. Firmware sagde til dem: "Det Tao ligger
ud Yin og Yang. Det er tyst og stille som en pulje af vand. Det gør
ikke søge berømmelse, derfor ingen kender sin tilstedeværelse. Det søger ikke
formue, for det er komplet i sig selv. Det eksisterer uden rum og
tid. "

Software og hardware, skamfuld, tilbage til deres hjem.

-------------------------

Book 9 - Epilogue

Således talte skibsføreren programmør:

"Det er tid for dig at forlade."

-------------------------

Hvis du kunne lide dette, kan du også lide at læse værre er bedre