Великі програмісти знайти прості вирішення складних проблем

30 червня 2009 по Prashant · Коментарі
Рубрики: різне

Після того, як довго я можу знайти джерело для наступних котирувань

Молодший програмістам створювати прості рішення для простих завдань. Старший програмістам створювати комплексні рішення для складних проблем. Великі програмісти знаходити прості рішення складних проблем.

Саме в есе під назвою Красиві Software Чарльз Коннелл.

Інший улюблений мій це Дзен Python -

Красиве краще, ніж негарним.
Явний краще ніж неявний.
Чим простіше, тим краще, ніж складні.
Комплекс краще, ніж складні.
Плоскі краще вкладатися.
Рідкісні краще, ніж щільна.
Читаність має значення.
Особливі випадки не є спеціальними достатньо, щоб порушувати правила.
Незважаючи на практичність б'є чистоти.
Помилки ніколи не повинні проходити тихо.
Якщо явно не замовчати.
В умовах невизначеності, відмовитися від спокуси здогадатися.
Там повинна бути одна і, бажано, тільки один очевидний спосіб зробити це.
Незважаючи на те, що ніяк не може бути очевидним на перший, якщо ви не голландці.
Зараз краще, ніж ніколи.
Хоча ніколи часто краще, ніж * право * зараз.
Якщо реалізацію складно пояснити, це погана ідея.
Якщо реалізацію легко пояснити, вона може бути гарною ідеєю.
Простору імен є одним сигналять відмінна ідея - давайте робити більше таких!
-------------------------
і є класичний Тао програмування

-

кредитів, а на пов'язані сайту

Переклад Джеффрі Джеймс

Переклад Герцог Hillard

Передано Анупам Trivedi, Sajitha Tampi і Meghshyam Джаганнатха

Re-HTML-ized під редакцією Kragen Сіттлер

-

Книга 1 - The Silent Пустота

Так говорив головний програміст:

"Коли ви дізналися вирвати код помилки з пастки кадрі,
буде для вас час, щоб піти. "

1,1

Щось таємниче формується, народився в тихій порожнечі. Очікування поодинці і
рухаючись, він відразу ще і тим не менш в постійному русі. Це джерело
всіх програм. Я не знаю її імені, тому я буду називати його Дао
Програмування.

Якщо Дао велике, то операційна система велика. Якщо операційна
Система велика, то компілятор великий. Якщо компілятор великий,
то додаток великий. Користувач задоволений і існує
гармонії в світі.

Тао програмування тече далеко і повертається на вітер вранці.

1,2

Тао народився в машинну мову. Машинний мова породив
асемблер.

Асемблер породив компілятор. В даний час існує десять тисяч
мов.

Кожна мова має свою мету, але скромним. Кожна мова виражає
Інь і Ян програмного забезпечення. Кожна мова має своє місце в Дао.

Але не програмувати на COBOL, якщо ви можете уникнути цього.

1,3

На початку було Дао. Дао породило Простір і Час.
Тому простір і час є Інь і Янь програмування.

Програмісти, які не осягнути Дао, завжди не вистачає часу
і простору для їх програм. Програмісти, які осягнути Дао завжди
мати достатньо часу і простору для досягнення своїх цілей.

Як могло бути інакше?

1,4

Мудрий програміст чув про Тао і дотримується його. Середнє
програміст чув про Тао і шукає його. Дурний програміст
чує про Дао і сміється над нею.

Якби це було не для сміху, не було б Дао.

Найвищі звуки важче чути.
Надалі це шлях до відступу.
Великий талант проявляється в кінці життя.
Навіть досконала програма все ще є помилки.

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

Книга 2 - Давні майстри

Так говорив головний програміст:

"Після трьох днів без програмування життя стає безглуздою."

2,1

Програмісти старих були загадкові і глибокі. Ми не можемо зрозуміти
свої думки, так що все що ми робимо, описати їх зовнішній вигляд.

