asm32.info
Keep it simple — code in asm

Даото на програмирането

Тук са събрани някои много мъдри притчи на тема програмиране. Внимателното им четене и медитацията върху тях помагат за подобряването на програмистките възможности и за създаването на велики програми.

Не знам кой е авторът или авторите на тези притчи. Аз лично ги намерих на Руски и ги преведох на Български.

Приятно четене.


Веднъж началник попитал програмист, колко време му трябва, за да завърши програмата, върху която работи в момента.

- Ще завърша утре! - веднага отговорил програмиста.

- Мисля, че това не е реалистично, - казал началника. - Честно кажете, колко време ще отнеме?

Програмистът помислил малко и казал:

- Ами всъщност иска ми се да добавя още някои възможности и да изчистя малко кода. Според мене ще ми трябват поне две седмици.

- Ако трябва ще чакам - настоявал началникът - Просто искам да ми кажете когато сте готов.

- Да, разбира се! - казал програмиста.

След няколко години, началникът напуснал работа. Когато отивал на своя прощален обяд, той видял, че програмиста е заспал с глава на клавиатурата. Бил програмирал цяла нощ.


Един началник бил пред уволнение, но програмист, който работел за него написал програма, която станала популярна и се продавала добре. В резултат от това, началника си запазил мястото.

За благодарност началника предложил на програмиста да му даде премия, но програмиста отказал с думите:

- Написах програмата, защото си помислих, че това ще бъде интересна концепция и затова не се нуждая от награда.

Като чул това, началника си казал: "Този програмист, макар и на ниска длъжност, добре разбира задълженията си. Ще го повишим до по-висока длъжност - консултант по мениджмента."

Но когато го предложил, програмиста отказал отново с думите:

- Аз съществувам, защото програмирам. Ако ме повишите, няма да правя нищо, а само ще отнемам времето на хората. Мога ли да си вървя? Пиша сега една програма.


Началник отишъл при подчинените му програмисти и им казал:

- Като се имат предвид отработените от вас часове, вече можете да идвате на работа в девет сутринта и да си тръгвате в пет вечерта.

Програмистите много се ядосали и някои от тях веднага поискали да напуснат.

И тогава началникът казал:

- Добре, в такъв случай, можете сами да си сложите работното време. Само проектите трябва да са готови в срок.

Програмистите си тръгнали доволни и започнали да идват по обяд и да работят до сутринта.


Един началник отишъл при майстор програмист и му показал спецификацията на нова програма. Началникът попита майстора:

- Колко време ще отнеме създаването на тази система ако дам този проект на петима програмисти?

- За тая работа ще отиде една година - веднага казал майсторът.

- Но тази система ни трябва веднага или колкото се може по-рано! Колко време ще трябва, ако ангажирам десет програмиста?

Майсторът се намръщил леко:

- В такъв случай ще трябват две години.

- Ами ако поръчам това на сто програмиста?

Майсторът повдигнал рамене:

- Тогава проекта никога няма да бъде завършен - казал той.


Майстор програмист инспектирал нов програмист. Един път майсторът видял, че новака увлечено играе на джобна електронна игра.

- Извинете ме, - казал той - може ли да погледна?

Новакът се откъснал от играта и я подал на майсторът.

- Виждам, че това устройство предлага три нива на игра: Лесен, Среден и Сложен, - казал майсторът. - И освен това всяко такова устройство има допълнително ниво на играта, когато играта не може да победи човека, но и не позволява на човека да я победи.

- Моля Ви, велики майсторе! - промълвил начинаещият. - Как да намеря тези тайни настройки?

Майсторът хвърлил играта на пода и я стъпкал с крака.

Внезапно новакът получил просветление.


Майстор обяснявал природата на Дао на един от новаците.

- Дао е въплътено във всяко програмно осигуряване - независимо от привидната му маловажност! - казал майсторът.

- Има ли Дао в джобният калкулатор? - попитал начинаещият.

- Да! - последвал отговорът.

- Има ли Дао в игрите? - продължавал новакът.

- Него го има дори и в игрите, - казал майсторът.

- А има ли Дао в WindowsXP?

Майсторът се закашлял и меко променил позицията си:

- За днес урокът привърши - казал той.


Новак попитал своят Гуру:

- Видях един програмист, който никога не оформя, не тества и не документира програмите си. Но всички които го познават, смятат че той е един от най-добрите програмисти в света. Как става така?

