Flotte programmerere finne enkle løsninger på komplekse problemer

30 juni 2009 ved Prashant · Kommentarer
Arkivert under: misc

Etter en lang tid, kan jeg finne kilden for følgende sitat-

Junior programmerere lage enkle løsninger på enkle problemer. Senior programmerere lage komplekse løsninger på komplekse problemer. Flotte programmerere finne enkle løsninger på komplekse problemer.

Det er fra et essay kalt Vakker Software av Charles Connell.

En annen favoritt av meg er Zen av Python -

Vakker er bedre enn stygg.
Eksplisitt er bedre enn implisitt.
Enkelt er bedre enn komplisert.
Complex er bedre enn komplisert.
Flat er bedre enn nestes.
Sparsomme er bedre enn tett.
Lesbarhet teller.
Spesielle tilfeller er ikke spesiell nok til å bryte reglene.
Selv om praktiske slår renhet.
Feil skal aldri passere i stillhet.
Med mindre eksplisitt forstummet.
I møte med tvetydighet, nekte fristelsen til å gjette.
Det bør være en-og fortrinnsvis bare én opplagt måte å gjøre det.
Selv på den måten ikke kan være tydelig på første med mindre du er nederlandsk.
Nå er bedre enn aldri.
Selv er aldri ofte bedre enn * akkurat * nå.
Dersom implementeringen er vanskelig å forklare, er det en dårlig idé.
Dersom implementeringen er enkel å forklare, kan det være en god idé.
Navnerom er en honking god idé - la oss gjøre mer av dem!
-------------------------
og så er det klassisk Tao of Programming

-

kreditter som på linket hjemmeside-

Oversatt av Geoffrey James

Transkribert av Duke Hillard

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

Re-html-anskaffe og redigert av kragen Sittler

-

Book 1 - The Silent Void

Dermed talte mesteren programmerer:

"Når du har lært å snappe feilkoden fra fellen rammen, det
vil være tid for deg å gå. "

1.1

Noe mystisk er dannet, født i den stille ugyldig. Venter alene og
ubevegelig, er det samtidig stille og likevel i konstant bevegelse. Den er kilden
av alle programmer. Jeg vet ikke navnet, så jeg vil kalle det Tao av
Programmering.

Hvis Tao er stor, så operativsystemet er stor. Hvis operativsystemet
Systemet er flott, da kompilatoren er stor. Dersom kompilatoren er stor,
da søknaden er stor. Brukeren er fornøyd og det eksisterer
harmoni i verden.

The Tao of Programming flyter langt unna, og avkastning på vinden i morgen.

1.2

The Tao fødte maskin språk. Machine språk fødte
assembler.

Assembler fødte kompilatoren. Nå er det titusen
språk.

Hvert språk har sin hensikt, men ydmyk. Hvert språk uttrykker
Yin og Yang av programvare. Hvert språk har sin plass innenfor Tao.

Men ikke programmere i Cobol hvis du kan unngå det.

1.3

I begynnelsen var Tao. The Tao fødte rom og tid.
Derfor Space og Time er Yin og Yang av programmering.

Programmerere som ikke fatte Tao alltid kjører ut av tiden
og plass for sine programmer. Programmerere som fatte Tao alltid
har nok tid og plass til å oppnå sine mål.

Hvordan kunne det være annerledes?

1.4

Den kloke programmerer er fortalt om Tao og følger den. Den gjennomsnittlige
programmereren fortalte om Tao og søker etter den. Den tåpelige programmerer
fortelles om Tao og ler på den.

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

De høyeste lydene er vanskeligst å høre.
Fremover er en måte å trekke seg tilbake.
Stort talent viser seg sent i livet.
Selv en perfekt program har fortsatt bugs.

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

Bok 2 - De gamle mestere

Dermed talte mesteren programmerer:

"Etter tre dager uten programmering, blir livet meningsløst."

2.1

Programmerere av gammel var mystisk og dyp. Vi kan ikke begripe
sine tanker, så alt vi gjør er beskrive deres utseende.

Aware, som en rev krysser vannet. Varsling, som en generell på
slagmarken. Kind, som en vertinne hilser sine gjester. Enkelt, som
uncarved blokker av tre. Opak, som svarte bassenger i mørke huler.