Усвідомлюючи, як лисиця перетину води. Сигнал, як і взагалі на
бою. Вид, як господиня вітає своїх гостей. Простий, як
uncarved блоків з дерева. Непрозорими, як чорний басейнів в затемненому печери.

Хто може сказати, секрети їхніх сердець і умів?

Відповідь на це питання існує тільки в Дао.

2,2

Великий магістр Тьюринга одного разу наснилося, що він машина. Коли він прокинувся, він
вигукнув:

"Я не знаю чи я Тьюринга снилося, що я машина, або
Машина снилося, що я Тьюринг! "

2,3

Програміст з дуже великою комп'ютерної компанії пішли на програмне забезпечення
конференції, а потім повернувся представити його менеджер, кажучи: "Який
програмісти працюють в інших компаніях? Вони вели себе погано і були
байдужий до зовнішності. Їх волосся були довгі і неохайні і їх
Одяг був зморшкуватою і старої. Вони розбився нашу гостинність пакет, і вони
зроблені грубі звуки під час мого виступу ».

Менеджер сказав: "Я б ніколи не послав тебе на конференцію. Ті
програмісти живуть за межами фізичного світу. Вони вважають життя абсурдна,
випадковий збіг. Вони приходять і йдуть, не знаючи обмежень.
Без допомоги, вони живуть тільки для своїх програм. Чому вони повинні турбуватися
з соціальними конвенціями?

"Вони живі всередині Дао."

2,4

Учень запитав учителя: "Ось програміст, що ніколи не проектує,
документи або випробування його програм. Але всі, хто знає його вважають його одним з
кращих програмістів у світі. Чому це відбувається? "

Майстер відповів: "Цей програміст опанував Дао. Він пішов
за необхідність розробки, він не сердиться, коли система
падає, але приймає всесвіт без занепокоєння. Він вийшов за межі
необхідні для документації, він не дбає, якщо хтось бачить, що його код.
Він пішов від необхідності тестування, кожен з його програми ідеально підходять
в собі, спокійний і елегантний, їх мета очевидна. Дійсно,
він увійшов в таємниці Дао. "

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

Книга 3 - Проектування

Так говорив головний програміст:

"Коли програма тестується, вже занадто пізно, щоб зробити дизайн
зміни ".

3,1

Там колись був людиною, який пішов на виставці комп'ютер. Кожен день, як він
введений, чоловік сказав охоронець біля дверей:

"Я великий злодій, відомий мій подвиг крадіжки. Бути
попереджений, для цієї виставки не уникнуть unplundered ".

Мова порушується охорона сильно, тому що там були мільйони
доларів комп'ютер всередині обладнання, так що він спостерігав за людиною уважно. Але
Людина просто бродили від стенду до стенду, наспівуючи тихо сам з собою.

Коли чоловік вийшов, охоронець відвів його вбік і обшукав його одяг, але
нічого не було знайдено.

На наступний день виставки, цей чоловік повернувся і дорікнув охоронця
сказав: «Я втік з величезною здобиччю вчора, але сьогодні буде ще
краще ". Так що охоронець дивився на нього все більш тісно, ​​але безрезультатно.

В останній день виставки, охоронець міг стримати своєї цікавості
більше немає. "Пан Злодій", він сказав: "Я дуже здивований, я не можу жити в
світу. Будь ласка, просвітіть мене. Що це, що ви крадете? "

Людина посміхнувся. "Я крадіжці ідеї", сказав він.

3,2

Там колись був майстром програміст, який писав неструктуровані програми.
починаючий програміст, прагнучи наслідувати його, а також почав писати
неструктуровані програми. Коли Учень запитав майстра, щоб оцінити його
прогрес, майстер критикували його за написання неструктурованих програм,
сказав: «Що підходить для майстра не підходить для
новачок. Ви повинні зрозуміти Дао, перш ніж подолання структури ".

3,3

Був одного разу програміст, який був прикріплений до двору воєначальника
Ву. Воєначальник запитав програміста: "Що легше проектувати:
бухгалтерський пакет чи операційну систему? "

"Операційна система", відповів програміст.

