Логотип Soft навколо Soft навколо

 

Навігатор:

Soft навколо / Розробка

Посилання

Джефрі Джеймз

є автором численних книжок з технологій та бізнесу, включаючи нещодавно видану Success Secrets from Silicon Valley (Секрети успіху з Силіконової долини). Дописи Джефрі займали чільні місця на сторінках загально-американських видань якто Upside, Marketing Computers та New York Times. Він також є частим гостем у всеамериканських і регіональних ЗМІ.

Джефрі часто виступає на всеамериканських і міжнародних конференціях. Перед тим, як він став журналістом, Джефрі працював у високо-технологічних корпораціях і викладав курси з управління та технологій в Університеті Вашинґтона й Університеті Каліфорнії.


Розробка

Справді дивно, що ділянка, яка містить розділ "Розробка" першим у своєму меню, отримує якийсь уміст у цей розділ останнею. Отже, мені залишається лише гадати, що та дивна випадковіcть буде компенсованою якістю матеріялів, які рано чи пізно тут з'являться. А почнемо ми з перекладу The Tao of Programming від Джефрі Джеймза (Geoffrey James, дивись ліворуч).


Джефрі Джеймз

Тао[0] програмування

З примітками автора, bicoherent[0] і перекладача.

Переклад українською мовою © 2004 Олександр Лихо.

Книга перша

Мовчазна порожнеча

Так казав майстер:

"Коли ви навчилися виловлювати код помилки із запису пастки, вам час покидати [це місце]". [1] [1]

1.1

Склалось щось незбагненне, породжене в мовчазній порожнечи. Чатуючи самітньо і незворушно, воно перебуває у покої і у постійному русі водночас. Це — витік усіх програм. Мені не відоме його ім'я, тож я називатиму його Тао програмування. [2]

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

Тао програмування спливає в далеч і повертається з ранковим вітром. [2]

1.2

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

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

Кожна мова має своє, хоча й скромне, призначення. Кожна мова виражає Їнь і Ян програм. [3] Кожна має своє місце в Тао. [4]

Але не програмуйте на КОБОЛі, якщо цього можна уникнути.

1.3

Спочатку було Тао. Тао породило Простір і Час. Отже, Простір і Час є Їнь і Ян програмування. [5]

Програмісти, що не осягнули Тао, ніколи не вкладаються в час і простір для своїх програм. [3] Програмісти, що осягнули Тао, завжди мають доволі часу й простору, щоби виконати свої задачі.

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

1.4

Тямучий програміст чув про Тао і дотримується його. Пересічний програміст чув про Тао і шукає його. Глупий програміст чув про Тао і сміється з нього. [6]

Якби не було [місця для] сміху, не було б Тао. [4]

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

Книга друга

Древні майстри

Так казав майстер:

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

2.1

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

Свідомі, як лис, що перестрибує річку. [5] Пильні, як генерал на полі бою. Люб'язні, як хазяйка, що приймає гостей. Прості, як нерозпиляні стовбури деревини. Непроглядні, як чорні озера темних печер.

Хто міг би повідати таємниці їхніх сердець і думок?

Відподвідь існує тільки у Тао.

2.2

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

2.3

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

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

Вони живуть в Тао."

2.4

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

Майстер відповів: "Цей програміст опанував Тао. Йому не потрібний проект; він не дратується, коли система відмовляє, але безтурботно приймає всесвіт. Йому не потрібна документація; його не цікавить, чи хто-небудь инший побачить його код. Йому не потрібне тестування; всі його програми є досконалими в собі, ясними і елеґантними, їхнє призначення є самоочевидним. Істинно, він проник у таїну Тао."

Книга третя

Замисел

Так казав майстер:

"Коли програма тестується, запізно змінювати проект".

3.1

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

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

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

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

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

Чолов'яга посміхнувся. "Я краду ідеї", — сказав він.

3.2

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