Гуруто казал:

- Този програмист е овладял Дао. Той не се нуждае повече от оформяне; той не се ядосва, когато системата увисва, но приема мирозданието без раздразнение. Той отдавна не се нуждае от документация; той повече не се притеснява, че някой може да види кода му. Той повече не се нуждае от тестване; всяка негова програма е съвършенна сама по себе си, ясна и елегантна, предназначението и е очевидно. Той наистина е проникнал в тайните на Дао!


Новак попитал Майстор програмист:

- Аз написах програма, която понякога работи, а понякога гърми. Следвах всички правила за програмиране и сега съм в задънена улица. Каква е причината за това?

Майсторът отвърнал:

- Ти си се объркал, защото не разбрираш Дао. Само глупакът очаква разумно поведение от събратята си - хората. А защо ти го очакваш от машината, която е конструирана от хора? Компютрите моделират детерминизъм, само Дао е съвършенно. Правилата за програмиране са преходни, само Дао е вечно. Следователно ти трябва да съзерцаваш Дао дотогава, докато не получиш просветление.

- Но как да разбера, че съм получил просветление? - попитал новакът.

- Тогава, програмата ти ще работи правилно,- отговорил майсторът.


Новак попитал майстор програмист:

- Забелязах, че една от компютърните корпорации е доста по-голяма от всички останали. Тя се възвишава над конкурентите си, като великан над джуджета. Всеки неин отдел обхваща цял отрасъл. Защо е така?

Майсторът отвърнал:

- Защо задаваш тъпи въпроси? Тази корпорация е толкова голяма, защото не може да бъде друга. Ако произвеждаше само компютри, никой нямаше да ги купува. Ако разработваше само софтуер, хората щяха да я възприемат като слуга. Но тъй като тя съчетава и двете неща, хората мислят, че те са богове! И без да полага усилия, тя лесно побеждава.


Новак попитал майстор:

- На изток има огромна дървовидна структура, която хората наричат "Щаб-квартира на корпорацията". Тя нарушава формата си с вице президенти и счетоводители. Постоянно пуска множество указания, всяко от които казва: "Върви натам!" или "Ела насам!" и никой не знае какво значи това. Всяка година на клоните и се появяват нови имена и винаги без всякаква полза. Как може такава неестествена същност да съществува?

Майсторът отговорил:

- Ти си видял тази необятна структура и си обезпокоен то това, че тя няма рационално предназначение. Нима не те забавлява безкрайното и въртене? Нима не се наслаждаваш на непомрачената от проблеми лекота, с която се програмира, под нейните даващи приют клони? Защо те дразни нейната безполезност?


Веднъж, на начинаещ програмист поръчали да напише код за прост финансов пакет. Начинаещият работил неистово в продължение на много дни, но когато майсторът прегледал програмата, той открил, че тя съдържа екранен редактор, набор от обобщени графични подпрограми и интерфейс с изкуствен интелект, но няма нищо подобно на финансови разчети.

Когато попитал за това, новакът възнегодувал:

- Не бъдете толкова нетърпелив - казал той - Ще добавя финансовите разчети в окончателната версия.


Програмата трябва да е лека и грациозна, подпрограмите и съединени като наниз перли. Духът и предназначението на програмата трябва да са кристално ясни. Тя не трябва да е нито много голяма, нито много малка, без никакви безполезни цикли или неизползвани променливи, да не и липсва структурност, но и да не е излишно твърда.

Програмата трябва да следва "Законът за най-малкото учудване". Що за закон е това? Това е просто, когато програмата реагира на потребителя по начин, който го учудва най-малко.

Програмата, независимо колко е сложна, трябва да действа като едно цяло. Програмата трябва да се управлява от вътрешната си логика повече, отколкото от външните обстоятелства.

Ако програмата не удовлетворява тези условия, тя ще бъде в състояние на дисонанс и объркване. Единственият начин да се поправи това е, програмата да се пренапише на чисто.


Програмист от много голяма компютърна фирма, заминал на софтуерна конференция. Когато се върнал, отчитайки се пред началника си казал:

- Какви са тези програмисти, които работят в другите фирми!? Имат лоши маниери и не се притесняват за външността си. Косите им са дълги и рошави, дрехите им са измачкани и стари. Те устроиха погром в гостоприемните стаи на хотела и невъзпитано шумяха по време на моят доклад.