Hvem kan fortelle hemmelighetene deres hjerter og sinn?

Svaret finnes bare i Tao.

2.2

Grand Master Turing gang drømt at han var en maskin. Da han våknet han
utbrøt:

"Jeg vet ikke om jeg AM Turing drømmer at jeg er en maskin, eller en
maskin drømte at jeg AM Turing! "

2.3

En programmerer fra en veldig stor datamaskin selskapet gikk til en programvare
konferanse og deretter tilbake til å rapportere til sin manager, og sa: «Hva slags
av programmerere jobber for andre selskaper? De oppførte seg dårlig og ble
ubekymret med opptredener. Deres hår var lang og uflidd og deres
klærne var rynkete og gammel. De krasjet vår gjestfrihet suite og de
gjorde uhøflige lyder under presentasjonen min. "

Manageren sa: "Jeg skulle aldri ha sendt deg til konferansen. De
programmerere leve utover den fysiske verden. De anser liv absurd, en
utilsiktet tilfeldighet. De kommer og går uten å vite begrensninger.
Uten en omsorg, lever de kun for sine programmer. Hvorfor skulle de bry seg
med sosiale konvensjoner?

"De lever innenfor Tao."

2.4

En nybegynner spurt Master: "Her er en programmerer som aldri utvikler,
dokumenter eller tester sine programmer. Men alt som kjenner ham vurdere ham til en av
de beste programmerere i verden. Hvorfor er dette? "

The Master svarer: "Det programmerer har mestret Tao. Han har gått
utover behovet for design; han ikke blir sint når systemet
krasjer, aksepterer men universet uten bekymring. Han har gått utover
behov for dokumentasjon, han ikke lenger bryr seg om noen andre ser sin kode.
Han har gått utover behovet for testing; hvert av programmene hans er perfekt
i seg selv, rolig og elegant, deres formål selvinnlysende. Sannelig,
Han har inngått mysterium Tao. "

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

Bok 3 - Design

Dermed talte mesteren programmerer:

"Når programmet blir testet, er det for sent å lage design
endringer. "

3.1

Det var en gang en mann som gikk til en datamaskin messe. Hver dag som han
inn, fortalte mannen vakten i døren:

"Jeg er en stor tyv, kjent for mine prestasjon av butikktyveri. Vær
forkant, skal for denne messen ikke unnslippe unplundered. "

Denne talen forstyrret vakten sterkt, fordi det var millioner av
dollar av datautstyr inne, så han så mannen nøye. Men
mannen bare vandret fra bod til bod, nynnet stille for seg selv.

Da mannen forlot, tok vakten ham til side og søkte klærne hans, men
ingenting var å finne.

På den neste dagen av messen, returnerte mannen og skjente vakten
sa: «Jeg rømte med et stort bytte i går, men i dag vil bli enda
bedre. "Så vakten så ham stadig nærmere, men til ingen nytte.

På den siste dagen av messen, kunne vakt holde sin nysgjerrighet
ikke lenger. "Sir Thief," sa han, «jeg er så forvirret, kan jeg ikke leve i
fred. Vennligst opplyse meg. Hva er det du stjeler? "

Mannen smilte. "Jeg stjeler ideer," sa han.

3.2

Det var en gang en mester programmerer som skrev ustrukturerte programmer. A
nybegynner programmerer, som søker å etterligne ham, begynte også å skrive
ustrukturerte programmer. Når nybegynneren spurte mesteren å vurdere sin
fremgang, kritiserte master ham for å skrive ustrukturerte programmer,
sa: «Hva er passende for mesteren er ikke hensiktsmessig for
nybegynner. Du må forstå Tao før transcendere struktur. "

3.3

Det var en gang en programmerer som var festet til en domstol i den krigsherren
av Wu. Den krigsherren spurt programmerer: "Hvilke er lettere å designe: en
regnskap pakke eller et operativsystem? "

"Et operativsystem," svarte programmerer.

Den krigsherren ytret et utrop av vantro. "Sikkert en regnskapsmessig
Pakken er trivielt ved siden av kompleksiteten i et operativsystem, "han
sa.

