fat_yankey: (Default)
[personal profile] fat_yankey

Эволюционизм и креационизм в голове программиста, да думаю и любого другого инженера (не путать с изобретателем) сочетаются легко.

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

Ну, понятно что этот бог отличается от всевеликого, всеведающего и всеблагого сотворившего мир одним махом. Так ... демиург какой-то. Например, у него в творениях постоянно вылезают баги, приходится их патчить в следующих версиях. Некоторые пропатчить не успевают и несчастные смилодоны вымирают от остеохандроза в страшных мучениях. Впрочем, нишевые виды можно и не патчтить, а списывать в legacy. И да, мы видим - legacy крокодилы живут себе в неизменном виде уже 80 миллионов лет и легко проживут ещё столько же.

Однако, если мы записали бога в программисты, то хотелось бы определиться со стилем его программирования. Можно ли чему-то здесь научится? Просмотр "Доктора Хауса" наглядно демонстрирует что божественные программы написаны спагетти-кодом. По симптомам совершенно неочевидно, какой именно участок кода сбоит. Все органы и системы взаимосвязаны, неисправность в одном месте порождает каскад отказов в других, порою самых неожиданных. Картина знакомая любому кто работал со старыми системами (большинство систем накапливая изменения гомогенизируются в Big Ball of Mud).

Такой стиль программирования обычно приводят в пример как "антипаттерн".

Но я бы не стал торопиться осуждать бога. Подумайте - в геноме человека всего-навсего 3 с хвостиком миллиарда пар оснований. Т.е. размер кода 6,5 гигабит, чуть более 800 мегабайт. Меньше чем Microsoft Office, а запрограммирован целый человек. Такое на языке высокого уровня не создашь, только ассемблер, только хардкор.

Стиль программирования бога, это стиль хакера-системщика высокого полёта. Есть конечно там и сопли, и спагетти (см. картинку) и мусор. Но вспомните - этому коду много сотен миллионов лет и бог знает сколько версий.

Date: 2014-06-11 04:18 am (UTC)
From: [identity profile] apocalapse.livejournal.com
а внешний код в этих рассуждениях не учитывается кагбе? здесь 800 мегабайт, а там...

Date: 2014-06-11 04:26 am (UTC)
From: [identity profile] fat-yankey.livejournal.com
Внешний код?

Date: 2014-06-11 04:37 am (UTC)
From: [identity profile] apocalapse.livejournal.com
Когда мы рассматриваем природный объект как код, его окружение будет как что? Где вообще здесь код и где комп? Можно ли провести разделение на software и hardware? Как называется сам себя исполняющий ware? Получается что-то вроде selfware.
Edited Date: 2014-06-11 04:39 am (UTC)

Date: 2014-06-11 04:48 am (UTC)
From: [identity profile] fat-yankey.livejournal.com
Ну, я тут конечно плаваю, но вроде бы хард - это РНК и рибосомы которые интерпретируют (биологи говорят - транслируют) ДНК в белок. Ну далее вся структура клетки которая обеспечивает синтез и использование белка.

Date: 2014-06-11 05:11 am (UTC)
From: [identity profile] apocalapse.livejournal.com
Как мне кажется, основная трудность подхода именно в этом. Если относить способ интерпретации к железу, это уже ограничение. Он ведь и менялся и может опять поменяться. С другой стороны, всякая отдельная система в природе не изолирована. Область применения всей аналогии ограничена настолько, что эта аналогия не охватывает ничего такого, что можно было бы назвать божественной деятельностью. По крайней мере, бог как программист - ну очень ограниченная концепция по отношению к богу.
Edited Date: 2014-06-11 05:14 am (UTC)

Date: 2014-06-11 07:20 pm (UTC)
From: [identity profile] fat-yankey.livejournal.com
Угу, понятно. Согласен. Код, условно говоря, "интерпретатора" или там "операционой системы" тоже следует включать в общий объём. То есть не 800 мег, а 800 мег + сколько там в интерпретаторе.

Date: 2014-06-12 10:21 am (UTC)
From: [identity profile] nealar.livejournal.com
МСОфис же на голом железе выполняется, известное дело. Да и человеку никакая биосфера для жизни не нужна. Добавим к этому наличие кода микрокоманд внутри современных микропроцессоров.
И получится, что исходное сравнение генома с МСОфисом - логично, а попытки учесть наличие "внешней среды" заводят в дебри.
Edited Date: 2014-06-12 10:21 am (UTC)

Date: 2014-06-23 10:25 am (UTC)
From: [identity profile] livelogic.livejournal.com
Белок это все-таки совсем узко, интересен полный фенотип, т.е. совокупность всех признаков организма.