3.3

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

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

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

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

Воєвода Ву кивнув і посміхнувся. "Все це добре і гарно, але що простіше доладжувати [7]?"

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

3.4

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

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

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

Майстер насупився. "В такому разі це займе два роки."

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

Майстер стенув плечима. "Тоді цей проект ніколи не завершиться", — сказав він. [7]

Книга четверта

Кодування

Так казав майстер:

"Добре написана програма — її власні небеса; кепсько написана програма — її власне пекло".

4.1

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

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

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

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

4.2

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

Майстер відповів: "Ти збентежений, бо ти не розумієш Тао. Тільки дурень чекає на розумну поведінку від своїх ближніх. Чому ти чекаєш на неї від машини, побудованої людьми? Комп'ютери імітують детермінізм; тільки Тао досконале". [8]

"Правила програмування минущі; тільки Тао вічне. Отже, ти мусиш споглядати Тао перед тим, як ти досягнеш просвітлення [8]".

"Але як я знатиму, що я досягнув просвітлення?", — спитав початківець.

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

4.3

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

"Чи має Тао наручний калькулятор?" — спитав учень.

"Так", — була відповідь.

"Чи має Тао відеогра?" — провадив учень.

"Так, навіть відеогра", — сказав майстер.

"А чи має Тао DOS для персонального комп'ютера?"

Майстер кахикнув і трохи змінив свою поставу. "На сьогодні урок закінчено", — сказав він.

4.4

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

"Чудово! — вигукнув принц. — Твоя техніка бездоганна!"

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

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

Книга п'ята

Підтримка

Так казав майстер:

"Навіть якщо програма має лише три рядки коду, коли-небудь її треба буде підтримувати".

5.1

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

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

5.2

Один керівник спитав програміста, скільки часу тому потрібно, аби завершити програму, над якою він зараз працює. "Її буде завершено до завтра", - хутко відказав програміст.

"Я думаю, це нереалістична оцінка, — сказав керівник. — Насправді, скільки часу вам потрібно?"

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

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

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

За кілька років керівник звільнявся. По дорозі на обід з нагоди своєї відставки він знайшов того програміста. Той спав за своїм терміналом. Він програмував всю ніч.

5.3

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

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

Коли майстер спитав про це, початківець обурився. "Не будьте такими нетерплячими, — сказав він. — Я додам фінансові речі зрештою". [9]

5.4

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

Книга шоста

Керування

Так казав майстер:

"Хай програмістів буде багато, а керівників мало — тоді робота кожного буде плідною".

6.1

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

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

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

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

6.2

Чому програмісти непродуктивні?
Бо їхній час гайнується на засіданнях.

Чому програмісти бентежні?
Бо втручання керівництва надмірне.

Чому програмісти звільняються один за одним?
Бо вони виснажені.

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

6.3

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

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

Почувши те, керівник зауважив: "Цей програміст, хоча і займає дещо малоповажну посаду [11], добре розуміє належні обов’язки працівника. Треба підвищити його посаду до заступника керівника!"

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

6.4

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

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

Книга сьома

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

Так казав майстер:

"Ви можете показати програму директору компанії, але ви не можете підвищити його комп'ютерну грамотність".

7.1

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

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

7.2

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

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

7.3

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

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

Майстер ледь підвів свої брови. "Вона насправді чарівна", — сказав він.

"Головний Офіс Компанії наказав, — провадив чаклун, — щоби кожен використовував цю робочу станцію як платформу для нових програм. Ви згодні з цим?"

"Авжеж, — відповів майстер. — Я переміщу її до центру [обробки] даних негайно!". І чаклун, вельми задоволений, повернувся у свою Вежу.

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

"Так, — відповів майстер, — та роздруківка лежить на тій платформі в центрі [обробки] даних".

7.4

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

Книга восьма

Апаратура і програми

Так казав майстер:

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

8.1

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

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

8.2

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

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

