2009-07-16

Эволюция и креационизм

Иногда дискуссию о происхождении жизни переносят на разработку софта с идеей, что при эволюции получается лучший результат. Смотрите, типа, какой красивый мир получился! Господа, нам нечего сравнивать. Каким бы методом человек или мир ни получился, альтернативной разработки нет, чтобы сравнить. Это во первых. Во вторых, в случае софта явно хотелось бы креационизма. Чтобы всемогущий и всеведущий разработчик проверил дизайн и пофиксил все баги. Чисто для божественного совершенства. Чтобы работало сразу, а не через миллионы лет. Кстати, разработка быстрее получается. Семь дней и релиз. А не миллиарды лет ждать, пока случайно всё само соберётся. В третьих, эволюция основана на размножении и смертности. Мутация - неудачная - помер. Мутация - заболел - помер. И лишь иногда не помер, а, наоборот, оказался менее чувствителен к новому вирусу, потому выжил, и пошёл фикс в потомство. В программировании же смерть программы - не очень желаемое поведение. Т.е. если мы вдруг решили делать эволюцию, то надо вводить зависимость выживания кода от качества мутации, что для программ надо делать искусственно, не очень понятно как. Вводить таки смерть и размножение? Теперь подумаем о целях. В естественной эволюции единственная цель - выживание кода. Не вида, не индивида, а только его генетической линии. Потому жизнь индивида совершенно не интересует эволюцию, после того как последний размножился и перестал влиять на выживаемость потомства. Пользователям программ это может не понравится. Хотя в бизнесе такое встречается: клиент больше не интересует компанию, после того как он заплатил и перестал влиять на дальнейшие покупки. Короче, это я всё к тому, что эволюция, это не "само всё делается". Это миллионы лет смертей от болезней, убегания от одних, и пожирания других. И это совершенно ортогонально к человеческим ценностям. Но природа именно так устроена. А почему? Потому что нет творца. Если бы был творец, какая-нибудь сверх-цивилизация, к примеру, то можно было бы сделать быстрее, качественнее и без нравственных проблем. Создать человека в гараже за викенд, развлечения ради. Но, господа, для такой простой вещи, как софт, творца вполне можно найти и у нас.

5 comments:

SKuznetsov said...

Творцов у нас - каждый второй (особенно любят творчески разломать что-нибудь). А всемогущих и всеведущих нету ни среди тех, ни среди других. И чем сложнее творимая система, чем неопределённее её будущее окружение, тем менее релизистый релиз будет.

Продукт отличается от идеала настолько, насколько разработчик способен в каждом конкретном случае выполнять свои божественные функции. Поэтому надо стремиться к простоте. И если что-то сломать и перестроить - прозрачнее, чем приляпать нахлобучку (с трудно предсказуемыми эффектами), то надо ломать. А если влияние нахлобучки понятнее, чем уживаемость новой архитектуры с внешней средой, то нахлобучиваем.

А вот наружность лучше оставить прежней. А то ведь и по морде встречают...

SKuznetsov said...

Сейчас большинство пользовательских программ - уроды, однорукие и одноногие. Никакого резервирования. Нет оперативной обратной связи с создателем. Это, конечно, следствие общей архитектуры использования программ. ВЕБ-приложения в этом смысле, наверное, ближе к их создателю.

SKuznetsov said...

Хохма: Сэр, новое лицо Вашей программы похоже на свежий ... геморрой пользователя Вашей программы.

Valery Tolkov said...

В программе всё должно быть прекрасно, и лицо (interface) и жопа (backend).

SKuznetsov said...

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