Воєначальник виголосив вигук недовіри. "Звичайно, бухгалтерський облік
пакет тривіально наступний складності операційної системи ", він
сказав.

"Не так", сказав програміст, "при проектуванні бухгалтерський пакет,
програміст працює як посередник між людьми з різними
ідеї: як це має працювати, як його доповіді мають з'явитися, і як вона повинна
Відповідно до податкового законодавства. На відміну від операційної системи не обмежується
зовнішніх явищ. При проектуванні операційної системи, програміст
прагне до найпростішої гармонії між машиною та ідеями. Ось чому
операційна система простіше в розробці ".

Воєначальник з Ву кивнув і посміхнувся. "Це все добре, але
що легше налагодити? "

Програміст не відповів.

3,4

Менеджер прийшов до майстра програмісту і показав йому вимоги
документ для нових додатків. Менеджер запитав вчителя: "Як довго
займе проектування цієї системи якщо я призначити п'ять програмістів до нього? "

"Це буде один рік", сказав майстер в найкоротші терміни.

"Але нам потрібна ця система негайно і навіть раніше! Як довго це
прийняти, якщо я призначений десять програмістів до нього? "

Програміст майстер насупився. "У такому випадку, це займе два роки."

"А що, якщо я призначу сто програмістів?"

Програміст майстер знизав плечима. "Тоді проект ніколи не буде
завершений ", сказав він.

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

Книга 4 - Кодування

Так говорив головний програміст:

"Добре написана програма це свій власний рай, погано написана програма
своє пекло ".

4,1

Програма повинна бути легкою і гнучкою, її підпрограми пов'язано як
нитка перлів. Духу і цілям програми повинні бути збережені
у всьому. Там повинно бути ні занадто мало або занадто багато, ні
непотрібні петель і марно змінних, ні відсутності структури, ні
Переважна жорсткості.