"О, великий майстре, будьте ласкаві, — вмоляв початківець, — [скажіть мені] як можна встановити цей потаємний параметр?"

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

8.3

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

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

Вислухавши те, програміст, який мав справу з мікропроцесорами, замовк. Але ті два програміста залишились друзями до скону віку. [10]

8.4

Апаратура [13] стріла Програми [14] по дорозі до Чанци. Програми сказали: "Ви Їнь, а я Ян. Якщо ми подорожуватимемо далі разом, ми дістанемо славу і заробимо величезну купу грошей." Тож вони рушили разом, загадавши підкорити світ.

Перегодом вони зустріли Фірматури [15], які були одягнуті в дране лахміття і шкутильгали, спираючись на сукуватий ціпок. Фірматури промовили до них: "Тао лежить поміж Їнь і Ян. Воно мовчазне і тихе, як озеро. Воно не прагне слави, тож ніхто не знає про його присутність. Воно не прагне вдачі, бо цілком зосереджене. Воно перебуває поза часом і простором."

Посоромлені Програми і Апаратура повернулись до своїх домівок.

Книга дев'ята

Післямова

Так казав майстер:

"Вам час покидати".


Примітки від bicoherent

Джефрі Джеймс є вільним письменником. Він написав Тао програмування, Дзен програмування та инші книжки.

[0] Ці примітки не є чимось більшим за мою (bicoherent) хилу спробу пояснити цей текст. Здебільшого вони мабудь пустопорожні, хоча декотрі можуть бути дійсно доречними.

Книга перша

[1] Лао Цзи також казав: "Що далі ви просуваєтесь, то меньше ви знаєте".

1.1

[2] Хоча внутрішня схематика машини може бути цілком визначеною, однаково без Тао програмування ніхто не може сподіватися бути спроможним запрограмувати машину. Отже говориться: "(Тао програмування) витік всіх програм".

Як початківець осягає Тао програмування і стає Програмістом-Майстром? Відповідь на це питання полягає у терміні ву-вей — відсторонене діяння, діяння не-спрямоване-на-досягнення-мети. Той, хто вивчає ву-вей, вчиться кодувати не для того, аби пройти курс, не для того, аби виконати завдання, не для того, аби відчувати свою причетність до еліти, навіть не для того, аби стати добрим кодувальником.

Насамперед, учневі зазвичай радять вправлятися у безпосередній роботі з першою ліпшою мовою програмування. Числені суперечки спалахували навколо питання про правильний вибір цієї першої мови програмування, та однак немає яких-небудь доказів того, що якась мова програмування є кращою [за инші] у сприянні розвиткові загальних навичок кодування. (Зокрема, часто засуджують Бейсік за розтлівання окремих потенційних майстрів, проте ніхто не довів, що инші мови набагато кращі.) Учень ву-вей вибирає будьяку мову на свій розсуд.

Потім, початківцю радять пристати на П'ять Критріїв оцінювання програм: визнання користувачами, коректність прогарми, швидкість розробки, швидкодія (час) і компакність (простір). Так само як баланс П'яти Темпераментів має наслідком здоров'я паціента, баланс П'яти Критріїв у відповідності до вимог призводить до розв'язання задачі програмування.

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

1.2

[3] Один прихильник спитав учителя, "Я помітив, що майстри минулого з різноманітних галузей знання мають звичай висловлюватись використовуючи терміни Їнь і Ян. Чому це так?"

Послушавши те, вчитель посміхнувся і сказав, "Відповідь на це питання також полагає в Їнь і Ян..."

[4] Не вірте тим, хто каже "асемблер мертвий, бо сучасні комп'ютери блискавично швидкі". Бо навіть для більш швидкісних машин жодна мова не в змозі запропонувати більше контролю над ключовими операціями машини за мову асемблера"

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

1.3

