avva: (Default)
[personal profile] avva
Прочитайте вот это, коллеги.

Там - Горькая Правда.

A lesson I have learned the hard way is that we aren’t smart enough. Even the most brilliant programmers routinely make stupid mistakes. Not just typos, but basic design errors that back the code into a corner, and in retrospect should have been obvious. The human mind can not grasp the complexity of a moderately sized program, much less the monster systems we build today. This is a bitter pill to swallow, because programming attracts and rewards the intelligent, and its culture encourages intellectual arrogance.


(но стоит прочитать полностью)

Date: 2007-08-03 10:20 am (UTC)
From: [identity profile] liksu.livejournal.com
А можно вариант на русском? :)
(deleted comment)

Date: 2007-08-03 11:07 am (UTC)
From: [identity profile] gaius-julius.livejournal.com
если придерживаться такой концепции, то... представление разработчика о красоте со временем меняется.

Date: 2007-08-03 10:33 am (UTC)
andrzejn: (Default)
From: [personal profile] andrzejn
А ведь Вернор Виндж говорил. А ведь Виндж предупреждал!

Без сверхинтеллектов ничего не получится.

Date: 2007-08-03 11:50 am (UTC)
From: [identity profile] plakhov.livejournal.com
У Винджа встречаются гениальные детали именно в том, что касается программирования.

Профессия "программист-археолог", например. Специалист по добыванию знаний из уровней системы, написанных сотню и более лет назад. Вроде бы все исходники есть, вся документация наличествует. Но профессия, тем не менее, важная :)

Date: 2007-08-03 10:40 am (UTC)
From: [identity profile] averros.livejournal.com
На что есть наш пролетарский ответ: Keep It Simple, Stupid!

Date: 2007-08-03 11:43 am (UTC)
From: [identity profile] plakhov.livejournal.com
Это только начало.

Потом выясняется, что в похожих ситуациях мы вынуждены писать одно и то же. Почти copy-paste (а иногда и не "почти"). Досадно, но оказывается, что таких ситуаций примерно миллион.

Чтобы писать такие места быстрее и с меньшим числом опечаток, мы объединяем часто встречающиеся последовательности и выносим общую функциональность в отдельные сущности (функции, классы, макросы, шаблоны, generic'и, или даже тьфу-тьфу не дай бог аспекты).

И тут выясняется, что каждый такой конструкт первого порядка хочется потом fine-тюнить. Потому что вот в этом интерфейсе теперь надо показывать пункты не выпадающим списком, а плоским. А вот эта надпись должна быть полупрозрачной. Что значит "нельзя"? Какая-такая "архитектура"?

Появляется некоторый язык настройки этих сущностей второго рода. Аггрегация вместо наследования, декораторы, общие интерфейсы вместо общего предка.

Тут в проект приходит новый программист, и...

Date: 2007-08-03 06:58 pm (UTC)
From: [identity profile] oxfv.livejournal.com
Remarkable how your comment adheres to what you're preaching in it and how [livejournal.com profile] plakhov's response is a great illustration of going astray.

Date: 2007-08-06 07:04 am (UTC)
From: [identity profile] plakhov.livejournal.com
к. - с. т.?

Date: 2007-08-03 10:46 am (UTC)
From: [identity profile] sleeping-death.livejournal.com
меня не это гнетет... вернее, и это тоже.. но скорее то, что результаты труда программиста оценить может только человек, понимающий что-либо в этом... либо достаточно образованный и умный начальник... каких немного...
и наповал убивают фразы пользователей типа "мы же знаем, это можно сделать!"... специалисты, блин...
а в области программирования столько напридумывали за последние 30 лет, что разобраться в этом одному человеку просто физически невозможно... только в маленькой части всего этого бардака...

Date: 2007-08-03 05:18 pm (UTC)
From: [identity profile] e2pii1.livejournal.com
... то, что результаты труда сантехника оценить может только человек, понимающий что-либо в этом... либо достаточно образованный и умный жилец ... каких немного...
и наповал убивают фразы жильцов типа "мы же знаем, это можно сделать!"... специалисты, блин...
а в области сантехники столько напридумывали за последние 30 лет, что разобраться в этом одному человеку просто физически невозможно... только в маленькой части всего этого бардака...

Date: 2007-08-03 07:11 pm (UTC)
From: [identity profile] sleeping-death.livejournal.com
простите, но с сантехникой вы тут полную х...ню сморозили, тем более не в тему. Если это типа стеб - то туда же. фтанг.

(no subject)

From: [identity profile] e2pii1.livejournal.com - Date: 2007-08-05 11:22 am (UTC) - Expand

Date: 2007-08-03 11:10 am (UTC)
From: [identity profile] plakhov.livejournal.com
Мне кажется, все не так мрачно. То есть в итоге, конечно, мы упремся в пределы человеческого разума и тп, но пока что дело, имхо, чаще всего совсем не в этом.

1) Я не совсем понял, откуда возникает противопоставление "beauty vs straightforwardness and conventionality". Дизайн imo красив именно тогда, когда не переусложняет систему неоправданно, и не дает возможности "глупо ошибиться". Собственно, когда соблюден баланс coupling vs cohesion, и хороша система раннего обнаружения ошибок (строгая типизация, testability и тп).
2) Но этого совсем недостаточно; надо еще и формулировать требования к системе в такой форме, и таким способом, чтобы излишняя сложность не была заложена в самих исходных требованиях.