По сути есть относительное устойчивое преобразование пространства генотипов в пространство фенотипов (онтогенез), подпространству генотипов "кролик" соответствует некое подпространство фенотипов кролика, и синтез белка тут лишь одна из промежуточных стадий.

Кстати, при наличии биекции фенотип <=> генотип для объяснения сложности и разнообразия не нужен отбор. Из пространства генотипов случайно вытаскиваeм E9 генотипов, через преобразование получаем E9 фенотипов, разнообразие определяется исключительно функцией преобразования. Если везде лягушки, то отбирай не отбирай, медведя не выйдет.

Иными словами, генотип можно рассматривать не как исполняемый код, а как набор опций для процесса онтогенеза.

Date: 2014-06-11 04:22 am (UTC)
From: [identity profile] hemdall.livejournal.com
=) Очень древний боян - читал аналогичные рассуждения в бумажном журнале в году этак 88-89.
Но смешно, да.

UDP. Да и еще - ДНК не программный код в буквальном виде, кодирование "межклеточного взаимодействия".
То есть в программном смысле - это программа отношений объектов дающая в итоге чрезвычайно гибкую само-программирующуюся и саморазвивающуюся уникальную систему.
Edited Date: 2014-06-11 04:26 am (UTC)

Date: 2014-06-11 04:26 am (UTC)
From: [identity profile] fat-yankey.livejournal.com
Если в 88-89, то это уже не боян, а ретро или винтаж.

Date: 2014-06-11 04:31 am (UTC)
From: [identity profile] hemdall.livejournal.com
Винтаж не винтаж но Вы повторили идею 1:1.

Там еще развитие было - что обратном смысле файлы в компе могут получить самосознание и начать на конгрессе рассуждать что "Великое Включение Вселенной" было не один раз.

Date: 2014-06-11 05:06 am (UTC)
From: [identity profile] eugene-gu.livejournal.com
Коль хорошо забытое - то новое! :)

Date: 2014-06-11 04:46 am (UTC)
From: [identity profile] lefantasy.livejournal.com
Самофоркающаяся система.

Date: 2014-06-11 05:51 am (UTC)
From: [identity profile] hemdall.livejournal.com
Именно - как две ветки пересекутся так следом форки с улучшениями от одного до пары десятков =)

Date: 2014-06-11 04:30 am (UTC)
From: [identity profile] joseph hindin (from livejournal.com)
Можно еще и так (http://trurle.livejournal.com/919567.html):
--
Приснился сон, в котором разъяснялось что мироздание было создано создателем на некой вычислительной основе, вроде как в Матрице; что всякого рода сатаны и демоны это вирусного характера искусственные интеллекты, научившиеся подключаться напрямую к коду мироздания через разные эксплойты; что создатель, пытаясь вычистить мироздание от недружественных искинов, неоднократно переустанавливал систему с восстановлением данных из бэкапа. Чем и объясняется, в частности, физическая картина мира в несколько миллиардов лет и библейская датировка в 5770 лет.
Что-то там еще было насчет поиска бога путем программирования и уподобление создателю путем программирования же, подобно тому как алхимики, создавая гомунюкулосов, уподоблялись демиургу, но совсем уже смутное.

Date: 2014-06-11 04:30 am (UTC)
From: [identity profile] kouzdra.livejournal.com
Просмотр "Доктора Хауса" наглядно демонстрирует что божественные программы написаны спагетти-кодом. По симптомам совершенно неочевидно, какой именно участок кода сбоит. Все органы и системы взаимосвязаны, неисправность в одном месте порождает каскад отказов в других, порою самых неожиданных

Так этот ровно эффект будет от просмотра любого бинарника. Cколь угодно продуманного в исходнике. Более того, то что кажется сбоем может оказаться фичей, "исправление" которой сломает систему.

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

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

Программисты 70-х...

Date: 2014-07-12 08:14 pm (UTC)
From: [identity profile] aristarh1970.livejournal.com
Программисты 70-х (в среднем по больнице, за исключением "девочек-программисток") гораздо больше знали о Лиспе и поэтому имели гораздо больше шнасов быстрее разобраться в голимой функциональщине, чем нынешние.
Да и сам Хаскел - из семейства ML-языков, зародившегося в начале 1970-х...

Re: Программисты 70-х...

Date: 2014-07-14 02:00 pm (UTC)
From: [identity profile] kouzdra.livejournal.com
Не - и ML и Haskell - они про совершенно другое. А так конечно - программирование 50-60-х - куда более живое - нарождающая отрасль :)

Date: 2014-06-11 05:33 am (UTC)
From: [identity profile] idealist-t.livejournal.com
Забавно. Если принять гомогенизацию как постоянное свойство, то можно говорить о состоянии Рая как о строго гетерогенной системе. Грех тогда - это некоторая степень гомогенизации.
Однако по христианской догматике Бог не вмешивается в материальные процессы кроме как в символические или сугубо утилитарные. Так что эволюция - это дело рук сторонних разработчиков, которые ставили на код заплаты, исходя из своих сиюминутных интересов.