Програма повинна слідувати Закону `найменшого подиву». Що це за закон?
Це просто, що програма повинна завжди відповідати користувачеві в дорозі
Вражає, що його найменше.

Програми, незалежно від того, наскільки складним, повинна діяти як єдине ціле. Програма
повинні бути спрямовані по логіці протягом, а не зовні.

Якщо програма не в ці вимоги, він буде в стані
безладу і плутанини. Єдиний спосіб виправити це переписати
програми.

4,2

Учень запитав майстра: "У мене є програма, яка іноді працює і
іноді переривається. Я слідував правилам програмування, але я
повністю збиті з пантелику. Яка причина цього? "

Майстер відповів: "Ви в замішанні, тому що ти не розумієш Дао.
Тільки дурень чекає розумного поведінки від своїх побратимів. Чому, як ви
очікувати від машини, що люди побудували? Комп'ютери моделювання
детермінізму, тільки Дао абсолютно.

«Правила програмування минущі, тільки Дао вічно. Тому
Ви повинні споглядати Дао перш ніж ви отримаєте просвітлення ".

"Але як я знаю, коли я отримав просвітлення?" Запитав
новачок.

"Ваша програма працюватиме правильно," відповів майстер.

4,3

Майстер пояснював природу Дао одному зі своїх новачків. "
Дао втілено в усіх програмних - незалежно від того, незначні ", сказав
майстер.

"Чи є Дао в ручній калькулятор?" Запитав учень.

"Це", була відповідь.

"Чи є Дао в відеогрі?" Продовжує новачка.

"Це навіть у відеогрі," сказав учитель.

"І це Дао в ДОС для персонального комп'ютера?"

Майстер закашлявся і перевів положення небагато. "Урок закінчений
на сьогоднішній день, "сказав він.

4,4

Програміст принц Ван був кодування програмного забезпечення. Його пальці танцювали на
клавіатури. Програма складена без повідомлення про помилку, і програма
побіг, як легкий вітерець.

"Відмінно!" Принц вигукнув: "Ваша техніка бездоганна!"

"Техніка"? Сказав програміст поворот від терміналу, "Що я
слідувати, Дао - за межами всіх технік! Коли я вперше почав програмувати я
що бачу перед собою всі проблеми в одну масу. Через три роки я не
не бачив цю масу. Замість цього я використовував підпрограми. Але зараз я нічого не бачу.
Все моє єство існує в безформну порожнечу. Мої почуття не діють. Мій дух,
вільно працювати без плану, слід своїм інстинктам. Коротше кажучи, моя програма
пише сам. Правда, іноді виникають складні проблеми. Я бачу їх
йде, я сповільнюватися, я дивлюся мовчки. Тоді я змінити один рядок коду
і труднощі зникнуть, як клуби диму простою. Я потім скомпілювати
програми. Я сиджу до сих пір, і нехай радість роботи заповнити моє єство. Я закриваю
Очі на мить, а потім вийти з неї. "

Принц Ван сказав: «Буде, що всі мої програмісти були мудрими!"

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

Книга 5 - Технічне обслуговування

Так говорив головний програміст:

"Хоча програма повинна бути, крім трьох рядків, коли-небудь йому доведеться бути
підтримується ".

5,1

Добре використовувати двері не вимагає мастила на петлях.
Швидкоплинної потік не росте стагнації.
Ні звуку, ні думки можуть подорожувати через вакуум.
Програмне забезпечення гниє, якщо не використовується.

Це великі таємниці.

5,2

Менеджер запитав програміста, скільки часу йому буде потрібно, щоб закінчити
Програма, на якій він працює. "Вона буде закінчена завтра"
Програміст швидко відповів.

"Я думаю, ви в даний час нереально," сказав менеджер, "Чесно кажучи, як
часу це займе? "

Програміст замислився на мить. "У мене є деякі особливості, які я хочу
додати. Це займе не менше двох тижнів ", сказав він нарешті.

"Навіть це занадто багато, щоб чекати", наполягав менеджер, "Я буду
виконані, якщо ви просто скажіть, коли програма буде готова ".

Програміст погодився з цим.

Кілька років потому, менеджер у відставку. На шляху до своєї відставки
обід, він виявив, що програміст спить за своїм терміналом. Він був
програмування всю ніч.

5,3

Початківець програміст одного разу присвоюється код простий фінансовий пакет.

Початківець працював несамовито протягом багатьох днів, але коли господар його відгуки
свою програму, він виявив, що в ньому міститься екранний редактор, набір
узагальненого графіка процедур, штучний інтелект інтерфейс, але
немає ні найменшої згадки ні про що фінансова.

Коли господар запитав про це, новачок обурився. «Не
таким нетерплячим ", він сказав:" Я покладу у фінансовому речі в кінці кінців. "

5,4

Чи є хороший фермер знехтувати врожаю він посадив?
Чи є хороші вчителі виходять навіть самого скромного студента?
Чи є хороший батько дозволити одній дитині голодувати?
Чи є хороший програміст відмовитися від підтримки його код?

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

Книга 6 - Менеджмент

Так говорив головний програміст:

"Нехай програмістів буде багато, а менеджерів мало - тоді все буде
продуктивним ».

6,1

Коли менеджери проводити нескінченні наради, програмісти пишуть гри. Коли
бухгалтери говорять про щоквартальної прибутку, бюджет розвитку збирається
бути скорочені. Коли дослідники говорять блакитне небо, хмари збираються згорнути
дюйм

Дійсно, це не Тао програмування.

Коли менеджери роблять зобов'язання, ігрові програми, ігноруються. Коли
бухгалтерів зробити довгострокові плани, гармонія і порядок збираєтеся бути
відновлені. Коли старші наукові рішення проблем в сторони,
проблеми незабаром буде вирішена.

Воістину, це Тао програмування.

6,2

Чому програмісти невиробничої?
Тому що їх час витрачається на нарадах.

Чому програмісти бунтівний?
Оскільки управління втручається занадто багато.

Чому програмісти у відставку один за іншим?
Тому що вони згоріли.

Пропрацювавши поганого управління, вони не цінують свою роботу.

6,3

Менеджер був на межі звільнення, але програміст, який працював на нього
придумав нову програму, яка стала популярною і добре продавалася. В результаті,
менеджер зберіг свою роботу.

Менеджер спробував дати програмісту премію, але програміст
відмовився, сказавши: "Я написав програму, тому що я думав, що це
цікава концепція, і таким чином я не очікую нагороди. "

Менеджер, почувши це, зауважив: "Цей програміст, хоч він тримає
Положення невеликого гідності, добре розуміє обов'язки належного
співробітників. Давайте просувати його на високий пост управління
консультант! "

Але коли сказав це, програміст ще раз відмовився, сказавши: "Я існую так
що я можу програмувати. Якби я сприяв, я б нічого не робити, але відходи
Час кожного. Чи можу я тепер йти? У мене є програма, що я працюю ".

6,4

Менеджер прийшов до своїх програмістам і сказав їм: "Що стосується вашої роботи
Години роботи: ви збираєтеся приходити о дев'ятій ранку і залишити
О п'ятій вечора. "При цьому всі вони розсердилися і кілька
пішов у відставку на місці.

Таким чином, менеджер сказав: "Гаразд, в цьому випадку ви можете встановити свої власні
робочий час, поки ви закінчите ваші проекти відповідно до графіка ".
Програмісти, в даний час задоволені, стали надходити опівдні і працюють в крихітних
годині ранку.

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

Книга 7 - Корпоративна мудрість

Так говорив головний програміст:

"Ви можете показати програму для корпоративних виконавчої влади, але ви не можете
зробити його комп'ютерно грамотним. "

7,1

Учень запитав майстра: "На сході є велике дерево-структури
що люди називають 'Штаб-квартира корпорації. Це роздутий з форми з
віце-президентами і бухгалтерами. Вона випускає безліч довідок, кожна
кажучи: Ідіть, тому! або `йди, сюди! і ніхто не знає, що мається на увазі. Кожен
рік нові імена поставлені на гілках, але все безрезультатно. Як можна
такі неприродні особи може бути? "