"Ikke så," sa programmerer, "når du utformer en regnskapsmessig pakken,
programmereren opererer som en megler mellom mennesker med forskjellig
ideer: hvordan det skal fungere, hvordan dets rapporter skal vises, og hvordan det må
overensstemmelse med skattelovgivningen. Som kontrast er et operativsystem ikke begrenset
av eksterne opptredener. Ved utforming av et operativsystem, programmerer
søker det enkleste harmoni mellom maskin og ideer. Dette er grunnen til en
operativsystemet er lettere å designe. "

Den krigsherren av Wu nikket og smilte. "Det er alt bra og godt, men
som er lettere å feilsøke? "

Programmereren svarte ikke.

3.4

En leder gikk til master programmerer og viste ham de krav
dokument for en ny søknad. Lederen spurte mesteren: "Hvor lenge
vil det ta å designe dette systemet hvis jeg tildele fem programmerere til det? "

"Det vil ta ett år," sa mesteren omgående.

"Men vi trenger dette systemet umiddelbart eller enda raskere! Hvor lenge vil det
ta hvis jeg tildele ti programmerere til det? "

Mesteren programmerer rynket pannen. "I så fall vil det ta to år."

"Og hva om jeg tildele hundre programmerere til det?"

Mesteren programmerer trakk på skuldrene. "Da utformingen aldri vil bli
ferdig, "sa han.

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

Book 4 - Koding

Dermed talte mesteren programmerer:

"En velskrevet programmet er sin egen himmel, en dårlig skrevet program er
sin egen helvete. "

4.1

Et program skal være lett og smidig, dets subrutiner koblet som en
perlerad. Ånden og intensjonen i programmet bør beholdes
hele. Det skal være verken for lite eller for mye, verken
unødvendige sløyfer eller unyttige variabler, verken mangel på struktur og heller
overveldende stivhet.