У нас в программировании игр второй пункт в разы важнее первого, хотя без первого тоже нельзя.

Я об этом как-то написал статью для гейм-дизайнеров (это аналог аналитиков в разработке игр). Некоторые люди, которые ее потом перепечатывали, писали, что область ее применимости шире, чем я думал.

С добрым утром!

Date: 2007-08-03 11:40 am (UTC)
From: [identity profile] plumqqz.livejournal.com
Вообще-то это издревле формулируется как "на всякого мудреца довольно простоты".

Re: С добрым утром!

Date: 2007-08-03 11:46 am (UTC)
From: [identity profile] cmm.livejournal.com
да-да, в Святом Писании уже всё давно сказано.

Re: С добрым утром!

Date: 2007-08-03 12:01 pm (UTC)
From: [identity profile] plumqqz.livejournal.com
Ну вот - сами же все знаете.

Date: 2007-08-03 11:59 am (UTC)
From: [identity profile] msh.livejournal.com
Представляются инженеры Тойоты, рыдающие над чертежами нового автомобиля "the human mind can not grasp the complexity of a compact car, much less the Lexus SUV we build today"

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

Date: 2007-08-03 12:15 pm (UTC)
From: [identity profile] avva.livejournal.com
Нет, ну я фигею от количества специалистов, окончательно решивших всех проблемы, блин, софтвер инженеринга.

От магического слова "декомпозиция" вся сложность проблемы съеживается и улетучивается, а если его повторить три раза, с использованием процессов, так просто тридцать три богатыря выходят из моря и все делают за полчаса.

Date: 2007-08-03 12:39 pm (UTC)
From: [identity profile] msh.livejournal.com
Различные варианты фразы "ты чо тут, самый умный?" меня не обижали даже в средней школе ;-)

Сложность проблемы от декомпозиции не съеживается, а скорее наоборот, раздувается. Просто ее становится возможным grasp. Вот и все. Остается декомпозицию из магического слова превратить в обыденный инструмент software development

Опять же, автомобилестроение прошло этот путь в обозримом прошлом - от какого-нибудь гениального
August Horch, в одиночку проектировавшего автомобили, до современных платформ и компонентов

(no subject)

From: [identity profile] trueblacker.livejournal.com - Date: 2007-08-03 03:06 pm (UTC) - Expand

Date: 2007-08-03 01:00 pm (UTC)
From: [identity profile] sply.livejournal.com
Все инжениринговые проблемы и правда решены. Есть только одна нерешаемая, но это уже не инжениринг, а бизнес - максимизировать прибыль, минимизировав затраты.

(no subject)

From: [identity profile] plakhov.livejournal.com - Date: 2007-08-03 01:17 pm (UTC) - Expand

(no subject)

From: [identity profile] sply.livejournal.com - Date: 2007-08-03 01:40 pm (UTC) - Expand

(no subject)

From: [identity profile] plakhov.livejournal.com - Date: 2007-08-03 01:50 pm (UTC) - Expand

(no subject)

From: [identity profile] sply.livejournal.com - Date: 2007-08-03 06:52 pm (UTC) - Expand

(no subject)

From: [identity profile] plakhov.livejournal.com - Date: 2007-08-06 07:23 am (UTC) - Expand

(no subject)

From: [identity profile] begemotv2718.livejournal.com - Date: 2007-08-04 06:56 am (UTC) - Expand

(no subject)

From: [identity profile] plakhov.livejournal.com - Date: 2007-08-06 07:34 am (UTC) - Expand

(no subject)

From: [identity profile] e2pii1.livejournal.com - Date: 2007-08-04 07:53 pm (UTC) - Expand

(no subject)

From: [identity profile] plakhov.livejournal.com - Date: 2007-08-06 07:41 am (UTC) - Expand

(no subject)

From: [identity profile] e2pii1.livejournal.com - Date: 2007-08-06 10:35 am (UTC) - Expand