Майстер відповів: "Ти бачиш цю величезну структуру і
стурбований тим, що вона не має раціональної мети. Ви можете не приймати від розваг
її нескінченними циркуляції? Ви не користуються безтурботне легкість програмування
Під його укриття галузі? Чому ви турбували його
марності? "

7,2

На сході є акула, яка більше за всіх інших риб. Це
перетворюється на птицю, чиї крила подібні хмарам заповнення небі. При цьому
птах переміщається по землі, вона приносить послання від корпоративного
Штаб-квартири. Це повідомлення він падає в гущу програмістів,
як чайка робить свій слід на пляжі. Тоді птах піднімається на
вітер, а з блакитного неба на спині, повертається додому.

Початківець програміст дивиться з подивом на птицю, так як він це розуміє
не. Середній програміст страшиться приходу птиці, бо він боїться
його повідомлення. Програміст майстер продовжує працювати за своїм терміналом, для
Він не знає, що птах приходять і йдуть.

7,3

Чарівник з Вежі Слонової Кістки привіз своє останнє винахід
Майстер програміст для вивчення. Маг колісних великий чорний ящик в
головний офіс, а господар мовчки чекав.

"Це інтегрована, розподілена, загального призначення, робоча станція," почав
маг ", ергономічні з власною операційною
системи, шостого покоління мов, а також декілька сучасних користувачів
інтерфейсів. Він прийняв мої помічники кілька сотень людино-років, щоб побудувати.
Хіба не дивно? "

Господар підняв брови небагато. "Це дійсно дивно", він
сказав.

"Штаб-квартира корпорації повелів," продовжував чарівник, "що
кожному використовувати цю станцію як платформу для нових програм. Чи згодні ви
на це? "

"Звичайно," відповів майстер, "Я це буде транспортуватися в
центр обробки даних негайно! "І чарівник повернувся до своєї вежі, а
задоволений.