Date: 2014-06-11 06:19 am (UTC)
From: [identity profile] 1greywind.livejournal.com
>>каждый новый вид суть некий апгрейд предыдущего (эволюционизм)

С чего это? Эволюция - это не "прогресс". Эволюция - это результат внешнего давления на случайно меняющуюся систему. Если более "примитивный" вид лучше удовлетворяет условиям отбора - он и будет "следующим шагом".

Сравнивать эволюцию с программированием - очень плохая идея. Это работу клеточного аппарата по декодированию ДНК и синтезу белков можно сравнивать с работой машины Тьюринга. А эволюция - это сугубо общее явление. Программирование не имеет никакого влияния на проектирование процессоров. Это бесконечные слои абстракции между пилообразными импульсами и потенциалами на транзисторных структурах в кристалле кремния создают иллюзию, что программирование - это чета важное. А потом оказывается что у процессора реализована аппаратная виртуализация, и программист всю жизнь просто занимался поддержкой костылей для обратной совместимости.

Date: 2014-06-11 02:18 pm (UTC)
From: [identity profile] fat-yankey.livejournal.com
> Эволюция - это не "прогресс"

Я нигде не утверждал что эволюция это "прогресс".

> Эволюция - это результат внешнего давления на случайно меняющуюся систему

Это вы описываете механизм эволюции (ну, доминирующую теорию как он устроен). Но не определяете феномен эволюции. Т.е. спорите с чем-то другим.

Date: 2014-06-11 02:27 pm (UTC)
From: [identity profile] 1greywind.livejournal.com
"каждый новый вид суть некий апгрейд"
"изменения дискретны и осмысленны"
"архитектуру икрометания коренным образом рефакторят"

Вы многократно объявляете результаты многоступенчатого отбора дискретными шагами являющимися частями процесса. Поэтому я и указываю вам на бессмысленность аналогии.

Date: 2014-06-11 02:34 pm (UTC)
From: [identity profile] fat-yankey.livejournal.com
> Вы многократно объявляете результаты многоступенчатого отбора дискретными шагами являющимися частями процесса.

Я что-то не понял: разве появление новых видов не часть процесса эволюции? Ну и как следствие введения понятия "вид" мы наблюдаем именно дискретные шаги.

Date: 2014-06-11 02:42 pm (UTC)
From: [identity profile] 1greywind.livejournal.com
Тут мы быстро завязнем в определении того, что такое "вид". Например что делать с имеющей место возможностью горизонтального переноса генетического материала вирусами? Т.е. новый вид может появиться не в результате "эволюции" вида-родителя, а потому, что какой-то удачливый вирус перенес фрагмент генетического кода с другой части дерева жизни (причем хоть от растений к грибам и оттуда к млекопитающим).

Date: 2014-06-11 02:51 pm (UTC)
From: [identity profile] fat-yankey.livejournal.com
Опять вы сбиваетесь на механизм. Какая разница как появился новый код если это привело к образованию нового вида? И новый вид есть апгрейд предыдущего (т.е. получен небольшим изменением кода из вида родителя). Т.е. всё как в тексте в топе.

Собственно насчёт механизма это ведь только теория, так? Насколько я в курсе (хотя конечно я тут не специалист ни разу), никто пока экспериментально не получал новых видов.

Date: 2014-06-11 03:05 pm (UTC)
From: [identity profile] 1greywind.livejournal.com
Конечно сбиваюсь. Потому что в терминах программирования ближайший аналог процесса эволюции будет выглядит так: подача случайного сигнала на вход черного ящика в надежде на то, что однажды получится работающая программа. И, что характерно, это работает. Потому что черный ящик работает с очень не строгим синтаксисом, есть масса взаимозаменяемых операндов и ограничений на длину программы практически нет (Мимивирусы (http://en.wikipedia.org/wiki/Mimivirus) это прекрасно демонстрируют - у них чудовищной длинны геном, который ну никак простоте самого вируса не соответствует).

Идея о горизонтальном переносе генов совсем не нова и наблюдается в природе, причем не редко: http://en.wikipedia.org/wiki/Horizontal_gene_transfer

Что вы скажите о системе, в которой не то, что множественное наследование возможно, но и ограничений на горизонтальное и циклическое наследование нет? Это не порядок, к которому будет стремиться хороший программист, а первобытный хаос :)
(deleted comment)

Date: 2014-06-11 02:35 pm (UTC)
From: [identity profile] 1greywind.livejournal.com
Чтобы не обострять дискуссию на ровном месте: мне не понравилось то, что вы смешиваете процесс формирования клеточного аппарата, собственно "эволюцию", (которая имеет мало общего с самой идеей программирования) и процесс чтения\формирования генетического материала. Последний вполне может описываться в рамках программирования (но и там много оговорок придется делать, чтобы аналогии с "обычным" программированием имели силу).

Date: 2014-06-11 12:22 pm (UTC)
From: [identity profile] ogn-slon.livejournal.com
Между прочим, по характеру багов в работе программы можно попытаться что-то узнать о самой программе, даже не имея доступа к коду. И действительно, пару лет назад была предложена идея, как по характеру "багов" в экспериментальных данных о космических лучах можно попытаться выяснить, не является ли наша вселенная результатом численной симуляции на трехмерной решетке согласно современной методике подобных вычислений в квантовой хромодинамике. Это такая как бы крэйзи айдиа, но высказана вполне серьезно, и вроде бы ни к чему не придерешься, на самом деле. Стоит попытаться! :)