Et program bør følge `Law of Least forbauselse". Hva er dette lov?
Det er rett og slett at programmet skal alltid svare brukeren på veien
som forbauser ham minst.

Et program, uansett hvor komplisert, bør fungere som en enkelt enhet. Programmet
bør styres av logikken innenfor snarere enn av ytre utseende.

Hvis programmet svikter i disse kravene, vil det være i en tilstand av
uorden og forvirring. Den eneste måten å løse dette er å skrive om
program.

4.2

En nybegynner spurte mesteren: "Jeg har et program som en gang kjører og
noen ganger avbryter. Jeg har fulgt reglene i programmering, men jeg er
helt forbløffet. Hva er grunnen til dette? "

Mesteren svarte: "Du er forvirret fordi du ikke forstår Tao.
Bare en tosk forventer rasjonell atferd fra hans medmennesker. Hvorfor gjør dere
forventer det fra en maskin som mennesker har laget? Datamaskiner simulere
determinisme, bare Tao er perfekt.

"Reglene for programmering er forbigående, bare Tao er evig. Derfor
du må tenke Tao før du får opplysning. "

"Men hvordan skal jeg vite når jeg har fått opplysning?" Spurt
nybegynner.

"Din Programmet vil da kjøre riktig," svarte mesteren.

4.3

En mester ble forklare natur Tao av ​​til en av hans noviser. "The
Tao er nedfelt i all programvare - uansett hvor ubetydelig, "sa
mesteren.

«Er Tao i en håndholdt kalkulator?" Spurt nybegynner.

"Det er," kom svaret.

«Er Tao i et videospill?" Fortsatte nybegynneren.

"Det er selv i et videospill," sa mesteren.

"Og er det Tao i DOS for en personlig datamaskin?"

Mesteren hostet og flyttet sin stilling noe. "Demonstrasjonen er over
for i dag, "sa han.

4.4

Prince Wangs programmerer ble koding programvare. Fingrene danset på
tastatur. Programmet kompilert uten en feilmelding, og programmet
løp som en mild vind.

"Excellent" prinsen utbrøt: «Din teknikken er feilfri!"

"Technique?" Sa programmerer snu fra terminal hans, "Hva jeg
følge er Tao - hinsides alle teknikker! Da jeg først begynte å programmere jeg
ville se meg hele problemet i en masse. Etter tre år har jeg ingen
lenger så dette masse. Isteden brukte jeg subrutiner. Men nå ser jeg ingenting.
Hele min vesen eksisterer i en formløs ugyldig. Mine sanser er inaktiv. Min ånd,
fri til å arbeide uten plan, følger sin egen instinkt. Kort sagt, mitt program
skriver selv. Riktignok noen ganger er det vanskelige problemer. Jeg ser dem
kommer, sakte jeg ned, ser jeg stille. Så jeg endre en eneste linje med kode
og vanskelighetene borte som puffs av inaktiv røyk. Jeg så kompilere
program. Jeg sitte stille og la glede av arbeidet fyller mitt vesen. Jeg lukker min
øynene et øyeblikk og deretter logge av. "

Prince Wang sa: "Vil at alle mine programmerere var like klok!"

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

Bok 5 - Vedlikehold

Dermed talte mesteren programmerer:

"Selv om et program være, men tre linjer lange, en dag vil det være
opprettholdt. "

5.1

Et velbrukt dør trenger ingen olje på hengslene.
En rask flyt stream vokser ikke stillestående.
Verken lyd eller tanker kan reise gjennom et vakuum.
Programvare råtner hvis den ikke brukes.

Disse er store mysterier.

5.2

En leder spurte en programmerer hvor lang tid det ville ta ham til å fullføre
program hvor han jobbet. "Det vil bli ferdig i morgen," den
programmerer straks svarte.

"Jeg tror du blir urealistisk," sa manageren, "Sannferdig, hvordan
lang tid vil det ta? "

Programmereren tenkte et øyeblikk. "Jeg har noen funksjoner som jeg ønsker å
legge til. Dette vil ta minst to uker, "han endelig sa.

"Selv det er for mye å forvente," insisterte sjefen, "jeg vil være
fornøyd hvis du bare fortelle meg når programmet er ferdig. "

Programmereren samtykket til dette.

Flere år senere, pensjonert leder. På vei til sin avgang
lunsj, oppdaget han programmerer sov ved terminal hans. Han hadde vært
programmering hele natten.

5.3

En nybegynner programmerer gang ble tildelt kode en enkel økonomisk pakke.

Nybegynneren jobbet iherdig i mange dager, men når hans herre anmeldt
hans program, oppdaget han at den inneholdt en skjerm editor, et sett av
generalisert grafikk rutiner, en kunstig intelligens grensesnitt, men
ikke den minste omtale av noe økonomisk.

Når herren spurte om dette, ble nybegynner indignert. "Ikke vær
så utålmodig, "sa han,« jeg skal putte i den økonomiske ting til slutt. "

5.4

Har forsømme en god bonde en avling han har plantet?
Har overse en god lærer selv den mest ydmyke student?
Tillater en god far en enkelt barn å sulte?
Ikke nekte en god programmerer for å opprettholde sin kode?

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

Book 6 - Ledelse

Dermed talte mesteren programmerer:

«La de programmerere være mange og lederne få - da vil alt være
produktiv. "

6.1

Når ledere holder endeløse møter, programmerere skriver spillene. Når
regnskapsførere snakke om kvartalsvise overskudd, er utviklingen budsjettet i ferd med å
bli kuttet. Når senior forskere snakker blå himmel, skyene er i ferd med å rulle
i.

Sannelig, dette er ikke Tao of Programming.

Når ledere gjør forpliktelser, er spillet programmer ignoreres. Når
gjøre regnskapsførere langtrekkende planer, harmoni og orden er i ferd med å bli
gjenopprettet. Når seniorforskere adressere problemene i hånden, den
problemer vil snart bli løst.

Sannelig, dette er Tao of Programming.

6.2

Hvorfor er programmerere ikke-produktiv?
Fordi deres tid er bortkastet i møter.

Hvorfor er programmerere opprørske?
Fordi ledelsen griper for mye.

Hvorfor er programmerere fratredende en etter en?
Fordi de er utbrent.

Etter å ha jobbet for dårlig ledelse, de ikke lenger verdi jobbene sine.

6.3

En leder var i ferd med å bli sparket, men en programmerer som jobbet for ham
oppfunnet et nytt program som ble populær og solgte godt. Som et resultat av
leder beholdt jobben sin.

Lederen forsøkte å gi programmereren en bonus, men programmereren
nektet det og sa: «Jeg skrev programmet fordi jeg trodde det var en
interessant konsept, og dermed jeg forventer ingen lønn. "

Lederen etter å ha hørt dette bemerket, "Dette programmerer, selv om han holder
en posisjon liten aktelse, forstår godt riktig plikt en
ansatt. La oss fremme ham til opphøyde posisjon ledelse
konsulent! "

Men da fortalte dette, programmerer gang nektet og sa: "jeg eksisterer så
at jeg kan programmere. Hvis jeg ble forfremmet, ville jeg ikke gjøre noe, men avfall
alles tid. Kan jeg gå nå? Jeg har et program som jeg jobber med. "

6.4

En leder gikk til sine programmerere og fortalte dem: "Når det gjelder ditt arbeid
timer: du er nødt til å komme inn på ni om morgenen og la
klokken fem på ettermiddagen. "På dette, ble alle av dem sinte og flere
trakk på stedet.

Så leder sa: "All right, i så fall kan du sette ditt eget
arbeidstid, så lenge du er ferdig med prosjekter på planen. "The
programmerere, nå fornøyd, begynte å komme inn på middag og jobbe til wee
timer av formiddagen.

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

Bok 7 - Corporate Wisdom

Dermed talte mesteren programmerer:

"Du kan vise et program for en konsernledelsen, men du kan ikke
gjøre ham datakyndige. "

7.1

En nybegynner spurte mesteren: "I øst er det et stort tre-struktur
at menn kaller `Selskapets hovedkontor '. Det er oppsvulmet ut av form med
visepresidenter og regnskapsførere. Det sender ut et mangfold av notater, hver
sa `Go, derfor! eller `Go, hit! ' og ingen vet hva som menes. Hver
år nye navn blir satt på grenene, men alt til ingen nytte. Hvordan kan
en slik unaturlig enhet være? "