Через кілька днів новачок забрів в офіс головного
програміст і сказав: "Я не можу знайти список для моєї нової програми. Робити
Ви знаєте, де це може бути? "

"Так", відповів майстер, "листинги складені на платформі
центр обробки даних ".

7,4

Майстер програміст рухається від програми до програми без страху. Немає
зміна управління може заподіяти їй шкоду. Він не буде звільнений, навіть якщо
Проект буде скасована. Чому це відбувається? Він повний Дао.

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

Книга 8 - Апаратне і програмне забезпечення

Так говорив головний програміст:

"Без вітру, трава не рухається. Без програмного забезпечення, апаратних
марно. "

8,1

Учень запитав майстра: "Я бачу, що одна комп'ютерна компанія набагато
більше, ніж всі інші. Вона височіє над конкурентами, як гігант серед
карликів. Будь-який з його підрозділів можуть включати в себе весь бізнес. Чому
це так? "

Майстер відповів: "Чому ти ставиш такі дурні питання? Ця компанія
велика, тому що великий. Якби вона випускала тільки апаратні засоби, ніхто не буде купувати
його. Якщо він тільки зробив програмне забезпечення, ніхто не буде його використовувати. Якщо він підтримується тільки
системи, люди будуть ставитися до нього як до прислуги. Але так як він поєднує в собі всі
ці речі, люди думають, що один з богів! По не прагне
прагнути, вона перемагає без зусиль ".

8,2

Програміст майстер прийняв початківець програміст один день. Майстер зазначив,
новачка заклопотаність ручних комп'ютерних ігор. «Вибачте мене»,
він сказав, "я можу розглядати це?"

Початківець болтами до уваги і передав пристрій до господаря.
видно, що пристрій стверджує, що три рівня гри: легкий, середній і
Жорсткий, "сказав учитель. "Тим не менше, кожне такий пристрій має ще один рівень
грати, коли пристрій не прагне завоювати людини, ні бути переможеним
на людину ".

"Моліться, великий майстер", благав початківців ", як знайти цю
таємничі налаштування? "

Майстер кинув пристрій на підлогу і розчавив ногою. І
раптом початківця був просвітленим.

8,3

Був одного разу програміст, який працював на мікропроцесори. "Подивіться, як
а в мене тут ", сказав він на ЕОМ програміст, який прийшов в гості,
"У мене є своя операційна система і пристрій для зберігання файлів. Я не маю на
ділитися своїми ресурсами з ким. Програмне забезпечення є самоузгодженим і
простий у використанні. Чому б тобі не кинути свою нинішню роботу і приєднатися до мене? "

ЕОМ програміст почав описувати свою систему до свого друга,
кажучи: "ЕОМ сидить, як древній мудрець медитації серед
центру обробки даних. Його диски лежать кінця в кінець, як великий океан
техніки. Програмне забезпечення як багатогранне, як алмаз, і заплутані
як первісні джунглі. Програм, кожна унікальна, переміщатися по системі
як швидкоплинної річки. Ось чому я щасливий, де я знаходжуся ".

Мікрокомп'ютер програміст, почувши це, замовк. Але ці два
програмісти залишалися друзями до кінця своїх днів.

8,4

Обладнання зустрівся програмного забезпечення на шляху до Сходження. Програмне забезпечення сказав: «Ви
Інь і Ян я. Якщо ми будемо подорожувати разом ми прославитися і заробити
величезні гроші ". І так викладені разом, думаючи підкорити
світу.

Незабаром вони зустріли Firmware, який був одягнений в рвані лахміття і кульгав
а спираючись на палицю тернистий. Прошивка сказав їм: "Дао лежить
за Інь і Ян. Це тихий і як і раніше, як басейн з водою. Це робить
не шукати слави, тому ніхто не знає своєї присутності. Він не прагне
стан, тому що це повна в собі. Він існує поза простором і
час ".

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

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

Книга 9 - Епілог

Так говорив головний програміст:

"Настав час для вас, щоб піти".

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

Якщо вам сподобалося це, можливо, також хотіли б прочитати гірше, тим краще