четверг, 18 июня 2009 г.

Василий Щепетнёв: Пир слепых

... известны примеры изобретений и открытий, которые совершались практически даром. Или не совершались вовсе. Цивилизации доколумбовой Америки, вернее, доколумбового Нового Света, не знали колеса. Храмы возводили, дороги прокладывали, идолов ваяли, а вот до колеса не додумались. Почему? Что помешало? Отсутствие на континенте лошадей? Но было бы колесо, а тягло найдется. Да хоть те же люди. Возможно, аборигены иначе на мир смотрели, в другую сторону думали. ...

Вдруг совсем рядом с нами находятся открытия наподобие колеса, и для их постижения нужны не миллиардные установки, а лишь иной тип мышления? То есть это как раз не "лишь", мыслить иначе труднее, чем с миру собрать на коллайдер.

среда, 10 июня 2009 г.

Факты и заблуждения профессионального программирования

Факт 1
Самый важный фактор в разработке ПО — это не методы и средства, применяемые программистами, а сами программисты.

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


В заключение я бы хотел привести одно из моих любимых высказываний:
Реальность - это убийство прекрасной теории бандой мерзких фактов.
Здесь я не ставил перед собой задачу определить состав "банды мерзких фактов". И я не думаю, что любая теория прекрасна. Но я уверен, что любая теория, чего-то стоящая в индустрии ПО, не должна противоречить фактам, представленным в этой книге, неприятные они или нет. Я предложил бы ученым, теории которых не согласуются с одним или несколькими из этих фактов, еще раз обдумать то, что они предлагают (или отстаивают). И практикам, собирающимся применять какой-то инструмент, технологию, метод или методологию, которые противоречат этим фактам, я бы посоветовал остерегаться неприятных сюрпризов на избираемом ими пути.
За много лет в индустрии ПО совершена масса ошибок Я не имею в виду заваленные проекты или продукты, потому что я думаю, что их намного меньше, чем многие окружающие хотят нас уверить. Я говорю не о тех, кто приговаривает "это изобретено не здесь" или "это никуда не годится", потому что я думаю, что их тоже очень немного. Ошибки, о которых я говорю, совершаются потому, что яркие в остальном представители нашей отрасли предлагают, отстаивают и проводят в жизнь очевидно ложные истины.
Я надеюсь, что этот сборник фактов и заблуждений поможет искоренить эти ошибки.

понедельник, 1 июня 2009 г.

Глава 5. Корни религии

Могут ли дуализм и телеология как-то помочь в этом? Чтобы лучше разобраться в данной гипотезе, воспользуемся предложенным философом Дэниелом Деннетом понятием «целевой, или интенциональный, уровень».

Деннет выделил три уровня, или позиции, на которых работает наше мышление при попытке понять и, следовательно, предсказать поведение животных, механизмов или соплеменников: «физический», «проектный» и «целевой». Физический уровень, в принципе, всегда работает безотказно, потому что все окружающее подчиняется законам физики. Но предсказание поведения объекта на основе анализа его физических свойств может оказаться слишком долгим делом. К тому времени, как будут рассчитаны все взаимодействия движущихся частей сложного объекта, предсказание его поведения, скорее всего, нам уже не понадобится. Для спроектированных объектов вроде стиральной машины экономичнее сразу работать на проектном уровне. Не вдаваясь в физические детали, мы можем предсказать поведение объекта на основе его дизайна. Говоря словами Деннета,
...почти каждый может, бросив беглый взгляд на будильник, предсказать, когда он зазвенит. Нам не важно и не обязательно знать, работает ли он на пружине, батарейках или заряжается от солнца, имеет ли внутри медные шестеренки или кремниевую микросхему, — мы просто делаем допущение, что он сконструирован так, чтобы зазвенеть в установленное на циферблате время.

Живые организмы никто не проектировал, но благодаря действию естественного отбора относительно них тоже можно делать прогнозы на проектном уровне. Допустив, что сердце «сделано» для перекачки крови, мы быстрее разберемся в его работе. На основе предположения о том, что яркая окраска цветов «спроектирована» для привлечения пчел, Карл фон Фриш открыл цветовое видение последних (хотя до этого считалось, что пчелы не различают цвета). Я поставил в предыдущем предложении кавычки, чтобы не дать повода какому-нибудь нечистому на руку креационисту зачислить великого австрийского зоолога в свой лагерь. Думаю, не нужно пояснять, что, используя в работе проектный уровень, он без труда мог перевести его в эволюционные термины.

Целевой, или интенциональный, уровень (уровень намерений), по сравнению с проектным является еще более эффективным упрощением задачи. Предполагается, что объект не только спроектирован с определенной целью, но еще и содержит в себе некое активное начало, направляющее его действия к определенной цели. При виде тигра лучше не задумываться надолго о его возможном поведении. Не важно, как взаимодействуют на физическом уровне его молекулы, не важно, как сконструированы его лапы, когти и зубы. Эта кошечка собирается вами пообедать, и для выполнения своего намерения она самым ловким и эффективным образом использует и лапы, и когти, и зубы. Самым быстрым способом предсказания ее поведения будет, забыв о физическом и проектном уровне, сразу перепрыгнуть на целевой. Заметим, что, подобно тому как проектный уровень можно использовать для спроектированных и для неспроектированных вещей, целевой уровень также можно применять как для имеющих сознательные цели объектов, так и для объектов, сознательных целей не имеющих.