Mesteren svarte: "Du oppfatter dette enorme struktur og er
forstyrret at det har ingen rasjonell hensikt. Kan du ikke ta underholdning fra
sine endeløse gyrations? Har du ikke nyte ubekymrede enkel programmering
under sine ly grenene? Hvorfor er du plaget av sin
ubrukelighet? "

7.2

I øst er det en hai som er større enn all annen fisk. Den
endres til en fugl som vingene er som skyer fyller himmelen. Når dette
fugl beveger seg over landet, bringer det en melding fra Corporate
Hovedkvarter. Denne meldingen den faller i midten av programmerere,
som en måke gjør sitt preg på stranden. Da fuglen monteres på
vind, og med den blå himmelen på ryggen, vender hjem.

De uerfarne programmerer stirrer rart på fuglen, for han forstår det
ikke. Den gjennomsnittlige programmerer dreadlocks kommer av fuglen, for han frykter
sitt budskap. Mesteren programmerer fortsetter å jobbe på terminal hans, for
han vet ikke at fuglen har kommet og gått.

7.3

The Magician av Ivory Tower brakte hans siste oppfinnelse for
Master programmerer å undersøke. Magikeren trillet en stor svart boks inn
mesterens kontor mens herren ventet i stillhet.

"Dette er en integrert, distribuert, generell arbeidsstasjon," begynte
magikeren, "ergonomisk utformet med et proprietært operativsystem
system, sjette generasjons språk, og flere state of the art brukeren
grensesnitt. Det tok mine assistenter flere hundre årsverk for å konstruere.
Er det ikke fantastisk? "

Mesteren hevet øyenbrynene litt. "Det er virkelig utrolig," han
sa.

"Corporate Headquarters har befalt," fortsatte magikeren, "at
alle til å bruke denne arbeidsstasjonen som en plattform for nye programmer. Er du enig
til dette? "

"Selvsagt" svarte mesteren, "Jeg vil ha det fraktet til
datasenter straks! "Og magikeren tilbake til tårnet hans, godt
fornøyd.

Flere dager senere vandret en nybegynner inn på kontoret av master
programmerer og sa: "Jeg finner ikke oppføringen for mitt nye program. Gjør
du vet hvor det kan være? "