(no subject)

From: [identity profile] plakhov.livejournal.com - Date: 2007-08-06 11:01 am (UTC) - Expand

(no subject)

From: [identity profile] e2pii1.livejournal.com - Date: 2007-08-06 11:54 am (UTC) - Expand

(no subject)

From: [identity profile] plakhov.livejournal.com - Date: 2007-08-06 12:17 pm (UTC) - Expand

(no subject)

From: [identity profile] alexott.livejournal.com - Date: 2007-08-04 08:32 pm (UTC) - Expand

(no subject)

From: [identity profile] plakhov.livejournal.com - Date: 2007-08-06 07:11 am (UTC) - Expand

Date: 2007-08-03 12:21 pm (UTC)
From: [identity profile] cmm.livejournal.com
> 18-й век уже окончился

в программировании — от силы тринадцатый: по каким именно границам декомпозицию производить не всегда понятно,
а большая часть процессов недалеко ушла от камлания.

сараи для дров строить уже научились, впрочем.  и тачки.

(no subject)

From: [identity profile] trurle.livejournal.com - Date: 2007-08-03 12:29 pm (UTC) - Expand

(no subject)

From: [identity profile] msh.livejournal.com - Date: 2007-08-03 12:45 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2007-08-03 12:52 pm (UTC) - Expand

(no subject)

From: [identity profile] plakhov.livejournal.com - Date: 2007-08-03 01:09 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] plakhov.livejournal.com - Date: 2007-08-03 01:36 pm (UTC) - Expand

(no subject)

From: [identity profile] oblomov-jerusal.livejournal.com - Date: 2007-08-03 02:40 pm (UTC) - Expand

(no subject)

From: [identity profile] plakhov.livejournal.com - Date: 2007-08-06 06:52 am (UTC) - Expand

(no subject)

From: [identity profile] softmaster.livejournal.com - Date: 2007-08-03 06:38 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2007-08-03 06:40 pm (UTC) - Expand

(no subject)

From: [identity profile] softmaster.livejournal.com - Date: 2007-08-03 06:46 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2007-08-03 06:55 pm (UTC) - Expand

(no subject)

From: [identity profile] softmaster.livejournal.com - Date: 2007-08-03 07:08 pm (UTC) - Expand

(no subject)

From: [identity profile] msh.livejournal.com - Date: 2007-08-03 01:31 pm (UTC) - Expand

(no subject)

From: [identity profile] plakhov.livejournal.com - Date: 2007-08-03 01:38 pm (UTC) - Expand

(no subject)

From: [personal profile] stas - Date: 2007-08-03 05:59 pm (UTC) - Expand

(no subject)

From: [identity profile] plakhov.livejournal.com - Date: 2007-08-06 07:02 am (UTC) - Expand

(no subject)

From: [identity profile] trurle.livejournal.com - Date: 2007-08-03 06:40 pm (UTC) - Expand

Date: 2007-08-03 05:57 pm (UTC)
stas: (Don't panic!)
From: [personal profile] stas
Если бы инженеры Тойоты проектировали свои автомобили на молекулярном уровне - они бы действительно давно ушли домой рыдать. Современное состояние программирования во многом примерно такое, как проектирование автомобиля на молекулярном уровне. В отдельных случаях - на уровне мелких шурупчиков.

(no subject)

From: [identity profile] fantaseour.livejournal.com - Date: 2007-08-04 10:39 am (UTC) - Expand

(no subject)

From: [personal profile] stas - Date: 2007-08-05 02:08 am (UTC) - Expand

(no subject)

From: [identity profile] fantaseour.livejournal.com - Date: 2007-08-05 08:24 am (UTC) - Expand

Date: 2007-08-03 03:31 pm (UTC)
From: [identity profile] cryinstone.livejournal.com
Да, верная статья.
Написанная видавшим жизнь прагматиком, этаким Экклезиастом software engineering:)

Date: 2007-08-03 09:41 pm (UTC)
From: [identity profile] malaya-zemlya.livejournal.com
А книжка, которая Beautiful Code, очень хорошая. Рекомендую.

(Приятно и то, что по крайней мере три автора работают прямо под боком :)

Date: 2007-08-06 12:02 pm (UTC)
From: [identity profile] pollak.livejournal.com
Все так, но началось это еще задолго до компов и прог. Я бы сказал - ну паровоз, это уже вполне неинтилигибельно. Я уверен, например, что много раз в истории ранних железных дорог было так - паравоз ломается и НИКТО включая лучшего инженера, его проектировавшего - не понимает почему.

Ну это все Лем хорошо описал.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 05:17 am
Powered by Dreamwidth Studios