[5] Чому говориться, що "Простір і Час є Їнь і Ян програмування"? Бо, поза П'ятьма Критеріями, тільки час і простір є притаманними виконанню програми.

1.4

[6] Виходячи з П'яти Критеріїв, можна виснувати чотири класи програмістів. Дурнуватий програміст діяльно руйніє баланс між П'ятьма Критеріями. Програміст-студент прагне зрозуміти П'ять Критеріїв. Мудрий програміст свідомо оперує П'ятьма Критеріями. Програміст-майстер перебуває у злагоді з П'ятьма Критеріями.

Книга третя

3.4

[7] Закон Брукса також вказує, "Додавання робочої сили в проект, що відcтає від плану, тільки збільшує відставання". Проте, зауважте, що цей закон стосується тільки проектів з чітко призначеними задачами і що проекти якто Лінукс успішні навіть попри велику кількість розробників.

Книга четверта

4.2

[8] Із кожного програмістського завдання дізнаєшся про щось нове.

Книга п'ята

5.3

[9] Не прагни загальності, якщо така загальність не забезпечує безпосередньо очевидних переваг. Не прагни переміщенності, якщо той код тестується тільки під однією платформою.

Книга восьма

8.3

[10] Не вірте тим, хто каже, "Ти або з нами, або проти нас."


Примітки автора і перекладача

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

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

[0] Прим. пер. Tao — перекладач використовує таку транскрипцію для цього слова, зважаючи на його написання в оригіналі. Далі він також наводить відповідні статті з Советский энциклопедический словарь, М. "Советская энциклопедия", 1987, які пояснюють значення цього слова.

Дао (кит. букв. — шлях) одна з основних категорій китайської філософії. В конфуціанстві — шлях досконалого правителя, морального вдосконалення, сукупність морально-етичних норм. В даосизмі — закономірність сущого, його породжуючий і впорядковуючий витік. Світ — втілення Дао. Мудрець, дотримуючись Дао, відмовляється від цілеспрямованої діяльності (у вей, "недіяння"), досягає єдності з природою і досконалості. В традіції "Книги перемін" (І дзін) Дао — закономірність чередування сил їнь-ян.

Даосизм (кит. дао дзя або дао дзяо), китайська релігія і одна з основих релігійно-філософських шкіл. Виник в середині першого тисячоліття до р. х. на основі вірувань шаманського характера. Філософії Даосизма властивий натуралізм, початки примітивної діалектики і елементи релігійної містики. Основні представники — Лао-цзи, Чжуан-цзи. На початку нашої ери Даосизм оформився у розвинуту релігію. У 12 сторіччі створено "Дао дзан" — звід літератури Даосизму. Мета прихильників Даосизму — досягти єдності з першоосновою світу — дао і за допомогою алхемії і психофізичних вправ знайти безсмертя. За окремих періодів був під заступництвом влади. Послідовники Даосизму є в КНР, де існує Асоціація віруючих даосів.

[1] Це культурницький курйоз. Цей текст ґрунтується на одній фразі з телешоу, яке було популярним в США в 70-х роках і називалось "Кун Фу". Первісна цитата покликалась до випробування, яке давалось молодому монаху Шаолін — якщо він зможе вихопити гальку з руки майстра, то йому час покидати [монастир]. Отже, тут суть в тому, що коли досягнуто певного рівня майстерності у програмуванні, то де б не перебігало учнівство, мабудь, час кінчати його для того, щоб зайняти краще місце деинде.

"Запис пастки" ("trap frame") це область в пам’яті, куди записуються дані про про помилку в програмі. Оскільки ця програма викликала помилку, вона більше не працює правильно. Але якщо ви дуже спритні, ви можете придумати як отримати код помилки із запису пастки і відтак повернути керування програмі. По суті, це дуже трудна програмістська задача.

Прим. пер. Далі перекладач наводить кілька витягів з різних джерел в Інтернеті, які мають пояснити, що таке запис пастки (http://docs.sun.com/db/doc/805-4368 - ланка мертва):

  • Пастка — програмний механізм, який спричиняє негайну передачу керування комп'ютером до ядра [операційної системи], навіть якщо поточно виконується користувацький процес.
  • Ядро [операційної системи] — осердя операційної системи. Ядро керує апаратурою (наприклад, часом процесора й пам'ятю) і забезпечує основні послуги, якто наборова (файлова) система, що не надаються апаратурою.

На процесорах x86 запис пастки створюється щоразу, коли надходить перепин або виконується системний виклик. (NT Debugging Overview десь на http://www.microsoft.com/windows)

Більше про пастки (trap), запис пастки (trap frame) і взагалі про обробку виключних ситуацій на низькому рівні ви можете дізнатись, звернувшись за цією адресою:
http://www.cs.utah.edu/flux/oskit/html/oskit-wwwpa4.html#oskit-wwwch30.html.

[2] Безпосередньо [витяг] з Тао Те Чин.

Прим. пер. Ви можете познайомитись з оригіналом (кит.) згаданого твору, або почитати його переклади англійською (Tao Te Ching) або московською (Дао дэ Цзин) мовами.

[3] Покликання до часів коли обчислювальний час і пам’ять були мізерні. Програми обмежувались за величиною пам'яті, що вони могли отримати, і за машинним часом, що вони могли використати. Внаслідок того, програми мали писатись дуже ретельно, бо в противному разі вони вибігали поза межі виділеного часу і/або пам'яті. Тільки вмілий програміст був здатним виконувати складні задачі за таких обмежень.

[4] Це питання про Таоізм. Таоізм розглядає цей світ як щось суттєво смішне, але [сказати так] це велике спрощенство.

[5] Лис стрибає з каменя на камінь, що потребує великої зосередженності. Тож він мусить бути свідомий кожного свого кроку.

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

[7] Прим. пер. Доладжувати (debug) — перекладач використовує це слово для позначаня процесу знаходження і усування помилок (хиб) в програмах. Адже, якщо йдеться про комах, чи жуків :) чи то дефекти (bug — комаха, жук,.. дефект), то справді доречно ставити питання про їх усування з програми. Тому "від"-bug, de-bug. Але відколи йдеться про наведення порядку, приведення до ладу, вжиток префіксу "від" недоречний, бо навпаки, творить зміст протилежний від бажаного. Тому, до-ладжувати.

[8] Прим. пер. Просвітлення — в оригіналі enlightenment. Це слово може також перекладатися як "нірвана".

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

[10] Прим. пер. Поміжник (interface) — перекладач використовує це слово для позначення підсистеми, що покликана забезпечити взаємодію з иншими системами, зокрема користувацький П., програмний П.. Це слово являє собою змістову кальку з англійської inter (між, поміж) - face (лице,.. лицьова поверхня).

[11] Більшість [робіт з] програмування є тим, що ми звемо "бурчлива робота" — не дуже складна і не дуже пошановувана.

[12] Це означає: "Чому б то просто не відкинутись [на бильце стільця] и не посміятись зі всієї тієї корпоративної нісенітності?"

[13] Прим. пер. Апаратура — в оригіналі hardware.

[14] Прим. пер. Програми — в оригіналі software.

[15] Прим. пер. Фірматури — в оригіналі firmware.


Вміст

Примітки:

Посилання

Оригінал твору (англійською мовою)
(з коментарями bicoherent).
Ділянка Джефрі Джеймза
Ви можете також придбати цю книгу на Амазоні.

Є також переклади московською мовою (я зазначаю імена перекладачів):

Як на мене, вони не дуже високої якості, тому я наводжу посилання на всі три переклади, полишаючи вибір за вами.



© 2004 Олександр Лихо, Зворотній зв'язок

Адреса сторінки: http://soft.km.ua/development/index.html

Останнє оновлення: 28.03.2017

catalog.i.ua