Началникът казал:

- Повече никога няма да те пратя на тази конференция. Тези програмисти живеят извън пределите на материалният свят. Те смятат живота за абсурдна, нелепа случайност. Те пристигат и си тръгват без да признават граници. Без грижи, те живеят само за своите програми. Защо им трябва да се придържат към обществените традиции? Те живеят с Дао.


Често използваната врата не се нуждае от смазване.

Бързо течащият поток не ще се превърне в блато.

Нито звуците, нито мислите преминават през вакуум.

Ако програмата не се използва, тя гние.

Това са велики тайни.


Може ли селянинът да пренебрегне посевите, които е отгледал?

Може ли учителят да не забележи дори най-скромният си ученик?

Може ли добрият баща да позволи да гладува детето му?

Може ли добрият програмист да откаже да поддържа своя код?


На великият майстор Тюринг, веднъж му се присънило, че е машина. Когато се събудил, той възкликнал:

- Не зная дали аз съм Тюринг, на когото се е присънило, че е машина, или съм машина на която се е присънило, че е Тюринг!


Срещнали се Желязото и Програмата на пътя за Чанг Це. Програмата казала:

- Ти си Ин, а аз съм Ян. Ако пътешестваме заедно, ще станем знаменити и ще спечелим богатство.

И така двойката продължила нататък, мислейки как заедно ще завоюват света. И тук срещнали Фърмуер, който бил облечен в изпокъсани парцали и куцал покрай пътя, подпирайки се на чепата тояга. Фърмуер им казал:

- Дао лежи извън Ин и Ян. То е тихо и спокойно като езеро. То не търси слава, затова никой не усеща присъствието му. То не търси успех, защото си е самодостатъчно. То съществува извън пространството и времето.

Желязото и Програмата засрамени се върнали по домовете си.


Ако присъствието на Дао е голямо, тогава и операционната система е добра. Ако операционната система е добра, то и компилатора е добър. Ако компилатора е добър, тогава и приложенията са добри. Ако приложенията са добри, тогава потребителят е доволен и в света цари хармония.

Дао роди машинният език. Машинният език роди асемблера. Асемблера роди компилатора. Сега има десет хиляди езика.

Всеки език си има своето предназначение, понякога скромно. Всеки език изразява Ин и Ян на програмното осигуряване. Всеки език има своето място в Дао.

Не не програмирайте на VB, ако можете да го избегнете.


В началото беше Дао. Дао роди Пространството и Времето. След това, Пространството и Времето станаха Ин и Ян на програмирането.

На програмистите, които не приемат Дао, никога не им стига времето и мястото за техните програми. На програмистите, които приемат Дао, винаги им стига времето и мястото за да постигнат целите си.

Нима може да е различно?


На изток имало акула, която била по-голяма от всички останали риби.

Тя се превърнала в птица, чийто криле, като облаци закрили небето.

Когато тази птица пресичала земята, тя носела съобщение от Щаб-квартирата на корпорацията. Тя оставяла това съобщение до езерото на програмите както чайка оставя следи на плажа. След това тя се въздигала по вятъра и като оставяла синьо небе след себе си, се връщала у дома.

Новакът програмист с удивление гледа прицата, защото не разбира какво означава това.

Средният програмист се страхува от идването на птицата, защото го плаши нейното съобщение.

Майсторът програмист продължава да си работи на терминала, защото не е забелязал нито идването, нито заминаването на птицата.


Един от програмистите на Прайс Ванг пишел програма. Пръстите му танцували над клавиатурата. Програмата се компилирала без съобщения за грешки и работела като нежен повей на вятъра.

- Прекрасно! - възкликнал Прайс. - Твоята техника е безпогрешна!

- Техника ли? - казал програмистът, обръщайки се от терминала. - Това, което аз следвам е Дао - извън всякакви техники. Когато започвах да програмирам, си представях цялата програма, като едно цяло. След три години, повече не виждах цялото. Вместо това започнах да използвам подпрограми. Но сега аз не виждам нищо. Целият съществувам в безформената пустота. Моите чувства бездействат. Духът ми е свободен и работи без план, подчинявайки се само на собствените си инстинкти. Накратко казано, моята програма се пише сама. Наистина, понякога възникват сложни проблеми. Аз виждам как се появяват, аз се спирам, аз наблюдавам. След това променям един ред от кода и сложностите изчезват, като кълбо дим. След това аз компилирам програмата. Стоя неподвижно и оставям радостта от работата да запълни битието ми. За миг затварям очи и се изключвам от системата.