"Ja," svarte mesteren, "oppføringene er stablet på plattformen i
datasenteret. "

7.4

Mesteren programmerer flytter fra program til program uten frykt. Ingen
endring i ledelsen kan skade ham. Han vil ikke bli sparket, selv om
Prosjektet er kansellert. Hvorfor er dette? Han er fylt med Tao.

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

Bok 8 - Hardware og Software

Dermed talte mesteren programmerer:

"Uten vinden, ikke gresset ikke flytte. Uten programvare, er maskinvare
ubrukelig. "

8.1

En nybegynner spurte mesteren: "Jeg oppfatter at en datamaskin selskapet er mye
større enn alle andre. Det tårner over konkurrentene som en kjempe blant
dverger. Noen av dets avdelinger kan omfatte en hel bedrift. Hvorfor er
det slik? "

Mesteren svarte: «Hvorfor spør du om slike tåpelige spørsmål? At selskapet
er stor fordi det er stort. Hvis det bare gjort maskinvare, ville ingen kjøpe
det. Hvis det bare laget programvare, ville ingen bruke det. Hvis det bare opprettholdes
systemer, ville folk behandle den som en tjener. Men fordi den kombinerer alle
av disse tingene, folk tror det en av gudene! Ved å ikke søke å
strever, det seirer uten innsats. "

8.2

En mester programmerer passerte en nybegynner programmerer en dag. Mesteren bemerket
begynnerens opptatthet med en håndholdt datamaskin spillet. "Unnskyld meg,"
sa han, "kan jeg undersøke det?"

Nybegynneren boltet til oppmerksomhet og overlevert enheten til master. "Jeg
ser at enheten hevder å ha tre nivåer av lek: lett, middels, og
Hard, "sa mesteren. "Men hver slik enhet har et annet nivå av
spille, hvor enheten søker ikke å erobre den menneskelige, og heller ikke å bli erobret
av den menneskelige. "

"Be, stor mester," bønnfalt nybegynner, "Hvordan finner man dette
mystisk setting? "

Skipsføreren falt enheten i bakken og knuste den under føttene. Og
plutselig nybegynneren ble opplyst.

8.3

Det var en gang en programmerer som jobbet på mikroprosessorer. "Se på hvordan
velstående jeg er her, »sa han til en stormaskin programmerer som kom på besøk,
"Jeg har min egen operativsystem og filer lagringsenhet. Jeg trenger ikke å
dele mine ressurser med noen. Programvaren er selvstendig konsistent og
lett å bruke. Hvorfor tror du ikke slutte din nåværende jobb og bli med meg her? "

Stormaskin programmerer deretter begynte å beskrive sitt system til sin venn,
sier "stormaskin sitter som en gammel vismann meditere midt
av datasenteret. Dens harddisker ligge ende-til-ende som en stor hav av
maskiner. Programvaren er så mangefasettert som en diamant, og som convoluted
som en ur-jungel. Programmene, hver unik, gå gjennom systemet
som en rask-elv. Det er derfor jeg er fornøyd der jeg er. "

Microcomputer programmerer, etter å ha hørt dette, falt taus. Men de to
programmerere forble venner helt til slutten av sine dager.

8.4

Hardware møtte programvare på veien til Changtse. Programvare sa: "Du er
Yin og jeg er Yang. Hvis vi reiser sammen skal vi bli berømt og tjene
store pengesummer. "Og så er fastsatt sammen, tenker å erobre
verden.

I dag møtte de Firmware, som var kledd i fillete filler og humpet
langs støttet på en tornefull pinne. Firmware sa til dem: "The Tao ligger
utover Yin og Yang. Det er stille og stille som en dam av vann. Det gjør
ikke søke berømmelse, derfor ingen kjenner sin tilstedeværelse. Det søker ikke
formue, for det er fullstendig i seg selv. Den eksisterer utover plass og
tid. "

Programvare og maskinvare, skamfull, returnert til sine hjem.

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

Book 9 - Epilogue

Dermed talte mesteren programmerer:

"Det er tid for deg å gå."

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

Hvis du likte disse, kan du også liker å lese verre er bedre