Статья:
http://arxiv.org/abs/1210.1847

Краткая популяризация:
http://www.technologyreview.com/view/429561/the-measurement-that-would-reveal-the-universe-as-a-computer-simulation/

Date: 2014-06-11 03:24 pm (UTC)
From: (Anonymous)
Кроме апгрейдов и осмысленных изменений вроде как к лучшему время от времени происходят малопонятные с точки зрения идеи "эволюция=прогресс" дегенерации (утрата отдельных органов и целых систем у шибко специализировавшихся, с последующим их списанием в нишу или насовсем), повороты не туда (в фатальный гигантизм или такую же карликовость) и внезапные закрытия перспективных казалось бы проектов (звероящеры, птерозавры, трилобиты какие).

Date: 2014-06-17 12:49 pm (UTC)
From: [identity profile] belousov-ilia.livejournal.com
"изменения дискретны и осмысленны"
Неверный тезис. Ни то, ни другое. Изменения случайны, просто остаётся тот, чьи изменения лучше приспособлены к внешней среде, а миллионы особей с другими отклонениями просто не выживают. И изменения эти нарастают не скачком.

Date: 2014-06-18 08:12 pm (UTC)
From: [identity profile] bigdrum.livejournal.com
На ассемблере такого не сделаешь. А вот на Форте - залоба.
From: [identity profile] aristarh1970.livejournal.com
Замечу, что у вас неверное представление о программировании.
Метафорические "800 мегабайт исполняемого кода" не создать, используя "только ассемблер, только хард кор".
Большие системы создаются именно средствами высокого уровня.
Языки программирования при этом далеко не все, но они - высокого уровня.
Ассемблерные куски составляют ничтожно малую долю.

Кроме того, "хакер-системщик" (даже самого выскокого полета) никаких систем не создает.
Он их ковыряет/настраивает/ломает/правит/сопроваождарет, но не создает.
А если создает или участвует в создании, то роль его кардинально меняется и все его "хакерские черты" отходят далеко-далеко.
Ибо они (хекерские черты) только мешают созданию СИСТЕМ.
Вообще, вы попали в ловушку неверного толкования слова система/системный.
В терминах "системный программист" и "системный аналитик" - слово "системный" употребляется в диаметрально противоположных смыслаx.

Системный программист (или хакер-системщик) это из профессионального жргона, обозначает человека, работающего преимущественно на "низком уровне" (= близком к железу).
Как вы понимаете, с этого уровня реальной СИСТЕМЫ не видно, иббо не нужно.
А хакерство это вообще "системный антипаттерн" и подавляющее большинство хакеров - весьма средненькие и как программисты, и как аналитики.

(Это я вам как живой программер с 29 летним стажем говорю).
From: [identity profile] fat-yankey.livejournal.com
Как живой программер с 25-летним стажем - благодарю за науку.

Хе-хе.
From: [identity profile] geodissey.livejournal.com
... для какой такой ОС программист бог создавал обсуждаемые программы. И кто же написал эту самую ОС. И тут сравнение с хакером становится вдруг рациональным. Хакер и пытается обычно использовать ОС, используя в своих программах её недокументированные или непредусмотренные свойства.

Возможно, эта ОС есть природа? Но тогда кто её самоё создал, не бог, выходит? И т.д...

Всё это, конечно, только игра слов, как и у автора блога.
Edited Date: 2016-03-28 10:11 pm (UTC)

Date: 2017-11-17 03:37 pm (UTC)
From: [identity profile] yuri pozdnyakov (from livejournal.com)
Программисты оказались невеждами.

Profile

fat_yankey: (Default)
Igor Kurtukov

December 2025

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28 2930 31   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 2nd, 2026 03:45 pm
Powered by Dreamwidth Studios