Прайс Ванг казал:

- Ех, ако всичките ми програмисти бяха толкова мъдри!


Нещо тайнствено прие форма, роди се в пълната пустота. И съществува самотно и бездвижно, ту замирайки, ту намирайки се в постоянно движение.

Това е източникът на всички програми. Не зная името му и ще го наричам "Дао на програмирането".

Ако присъствието на Дао е голямо, тогава и операционната система е добра. Ако операционната система е добра, то и компилатора е добър. Ако компилатора е добър, тогава и приложенията са добри. Ако приложенията са добри, тогава потребитялят е доволен и в света цари хармония.

Даото на програмирането отплава в далечината и се завръща в утренният вятър.


Вълшебникът от Кулата от Слонова Кост донесе своето последно изобретение при майстора програмист за тест.

Вълшебникът домъкна голяма черна кутия в офиса на майстора, а майсторът го чакаше мълчаливо.

- Това е интегрирана, разпределена работна станция с общо предназначение - започна Вълшебника, - с ергономично вградена собствена операционна система, езици за програмиране от шесто поколение и много state-of-the-art потребителски интерфейси. За създаването и, моите помощници изразходваха няколко стотин човеко-години. Нима не е изумителна?

Майсторът малко повдигна вежди.

- Това наистина е изумително - каза той.

- От щаб-квартирата на корпорацията постъпи указание - продължи Вълшебникът - всеки трябва да използва тази система като платформа за новите си програми. Съгласен ли си с това?

- Разбира се - каза майсторът - Веднага ще я изпратя в изчислителния център!

И Вълшебникът се върна в своята кула доволен.

- След няколко дни, новак програмист влезе в офиса на майстора и каза:

- Не мога да намеря разпечатката на новата си програма. Не знаете ли вие къде може да е?

- Да. - отговори майсторът. - Разпечатките на програмите вече се оставят на новата платформа в изчислителния център.


Майсторът програмист се движи от проект в проект без страх. Никакви изменения в мениджмънта няма да му навредят. Няма да го уволнят, даже ако закрият проекта. Защо става така? Той е изпълнен с Дао.

Програмистите от стари времена са били загадъчни и дълбоки. Ние не можем да постигнем мислите им и всичко, което можем е, да ги опишем.

Нащрек, като лисица, преплаваща река. Бдителни, като генерал на бойното поле. Добри, като стопанка приемаща гости. Прости, като необработен дървен блок. Непроницаеми, като черните езера в най-тъмните пещери.

Кой ще разкрие тайните на техният разум и сърце?

Отговорът съществува само в Дао.


Мъдрият програмист говори за Дао и го следва. Средният програмист говори за Дао и го търси. Глупавият програмист говори за Дао и му се смее. Ако нямаше причина за смях, то нямаше да има и Дао.

Високите звуци са сложни за възприятие.

Движението напред е път към отстъпление.

Големият талант се проявява в края на живота.

Даже в съвършенната програма има бъгове.


Веднъж един човек отишъл на компютърна изложба. Всеки ден, когато влизал, човекът казвал на пазача:

- Аз съм велик крадец, прославен със своите подвизи. Предупреждавам ви, че и тази изложба няма да остане неограбена.

Тези думи силно обезпокоили пазача, защото вътре имало изложено компютърно оборудване за милиони долари и той внимателно проследил този човек. Но човекът просто се разхождал от павилион в павилион, тихичко тананикайки си нещо под нос.

Когато си тръгвал, пазача го отвел настрани и го претърсил отгоре до долу, но не намерил нищо.

На следващият ден, човекът се върнал и упрекнал пазача:

- Аз си тръгнах с огромна плячка вчера, но днес ще бъде още по-добре.

И пазача го следил през деня още по-внимателно, но без никаква полза.

В последният ден на изложбата, пазача не можал да сдържи любопитството си:

- Сър Крадецо! - казал той - Аз съм объркан и не мога да се успокоя! Моля Ви, просветете ме. Какво крадете?

Човекът се разсмял.

- Крада идеи. - казал той.


