Great programmører finde enkle løsninger på komplekse problemer
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. Great programmører finde enkle løsninger på komplekse problemer.
Det er fra et essay kaldet Smukke 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.
Sparsomme er bedre end tæt.
Læsbarhed tæller.
Særlige tilfælde er ikke specielle nok til at bryde reglerne.
Selv om praktiske beats renhed.
Fejl bør aldrig gå lydløst.
Medmindre det udtrykkeligt er bragt til tavshed.
I lyset af tvetydighed, nægte fristelsen til at gætte.
Der bør være én og helst kun en oplagt 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.
Selv om der aldrig er ofte bedre end * højre * 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 et dyttende rigtig god idé - lad os gøre mere af dem!
-------------------------
Og så er der klassisk Tao af programmering
-
kreditter som på linket hjemmeside-
Oversat af Geoffrey James
Transskriberet af Duke Hillard
Transmitteres af Anupam Trivedi, Sajitha Tampi, og Meghshyam Jagannath
Re-html-liseret og redigeret af Kragen Sittler
-
Bog 1 - The Silent Void
Således talte skibsføreren programmør:
"Når man har lært at snuppe fejlkoden fra den fælde rammen, det
vil være tid for dig at forlade. "1,1
Noget mystisk er dannet, født i det stille tomrum. Venter alene og
ubevægelig, er det 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 operativsystemet
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å vinden af formiddagen.
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, dog ydmyg. Hvert sprog udtrykker
Yin og Yang af software. Hvert sprog har sin plads inden for Tao.Men du behøver ikke programmere 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 i programmering.Programmører, der ikke forstå Tao er altid løbe tør for tid
og plads til deres programmer. Programmører at forstå Tao altid
har nok tid og rum til at opnå deres mål.Hvordan kunne det være anderledes?
1,4
Den kloge programmør er fortalt om Tao og følger den. Den gennemsnitlige
programmør bliver fortalt om Tao og søger efter det. De tåbelige programmør
bliver fortalt om Tao og griner på det.Hvis det ikke var for latter, ville der ikke være Tao.
Den højeste lyde er sværest at høre.
Fremadrettet er en måde at trække sig tilbage.
Stort talent viser sig sent i livet.
Selv et perfekt program, har stadig bugs.-------------------------
Bog 2 - The Ancient Masters
Således talte skibsføreren programmør:
"Efter tre dage uden programmering, bliver livet meningsløst."
2,1
Programmørerne af gamle var mystisk og dyb. Vi kan ikke begribe
deres tanker, så vi alle gøre, er at beskrive deres udseende.Aware, som en ræv krydse vandet. Alert, som en generel på
slagmark. Kind, som en værtinde hilsen hendes gæster. Enkel, ligesom
uncarved blokke af træ. Uigennemsigtig, som sorte puljer 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 er Turing drømmer at jeg er en maskine, eller en
maskine drømte, at jeg er Turing! "2,3
En programmør fra en meget stor 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 rynkede og gamle. De styrtede ned vores gæstfrihed suite, og de
lavet 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 betragter 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 skal 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 design,
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 mestrer 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 nogen 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 gøre design
ændringer. "3,1
Der var engang en mand, der gik til en computer messe. Hver dag, da han
indtastet, manden fortalte vagten ved døren:"Jeg er en stor tyv, som er kendt for mine bedrifter af butikstyveri. Vær
advaret, skal for denne messe ikke flygte unplundered. "Denne tale forstyrrede vagt i høj grad, fordi der var millioner af
dollars af edb-udstyr i, så han så manden omhyggeligt. Men
manden alene vandrede fra bod til bod, nynner stille til sig selv.Da manden forlod, vagten tog ham til side og søgte hans tøj, men
intet var at finde.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 så ham stadig tættere, men til ingen nytte.På den sidste dag i messen, kunne vagten holde sin nysgerrighed
ikke længere. "Sir Thief," sagde han, "jeg er så forvirret, kan jeg ikke leve i
fred. Venligst oplyse mig. Hvad er det, at du er at stjæle? "Manden smilede. "Jeg er stjæle idéer," 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, også begyndte at skrive
ustrukturerede programmer. Når novice bad føreren til at evaluere sit
fremskridt, master kritiserede ham for at skrive ustruktureret programmer,
sige: "Hvad er passende for den master er ikke passende for
novice. Du må forstå Tao før overskride struktur. "3,3
Der var engang en programmør, der var knyttet til retten i den krigsherre
af Wu. Krigsherren spurgte programmøren: "Hvilket er lettere at designe: en
regnskabs-pakke eller et operativsystem? ""Et operativsystem," svarede programmøren.
Krigsherren udstødte et udbrud af vantro. "Sandelig en regnskabsmæssig
Pakken er trivielt ved siden af kompleksiteten af et operativsystem, "siger han
sagde."Ikke det," sagde programmør, "når designe en regnskabsmæssig pakke,
programmøren fungerer som mægler mellem mennesker med forskellige
ideer: hvordan det skal fungere, hvordan dens rapporter skal vises, og hvordan det skal
i overensstemmelse med skattelovgivningen. I modsætning hertil er et operativsystem ikke begrænset
af eksterne optrædener. Ved udformningen af et operativsystem, programmøren
søger den simpleste harmoni mellem maskine og ideer. Derfor vil en
operativsystemet er lettere at designe. "Den krigsherre af Wu nikkede og smilede. "Det er alle gode og godt, men
som er lettere at debug? "Programmøren gjorde intet svar.
3,4
En leder gik til mester programmøren 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 vil 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 tildele hundrede programmører til det?"
Føreren programmør trak på skuldrene. "Så det design vil aldrig blive
fuldført, "sagde han.-------------------------
Book 4 - Kodning
Således talte skibsføreren programmør:
"En velskrevet program er sin 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 vejen igennem. Der bør være hverken for lidt eller for meget, hverken
unødvendige loops eller ubrugelige variabler, hverken manglende struktur eller
overvældende stivhed.Et program skal følge `lov af mindst Forundring". 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, bør handle som en enkelt enhed. Programmet
bør ledes af logikken i stedet for ydre fremtoning.Hvis programmet fejler med disse krav, vil det være i en tilstand af
uorden og forvirring. Den eneste måde at rette dette på er at genskrive
programmet.4,2
En novice spurgte mester: "Jeg har et program, der engang løber og
nogle gange afbryder. Jeg har fulgt reglerne for programmering, dog er 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 hans medmennesker. Hvorfor tror du
forventer det fra en maskine, som mennesket har bygget? Computere simulere
determinisme, kun Tao er perfekt."Reglerne for programmering er forbigående, kun Tao er evigt. Derfor er
Du skal overveje Tao, før du modtager oplysning. ""Men hvordan vil jeg vide, når jeg har modtaget oplysning?" Spurgte
novice."Dit program vil derefter køre korrekt," svarede mester.
4,3
En master er en forklaring på arten af Tao til en af sine novicer. "Den
Tao er indeholdt i al software - uanset hvor ubetydeligt, "siger
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 den Tao i DOS til en personlig computer?"
Føreren hostede og skiftede sin stilling en anelse. "Læren er forbi
for i dag, "sagde han.4,4
Prins Wangs programmør var kodning 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?" Siger programmøren at 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 intet
længere så denne masse. I stedet brugte jeg subrutiner. Men nu ser jeg intet.
Hele mit væsen findes i en formløs tomrum. Mine sanser er inaktive. Min ånd,
fri til at arbejde uden at planlægge, følger sit eget instinkt. Kort sagt, mit program
skriver sig selv. True, nogle gange er der vanskelige problemer. Jeg ser dem
der kommer, jeg farten ned, jeg ser tavst. Så jeg ændre en eneste linje kode
og de vanskeligheder borte ligesom pust af ledige røg. Jeg så kompilere
programmet. Jeg sidder stille og lade glæden ved arbejdet fylde mit væsen. Jeg lukker
øjnene et øjeblik og derefter logge af. "Prins Wang sagde: "Gid alle mine programmører var lige så klog!"
-------------------------
Book 5 - Vedligeholdelse
Således talte skibsføreren programmør:
"Selvom et program, men tre linjer lang, vil det en dag skulle
opretholdes. "5,1
Et godt brugt dør behøver ingen olie på sine hængsler.
En hurtig-flydende strøm vokser ikke stagnerende.
Hverken lyd eller tanker kan rejse gennem et vakuum.
Software rådner hvis den ikke anvendes.Disse 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ærdigt i morgen," den
programmør hurtigt svarede."Jeg tror, du er ved at blive urealistisk," sagde manager, "Sandfærdigt, hvordan
lang tid vil det tage? "Programmøren tænkte sig om 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 blive
opfyldt, hvis du bare fortælle mig, når programmet er færdig. "Programmøren enige om dette.
Adskillige år senere, lederen pensioneret. På vej til sin pensionering
frokost, opdagede han programmøren i søvn ved sin terminal. Han havde været
programmering hele natten.5,3
En novice programmør engang var tildelt til at kode en simpel finansiel pakke.
Den uerfarne arbejdede rasende i mange dage, men da hans herre revideret
hans program, opdagede han, at den 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 indignerede. "Vær ikke
så utålmodig, "sagde han," jeg vil sætte i den finansielle ting til sidst. "5,4
Har en god landmand forsømme en afgrøde, han har plantet?
Er en god lærer overser selv den mest ydmyge studerende?
Har en god far giver et enkelt barn til at sulte?
Har en god programmør nægter at opretholde 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 blive
produktive. "6,1
Når ledere holder endeløse møder, programmørerne skriver spil. Når
revisorer taler om kvartals overskud, udviklingsbudgettet er ved at
skæres. Når ledende forskere taler blå himmel, skyerne er ved at rulle
i.Sandelig, det er ikke Tao af programmeringen.
Når ledere indgå forpligtelser, er spil-programmer ignoreres. Når
revisorer foretage langtrækkende planer, harmoni og orden er ved at blive
genoprettet. Når seniorforskerne løse problemerne ved hånden,
problemer vil snart blive løst.Sandelig, dette er den Tao af programmeringen.
6,2
Hvorfor er programmører ikke-produktiv?
Fordi deres tid er spildt på møder.Hvorfor er programmører oprørsk?
Fordi forvaltningen forstyrrer for meget.Hvorfor er programmører afgående én efter én?
Fordi de er brændt ud.Efter at have arbejdet for dårlig ledelse, de ikke længere værdsætter 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ære og solgte godt. Som følge heraf
leder beholdt sit job.Lederen prøvede 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 ved at høre dette bemærkede: "Dette programmør, selvom han holder
en position med lille selvværd, forstår godt den korrekte pligt for en
medarbejder. Lad os forfremme ham til den ophøjede stilling i forvaltningen
konsulent! "Men da fortalte dette, programmøren endnu engang nægtede og sagde: "Jeg eksisterer, så
at jeg kan programmere. Hvis jeg blev forfremmet, ville jeg ikke gøre noget, men affald
alles tid. Kan jeg gå nu? Jeg har et program, jeg arbejder på. "6,4
En leder gik til hans programmører og fortalte dem: "Med hensyn til dit arbejde
timer: du er nødt til at komme ind på ni om morgenen og efterlader
Klokken fem om eftermiddagen. "På dette blev alle af dem vrede, og flere
fratrådte på stedet.Så lederen sagde: "Okay, i så fald kan du indstille din egen
arbejdstider, så længe du er færdig med dine projekter som planlagt. "Den
programmører, der nu er opfyldt, begyndte at komme ind på middag og arbejde for at de små
morgentimer.-------------------------
Bog 7 - Corporate Wisdom
Således talte skibsføreren programmør:
"Man kan påvise et program for en koncerndirektør, men du kan ikke
gøre ham computerkyndig. "7,1
En novice spurgte mester: "I øst er der et stort træ-struktur
at mænd kalder `Corporate Headquarters '. Det er oppustet ude af form med
vice præsidenter og revisorer. Det udsteder en lang række notater, som hver
siger `Gå, Derfor! ' eller `Go, hid!" og ingen ved, hvad der menes. Hvert
å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
forstyrret, at det ikke har noget rationelt formål. Kan du ikke tage morskab fra
dens uendelige gyrations? Kan du ikke nyde den ubesværet lethed programmering
under dets beskyttende grene? Hvorfor er du generet af sine
ubrugelighed? "7,2
I øst er der en haj, der er større end alle andre fisk. Det
ændringer til 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. Dette budskab, den falder ned midt i programmører,
som en måge gør sit præg på stranden. Så fuglen monteres på
vind og med den blå himmel på ryggen, vender hjem.Den uerfarne programmør stirrer i undren over fuglen, for han forstår det
ikke. Den gennemsnitlige programmør dreads komme fuglen, for han frygter
sit budskab. Føreren programmør fortsætter med at arbejde på hans terminal, for
Han ved ikke, at fuglen er kommet og gået.7,3
The Magician af Ivory Tower bragte hans seneste opfindelse for
Master programmør til at undersøge. Tryllekunstneren hjul et stort sort boks i
master-kontor, mens skibsføreren ventede i stilhed."Dette er en integreret, distribueres, til generelle formål arbejdsstation," begyndte
trolden, "ergonomisk designet med et proprietært operativsystem
system, sjette generation sprog, og flere state of the art brugeren
grænseflader. Det tog mine assistenter flere hundrede mand år at opbygge.
Er det ikke fantastisk? "Føreren løftede øjenbrynene en anelse. "Det er virkelig fantastisk," siger han
sagde."Corporate Headquarters har befalet," fortsatte tryllekunstneren, "at
alle bruge denne arbejdsstation som en platform for nye programmer. Er du enig i
til dette? ""Selvfølgelig," svarede kaptajnen, "jeg vil have det transporteret til
datacenter med det samme! "Og trolden, vendte tilbage til sit tårn, godt
tilfreds.Adskillige dage senere, en novice vandrede ind i kontoret af master
programmør og sagde: "Jeg kan ikke finde på listen for mit nye program. Gør
du ved hvor det kan 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 fyret, selv om
Projektet er aflyst. Hvorfor er dette? Han er fyldt med Tao.-------------------------
Book 8 - Hardware og software
Således talte skibsføreren programmør:
"Uden vinden, er græsset ikke bevæge sig. Uden software, hardware
ubrugelig. "8,1
En novice spurgte mester: "Jeg ser, at en computer virksomhed er meget
større end alle andre. Det tårner sig op over sin konkurrence som en kæmpe blandt
dværge. Enhver en af dens afdelinger kan omfatte en hel virksomhed. Hvorfor er
det så? "Skibsføreren svarede: "Hvorfor spørger du så dumt spørgsmål? Dette selskab
er stor, fordi den er stor. Hvis det kun lavet hardware, ville ingen købe
den. Hvis det kun er lavet software, ville ingen bruge det. Hvis det kun er opretholdt
systemer, ville folk behandle det som en tjener. Men fordi den kombinerer alle
af disse ting, tror folk den til en af guderne! Ved ikke at forsøge at
stræbe efter, det erobrer uden anstrengelse. "8,2
En master programmør bestået en novice programmør en dag. Skibsføreren bemærkede
begynderens optagethed af 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. "Jeg
se, at den enhed, hævder at have tre niveauer af spillet: Let, Medium, og
Hårdt, "sagde manden. "Men enhver sådan enhed har et andet niveau af
leg, hvor enheden søger ikke at erobre den menneskelige, eller at blive besejret
af det menneskelige. ""Bed, store mester," bønfaldt den novice, "hvordan kan man finde 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
velhavende 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 selv konsekvent og
nem at bruge. Hvorfor vil du ikke forlade dit nuværende job og slutte sig til mig her? "Det mainframe programmør begyndte derefter at beskrive sit system til sin ven,
at sige "Det mainframe sidder som en gammel vismand meditere midt
af datacentret. Dens diskdrev lyve ende-til-ende som en stor hav af
maskiner. Softwaren er så mange facetter som en diamant, og så indviklede
som en ur-jungle. De programmer, som 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å vejen 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
i verden.I øjeblikket mødte de Firmware, der var klædt i laset pjalter og humpede
langs anbragt på et ømtåleligt stick. Firmware sagde til dem: "Det Tao ligger
ud over Yin og Yang. Den er tavs og stille som en pulje af vand. Det gør
ikke søge berømmelse, derfor ingen, der ved sin tilstedeværelse. Den søger ikke
formue, for det er komplet i sig selv. Den eksisterer uden for rum og
tid. "Software og hardware, skamfuld, vendte tilbage til deres hjem.
-------------------------
Book 9 - Epilog
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



































