Stora programmerare hitta enkla lösningar på komplexa problem

30 Juni 2009 av Prashant
Filed under: misc

Efter en lång tid kunde jag hitta källan till följande citat-

Junior programmerare skapa enkla lösningar på enkla problem. Senior programmerare skapa komplexa lösningar på komplexa problem. Stora programmerare hitta enkla lösningar på komplexa problem.

Det är från en essä som heter Beautiful Software av Charles Connell.

En annan favorit en av mina är Zen av Python -

Vacker är bättre än fult.
Explicit är bättre än implicit.
Enkelt är bättre än komplex.
Complex är bättre än komplicerat.
Flat är bättre än nästlade.
Glesa är bättre än tät.
Läsbarhet räknas.
Särskilda fall inte särskilt tillräckligt för att bryta mot reglerna.
Även praktiska slår renhet.
Fel ska aldrig gå tyst.
Inte uttryckligen tystas.
Mot bakgrund av tvetydighet vägrar frestelsen att gissa.
Det bör finnas en och företrädesvis endast en-uppenbart sätt att göra detta.
Även på det sättet kanske inte är självklart i början om du inte är holländska.
Nu är bättre än aldrig.
Även aldrig är ofta bättre än * höger * nu.
Om genomförandet är svårt att förklara, det är en dålig idé.
Om genomförandet är lätt att förklara, kan det vara en bra idé.
Namnutrymmen är en tutande bra idé - låt oss göra mer av dem!
-------------------------
och sedan finns det klassiker Tao of Programming

-

krediter som på den länkade webbplatsen-

Översatt av Geoffrey James

Kopierat av Duke Hillard

Sänds av Anupam Trivedi, Sajitha Tampi och Meghshyam Jagannath

Re-html-ized och redigerad av Kragen Sittler

-

Bok 1 - The Silent Void

Således talade befälhavaren programmeraren:

"När du har lärt sig att rycka felkoden från fällan ramen det
kommer att vara dags för dig att lämna. "

1,1

Något mystiskt bildas, född i den tysta tomrummet. Väntar ensam och
orörlig, är det på en gång ändå och ändå i ständig rörelse. Det är källan
av alla program. Jag vet inte dess namn, så jag kommer att kalla det Tao
Programmering.

Om Tao är bra, då operativsystemet är stor. Om operativsystemet
Systemet är bra, då kompilatorn är stor. Om kompilatorn är stor,
då ansökan är stor. Användaren är nöjd och det finns
harmoni i världen.

Tao of Programming flyter långt bort och avkastning på vinden på morgonen.

1,2

Tao födde maskinkod. Maskinkod födde
assembler.

Den assembler födde kompilatorn. Nu finns 10 tusen
språk.

Varje språk har sitt syfte, men ödmjuk. Varje språk uttrycker
Yin och Yang av programvara. Varje språk har sin plats i Tao.

Men inte programmet inte i COBOL om du kan undvika det.

1,3

I början var Tao. Tao födde tid och rum.
Därför tid och rum är Yin och Yang programmering.

Programmerare som inte förstå Tao är alltid ont om tid
och utrymme för sina program. Programmerare som förstå Tao alltid
har tillräckligt med tid och utrymme för att uppnå sina mål.

Hur skulle det kunna vara annorlunda?

1,4

Den vise Programmeraren berättas om Tao och följer den. Den genomsnittliga
programmeraren berättade om Tao och söker för det. Dåren programmeraren
berättas om Tao och skrattar åt det.

Om det inte vore för skratt, skulle det inte finnas någon Tao.

De högsta ljud är svårast att höra.
Framöver är ett sätt att dra sig tillbaka.
Stor talang visar sig sent i livet.
Även en perfekt program har fortfarande buggar.

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

Bok 2 - De gamla mästarna

Således talade befälhavaren programmeraren:

"Efter tre dagar utan programmering, blir livet meningslöst."

2,1

Programmerarna av gammal var mystisk och djup. Vi kan inte förstå
sina tankar, så allt vi gör är beskriver sitt utseende.