Имало едно време майстор програмист, който пишел неструктурирани програми.

Един начинаещ програмист, опитвайки се да му подражава, също започнал да пише неструктурирани програми.

Когато, начинаещият помолил майстора да оцени програмите му, той го разкритикувал, че пише неструктурирани програми, като казал:

- Това, което е подходящо за майстора, не подхожда на начинаещия. Ти трябва първо да разбереш Дао, преди да престъпиш през структурата.


Имало някога програмист, който принадлежал към свитата на княз Ву. Князът попитал програмиста:

- Какво е по-лесно да се напише: счетоводна програма или операционна система?

- Операционна система - отвърнал програмистът.

Князът издал недоверчиво възклицание:

- Без съмнение, счетоводната програма е доста по-проста в сравнение със сложността на операционната система - казал той.

- Не съвсем. - казал програмистът. - Когато се пише счетоводна програма, програмиста играе ролята на посредник между хора имащи различни идеи по повод на това, как трябва да работи програмата, как трябва да се съставят отчетите и как всичко това се отнася към данъчното законодателство. Напротив, операционната система не е ограничена от външните ми представи. Когато се пише операционна система, програмистът търси най-краткият път към хармонията между машина и идеи. Ето защо да се напише операционна система е по-просто.

Княз Ву кимнал и се разсмял.

- Всичко това е чудесно и правилно, но кое е по-просто да се дебъгва?

Програмистът не отговорил.


Имало някога програмист, който работел с микропроцесори.

- Виж колко ми е хубаво тук - казал той на програмиста на мейнфрейми, който му дошъл на гости. - Имам си собствена операционна система и дисково устройство. С никой не деля своите ресурси. Програмите са самодостатъчни и лесни за ползване. Защо не се махнеш от сегашната си работа и не дойдеш при мене тука?

Тогава програмистът на мейнфрейми започнал да описва своята система, като казал:

- Мейнфреймът стои в изчислителният център като древен мъдрец, потънал в медитация. Дисковите му устройства са се разгърнали от край до край като огромен електронен океан. Програмното осигуряване е многостранно като брилянт и преплетено като първобитните джунгли. Програмите, всяка от тях уникални се движат през системата като бързотечна река. Ето защо съм щастлив там където съм.

Програмистът на микрокомпютри, след като го изслушал, замълчал за дълго. Но двамата програмисти си останали приятели до края на дните си.


Казано е от майстор програмист:

- Добре написаната програма е собственост на небесата; лошо написаната програма е собственост на преизподнята.


Казано е от майстор програмист:

- След три дни без програмиране, живота става безсмислен.


Казано е от майстор програмист:

- Нека програмистите да са много, а началниците малко - тогава всички ще са продуктивни.


Казано е от майстор програмист:

- Даже ако програмата се състои от три реда, някога ще бъде развита.


Казано е от майстор програмист:

- Точното време да си тръгнеш.


Казано е от майстор програмист:

- Когато програмата се тества, вече е много късно за промени.


Казано е от майстор програмист:

- Когато се научиш да откриваш грешният код в повреден сегмент, тогава е точното време да си тръгнеш.


Казано е от майстор програмист:

- Без вятър, тревата е неподвижна. Без програми, компютрите са безполезни.


Казано е от майстор програмист:

- Можеш да демонстрираш програмата на корпоративния служител, но не можеш да го направиш компютърно грамотен.


Когато началниците провеждат безкрайни съвещания, програмистите пишат игрички. Когато счетоводителите говорят за доходите за тримесечието, бюджета за разработки ще бъде орязан. Когато старшите разработчици броят гаргите - облаците се сгъстяват.

Повярвайте, това не е Дао на програмирането.

Когато началниците поемат задължения, игрите са забравени. Когато счетоводителите правят дългосрочно планиране, хармонията и реда са почти възстановени. Когато разработчиците са заети с текущи проблеми, проблемите скоро ще се решат.

Повярвайте, това е Дао на програмирането.


Защо програмистите не са продуктивни?

Защото времето им се губи по заседания.

Защо програмистите са метежни?

Защото мениджмънта много пречи.

Защо програмистите си тръгват един след друг?

Защото изгарят.

Работейки за лош мениджмънт, те не ценят повече своята работа.


Last modified on: 31.10.2014 19:48:01

Preview

Comments

Мъдрости
Filename:
Title: