Бог как программист
Jun. 11th, 2014 12:09 am
Эволюционизм и креационизм в голове программиста, да думаю и любого другого инженера (не путать с изобретателем) сочетаются легко.
С одной стороны каждый новый вид суть некий апгрейд предыдущего (эволюционизм), с другой стороны изменения дискретны и осмысленны - или маленькую новую фичу прикрутят, или архитектуру икрометания коренным образом рефакторят, всё одно требуется инженерное вмешательство, некий великий инженер. В нашем случае инженер-программист, ведь изменения нужно запрограммировать в ДНК. При этом по всем законам программирования от старой версии должны оставаться разные рудименты и атавизмы, неиспользуемые куски кода и прочий мусор. И да, они остаются, мы их наблюдаем.
Ну, понятно что этот бог отличается от всевеликого, всеведающего и всеблагого сотворившего мир одним махом. Так ... демиург какой-то. Например, у него в творениях постоянно вылезают баги, приходится их патчить в следующих версиях. Некоторые пропатчить не успевают и несчастные смилодоны вымирают от остеохандроза в страшных мучениях. Впрочем, нишевые виды можно и не патчтить, а списывать в legacy. И да, мы видим - legacy крокодилы живут себе в неизменном виде уже 80 миллионов лет и легко проживут ещё столько же.
Однако, если мы записали бога в программисты, то хотелось бы определиться со стилем его программирования. Можно ли чему-то здесь научится? Просмотр "Доктора Хауса" наглядно демонстрирует что божественные программы написаны спагетти-кодом. По симптомам совершенно неочевидно, какой именно участок кода сбоит. Все органы и системы взаимосвязаны, неисправность в одном месте порождает каскад отказов в других, порою самых неожиданных. Картина знакомая любому кто работал со старыми системами (большинство систем накапливая изменения гомогенизируются в Big Ball of Mud).
Такой стиль программирования обычно приводят в пример как "антипаттерн".
Но я бы не стал торопиться осуждать бога. Подумайте - в геноме человека всего-навсего 3 с хвостиком миллиарда пар оснований. Т.е. размер кода 6,5 гигабит, чуть более 800 мегабайт. Меньше чем Microsoft Office, а запрограммирован целый человек. Такое на языке высокого уровня не создашь, только ассемблер, только хардкор.
Стиль программирования бога, это стиль хакера-системщика высокого полёта. Есть конечно там и сопли, и спагетти (см. картинку) и мусор. Но вспомните - этому коду много сотен миллионов лет и бог знает сколько версий.
no subject
Date: 2014-06-11 04:18 am (UTC)no subject
Date: 2014-06-11 04:26 am (UTC)no subject
Date: 2014-06-11 04:37 am (UTC)no subject
Date: 2014-06-11 04:48 am (UTC)no subject
Date: 2014-06-11 05:11 am (UTC)no subject
Date: 2014-06-11 07:20 pm (UTC)no subject
Date: 2014-06-12 10:21 am (UTC)И получится, что исходное сравнение генома с МСОфисом - логично, а попытки учесть наличие "внешней среды" заводят в дебри.
no subject
Date: 2014-06-23 10:25 am (UTC)По сути есть относительное устойчивое преобразование пространства генотипов в пространство фенотипов (онтогенез), подпространству генотипов "кролик" соответствует некое подпространство фенотипов кролика, и синтез белка тут лишь одна из промежуточных стадий.
Кстати, при наличии биекции фенотип <=> генотип для объяснения сложности и разнообразия не нужен отбор. Из пространства генотипов случайно вытаскиваeм E9 генотипов, через преобразование получаем E9 фенотипов, разнообразие определяется исключительно функцией преобразования. Если везде лягушки, то отбирай не отбирай, медведя не выйдет.
Иными словами, генотип можно рассматривать не как исполняемый код, а как набор опций для процесса онтогенеза.
no subject
Date: 2014-06-11 04:22 am (UTC)Но смешно, да.
UDP. Да и еще - ДНК не программный код в буквальном виде, кодирование "межклеточного взаимодействия".
То есть в программном смысле - это программа отношений объектов дающая в итоге чрезвычайно гибкую само-программирующуюся и саморазвивающуюся уникальную систему.
no subject
Date: 2014-06-11 04:26 am (UTC)no subject
Date: 2014-06-11 04:31 am (UTC)Там еще развитие было - что обратном смысле файлы в компе могут получить самосознание и начать на конгрессе рассуждать что "Великое Включение Вселенной" было не один раз.
no subject
Date: 2014-06-11 05:06 am (UTC)no subject
Date: 2014-06-11 04:46 am (UTC)no subject
Date: 2014-06-11 05:51 am (UTC)no subject
Date: 2014-06-11 04:30 am (UTC)--
Приснился сон, в котором разъяснялось что мироздание было создано создателем на некой вычислительной основе, вроде как в Матрице; что всякого рода сатаны и демоны это вирусного характера искусственные интеллекты, научившиеся подключаться напрямую к коду мироздания через разные эксплойты; что создатель, пытаясь вычистить мироздание от недружественных искинов, неоднократно переустанавливал систему с восстановлением данных из бэкапа. Чем и объясняется, в частности, физическая картина мира в несколько миллиардов лет и библейская датировка в 5770 лет.
Что-то там еще было насчет поиска бога путем программирования и уподобление создателю путем программирования же, подобно тому как алхимики, создавая гомунюкулосов, уподоблялись демиургу, но совсем уже смутное.
no subject
Date: 2014-06-11 04:30 am (UTC)Так этот ровно эффект будет от просмотра любого бинарника. Cколь угодно продуманного в исходнике. Более того, то что кажется сбоем может оказаться фичей, "исправление" которой сломает систему.
Самое забавное, что если показать программисту 70-х скажем программу на Хаскеле (дав компилятор и все прочее, кроме документации) - он вряд ли вообще сможет в ней разобраться - просто потому, что ему не знаком понятийный и технический аппарат, который там подразумевается.
C другой стороны - если ее бинарник прогнать через декомпилятор - то скорее всего получится довольно внятный и неплохо структурированный код, в котором он разобраться сможет - но это будет совсем другой код.
Программисты 70-х...
Date: 2014-07-12 08:14 pm (UTC)Да и сам Хаскел - из семейства ML-языков, зародившегося в начале 1970-х...
Re: Программисты 70-х...
Date: 2014-07-14 02:00 pm (UTC)no subject
Date: 2014-06-11 05:33 am (UTC)Однако по христианской догматике Бог не вмешивается в материальные процессы кроме как в символические или сугубо утилитарные. Так что эволюция - это дело рук сторонних разработчиков, которые ставили на код заплаты, исходя из своих сиюминутных интересов.
no subject
Date: 2014-06-11 06:19 am (UTC)С чего это? Эволюция - это не "прогресс". Эволюция - это результат внешнего давления на случайно меняющуюся систему. Если более "примитивный" вид лучше удовлетворяет условиям отбора - он и будет "следующим шагом".
Сравнивать эволюцию с программированием - очень плохая идея. Это работу клеточного аппарата по декодированию ДНК и синтезу белков можно сравнивать с работой машины Тьюринга. А эволюция - это сугубо общее явление. Программирование не имеет никакого влияния на проектирование процессоров. Это бесконечные слои абстракции между пилообразными импульсами и потенциалами на транзисторных структурах в кристалле кремния создают иллюзию, что программирование - это чета важное. А потом оказывается что у процессора реализована аппаратная виртуализация, и программист всю жизнь просто занимался поддержкой костылей для обратной совместимости.
no subject
Date: 2014-06-11 02:18 pm (UTC)Я нигде не утверждал что эволюция это "прогресс".
> Эволюция - это результат внешнего давления на случайно меняющуюся систему
Это вы описываете механизм эволюции (ну, доминирующую теорию как он устроен). Но не определяете феномен эволюции. Т.е. спорите с чем-то другим.
no subject
Date: 2014-06-11 02:27 pm (UTC)"изменения дискретны и осмысленны"
"архитектуру икрометания коренным образом рефакторят"
Вы многократно объявляете результаты многоступенчатого отбора дискретными шагами являющимися частями процесса. Поэтому я и указываю вам на бессмысленность аналогии.
no subject
Date: 2014-06-11 02:34 pm (UTC)Я что-то не понял: разве появление новых видов не часть процесса эволюции? Ну и как следствие введения понятия "вид" мы наблюдаем именно дискретные шаги.
no subject
Date: 2014-06-11 02:42 pm (UTC)no subject
Date: 2014-06-11 02:51 pm (UTC)Собственно насчёт механизма это ведь только теория, так? Насколько я в курсе (хотя конечно я тут не специалист ни разу), никто пока экспериментально не получал новых видов.
no subject
Date: 2014-06-11 03:05 pm (UTC)Идея о горизонтальном переносе генов совсем не нова и наблюдается в природе, причем не редко: http://en.wikipedia.org/wiki/Horizontal_gene_transfer
Что вы скажите о системе, в которой не то, что множественное наследование возможно, но и ограничений на горизонтальное и циклическое наследование нет? Это не порядок, к которому будет стремиться хороший программист, а первобытный хаос :)
no subject
Date: 2014-06-11 02:35 pm (UTC)no subject
Date: 2014-06-11 12:22 pm (UTC)Статья:
http://arxiv.org/abs/1210.1847
Краткая популяризация:
http://www.technologyreview.com/view/429561/the-measurement-that-would-reveal-the-universe-as-a-computer-simulation/
no subject
Date: 2014-06-11 03:24 pm (UTC)no subject
Date: 2014-06-17 12:49 pm (UTC)Неверный тезис. Ни то, ни другое. Изменения случайны, просто остаётся тот, чьи изменения лучше приспособлены к внешней среде, а миллионы особей с другими отклонениями просто не выживают. И изменения эти нарастают не скачком.
no subject
Date: 2014-06-18 08:12 pm (UTC)Замечу, что у вас неверное представление о программиро
Date: 2014-07-12 08:08 pm (UTC)Метафорические "800 мегабайт исполняемого кода" не создать, используя "только ассемблер, только хард кор".
Большие системы создаются именно средствами высокого уровня.
Языки программирования при этом далеко не все, но они - высокого уровня.
Ассемблерные куски составляют ничтожно малую долю.
Кроме того, "хакер-системщик" (даже самого выскокого полета) никаких систем не создает.
Он их ковыряет/настраивает/ломает/правит/сопроваождарет, но не создает.
А если создает или участвует в создании, то роль его кардинально меняется и все его "хакерские черты" отходят далеко-далеко.
Ибо они (хекерские черты) только мешают созданию СИСТЕМ.
Вообще, вы попали в ловушку неверного толкования слова система/системный.
В терминах "системный программист" и "системный аналитик" - слово "системный" употребляется в диаметрально противоположных смыслаx.
Системный программист (или хакер-системщик) это из профессионального жргона, обозначает человека, работающего преимущественно на "низком уровне" (= близком к железу).
Как вы понимаете, с этого уровня реальной СИСТЕМЫ не видно, иббо не нужно.
А хакерство это вообще "системный антипаттерн" и подавляющее большинство хакеров - весьма средненькие и как программисты, и как аналитики.
(Это я вам как живой программер с 29 летним стажем говорю).
Re: Замечу, что у вас неверное представление о программи
Date: 2014-07-13 01:56 am (UTC)Хе-хе.
Осталось уяснить немногое, а именно...
Date: 2016-03-28 10:10 pm (UTC)Возможно, эта ОС есть природа? Но тогда кто её самоё создал, не бог, выходит? И т.д...
Всё это, конечно, только игра слов, как и у автора блога.
no subject
Date: 2017-11-17 03:37 pm (UTC)