Aware, som en räv korsar vattnet. Ringer, som en allmän på
slagfält. Kind, som en värdinna hälsar sina gäster. Enkel, liksom
uncarved block av trä. Ogenomskinlig, som svarta pooler i mörka grottor.

Vem kan berätta hemligheter deras hjärtan och sinnen?

Svaret finns bara i Tao.

2,2

Grand Master Turing drömde en gång att han var en maskin. När han vaknade han
utbrast:

"Jag vet inte om jag Turing drömmer att jag är en maskin, eller en
Maskinen drömmer att jag Turing! "

2,3

En programmerare från ett mycket stort dataföretag gick till en programvara
konferens och återvände sedan rapportera till sin chef och sade: "Vad för slags
av programmerare arbetar för andra företag? De uppförde sig illa och var
obekymrade med framträdanden. Deras hår var långt och ovårdade och deras
kläder var skrynkliga och gamla. De kraschade vår gästfrihet suite och de
gjorde ohyfsade ljud under min presentation. "

Chefen sa: "Jag skulle aldrig ha skickat dig till konferensen. De
programmerare lever bortom den fysiska världen. De anser livet absurt, ett
oavsiktlig slump. De kommer och går utan att veta begränsningar.
Utan en vård de lever bara för sina program. Varför skulle de bry sig
med sociala konventioner?

"De lever i Tao."

2,4

En novis frågade Mästaren: "Här är en programmerare som aldrig designar,
dokument eller tester sina program. Men alla som känner honom ser honom som en av
bästa programmerare i världen. Varför är det här? "

Mästaren svarar: "Det programmeraren har bemästrat Tao. Han har gått
bortom behovet av design, att han inte blir arg när systemet
krascher accepterar men universum utan oro. Han har gått längre än
behovet av dokumentation, han inte längre bryr sig om någon annan ser sin kod.
Han har gått längre än det behövs för testning, vart och ett av hans program är perfekt
inom sig själva, fridfull och elegant, deras syfte självklart. Sannerligen,
Han har gått mysterium Tao. "

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

Boka 3 - Design

Således talade befälhavaren programmeraren:

"När programmet testas, är det för sent att göra design
förändringar. "

3,1

Det var en gång en man som gick till en dator mässa. Varje dag som han
in, berättade mannen vakten vid dörren:

"Jag är en stor tjuv, känd för mina bedrifter för snatteri. Var
förvarnad, skall för denna handel visar inte fly unplundered. "

Detta tal störde vakten mycket, eftersom det fanns miljoner
dollar i datorutrustning inne, så han såg mannen noggrant. Men
Mannen vandrade bara från monter till monter, nynna tyst för sig själv.

När mannen lämnade tog vakten honom åt sidan och sökte sina kläder, men
ingenting var att finna.

På nästa dag mässan, återvände mannen och bannade vakten
säger: "Jag flydde med en stor byte igår, men idag kommer att bli ännu
bättre. "Så vakten såg honom allt närmare, men till ingen nytta.

På den sista dagen av mässan kunde vakten hålla hans nyfikenhet
inte längre. "Sir Thief", sade han, "jag är så förbryllad, jag kan inte leva i
fred. Vänligen upplysa mig. Vad är det som ni stjäla? "

Mannen log. "Jag stjäla idéer", sade han.

3,2

Det en gång var en mästare programmerare som skrev ostrukturerade program. En
nybörjare programmerare, i syfte att imitera honom, började också skriva
ostrukturerade program. När nybörjare bad befälhavaren att utvärdera sin
framsteg, kritiserade befälhavaren honom för att skriva ostrukturerade program,
säger, "vad som är lämpligt för befälhavaren inte är lämplig för
nybörjare. Du måste förstå Tao innan överskrider struktur. "

3,3

Det var en gång en programmerare som fästes till domstolen i krigsherren
Wu. Krigsherren frågade programmeraren: "Vilket är lättare att utforma: en
redovisning paket eller ett operativsystem? "

"Ett operativsystem", svarade programmerare.

Krigsherren uttalade ett utrop av misstro. "Säkerligen en redovisning
Paketet är trivialt intill komplexiteten i ett operativsystem ", säger han
sa.

"Inte så", sade programmeraren "när man utformar en redovisning paket,
programmeraren fungerar som medlare mellan människor med olika
idéer: hur det måste fungera, hur dess rapporter skall visas, och hur det ska
överensstämma med skattelagstiftningen. Däremot är ett operativsystem inte begränsat
av externa framträdanden. Vid utformning av ett operativsystem, programmeraren
söker enklaste harmoni mellan maskin och idéer. Det är därför ett
operativsystem är lättare att konstruera. "

Krigsherren Wu nickade och log. "Det är allt gott och väl, men
som är lättare att felsöka? "

Programmeraren svarade inte.

3,4

En chef gick till befälhavaren programmerare och visade honom de krav
dokument för en ny ansökan. Chefen frågade Mästaren: "Hur länge
kommer det att ta att utforma detta system om jag tilldelar fem programmerare till det? "

"Det kommer att ta ett år", sade befälhavaren snabbt.

"Men vi behöver detta system omedelbart eller ens tidigare! Hur lång tid tar det
ta om jag tilldela tio programmerare till det? "

Befälhavaren programmerare rynkade pannan. "I så fall kommer det att ta två år."

"Och om jag tilldelar hundra programmerare till det?"

Befälhavaren programmerare ryckte på axlarna. "Då designen kommer aldrig att bli
klar ", sade han.

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

Bok 4 - Kodning

Således talade befälhavaren programmeraren:

"En välskriven programmet är dess egen himmel, en dåligt skriven programmet är
sin egen helvetet. "

4,1

Ett program ska vara lätt och smidig, dess subrutiner ansluten som en
pärlband. Andan och avsikten med programmet bör behållas
överallt. Det bör varken vara för lite eller för mycket, varken
onödiga loopar eller meningslösa variabler, ingen brist på struktur eller
överväldigande styvhet.

Ett program bör följa det så kallade lagen om minst Häpnad ". Vad är detta lag?
Det är helt enkelt att programmet alltid ska svara på användaren i vägen
att förvånar honom minst.

Ett program, oavsett hur komplicerad, bör fungera som en enda enhet. Programmet
bör ledas av logiken inom snarare än av yttre utseenden.

Om programmet inte i dessa krav kommer det vara i ett tillstånd av
oordning och förvirring. Det enda sättet att rätta till detta är att skriva om
programmet.

4,2

En novis frågade Mästaren: "Jag har ett program som någon gång driver och
ibland avbryter. Jag har följt reglerna för programmering, men jag
helt bafflad. Vad är orsaken till detta? "

Befälhavaren svarade: "du är förvirrad eftersom du inte förstår Tao.
Endast en dåre förväntar rationellt beteende från sina medmänniskor. Varför tror du
förväntar sig det från en maskin som människan har konstruerat? Datorer simulera
determinism, endast Tao är perfekt.

"Reglerna för programmering är övergående, bara Tao är evig. Därför
du måste fundera Tao innan du får upplysning. "

"Men hur vet jag när jag har fått upplysning?" Frågade
nybörjare.

"Ditt program kommer då att fungera", svarade mästaren.

4,3

En mästare har förklarar vilken typ av Tao av ​​att en av hans noviser. "The
Tao är inbakat i alla program - oavsett hur obetydlig ", säger
befälhavaren.

"Är Tao i en handhållen miniräknare?" Frågade nybörjare.

"Det är" kom svaret.

"Är Tao i ett spel?", Fortsatte nybörjare.

"Det är ännu i ett spel", sa mästaren.

"Och är Tao i DOS för en dator?"

Befälhavaren hostade och skiftade sin position något. "Lärdomen är över
för idag ", sade han.

4,4

Prins Wangs programmerare var kodning programvara. Hans fingrar dansade på
tangentbord. Programmet kompileras utan ett felmeddelande och programmet
sprang som en mild vind.

"Excellent!" Prinsen utropade: "Din teknik är felfri!"

"Teknik", sade programmeraren vända från sin terminal "Vad jag
följer är Tao - över alla tekniker! När jag först började att programmera I
skulle se framför mig hela problemet i ett massa. Efter tre år har jag inga
längre tid såg denna massa. Istället använde jag subrutiner. Men nu ser jag ingenting.
Hela min varelse existerar i en formlös tomrum. Mina sinnen är i viloläge. Min ande,
fri att arbeta utan plan, följer sin egen instinkt. Kort sagt, mitt program
skriver självt. Sant, ibland finns det svåra problem. Jag ser dem
kommer jag sakta ner, titta jag tyst. Då ska jag ändra en enda rad kod
och de svårigheter försvinna som puffar för tomgång rök. Jag sammanställa sedan
programmet. Jag sitter stilla och låta glädjen av arbetet fylla min varelse. Jag avslutar min
ögon för en stund och sedan logga ut. "

Prince Wang sade: "Skulle att alla mina programmerare var klok!"

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

Bok 5 - Underhåll

Således talade befälhavaren programmeraren:

"Även om ett program, men tre rader lång dag kommer det att vara
bibehålls. "

5,1

En väl använt dörren behöver ingen olja på sina gångjärn.
En snabb-flödande strömmen växer inte stillastående.
Varken ljud eller tankar kan färdas genom ett vakuum.
Mjukvara ruttnar om den inte används.

Dessa är stora mysterier.

5,2

En chef frågade en programmerare hur lång tid det skulle ta honom för att avsluta
program där han arbetade. "Det kommer att vara färdig i morgon," den
programmeraren svarade omgående.

"Jag tror att du är orealistiskt", sade chefen: "Sanningsenligt, hur
lång tid tar det? "

Programmeraren tänkte efter en stund. "Jag har några funktioner som jag vill
tillägga. Detta kommer att ta minst två veckor ", sade han till slut.

"Även det är för mycket att förvänta sig", insisterade chef, "jag kommer att vara
nöjd om du bara tala om för mig när programmet är klar. "

Programmeraren gick med på detta.

Flera år senare drog chefen. På väg till sin pensionering
lunch, upptäckte han programmeraren sover på sin terminal. Han hade varit
programmering hela natten.

5,3

En novis programmerare var en gång tilldelats koda ett enkelt ekonomiskt paket.

Nybörjare arbetade ursinnigt för många dagar, men när hans herre omdömet
sitt program, upptäckte han att den innehöll en textredigeraren, en uppsättning
generaliserad grafik rutiner, en artificiell intelligens gränssnitt, men
inte den minsta omnämnandet av något ekonomiskt.

När befälhavaren frågade om detta, blev nybörjare upprörd. "Var inte
så otålig, "sade han," Jag lägger i det finansiella grejer så småningom. "

5,4

Struntar en bra bonde en gröda han har planterat?
Har utsikt över en bra lärare även de mest ödmjuka student?
Tillåter en bra pappa ett barn att svälta?
Vägrar en bra programmerare för att behålla sin kod?

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

Bok 6 - Ledning

Således talade befälhavaren programmeraren:

"Låt programmerare är många och de chefer få - då alla kommer att
produktiv. "

6,1

När chefer håller ändlösa möten, programmerare skriver spel. När
revisorer talar om kvartalsvisa vinster, är utvecklingen budget på väg att
skall skäras. När seniora forskare talar blå himmel, molnen är på väg att rulla
i.

Sannerligen, detta är inte Tao of Programming.

När chefer gör åtaganden är spelprogram ignoreras. När
revisorer att göra långsiktiga planer, harmoni och ordning håller på att bli
återställas. När seniora forskare itu med de problemen på sidan
problem kommer snart att lösas.

Sannerligen, detta är Tao of Programming.

6,2

Varför är programmerare icke-produktiva?
Eftersom deras tid slösas på möten.

Varför är programmerare upproriska?
Eftersom ledningen stör för mycket.

Varför är programmerare avgå en efter en?
Eftersom de är utbränd.

Efter att ha arbetat för dålig förvaltning, att de inte längre värdera sina jobb.

6,3

En chef var på väg att avfyras, men en programmerare som arbetade för honom
uppfann ett nytt program som blev populära och sålde bra. Som ett resultat av detta
manager behöll sitt jobb.

Chefen försökte ge programmeraren en bonus, men programmeraren
vägrade den sade: "Jag skrev programmet eftersom jag trodde att det var en
intressant koncept, och därför förväntar jag mig ingen belöning. "

Chefen över denna anmärkte, "Detta programmerare, även om han har
en position av små självkänsla, förstår väl rätt skyldighet en
anställd. Låt oss verka honom till den upphöjda positionen för ledningen
konsult! "

Men när höra detta, programmeraren gång vägrade och sade: "Jag existerar så
som jag kan programmera. Om jag skulle främjas, skulle jag göra något annat än avfall
allas tid. Kan jag gå nu? Jag har ett program som jag arbetar på. "

6,4

En chef gick till hans programmerare och sade till dem: "När det gäller ditt arbete
timmar: du kommer att få komma in klockan nio på morgonen och lämna
klockan fem på eftermiddagen. "På detta blev alla av dem arga och flera
avgick på plats.

Så chefen sa: "Okej, i så fall kan du ställa in din egen
arbetstid, så länge du är klar med dina projekt i tid. "The
programmerare, nu nöjd, började komma in vid middagstid och arbeta till wee
timmar på morgonen.

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

Boka 7 - Corporate Wisdom

Således talade befälhavaren programmeraren:

"Du kan visa ett program för en företagsledare, men du kan inte
göra honom datorer. "

7,1

En novis frågade mästaren: "I öster finns ett stort träd-struktur
att män kallar `Corporate Headquarters. Det är uppblåst ur form med
vice ordförande och revisorer. Det ger ut en mängd PM, var
säger `Go, därav! eller `Go, hit!" och ingen vet vad som menas. Varje
år nya namn sätts på grenarna, men alla till ingen nytta. Hur kan
en sådan onaturlig enhet vara? "

Befälhavaren svarade: "Du ser denna enorma struktur och är
störd att det inte har någon rationell syfte. Kan du inte ta nöjesparken från
dess oändliga piruetter? Tycker du inte obesvärad enkel programmering
under dess skyddande grenar? Varför är du besväras av dess
värdelöshet? "

7,2

I öster finns en haj som är större än alla andra fiskar. Den
ändras till en fågel vars vingar är som moln fyller himlen. När denna
fågel rör sig över landet, innebär det ett meddelande från Corporate
Högkvarter. Detta meddelande det droppar in mitt i programmerare,
som en fiskmås gör sin prägel på stranden. Därefter fågeln monteras på
vind och med den blå himlen i ryggen, återvänder hem.

De oerfarna programmerare stirrar undrande på fågeln, för han förstår det
inte. Den genomsnittliga Programmeraren fruktar det kommande av fågeln, för han fruktar
dess budskap. Befälhavaren programmeraren fortsätter att arbeta på sin terminal för
Han vet inte att fågeln har kommit och gått.

7,3

The Magician av Ivory Tower tog sin senaste uppfinning för
Master programmerare för att undersöka. Magikern hjul en stor svart låda i
befälhavarens kontoret medan befälhavaren väntade under tystnad.

"Detta är en integrerad, distribuerad, allmänt ändamål arbetsplats", inledde
trollkarlen, "ergonomiskt utformad med en egen operativ
system, sjätte språk generation, och flera state of the art användarens
gränssnitt. Det tog mina assistenter flera hundra manår att konstruera.
Är det inte fantastiskt? "

Befälhavaren höjde på ögonbrynen en aning. "Det är verkligen fantastiskt", säger han
sa.

"Huvudkontor har befallt", fortsatte trollkarlen, "att
alla att använda den här arbetsstationen som en plattform för nya program. Håller ni
detta? "

"Visst", svarade mästaren, "jag kommer att få det transporteras till
datacenter omedelbart! "Och trollkarlen tillbaka till sitt torn, väl
nöjd.

Flera dagar senare vandrade en novis in på kontoret av befälhavaren
programmerare och sade: "Jag kan inte hitta noteringen för mitt nya program. Do
du vet var det kan vara? "

"Ja", svarade mästaren, "är i listorna staplas på plattformen
datacentret. "

7,4

Befälhavaren Programmeraren går från program till program utan rädsla. Ingen
förändring i ledningen kan skada honom. Han kommer inte att avfyras, även om
Projektet avbryts. Varför är det här? Han är fylld med Tao.

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

Boka 8 - Hårdvara och programvara

Således talade befälhavaren programmeraren:

"Utan vinden, rör sig gräs ej. Utan programvara är hård
oanvändbar. "

8,1

En novis frågade mästaren: "Jag märker att en dataföretag är mycket
större än alla andra. Det står över sin konkurrens som en jätte bland
dvärgar. Någon av dess avdelningar skulle kunna bestå av en hel verksamhet. Varför är
det så? "

Befälhavaren svarade: "Varför frågar du så dumma frågor? Detta bolag
är stort, eftersom det är stor. Om det bara gjort hårdvara, skulle ingen köpa
den. Om det bara gjort programvara, skulle ingen använda den. Om det endast upprätthållas
system skulle folk behandla det som en tjänare. Men eftersom den kombinerar alla
av dessa saker, folk tror att det en av gudarna! Genom att inte försöka
strävar, det segrar utan ansträngning. "

8,2

En master programmerare passerat en nybörjare programmerare en dag. Befälhavaren noterade
motpartens upptagenhet med en handhållen dator spel. "Ursäkta mig"
sade han, "kan jag behandla det?"

Nybörjare bultas fast uppmärksamhet och räckte enheten till master. "Jag
se att enheten påstår sig ha tre nivåer av spel: Lätt, Medium och
Hard ", sade befälhavaren. "Men varje sådan anordning har en annan nivå
spelar, om produkten är inte att erövra människa, eller att bli erövrad
av den humana ".

"Be, store mästare", bad novisen, "Hur hittar en här
mystiska inställning? "

Befälhavaren tappade enheten till marken och krossade den under fötterna. Och
plötsligt nybörjare var upplyst.

8,3

Det var en gång en programmerare som har arbetat på mikroprocessorer. "Titta på hur
välbärgade jag är här ", sa han till en stordator programmerare som kom på besök,
"Jag har min egen operativsystem och fil lagringsenhet. Jag behöver inte
dela mina resurser med någon. Mjukvaran är fristående och
enkel att använda. Varför sluta du inte ditt nuvarande jobb och gå med mig här? "

Stordatorn programmerare började sedan att beskriva sitt system till sin vän,
säger "stordatorn sitter som en gammal vis man mediterar i mitt
av datacentret. Dess hårddiskar ligger end-to-end som en stor ocean av
maskiner. Programvaran är lika mångfasetterad som en diamant, och som invecklad
som en ursprunglig djungel. Programmen, varje unik, flytta genom systemet
som en snabb strömmande flod. Det är därför jag är glad där jag är. "

Mikrodatorn programmerare, när han hörde detta, tystnade. Men de två
programmerare var vänner fram till slutet av sina dagar.

8,4

Hårdvara träffade programvara på vägen till Changtse. Programvara sade: "Du är
Yin och jag är Yang. Om vi ​​reser tillsammans kommer vi att bli berömd och tjäna
stora summor pengar. "Och så som anges tillsammans, tänka att erövra
världen.

För närvarande de mötte Firmware, som var klädd i trasiga trasor och linkade
längs stödd på en taggig pinne. Firmware sade till dem: "Den Tao ligger
bortom Yin och Yang. Det är tyst och stilla som en pool av vatten. Det gör
inte söka berömmelse, alltså ingen vet dess närvaro. Det syftar inte
förmögenhet, för det är fullständig inom sig själv. Den finns bortom rum och
tid. "

Mjukvara och hårdvara, skäms, återvände till sina hem.

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

Bok 9 - Epilog

Således talade befälhavaren programmeraren:

"Det är dags för dig att lämna."

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

Om du gillade detta, kan du också vilja läsa värre är bättre

Kommentarer

  • H_tere2000

    Great stuff!

    Någon programmering visdom?

    Vänligen skickade den till mig på h_tere2000 at yahoo dot com. Jag uppskattar det.

    Tack.

blogg kommentarer drivs av Disqus