Как это выглядит?
картинка кликабельна
На компьютере создаётся виртуальная среда со своими правилами и выпускается первая простейшая живность. Буду называть их ботами. Боты могут погибнуть или выжить и дать потомство. Потомок может слегка отличаться от предка.
Ну а дальше за работу принимается эволюция и естественный отбор.
А мне остаётся только наблюдать за развитием мира.
Чем неожиданнее для создателя и многообразней будут варианты развития мира, тем более удачным можно считать эксперимент.
Поведением ботов управляет код, записанный в них.
Именно код и является геномом, который отвечает за поведение бота и который будет изменяться в процессе эволюции.
Внутреннее устройство кода — это самое интересное в проекте.
Код должен быть простым и выдерживать различные модификации (случайное изменение любого элемента в коде) над собой без синтаксических ошибок.
К коду мы вернёмся позже, сначала опишу сам мир.
Описание «мира ботов»
Мир представляет из себя двухмерное, разбитое на квадраты поле. По горизонтали он замкнут по кругу, то есть если бот выйдет за левый край, то появится с правой стороны. Сверху и снизу движение ограниченно стеной. Мир, по задумке — это разрез водоёма, чем выше, тем больше энергии можно получить от Солнца. В нижней половине энергия Солнца уже не доступна. Собственно, этого уже достаточно. Я начинал эксперименты именно с таким миром.
Затем добавил «минералы» в нижней части из которых можно получить энергию. Чем глубже, тем больше «минералов» бот может получить. После этого нижняя часть мира тоже стала заселяться.
Боты могут перемещаться по восьми направлениям и прощупывать соседние с собой клетки.
Боты могут съедать других ботов, находящихся на соседней клетке.
Боты копят энергию и когда накопят заданное количество, от них отпочковывается их клон.
В клона записывается та же программа, что и в родителе, но в одном случае из четырёх случайным образом меняется один байт в программе. Это может никак не повлиять на поведение клона, так как не все команды в программе-геноме выполняются, большая часть генома может быть не задействована. Также это может вызвать ухудшение или улучшение способностей бота выживать в данном мире. В первом случае бот либо погибнет, либо не сможет оставить много потомков. В случае улучшения способностей бота, он с большей вероятностью оставит больше потомства, которое вытеснит менее удачных соседей.
Боты не умирают от старости. Бот может погибнуть, если запасы его энергии станут ниже нуля, если его съест другой бот и если он накопил максимальное количество энергии, должен отпочковать потомка, но окружён со всех сторон и не может этого сделать. После смерти, если он не был съеден, бот превращается в органику, которая начинает тонуть, пока не встретит препятствие. После этого органика остаётся в подвешенном состоянии. Органику могут поедать другие боты.
Здесь я дал краткое представление о виртуальном мире ботов, достаточное для понимания дальнейшего материала. Собственно сам мир не столь важен, можно экспериментировать с разными мирами. Куда интересней, как устроен код-геном
Код-геном
Код-геном представляет из себя цепочку чисел. Каждое число — это какая то команда (в простейшем случае). Также есть указатель текущей команды (далее УТК), который показывает, какая команда будет сейчас выполняться и после выполнения команды, указатель перемещается к следующей команде. Если указатель вышел за край цепочки, то он появляется с противоположной стороны, то есть цепочка команд замкнута по кругу. Изначально я выбрал размер цепочки в 64 ячейки и назначил некоторым числам первые команды. Если числу не соответствует никакая команда, то это число является безусловным переходом. Когда УТК укажет на ячейку с подобным числом, то он увеличивается(переходит по цепочке команд вперёд) на это число. То, что число без назначенной команды является безусловным переходом очень удобно. При экспериментах можно спокойно назначать на свободные числа новую команду или убирать старую. Так как у меня длина цепочки 64 ячейки, то доступных чисел тоже 64 (от 0 до 63).
На рисунке схематично изображен геном первого бота в виде замкнутой по кругу ленты. Все ячейки забиты командой 23. Это команда «фотосинтез». После её выполнения, бот получает энергию в количестве, зависящей от глубины, где бот находится. Также на рисунке изображена схема выполнения кода. Стоит отметить, что команда, кроме выполнения основной функции, также отвечает за изменение УТК. После выполнения такой простой команды, как «фотосинтез», УТК увеличивается на единицу. В данном примере будут последовательно выполнены все команды в коде-геноме.
Допустим, что при появлении нового бота произошла мутация и в ячейку под номером 1 записалось число 63. После появления нового бота, его УТК равен 0, выполниться команда «фотосинтез», УТК увеличиться на 1. Теперь считывается число из ячейки 1 — это число 63. Этому числу не присвоено никакой команды, поэтому это безусловный переход. Сдвигаем УТК на 63 ячейки вперёд и теперь УТК снова указывает на команду «фотосинтез», в нулевой ячейке. Так будет повторяться по кругу. Заметьте, что внешнее поведение бота ни чем не будет отличаться от родителя, но использоваться будут только две ячейки из 64.
Теперь рассмотрим более сложные команды, требующие параметров.
Всего в мире ботов есть восемь направлений. Если нам нужна функция поворота, то можем использовать 8 команд, по одной команде для каждого направления.
Но у нас всего 64 числа (0..63) и на все необходимые команды просто не хватит чисел. Поэтому будем ипользовать параметры.
Например, мы присвоили числу 25 команду «поворот». Когда УТК укажет на ячейку с числом 25 (повернуть), то мы также берём следующее число. Из этого числа мы узнаем, куда надо повернуть. Число может быть от 0 до 63, а направлений 8. Что бы узнать направление, мы делим параметр на 8 и берём остаток от деления. Получиться одно из 8 значений (0..7) — это и есть направление, куда надо повернуть. Количество доступных чисел (64) кратно 8. Поэтому вероятность выбора одинакова для всех направлений. После выполнения команды, УТК перемещается не на одну ячейку, а на две, перепрыгивая параметр.
Стоить заметить, что УТК может прийти к ячейке, которая в другой раз служила параметром. Теперь значение из этой ячейки будет командой. Это сильно усложняет анализ кода человеком, зато «виртуальная машина», выполняющая код бота очень проста в реализации.
Допустим, нам нужна команда «сколько у меня энергии?» При выполнении этой команды, если энергии больше, чем получено в параметре, то переходим по одному адресу, если меньше, то по другому. Энергии может быть от 1 до 1000, а параметр от 0 до 63. Что бы обойти это ограничение, то при выполнении этой команды, параметр умножается на 15. Получаем такие варианты:
0, 15, 30, 45, 60 ...... 945.
С полученным вариантом и сравниваем уровень энергии и по результатам сравнения к УТК прибавляется смещение. Значение смещений берётся из следующих ячеек после параметра.
Берём число из ячейки №10. Это 33, команда «сколько энергии?».
Берём число из следующей ячейки (УТК+1), это параметр, из него вычисляем число для сравнения.
14*15=210
Если энергии у бота больше или равно 210, то берется число по адресу УТК+2.
Там у нас число 23. Это число прибавляется к УТК.
10+23=33.
То есть УТК теперь равно 33 и следующей командой будет команда из ячейки №33
Если энергии у бота меньше, чем 210, то берется число по адресу УТК+3.
Там у нас число 8. Это число прибавляется к УТК.
10+8=18.
То есть УТК теперь равно 18 и следующей командой будет команда из ячейки №18
Некоторые команды, такие как «посмотреть», «сделать шаг», «съесть», «поделиться энергией» являются разветвителями. В зависимости от того, что было в клетке, на которое было направленно действие, дальнейшее выполнение кода пойдет по разным веткам.
Берём число из ячейки №7. Это 26, команда «шагнуть».
Берём число из следующей ячейки (УТК+1), это параметр, из него вычисляем направление для шага.
18 % 8 = 2
Если клетка, куда шагает бот, была пуста, то берется число по адресу УТК+2.
Там у нас число 0. Это число прибавляется к УТК.
7+0=7.
То есть УТК опять указывает на ячеёку №7. Бот будет двигаться в этом направлении, пока на пути не встретит препятствие.
Получился цикл.
Если на клетке была стена, то берется число по адресу УТК+3.
Там у нас число 3. Это число прибавляется к УТК.
7+3=10.
То есть УТК теперь равно 10 и следующей командой будет команда из ячейки №10 То есть число в этой ячейке только что было ссылкой, а теперь будет выполняться, как команда.
Если на клетке была органика, то берется число по адресу УТК+4.
Там у нас число 43. Это число прибавляется к УТК.
7+43=50. То есть УТК теперь равно 50 и следующей командой будет команда из ячейки №50
Если на клетке был чужой бот, то берется число по адресу УТК+5. Там у нас число 24. Это число прибавляется к УТК. 7+24=31.
То есть УТК теперь равно 31 и следующей командой будет команда из ячейки №31
Если на клетке была родня, то берется число по адресу УТК+6.
Там у нас число 59. Это число прибавляется к УТК.
7+59=66.
То есть УТК теперь равно 66. Указатель вышел за диапазон возможных адресов, вычитаем из него 64 и получаем 2 Следующей командой будет команда из ячейки №2
Реально бот сможет сделать шаг только в случае, если клетка была пуста, в других случаях бот останется на месте. Ну вот и всё. Таким образом бот получает информацию об окружающих его клетках. И поведение бота теперь не линейно, а зависит от окружения.
Боты отличают чужого от своего, если код-геном отличается более, чем на один байт. Это ресурсоёмкая операция, но после введения этой возможности, стали появляться колонии с чёткими границами.
Ещё несколько моментов.
Все боты в памяти оперативной памяти соединены в круговую цепочку и управление по очереди передаётся от одного бота к другому. Код бота выполняется, пока не будет выполнена завершающая команда. К таким командам относятся: «шагнуть», «съесть», «фотосинтез», «поделиться энергией» и так далее. Остальные команды (безусловный переход, «посмотреть», «повернуться», «сколько энергии?» и так далее) могут выполняться до 15 раз, после чего управление передаётся другому боту.
Когда отпочковывается новый бот, он встраивается в цепочку ботов перед предком.
Что в итоге получилось
Ну а теперь скриншоты того, что получилось. Замечу, что картинки не столь интересно смотреть, как видео, где видно динамику развития мира. Многие интересные явления, такие как «пламяфилы» и «привидения» на статичных фотографиях выглядят не очень фотогенично, зато на видео завораживают. Для видео я использовал скриншот с каждого 25 хода. При этом, к сожалению, могут теряться некоторые любопытные моменты, такие, как короткие цикличные перемещения ботов
Скриншоты сделаны на разных стадиях разработки. Там, где задний фон меняется с белого до синего, я ещё не ввел «минералы».
Здесь показанны два режима отображения.
В стандартном режиме цвет зависит от способа получения энергии. Любители фотосинтеза зеленеют, любители «минералов» синеют, а мясоеды краснеют.
У всеядных может быть промежуточный цвет.
В режиме отображения энергии, чем больше энергии, тем бот краснее, чем меньше энергии, тем бот желтее.
Самое начало. Появляются «лабиринты», цепочки ботов
Начинают появляться первые колонии
Колонии уже сформировались. Можно увидеть розовых и сине-зеленых любителей разнообразного рациона.
Любопытные диагональные поселения хищников.
Любопытное шахматное расположение органики(трупиков ботов) посреди колонии.
Вид мира менялся, но «шахматный» порядок сохранялся. Подозреваю, что боты использовали только 4 направления из 8.
Вновь родившийся бот получает свой цвет от родителя. Потом, в зависимости от рациона, цвет может изменяться.
Здесь видны красные скопления ботов. Они не кого не кушают и не получают энергию от Солнца, иначе бы позеленели.
Энергию они получают от распределения энергии по колонии. Своего рода паразиты. Когда у колонии начинаются проблемы, то паразиты быстро погибают.
Режим отображения энергии открывает новые стороны мира. Видно, как по разному распределяется энергия внутри колоний. Центральная колония имеет чёткие границы с левого края, но с правой стороны границы не имеет. Также с краев видна колония, где энергия идет по диагонали (так как мир по горизонтали замкнут в круг, то это одна и та же колония).
Если в стандартном режиме колония выглядит единой, то в режиме отображения энергии можно различить, что в колонии могут существовать структуры, живущие по своим правилам. Своего рода колонии второго уровня.
Начало массового вымирания. Красные боты переполнены энергией и они должны отпочкавать потомка, но свободного места нет и они погибают. Поедать органику боты тоже перестали. В итоге органика(бледно-розовая) заполнила всю верхнюю часть мира.
Размер созданного мира маленький, так как большая часть работы и экспериментов проводилось на 7-дюймовом планшете, но для подобных экспериментов, чем масштабнее мир, тем лучше. На первой фотографии в статье использован скриншот с клона моего проекта, переписанного RomanoBruno на языке Java. Здесь уже другой масштаб и скорость работы выше. Ссылка на этот проект в конце статьи.
Мир бурно развивается в течении нескольких часов, затем скорость падает, мир находит некоторое стабильно состояние и в нём и пребывает. Скорее всего сказываются малые размеры мира и скудность возможностей.
Я решил взбодрить мир, который долго не менялся и произвёл «вспышку на Солнце». При этом у каждого второго бота в коде-геноме случайным образом меняется случайный байт.
Состояние мира перед вспышкой
Прошёл 21 ход после вспышки. Мир изрядно разрушен, большая часть ботов погибла.
Прошло ещё 347 ходов, мир возвращается к жизни.
Прошло более 2000 ходов и мир возвращается к прежнему виду, что стало для меня неожиданностью. Ожидал, что мир уже не будет прежним. Видимо, ни одна из спровоцированных мутаций не сделала бота лучше и все мутанты, со временем, погибли.
Заметьте, что небольшая колония синих ботов по центру с справой стороны, похоже не заметила катастрофы.
Что дальше
Сейчас у меня частично написан, но временно заморожен из за нехватки времени, проект нового мира.
Энергию можно будет получить, поедая «траву». Можно съесть всю «траву» в определённом месте и она там появятся только разрастаясь из тех мест, где осталась.
Количество энергии, соответственно, будет обратно-пропорционально зависить от количества ботов и боты не смогут заполонить собой весь мир. Это позволит создать больший по размерам мир с естественной изоляцией разных групп ботов. Боты будут вынужденны перемещаться в поисках доступной еды.
Код-геном будет работать на тех же принципах, но добавяться некоторые дополнительные возможности.
- Регистры и операции с ними.
- Прерывания, одноуровневый стек и команда ret
- Способы коммуникации между ботами.
Заключение
В отличие от генетического алгоритма, здесь нет деления на поколения, бот может вовсе не умирать и прожить до скончания веков(выключение компьютера). Здесь нет явно заданной фитнес-функции, определяющей, какой бот лучше, какой хуже, тем более это может меняться вместе с изменяющимся миром. Нету смысла, нету цели, только естественный отбор в изменяющемся мире.
Если Вас зацепила идея создания своего мира и экспериментов с ним, то присоединяйтесь, попробуйте создать свой мир.
Тот принцип построении кода-генома, который я описал, прост в реализации и можно легко модифицировать под разные миры.
Ссылки
Этот проект не единственный по данной тематике, но на момент создания я знал только об одном. Про него я прочитал в 93 году в журнале «Техника молодёжи». Статья меня зацепила. В то время у меня не было компьютера и я не предполагал, что когда-нибудь смогу реализовать подобное.
Ссылка на статью
Видео, где можно посмотреть разные варианты развития мира.
Проект написан на интерпретаторе Pixilang
yadi.sk/d/rLamoeyt3NBRwL
Также проект переписан RomanoBruno на языке Java и выложен на GitHub.
Комментарии (283)
Sabubu
29.07.2018 14:15А действия вроде перемещения или поедания не требуют энергии? Стоило бы наверно это сделать, и тогда боты бы могли делиться на тех, кто неподвижно занимается фотосинтезом и тех, кто плавает и поедает других.
Также, может быть, стоило выбрать более простой метод управления: просто ввести N двоичных флагов вида «если справа кто-то есть, двигаться влево», «если справа кто-то есть, двигаться вправо» итд. И в ходе эволюции просто переключать эти флаги. При желании флаги можно заменить на числа, определяющие вероятность совершения действия.
Ну и «вспышки на солнце» я бы устраивал почаще.
Roboart
29.07.2018 14:25+1Приятно, что тема клеточных автоматов живет. есть развитие к непрерывному времени (float) youtu.be/ys5XtGDOoUw
И как вариант 3d, добавить холмик-горку, свет по разному падает. Но тут лучше к Unity перебраться, пошире возможностей.
А так успехов в мире клеточных автоматов!foo52ru Автор
29.07.2018 14:27Правда с моём проекте нет клеточных автоматов. Или я что то в них не понимаю.
Roboart
29.07.2018 14:38Смотря по каким критериям оценивать. Что имеем: дискретное время-есть шаг времени, дискретный мир- есть квадратные клетки и мир состоящий из них, то что там внутри клетки что-то происходит вполне нормально, клетка меняет свое состояние(переходит в новое состояние). ваше перемещение бота это изменение одной клетки в ноль (условно) и переход другой в 1(условно), внутренняя кухня клетки может быть сложнее на порядок вашей(не к слову обидеть). Окрестность тоже наблюдаем, насколько понимаю 8 ячеек, дальше не смотрите.
Клеточный автоматRomanoBruno
29.07.2018 14:50внутренняя кухня клетки может быть сложнее на порядок вашей
а можете пример привести?Roboart
29.07.2018 14:58так уже привел в комментарии выше но еще тогда про вычисления
3d cellular automata
pdf примерно про это
хотя чем проще тем народу больше нравится (это опять же не про автора, хотя его коммент по своему интересен, с точки зрения понимания сути происходящего)
наверное ближе к пониманию простые формыRomanoBruno
29.07.2018 15:04так а где там внутренняя кухня на порядок сложнее?
все что касается Конвэя и подобных задается как-раз довольно простыми правилами, без всякой эволюции и естественного отбора
п.с. последнее видео похоже на кварк-глюонную плазму)Roboart
29.07.2018 15:17delta_a = Da * laplacian_a + q*a*c*(c-a) + p1 — (1.0f+p2)*a + a*a*b;
delta_b = Db * laplacian_b + q*b*d*(d-b) + p2*a — a*a*b;
delta_c = Dc * laplacian_c + q*a*c*(a-c) + p1 — (1.0f+p2)*c + c*c*d;
delta_d = Dd * laplacian_d + q*b*d*(b-d) + p2*c — c*c*d;
это коэффициенты клеточного автомата
но это для эрудиции
Видео еще раз посмотрите пусть игра «жизнь» вас не смущает это другое по природе своей)
приятно куда то двигаться, тем более в клеточных автоматах/ с детства нравились еще на тетрадке без компа.RomanoBruno
29.07.2018 15:29+1Это видео смотрел много раз, завораживает)
Ну все же согласитесь, лапласианы посчитать это не то же самое что возиться с мутациями и естественным отбором?Roboart
29.07.2018 15:49думаю мы о разном, хорошо что написали статью может кто еще что-то сделает и на вашем примере ) Удачи
P.S. лапласиан узнали уже приятно, осталось формулы понять, они ведь не просто так появились и немного о другом чем видео.
phenik
29.07.2018 14:36Смотрится забавно, было бы интересно анимацию посмотреть. Но геном — не геном, а программа поведения ботов (конечный автомат). Геном должен задавать свойства ботов, например, получение энергии фотосинтезом, или потребление извне, сколько потомков максимально может оставить и тп. А повороты от стенок, сделать шаг, посмотреть и тд. это программа поведения — надстройка над геномом. Тогда больше на реальную эволюцию походило бы, если запастись большим набором генетических свойств, кот. будут меняться (мутировать). Но все равно это далеко до моделирования реальной эволюции, в ее процессе создаются новые гены, кот. ранее не было. Тем не менее, очень интересный проект.
foo52ru Автор
29.07.2018 14:45Спасибо за комментарий. Цели смоделировать эволюцию в реальном мире не было. Скорее она служила примером. В виртуальном пространстве можно самому создавать свои миры со своими правилами. Анимацию можно посмотреть в разделе «Ссылки»
RomanoBruno
29.07.2018 15:01Вы как-то невнимательно прочитали статью.
Фотосинтез и другие виды получения энергии как раз определяется геномом, представленным в виде псевдо-программы. Этот геном мутирует, подвергается естественному отбору и т.д.
А вот сколько потомков оставить это как раз фенотипические свойства. Нигде в биологических системах это не прописано в геноме — оставит сколько повезет.phenik
29.07.2018 17:25А вот сколько потомков оставить это как раз фенотипические свойства. Нигде в биологических системах это не прописано в геноме — оставит сколько повезет.
В геноме конечно нет, имелось ввиду, что это разные виды, а у разных видов может быть разное число потомков.
Не увидел в тексте, где разделение на геном и программу поведения (фенотипические свойства).
vintage
30.07.2018 10:20В геноме не записан цвет ваших глаз, в геноме находится программа для создания белка соответствующего цвета и вторая программа запускающая первую лишь в клетках радужки глаз.
Sayonji
01.08.2018 11:46Я вначале подумал, что не хватает как минимум возможности иметь длиннее ленту команд и дольше думать взамен на трату энергии в единицу времени. Но потом осознал, что об этом следующая версия: боты смогут общаться, соответственно колонии может быть смогут научиться думать дольше комбинированно. Так и предлагаемые вами свойства: например, свойство «получение энергии фотосинтезом» будет регулироваться размером шапки колонии, которая будет плавать вверху и слать питательные клетки вниз. Точнее, не «будет регулироваться», а «будет возможность» такой штуке организоваться в рамкам правил. Будет или не будет я не знаю.
Roboart
29.07.2018 14:37еррор
Roboart
29.07.2018 14:39удалить этот коммент не там разместил
Roboart
29.07.2018 19:16попросил автора удалить комментарий поставили минус, сам его не могу удалить, нет кнопки, как у Электроника. Наверное поклонники неклеточных автоматов… а может и не автоматов, а просто неорганической жизни в 500 строчек кода плюс минус конечно. Сорри, это за минус единички. Можете вместе с этим удалить. Тоже вариант неплохой.
Tarson
29.07.2018 14:49Графику на джаве кнопочками делали?
У меня похожие (по виду) получались, когда очередной клон Жизни написал. Как раз кнопками псевдографику сделал
спойлерRomanoBruno
29.07.2018 14:53графику кнопочками? да вы ценитель)
в соседнем проекте сейчас такая графика:
Заголовок спойлераnanshakov
29.07.2018 16:21Это в вашем?
RomanoBruno
29.07.2018 16:23в параллельном
github.com/CyberBiology/Genesis
Tarson
29.07.2018 18:01А кнопками удобнее всего, когда поле не больше экрана. Не надо никаких масштабирований и графических преобразований, и интерактив удобный — кликнул мышкой, вот тебе сразу и отклик.
Ради смеха и «змейку» с тетрисом в таком же стиле накорябал.
github.com/Tarson/LIFE
riky
29.07.2018 16:36можно было бы использовать и значения > 64. просто делать переход также на val % 64.
еще не понял решаете ли вы проблему зависания. например в клетке стоит goto +64. итого если программа дойдет до этого места то зависнет в бесконечном цикле. то есть бот перестанет что либо делать или достаточно что такое отсеивается естественным отбором?foo52ru Автор
29.07.2018 16:58В новом проекте я использую длину генома 128 и 128 чисел (0..127). Зависнуть может но не с числом 64 (диапазон доступных чисел 0,,63), а с числом 0. Или будет несколько переходов, возвращающий указатель на старое место. Числу 0 можно назначить команду, я правда этого не сделал. Все подобные неудачные варианты отсеиваются естественным отбором. Энергия бота с каждым ходом убывает и без активных действий по пополнению энергии, бот превратится в органику.
riky
29.07.2018 16:41пока читал вспомнил, что на ютюбе уже видел видео на эту тему. сходил, нашел по ключам «генетические алгоритмы», только потом понял что это вы и были.
идея интересная, в свое время, после ваших видео, тоже хотел заняться. я думаю нужно делать более сложный геном, 64 операции слишком мало, ну и мир хочется посложнее.foo52ru Автор
29.07.2018 17:12Да, проект старый. Только сейчас дошли руки статью написать. В новом варианте, который непонятно когда доделаю, геном расшириться до 128.
Bookvarenko
29.07.2018 18:29Может быть есть смысл выложить проект на гитхаб? Просто там удобнее следить за развитием проекта и помогать в меру сил.
foo52ru Автор
29.07.2018 18:36На старый есть ссылка в конце статьи. Проект был переписан на Java и выложен на гитхабе. Новый пока рано выкладывать. К тому же я предпочитаю один работать
cuvera
29.07.2018 16:54Пока у меня нет прав на плюсы, свидетельствую своё почтение автору! Это просто кайф!
Самый сложный вопрос который меня беспокоит в этой теме:
Что есть жизнь?
Жизнь, кроме всего прочего, это индивидуальность, Позвольте своим ботам самостоятельно делать выводы и принимать решения.
Bookvarenko
29.07.2018 18:24Интересно сделано. А не было ли мысли преобразовать развёртку цилиндра в проекцию сферы с экватором, полюсами и сменой дня и ночи?
foo52ru Автор
29.07.2018 18:43В проекте есть смена времён года. Солнце то ярче светит, то хуже. Делать не на плоскости, а на сфере, по моему ничего не добавит, кроме сложности программирования. Скорее всего надо увеличивать размеры мира, увеличивать его сложность и разнообразие(день/ночь, экватор/полюса) и увеличивать количество команд, доступных ботам.
solariserj
30.07.2018 19:55А также как мне кажется «вспышки солнца» можно сделать локальными, а ля бомбы чтоб не полностью давила на мир
Tsvetik
29.07.2018 19:00Чтобы жизнь стала разумной нужно помимо генома добавить еще сознание.
Геном — это наличие рук, ног, фотосинтезирующих органов или острых зубов.
А в сознание в той или иной степени надо заложить стремление к самосохранению и размножению. Пусть для начала это будут вероятности срабатывания команд фотосинтеза, движения, размножения и т.п.foo52ru Автор
29.07.2018 19:05+2Здесь скорее бактерии, чем разумная жизнь. Стремление к самосохранению и размножению не наделяет сознанием.
sim31r
30.07.2018 01:02Насекомые тоже частично ведут себя как автоматы, хоть и на основе нейронных сетей простых, но тем не менее глюки есть, пример муравьиный круг смерти
andrew8712
29.07.2018 20:34+2Хех, наделение подпрограммы сознанием тянет на все Нобелевки мира вместе взятые :)
Мир Дикого Запада ждет своей реализации
artemev
29.07.2018 19:10Боты отличают чужого от своего, если код-геном отличается более, чем на один байт. Это ресурсоёмкая операция, но после введения этой возможности, стали появляться колонии с чёткими границами.
Можно хэшировать геном при создании бота. Сравнивать хэши, наверно, будет быстрее, чем весь геном (хотя все зависит от реализации).
ИМХО, нужно отделить свойства бота от поведения. Например, создать отдельный "геном" для перемещения или поведения в целом. А еще лучше, чтобы поведение зависело не только от генома, но и от внешних факторов (двигаться к источнику пищи/энергии, убегать от врагов и пр.). Тогда получится некое подобие интеллекта. Во всяком случае поведение будет более разнообразным.
foo52ru Автор
29.07.2018 20:15Ну так его поведение зависит от внешних факторов. шагнул -уперся в чужака — съел — посмотрел вправо — там пусто -шагнул туда, а была бы органика, то съел бы. И так далее.
kryvichh
30.07.2018 12:57а если: «посмотрел влево-вперёд-вправо и выбрал оптимальное* направление».
*оценка оптимальности — заложить в геноме.
Можно добавить ошибки распознавания: посмотрел влево, и с вероятностью 55% определил трупик, 40% — живой соперник, 5% — какая-то еда.foo52ru Автор
30.07.2018 13:05Дело в том, что я ничего закладывать не хочу, пусть само появиться. Хотя, конечно, можно ввести такую команду. Сейчас бот может, даже в течении одного хода, посмотреть по всем 8 направлениям и шагнуть в первое попавшее пустое место. Что бы сравнивать направления, нужна память, которой сейчас у бота нет. В следующей версии я запланировал регистры и операции с ними. Вот тогда и может сформироваться оценка лучшего направления.
AllanStark
29.07.2018 19:33Да, действительно, когда-то в журнале «Техника молодежи» была интересная статья на данную тематику.
Вот еще альтернативный источник для прочтения:
zhurnalko.net/=nauka-i-tehnika/tehnika-molodezhi/1993-05--num6
ssurrokk
29.07.2018 19:33А накой мутация если вид и так успешен? Возмозно у успешных стоит снижать вероятность мутации
artemev
29.07.2018 19:38Тогда со временем останутся только самые успешные и дальше развития не будет или, по крайней мере, оно будет сильно замедлено.
foo52ru Автор
29.07.2018 20:18Здесь нет никакой функции, которая определяла бы, какой бот успешен, какой нет. Сам бот не мутирует, мутация может возникнуть у потомка с вероятностью 25%.
vmchaz
29.07.2018 19:50+2Можно расширить этот эксперимент: дать ботам сенсоры и нейросеть, топология которой также задаётся генетически. В этом случае будет возможность наблюдать сразу 2 вида эволюции — генетическую и «культурную».
Но поле для эксперимента при этом должно быть существенно больше.foo52ru Автор
29.07.2018 22:19+1Я думал об этом. Даже последний мой эксперимент касался обучение простейшей нейросети посредством естественного отбора.
(некоторые утверждают, что у меня не нейросеть, а линейный классификатор )
Но подбирались веса, а не топология. С изменяющейся топологией было бы куда интересней. Может быть потом решусь реализовать это.sim31r
30.07.2018 00:57Если меняются веса, в чем сложность изменять топологию? Например обнулить нейрону все веса и он как-бы исчезает из управления, или задействовать нейрон сняв запрет на использование. Начать можно буквально с нескольких нейронов, чем больше, тем, конечно, интереснее.
Добавлять-убавлять скрытые слои еще интереснее, но и сложнее…foo52ru Автор
30.07.2018 09:09А что сделать со связями? Под топологией я понимаю не только количество нейронов, но и как они связанны друг с другом. В любом случае, это сложней, чем изначально заданная сеть
BigBeaver
30.07.2018 09:29Ну так все со всеми. Отсутствие связей имитируется нулевыми весами. Комбинаторная сложность, правда, зашкаливает, но можно ввести ограничения типа нерекуррентности и тд
karnaval
31.07.2018 13:14Не думали об обучении с подкреплением, когда «учителем» выступает среда обитания? Было бы интересно посмотреть на поведение ботов, целью которых была бы максимизация показателя энергии и продолжительности жизни. А при почковании и порождении нового бота, в качестве мутации можно было бы менять веста сети на какой-то небольшой рандомный коэффициент.
jetcar
29.07.2018 19:59-1чтоб поиграться, генетический алгоритм интересен, но он слишком далёк от того чтоб из него чтото полезное можно получиться, в итоге получается приложение которое ищет самое полезное сочетание мутаций которые изначально уже заложены в приложение, ничего нового оно не создаст и жизнью это точно назвать низя, вот если создать песочничу в которой комбинируются самые низкоуровневые комманды процессора, было бы уже намного интереснее, но есть проблема с определением жизнеспособности
foo52ru Автор
29.07.2018 20:24+1Любой процессор определяет список команд и ничего нового выполнить не может.
Любой язык определяет список доступных команд и ничего нового на нем не напишешь, кроме того, что было заложено создателем языка. (нет)
F376
29.07.2018 21:34+11. Что думать о таких совпадениях? Когда ты минуту назад читал и смотрел про клеточные автоматы, полон мыслей, открываешь Habr — и на тебе!
2. Вы же в курсе про «русских коров»?
копипаста интернетаВ нынешнем (2002 — И.П.) году Microsoft затеяла игру для программистов многих стран мира. ...Microsoft создала террариум. Всем желающим предложили населить его растениями и животными — травоядными и хищниками.
Программист задавал свойства существа (дальность зрения, максимальная скорость движения, сила атаки, сила защиты и т.п. — общая сумма была ограничена), алгоритмы его поведения (по какой траектории передвигаться; в каких случаях атаковать; есть все, что обнаружишь, или оставить немного на развод и т. п.). Трава росла. Травоядные ели траву. Хищники ели травоядных и друг друга.
Тот, кто больше ел, больше размножался. Задача состояла в том, чтобы размножиться как можно больше, вытесняя конкурирующие разновидности хищников, травоядных и т.п. Игра показала, что россияне плохо умеют изготовлять хищников, зато у них замечательно получаются травоядные. В ходе игры российские «коровы» победили всех конкурентов — за счет уникальной стадности и редкостного умения пакостить травоядным представителям других наций. По сути, российские разработчики были единственными, кто додумался, как сделать травоядных по-настоящему стадными. По правилам игры, животным не разрешалось напрямую обмениваться информацией. Поэтому, пасущаяся с краю стада «корова» не могла сообщить коллегам об увиденной «траве» или приближающихся хищниках.
Россияне придумали следующий алгоритм стадности. Если одна корова видела бегущую корову своего вида — она начинала бежать в том же направлении. Любопытно, что никто, кроме россиян, не додумался до такой идеи. По словам организаторов игры, именно эта не рассуждающая массовость принесла россиянам победу. Второе изобретение российских программистов было поизощреннее. Если в поле зрения их коровы не было травоядных своего вида — а сплошь чужаки, российская корова с максимальной скоростью съедала всю доступную траву, ничего не оставляя «на развод». И погибала от голода вместе с чужаками. Сложная смесь самопожертвования и ксенофобии.
Обратите внимание — жертвуя собой, отечественные травоядные боролись не с хищниками. Они мешали хорошо жить травоядным чужой породы. Конечно, не совсем правильно выводить национальную психологию из несложной разработки нескольких программистов — хотя бы и победителей крупного международного соревнования. Наверное, описанные выше свойства отечественных творений — не общий принцип. Но, возможно, достаточно показательная иллюстрация.ncix
29.07.2018 21:36Делал в школьные годы похожий проект. Только мир был динамический — полоса "света" двигалась по также как и у вас зацикленному миру. Правда у ботов был фиксированный код, но несколько переменных параметров. У ботов была врожденная способность двигаться к свету, тратя энергию. Фотосинтезировали они только на свету. Между собой правда они никак не взаимодействовали. Также были определенные условия почкования с умеренной мутацией параметров у клона.
В итоге эмуляций популяция обычно делилась на животных, бегающих за светом, и растения, которые теряли возможность двигаться, взамен приобретая возможность "пережить" ночь.
Проект делался на бейсике и прошло с тех пор уже лет двадцать...
dim2r
29.07.2018 21:54Тоже недавно таким занимался. Так увлекся, что чуть конференцию не пропустил. Модель основана на боте, который имеет набор модулей. Модули потребляют энергию и совершают полезную работу. При размножении набор модулей может мутировать. Энергия запасается во время кормёжки и потом используется другими модулями.
TimeCoder
29.07.2018 22:23Тут проскакивали слова про уменьшение энтропии (за счёт увеличения ее вовне). И правда, холодильник тоже так умеет. Мне все время не хватает слова энтропия, хочется рассуждать о степени сложности, уровне развития, разнообразности реакций и действий системы, назвать это уровнем организации, к примеру. Но от тепловой энтропии это как-то далеко. На интуитивном уровне понятно, что даже простейшая клетка — это «жизнь», а сложнейший кристалл с меньшей энтропией — это все-таки «не жизнь». Но вот как это формализовать… Было замечательное определение информации у Шрейдера, что-то про увеличение тезауруса системы. Я же определил бы жизнь так: это система, подверженная влияниям окружающего мира, и увеличивающая со временем свой тезаурус за счёт этого влияния. Камень со временем будет разрушаться, а даже сорняк — расти, проходить качественно разные стадии. Сотовый телефон от влияний мира только будет ломаться и разлагаться (веками), а человек, или животное накапливать опыт и эволюционировать. Поскольку планета аналогично прошла этапы от просто раскаленного шара до биосферы, ее тоже можно рассмотреть как живую систему (все признаки соблюдены). Тут возникает намек на наличие сознания у растений, планеты и пр. Что же, буквально это понимать конечно не стоит. Сознание можно рассмотреть как достигнутую степень развития системы, тезаурус системы, ее множество ответных реакций на внешние сигналы. Основной посыл в том, что изолированной системе в далёкой перспективе просто неоткуда взять возможностей для роста организованности (вспоминается Пригожин). Живая система — значит встроена в мир, в единую многоуровневую сеть перераспределения энтропии, формирующей высокоорганизованные системы.
Construct
31.07.2018 13:15Сотовый телефон может получать обновления ПО, новые приложения и т.д. На нём также может быть запущено ПО с алгоритмами машинного обучения в составе, и «тезаурус» вполне будет расти.
Не вижу разницы по этому определению.
XT2
29.07.2018 22:30Браво автору!
Я в своё время нечто похожее делал, но больше были интересны мутации свойств, не прописанных явно в коде. Например, изначально не определено как может двигаться организм, что нужно идти к еде и т.д., а в процессе он сам тыкаясь получал ± запоминал результат и повторял его. Сейчас конечно это выглядит глупо, но когда учился было прикольно.
А не пробовали запускать симуляцию с уже созданными геномами (случайно и по паттерну сгенерированных)? Или например два (или более) бота с сильно разными геномами. В этом случае думаю что колонии могут радикально отличаться.foo52ru Автор
29.07.2018 22:38У меня тоже не прописано, что нужно идти к еде. Те кто к еде не идёт, умирали не оставив потомства, а у тех, кто родился у выживших, это в геноме записано.
Запускать два разных генома не пробовал. Колонии и сейчас различаются. В следующем проекте, надеюсь масштабы мира позволят колониям долго развиваться в естественной изоляции друг от друга, что бы различия были более явными. Плюс расширенный состав команд и больший размер генома будут способствовать этому.
uhf
29.07.2018 22:39Смущает реализация механизма мутаций.
В геноме бота, каждая ячейка — это инструкция, или параметр инструкции. Чисто интуитивно, вероятность того, что изменение одной команды окажется полезной мутацией и улучшит программу — очень мала. Так не самозародятся структуры типа вложенных циклов, множественных ветвлений, подпрограмм, и т.д. Ну, или нужно бесконечно большое количество симуляций.
Мне кажется, что геном живых существ ближе не к инструкциям, а к данным — параметрам конфигурации, и их мутация дает более линейный и предсказуемый эффект.foo52ru Автор
29.07.2018 22:47Количество команд и размер генома невелики, так что вероятность не такая уж низкая. В начале, через несколько десятков тысяч ходов, мир меняется кардинально. Затем скорость эволюции начинает снижаться. Для подобных алгоритмов нужны масштабы и время, так как это по сути перебор разных вариантов, хоть и оптимизированный.
RomanoBruno
29.07.2018 23:10Так не самозародятся структуры типа вложенных циклов, множественных ветвлений
Почему нет? Вполне себе зарождаются.
Можете запустить программу и увидеть как боты делают что-то в цикле. Например бегают по кругам и более сложным траекториям, или в паузах между бегом фотосинтезируют.
А множественные ветвления заданы определениями самих команд.
DjSens
29.07.2018 22:57Программисты повторяют в таких программах эволюцию нашей планеты, так постепенно и человеческий интеллект смогут, в 3д песочнице. Быстродействие компьютеров пока слабовато для такого, нвдо же будет ботам уметь помнить всю свою жизнь, делать выводы из этого опыта и применять успешный опыт
forcam
30.07.2018 00:43Очень большая просьба либо выложить полное видео, пусть оно будет хоть 12 часовым, хоть 24 часовым или сделать трансляцию онлайн на ютубе например. Либо выпускать серии, как в Доме-2))) Оооочень интересный проект.
И да нужна максимальная приближенность к нашей земле, хотя наверное это в 2Д сложно реализовать.
9_pm
30.07.2018 04:27Шикарно. Спасибо за статью ) Года два назад сам развлекался чем-то подобным. Вот тут описание моих экспериментов, если будет интересно.
irriss
30.07.2018 07:38Как видно в комментариях выше, такой игрушечный проект вызывает большой интерес и поднимает сложные вопросы «что есть жизнь?», например.
Другой, не менее интересный вопрос, об ограничениях такого рода эволюции и программирования в целом.
Есть такое понятие «unprestatable», четко определить не возьмусь, но смысл в том что робот/программа/конечный автомат/искусственный интеллект/и т.д. (в широком смысле) неспособен решать творческие задачи и «выйти за рамки». А люди и даже животные [предполагается что] могут.
Представим, например, робота пытающегося открыть банку с пивом. Неважно, зачем ему это надо, важно что он не был запрограммирован на открытие банки с пивом. У него, возможно, есть специальная подпрограмма для таких неожиданных ситуаций, но если она почему-то не дала результата, то робот «не догадается» взять камень и сковырнуть/срезать крышку — т.е. сделать что-то «креативное» чтобы достичь цели. Почему так? Допустим, робот понимает задачу и «начинает думать» — искать варианты решения и моделировать ситуации. По сути, это запуск программы перебора из бесконечного числа возможных «креативных» вариантов чтобы получить ответ на вопрос «как открыть это пиво». К сожалению, здесь есть фундаментальная проблема останова — возможно наш железный друг «задумается навсегда» и мы никак не сможем это предвидеть заранее (unprestatable).
И это действительно фундаментальная проблема для создания чего-то, что сможет сравниться с настоящим живым.
third112
30.07.2018 08:32искусственный интеллект/и т.д. (в широком смысле) неспособен решать творческие задачи и «выйти за рамки». А люди и даже животные [предполагается что] могут.
Как такое можно объяснить? ИМХО только мистикой: у людей и животных есть волшебная способность, а у машин ее быть не может.
Представим, например, робота пытающегося открыть банку с пивом.
Открывание банки с пивом — творческая задача? ;) — Ok. Предположим, что это так. У пещерных людей на протяжении многих поколений была задача добывания огня. Кто-то ее решил и научил других добывать огонь трением или ударами с искрами твердых камней. Аналогичное обучение робота в задаче с пивом допускается? Если допускается, то какой источник? М.б. инет? — Если да, то робот прочтет здесь:
«не догадается» взять камень и сковырнуть/срезать крышку
и последует этому совету. Не так ли поступают многие юзеры: ищут в гугле «как починить комп», «покрасить потолок» и т.д. — и «креативно» следуют найденному? ;)irriss
30.07.2018 12:09Как такое можно объяснить? ИМХО только мистикой: у людей и животных есть волшебная способность, а у машин ее быть не может.
Похоже на то. С какой целью ТС запилил свою программу, а первый комментатор задался вопросом про жизнь?
Рано или поздно, наука развеет это волшебство, но останется другое, которое будет волновать людей, а [нынешних, фон-неймановских, может потом будут другие, лишенные этого недостатка] роботов — нет
RomanoBruno
30.07.2018 12:18За ТС не отвечу, а за комментатора вполне)
Цель — собрать как можно больше определений (мнений), чтобы вычленить из них универсальный критерий жизни.
Мне он пригодится для дальнейшей разработки. Но возможно он будет полезен где-то еще. Например при исследовании экзопланет и т.п.
Konachan700
30.07.2018 09:10На мой взгляд, это просто один из форматов обучения. Медведь в туристической зоне лихо грызет банки со сгущенкой и тушенкой, найденные в припасах туристов. Такой же медведь в глухой тайге мимо этих банок пройдет и никогда не заинтересуется ими. А все потому, что первый в мусоре находил открытые банки с остатками содержимого, и знает, что это съедобно. Так же обезъяна с банкой пива — полностью дикая даже не попытается ее открыть — для нее это аналог камня, а вот живущая рядом с людьми уже знает, что внутри нечто вкусное, и будет делать попытки это достать. Такая обезьяна знает, что камнем можно бить твердые плоды, банка похожа на твердый плод, дальше понятно. Никакой «творческой магии» или необходимости в сознании.
Так будет и с роботом. Зачем ему открывать абстракнтую пивную банку, если у него совсем нет информации, что это такое? Он точно так же опознает банку по ближайшему к ней объекту (камень), который уже есть в знаниях, и либо ничего не будет делать, либо использует не по назначению. А если он будет знать, зачем ему это, то тут всё будет зависить от возможностей его ПО и механики к выполнению сложных действий.
Другой вопрос, что сегодняшние роботы слишком просты для их сравнения с теми же животными, но у эволюции было несколько миллионов лет и целая планета, а у человека всего 40 лет активной разработки и очень ограниченные бюджеты.irriss
30.07.2018 12:03Вы абсолютно правы. Прежде всего, робот не задастся целью открыть банку с пивом, если его явно не запрограммировать.
Konachan700
30.07.2018 12:51Примерно как с любым обучаемым животным или человеком. Не «запрограммируй» ребенка в детстве быть человеком — он им и не будет. Более того, человек, попавший во младенчестве к обезьянам, будет в точности обезьяной по повадкам, а попав к собакам, будет бегать на четырех лапах, отлично выть и лаять. Да даже в во взрослом возрасте некоторые умудряются мешать краску камертоном, зажатым в шуруповерт — ну нет у них знаний в музыке, зато мешалку для краски они видели много раз. Чем робот, пытающийся забить гвозь бутылкой, лучше? Ну не знает он про молоток, и не знает, что бутылка бьеться. Последнее он поймет после пары разбитых бутылок, и возьмет микроскоп… Знания и опыт — вот весь фокус высших животных, у человека есть еще и расшаривание этих знаний — если зверь обязательно должен наступить на грабли сам, то человек может один раз наступить и потом из поколения в поколение передавать знания о граблях, не вынуждая каждую особь наступать самостоятельно.
Робот в этом плане ничем не будет отличатся, будь у него нужное ПО и достаточно вычислительного ресурса.irriss
30.07.2018 13:18Очень сложно говорить за человека и обезьян, потому что до конца непонятно «как это работает у них». А вот за современных роботов очень даже можно — все это начиная от контроллера в лифте и заканчивая самым большим суперкомпьютером сводится к машине Тьюринга и не выходит за ее теоретические ограничения. Unprestatable одно из них.
То что вам кажется что человек это просто большой компьютер скорее всего ошибка, здесь количество не переходит в качество.Konachan700
30.07.2018 14:07Абсолютно тоже самое, только вычислительная мощность на многие порядки больше за счет параллельности, больше входных данных, больше связей между отдельными вычислительными юнитами, и программа сложнее. Иначе все сведется к мракобесию и введению фантазийных сущностей типа души.
В этом, кстати говоря, есть огромная философская проблема для общества — считать ли живым достаточно сложного робота? Ибо робот уровня простеньких рептилий возможен уже сейчас (не считая источника питания), все его реакции можно запрограммировать идентичными реальному существу. Так почему робота пинать можно (своего, конечно же), а змею — нет? Сложность тех же животных была, и остается поныне, запредельной для полного стопроцентного изучения, и в отсутствии знания можно легко приписывать им сознание, очеловечевать их, ну и так далее в лучших традициях любой веры. «Не знаем точно как это работает, но верим, что вот так» — и дальше натягивание совы на глобус. С роботами такое не катит, ибо их сложность хотя и тоже запредельная для обывателя, но их сделал человек и любое их поведение объяснимо без мракобесия и крайне сомнительных экстраполяций. Вот интересно, какую сторону займет мир в этом вопросе…
Wizard_of_light
30.07.2018 14:44Если под «творческой задачей» мы понимаем создание некой заранее не определенной структуры или решение некой заранее не определенной задачи, то с этим справляются не просто неразумные, но и вообще неживые в нашем понимании процессы. Поток воды, к примеру, весьма творчески подходит и к сложной задаче поиска щели в плотине, и к не менее сложной задаче обтачивания камней по пути.
InterceptorTSK
30.07.2018 15:01А как вы понимаете «созидание»?)
Типичная логическая дыра.
Созидание — это интеллектуальное изменение чего-то или кого-то вокруг себя с понижением энтропии в созидаемом.
Разрушение — это интеллектуальное изменение чего-то или кого-то вокруг себя с увеличением энтропии в разрушаемом.
Данные процессы сопровождаются скачкообразными изменениями в энтропии. Что то что другое есть признаки «искусственного»
Что есть «творческая задача?» Это комплекс созидательно-разрушительных [искусственных как мы выяснили] процессов, подчиняющийся некоему набору эвристиков, т.е. правил.
Что такое эвристики? Это скопированные алгоритмы наборов действий, обязательно с ошибками.
Реальное применение эвристиков — опыт.
Комплексное рассуждение над эвристиками — мудрость.
И т.д. и т.п.
Ну и куда подевалась ваша речька с камушьками?))Wizard_of_light
30.07.2018 16:56У меня те же определения, только без слова «интеллектуальное». Вы просто утверждаете, что это именно интеллектуальный процесс, а я утверждаю, что нет — и созидание (=локальное снижение энтропии), и разрушение (=локальное повышение энтропии) происходят в общем случае и в отсутствии интеллекта или жизни в нашем понимании. И могу привести примеры безинтеллектуального созидания и разрушения (разрушения-особенно легко). Те же процессы с участием интеллекта (= всего того что вы дальше описываете -эвристики, опыт и т.п.) — частный случай.
Скачок энтропии — признак не интеллектуальных действий, а фазового перехода в системе. Я опять же могу привести примеры, в которых этот скачок происходит, а интеллектуальной деятельности нет. Кристаллизация и взрывное расширение, например.InterceptorTSK
30.07.2018 17:35-1Ответьте на простой вопрос.
Если вы «как речька» соберетесь разрушить плотину — вы будете набирать в рот воды и «точить водой» камни? Причем поливать водой камни будете хаотично да?
Или все же используете как обезьяна минимум палку, а как человек тринитротолуоловую шашку или вообще ракету с вертолета?
Слушайте, даже в этом убогом случае вы не будете бегать набирать воду в рот далеко, потому что у вас есть чувственные абстракции «близко»/«далеко», и по странному стечению обстоятельств даже по вашему беганью можно 100% сказать, что у вас есть зачатки интеллекта.
Как бы вы не выкручивались в данном случае, заподозрить в вас интеллект все же выйдет)) Вы и сами не заметите как проколитесь на ровном месте.Wizard_of_light
30.07.2018 22:13Нет, я подговорю знакомого аквариумиста, тот выпустит за плотину пираний, пираньи летом съедят бобров, зимой замерзнут сами, и по весне плотину снесет ледоходом. А гипотетический наблюдатель заподозрит, что это всё был хитрый план, но непонятно чей — пираний, аквариумиста, меня или InterceptorTSK, который как бы невзначай намекнул подумать о снесении плотины. И непонятно, плотина ли была нашей целью, или это хитрый план по истреблению бобров. Или побочный эффект от выкидывания лишних пираний.
Из этогобреда воспалённого сознанияказуса пробитой плотины будет вытекать (не мной замеченное) определение интеллекта как способности: а) найти проблему на ровном месте, и б) потом спихнуть эту проблему на другого. В создании проблем неживая природа ещё и даст фору, но вот в спихивании слаба, поскольку сама-то не способна ни оценить масштаба собственной пакости, ни пострадать от неё.InterceptorTSK
31.07.2018 10:32Вода каторая изумительно но крайне тупо [не интеллектуально] находит щщели в плотине и при этом обтачивает камни — неминуемо снесет плотину.
Это условия этого вашего некоего «творчества», вовсе не мои.
Но вы преумело спихнули на меня «снос плотины» ага?
И да, посчитайте количество «бреда воспаленного сознания» в постах — у бредометра стрелка погнется. Угадаете на чьих будет гнуть стрелку?
third112
30.07.2018 08:13В статье хочу описать свой эксперимент по созданию «искусственной жизни» на компьютере.
ИМХО не хватает четких формулировок. 1) Какова цель данного эксперимента? 2) Определение искусственной жизни. Нпр., она должна моделировать реальную? Или м.б. альтернативной (к реальной)? Поэтому в комментах выше каждый стал высказывать свое мнение по вопросу «что есть жизнь?»
ValikSirbik
30.07.2018 09:13Есть вопрос по поводу направлению движения.
4 направления равносильны. вверх, вниз, влево, вправо.
Что касается оставшихся 4 то или их вероятность ниже, или энергии на них нужно больше.
ну банально использовав теорему Пифагора можно понять, что расстояние нужно пройти больше.
Опять же, если это особенности вашего мира, то вопрос снимается
sergix
30.07.2018 09:22Всегда хотел грабнуть со стаковерфлоу все посты содержащие код на выбранном языке и дать «ботам» возможность юзать код по очереди, т.е. первый цикл отбросить все не работающие не компилируещиеся, а остальные запускать с разными параметрами и стремиться к результату какому-то.
Так вот, идея с геномом очень интересна, и возможно даже подойдет для создания такого случайного компилятора)sergix
30.07.2018 10:16однако не хватает рейтинга команд — привело к размножению или улучшению энергетического баланса +1, впустую потратили тик -1. Так-же не понравилась полная рандомность параметров. Такой-же второй геном бы с параметрами, и рейтингом параметров приводящих к улучшению.
spellman003
30.07.2018 09:33Люди будут стараться написать всё более лучшие версии подобных игр, добавляя всё больше параметров, и учитывая всё больше факторов, и в конце напишут Матрицу (не математическую, а трилогии Вачовски)
zmitrok62
30.07.2018 09:33Было бы здорово, в качестве дальнейшего развития функционала, научить ботов жить там, где лучше условия. Т.е. они должны стремиться прожить дольше за счет этих самых условий.
foo52ru Автор
30.07.2018 09:36Суть в том, что я не учу их делать что то. Естественный отбор оставляет тех, кто смог собрать больше энергии и оставить больше жизнеспособного потомства. Как они это делают и к чему стремятся, я уже не решаю.
zmitrok62
30.07.2018 09:40Тогда можно сделать «накопительную» систему обучения. Т.е. предок передает по наследству информацию или ее часть, о том, где или как «жить лучше». Бот, который соберет эту информацию от нескольких своих потомков — будет наиболее жизнеспособный.
netricks
31.07.2018 11:35Обучение опыту предка распространено только среди немногих видов высших животных, причем практически исключительно среди млекопитающих. Говорят, некоторые виды осминогов подходят к этому. Передача опыта — высокая форма интеллекта. Врядли это то, что следует моделировать при исследовании базовых законов эволюции.
Разве что боты сами научаться этому.
stasiche
30.07.2018 09:37Вау, наконец-то нашёл единомышленника) вот то, что я в своё время выложил в читабельную версию)
tm.spbstu.ru/Моделирование_основных_принципов_биологических_систем(организмы_%2B_глюкоза)
tm.spbstu.ru/Моделирование_основных_принципов_биологических_систем
Если кого-то это тронет, обязуюсь найти более «взрослую” версию с перераспределением питательной среды, мембранами и прочим
idelgujin
30.07.2018 10:09Интересно, а если создать пропорционально молекулы всех элементов, создать для них благоприятную среду для возникновения жизни. Через какое время появятся живые существа? И появятся ли вообще?
ZAMnoTEX
30.07.2018 11:07Весьма занятно ) Особенно заинтересовала «вспышка на Солнце». Было бы интересно посмотреть статистику насчет таких катастроф. Например, как часто после катастрофы мир изменяется до неузнаваемости? И вообще, бывает ли такое?
А еще я бы добавил влияние самой жизни на окружающую среду — например, чем больше фотосинтезирующих ботов, тем меньше концентрация CO2, тем хуже для фотосинтезирующих организмов, и т.п.
jimmyjonezz
30.07.2018 11:42Всегда интересовала тема «Жизнь» на ПК. Я очень впечатлен прочитанным и увиденным. Еще больше удивило то, что это реализовано на pixilang. Реализация УТК так проста, что хочется кричать «браво».
Посмотрел видео и заметил, что в некоторый момент времени, прослеживается цикличность некого этапа «жизни» той или иной колонии (?) — как будто этот этап попал в спираль и прокручивает себя n-ое количество раз, образуя закономерность (или что-то типа того).
amarao
30.07.2018 12:10Очень интригующе и мотивирующе. Хотя идея «умирать если не удалось размножиться» у меня вызывает много вопросов. Я понимаю, что хвосты этого растут из конрадовской жизни, но это мало похоже на нормальную биологию. Наоборот, чем больше энергии запасено, тем существу лучше.
BkmzSpb
30.07.2018 12:11Отличный проект, результаты впечатляют, подобные клеточные (или не совсем клеточные) автоматы меня всегда завораживали.
Я понимаю всю сложность таких проектов (в том числе и вычислительную), и я вряд ли реализую что-то подобное в ближайшее время, но очень хочется увидеть версию, где взаимодействия будут вероятностными. Клеточная РПГ (или D&D). Правда это значительно усложнит рассчет каждого следующего шага. Но и привнесет непредсказуемые сценарии.
Отдельно хочется отметить, что бессмертность автоматов может быть проблемой. Смерть способствует обновлению генофонда популяции. Можно было бы задать, эм, cumulative probability distribution смерти с помощью нескольких параметров — опорных точек (которые, естественно, мутируют согласно общим законам симуляции). Условно, с начала жизни до хода N шанс естественной смерит низок, а затем он начинает резко расти. Вероятностный подход так же создаст некоторую непредсказуемость, иначе, все особи одного вида будут погибать на условном 42-ом ходу (если доживут).
Ну и рассуждения ради: насколько мне известно, геном сложного организма (да того же человека) устроен таким образом, что одни и те же участки контролируют сразу несколько свойств (в комбинации с другими участками генома). Иными словами, реализовав такой подход — один параметр вносит вклад в несколько совершенно несвязанных действий, — можно получить нестандартные результаты. Например, долгоживущие клетки будут неэффективны в сборе энергии и медленны в размножении и наоборот.
Отдельное обращение к автору: даже если вы любите работать в одиночку, исходники на git* (а также описание/примеры/результаты/ссылки) могут помочь другим начинающим энтузиастам и просто интересующимся (таким как я) начать свой проект или попробовать ваши симуляции (разумеется, если нет других причин и ограничений на дистрибьюцию кода).netricks
30.07.2018 21:16Ну и рассуждения ради: насколько мне известно, геном сложного организма (да того же человека) устроен таким образом, что одни и те же участки контролируют сразу несколько свойств (в комбинации с другими участками генома).
Собственно, подход автора к параметрам функций, если я его правильно понял, дает ровно такой результат.foo52ru Автор
30.07.2018 21:18Совершенно верно. Один байт может служить как командой, так и параметром или смещением для другой команды
modestguy
30.07.2018 12:41Мне не даёт покоя мысль, что в будущем можно создать «слепок» мозга в виртуальном пространстве и что после смерти самого человека, его «двойник» может жить «там».
solariserj
30.07.2018 13:59В Черном Зеркале эпизод. Сан-Джунипер такое уже реализовали
а в эпизоде. Белое рождество показано как можно злоупотребить слепком сознания.Al_Azif
01.08.2018 08:41В фантастике бесчисленное кол-во раз.
Из последнего прочитанного — Alastair Reynolds, у него целая серия книг с человечеством разбившимся на «косморасы», одна из раз, уперевшаяся в науку при смерти «носителя» скачивала разум в большую базу где тусовались все умершие. Огромный коллективный интеллект. А отголоски ещё в Дюне, да.
У Гамильтона опять же, Пришествие ночи, кажется серия.
dart_w
30.07.2018 21:21foo52ru Вы не пробовали анализировать изменение длины (среднего количества реально исполняемых команд) очереди команд у каждой особи в процессе моделирования? Возможно есть закономерности вида «планктон-простой но его много, а кит сложный но их мало». Возможно получится по длине очереди увидеть на картинке формирование сложных объектов, ведущих себя как нечто цельное (хотя для этого в текущей модели не хватает неких «социальных»/«симбиозных» команд).
В общем идея выглядит интересно.
YaShum
31.07.2018 13:23Если бы при нажатии по существу можно было бы просматривать её ДНК, то было бы намного интереснее следить за ними и стали бы понятнее причины их поведения.
Кстати, я видел ваш проект с видом сверху, так вот, этот из статьи (с видом сбоку) намного интереснее наблюдать, так как тут чаще происходит соприкосновение различных видов.
darkfrei
31.07.2018 21:20Давненько натыкался на эти видео на ютубе. Можно ли добавить ботам ячейку памяти? Сами пишут, сами читают воспоминания, но всё это стоит энергии чуть больше чем просто жить без воспоминаний. Будет ли хоть какое-то преимущство?
ZeratoolSC
31.07.2018 23:45Был удивлен, когда, прочитав рассказ Грега Игана Кристалльные ночи, обнаружил Вашу статью. Тема один в один. Удачи в дальнейшем развитии проекта!
Tinki-Vinki
31.07.2018 23:45Симулятор для эволюционного биолога.
RomanoBruno
01.08.2018 00:42Да, мы тоже так думали, только биологам это фиолетово.
Если найдется хоть один биолог желающий сотрудничать с радостью примем.phenik
01.08.2018 04:34Это пока больше игра в эволюцию, реальные модели эволюции намного сложнее. Но как база для развития вполне годная. Не пробовали обратить внимание Маркова, может заинтересует, у него блог имеется.
RomanoBruno
01.08.2018 12:25По-моему реальные модели просто намного узкоспециализированнее а не сложнее. Или у вас конкретные примеры есть?
RomanoBruno
Самый сложный вопрос который меня беспокоит в этой теме:
Что есть жизнь?
RomanoBruno
Для тех кто молча минусует поясню смысл вопроса.
Возможно для вас вопрос «что такое жизнь?» очевиден. И тогда вы должны знать, что в биологии существует царство бесклеточных Acytota, куда кроме вирусов входят вирусоиды, вироиды, прионы и сателлитные РНК. То есть с позиции современной науки для жизни нет необходимости в клетке, достаточно небольших молекул.
Можно абстрагироваться дальше и предположить, что сложность сравнимая с биологической может быть достигнута и в плазменных структурах. Тогда мы переходим из разряда молекулярных шовинистов и шовинисты ионные.
А возможно для жизни вообще необязательна барионная материя, может быть достаточно информационной среды. И что жизнь определяется только вычислительной сложностью. Тогда проект Михаила можно рассматривать как жизнь без приставки «искусственная».
Если для вас эта тема очевидна, то обозначьте свою позицию. Давайте подискутируем.
Tsvetik
Является ли тогда выключение программы массовым убийством?
RomanoBruno
Видимо да, остается надеяться что они не успевают этого осознать))
dolovar
В чем отличие вариантов «успели» и «не осознали»?
Продлим, в чем отличие вариантов «выключивший узнал об успевании» и «не узнал»?
При ответе можно вспомнить о приведенном выше упоминании вирусов.
JPEG
Смерть бота определена в терминах его мира. Нет мира — нет терминов, нет и смерти
Chugumoto
эм… а если в программе предусмотреть сохранение и последующую загрузку? :)
bask
Еретик! Раньше таких на кострах сжигали
Chugumoto
ну а что? типа ночь. всем спать :)
tyomitch
Засыпают боты, просыпается мафия?
Qui-Gon
Ага и еще ввести бэкап любого состояния и вы уже повелитель времени;)
profesor08
А еще запустить одни и те же состояния параллельно, и вот у нас уже мультивселенная.
FlameStorm
Goddev
AlphaGliese
Тогда это, в некотором смысле, то, что мы знаем под словом — реинкарнация :) бот возрождается (правда это не перерожднение, а все-таки возрождение) и продолжает процесс свеого развития.
Chugumoto
ну… я бы не сказал… анабиоз? также без развития в процессе, а после продолжение с места остановки
dolovar
Отличная идея для реализации — дать боту возможность раз в N минут или перед принятием опасного решения сохраняться с возможностью восстановления после смерти.
Плюс добавить модификатор интереса, при падении которого бот бросает игру.
Плюс добавить бота-админа, который кикает или штрафует злоупотребляющих сохранениями.
Плюс добавить бота-зрителя, который подписывается на трансляцию наиболее удачливых ботов-игроков и ставит лайки, привлекающие других зрителей.
Femistoklov
Но ведь после загрузки это будут уже другие боты
Zenitchik
Почему Вы так думаете?
QWhisper
Ими будут управлять другие электроны.(Сарказм)
Это просто старый спор, наше сознание это процесс или состояние. Если процесс то любое его прерывание уничтожает непрерывность, а как следствие сознание оригинала погибает в момент прерывания. Если же состояние, то можем скопировать и все копии будут идентичны.
Zenitchik
Скорее, это старый спор про «тот же» или «такой же».
Femistoklov
Тут ещё вопрос, что значит «идентичны». Интуитивно кажется, что скопированное состояние не даст идентичности сознания.
worldmind
Жизнь это то, что умеет понижать свою энтропию за счёт большего увеличения энтропии окружающего мира, вирусы это не жизнь, это запчасть, жить он начинает когда получает клетку.
marsermd
Холодильник понижает свою энтропию:)
А то что при этом энтропия окружающего мира повышается — следует из второго начала термодинамики.
worldmind
) холодильник это не замкнутая система, он подключен к электросети, и так далее если разматывать окажется что эта система включает в себя людей.
Azya
Живые организмы берут энергию откуда? Если холодильник будет питаться от солнечных батарей это что-то изменит?
worldmind
Ну да, одной энтропии видимо недостаточно, нужно ещё самоподдержание своих функций, некая саморемонтируемость, динамическая устойчивость к воздействиям определённого уровня.
Azya
Думаю это все тоже не принципиально. На мой взгляд, холодильнику для жизни не хватает только возможности самовоспроизводства с небольшими ошибками.
zameshin
Так и живой организм ни в коем случае не замкнутая система. Он потребляет энергию извне на уменьшение энтропии внутри/вокруг себя.
InterceptorTSK
Не совсем так.
Потребляется энергия не на уменьшение, а на поддержание постоянного уровня энтропии. Своеобразная константа получается. Рост в данном случае можно исключить для простоты [при этом замедление роста — это опять нарушение].
При этом, каким-то непостижимым образом, эта константа меняется скачкообразно во время размножения, например.
При этом, некоторое живое может менять свою константу энтропии, когда переходит из незамкнутого состояния в замкнутое, и наоборот.
В общем и целом не живому такие фееричные возможности даже и не снятся)
trapwalker
А по-вашему люди это замкнутая система? Или тоже нет, ведь они получают энергию от мяса коров? А автомобильный холодильник с солнечной батареей сразу станет живым? Или теперь вы прицепитесь к самовоспроизводству? Но отдельно взятый человек не может самовоспроизвестись. Если вирус — это запчасть, то почему человек — это не запчасть для системы питания и размножения холодильников? Или начнём жонглировать фактами и предпосылками наделяя отдельные следствия надуманными причинами?
Жизнь — это одно из понятий, которые отлично распознаются и определяются в больших масштабах, но на некотором уровне выявляется серая область. которая из-за старика Гёделя не даёт определить всё на свете.
Yuuri
Бедный Гёдель, всё спокойно старику полежать не дадут.
trapwalker
Вы полагаете он все-таки вертится?
phenik
А-то… после того, что натворил.
panvartan
А почему вы решили, что холодильник это не жизнь? Это такая же жизнь, как ваша нога, только пока мы можем делать холодильники и не можем ноги.
Yuuri
Холодильник понижает энтропию некоторого объёма внутри себя. С повышением своей энтропии (уплотнитель потрескался, лампочка перегорела, компрессор барахлит) он сделать ничего не в состоянии.
marsermd
Так и собака ничего не может сделать с тем, что у неё сердце остановилось.
Я уж не говорю о клеточном апоптозе.
RomanoBruno
Холодильник понижает энтропию и именно поэтому в нем зарождается жизнь)
RomanoBruno
worldmind
Цитат с сайта рентв?
Вот что говорит википедия:
worldmind
Или вот:
RomanoBruno
А вы надо полагать с канала Спас?
Любите Википедию, так любите хотя-бы англоязычную. До православной научные статьи лет через 50 доходят
worldmind
Прямо из вашей цитаты:
надеюсь с переводом справитесь
RomanoBruno
Так и знал что уцепитесь))
Специально для Вас выделю то, что Вам нужно прочитать:
Historically, most (descriptive) definitions of life postulated that a living organism must be composed of one or more cells,[2] but this is no longer considered necessary, and modern criteria allow for forms of life based on other structural arrangements.
Найдете словарь перевести слова выделенные жирным?
worldmind
Так что это за такие современные критерии, что они не убеждают большинство биологов?
Это же вопрос не знания, а определения, тут должно быть согласие и согласие в том, что вирус это не жизнь, жизнью он становится когда обзаводиться клеткой и начинает жить, а до этого это просто сложная молекула.
RomanoBruno
Дело в том что википедия вообще не является отражением современной научной реальности, особенно в узкоспециализированных областях. Гуглите царство Acytota, много интересного узнаете, обновите ваши старообрядные взгляды.
poxvuibr
Вот эти все неклеточные формы жизни, они могут существовать без клеток?
RomanoBruno
Да (РНК отлично размножается в определенных растворах).
А вот клетки без них может и могут но плохо и недолго.
vintage
А семена могут существовать без земли?
worldmind
А где узреть эту современную научную реальность?
Вы предлагали подискутировать, а теперь отправляете гуглить даже без пояснения своей мысли.
RomanoBruno
Ну как где? Читать научные статьи, смотреть научные видео. Желательно проверять год выхода перед прочтением/просмотром, чтобы не усваивать заведомо устаревшие сведения.
Когда Левенгук выступал с докладами о своих инфузориях, научное сообщество того времени свистело ему и обвиняло в шарлатанстве. Но потом бактерии признали жизнью.
Недавно жизнью признали РНК и еще некоторые полимеры.
Я не могу знать что признают следующим, но я вижу постоянное расширение границ как в биологии, так и в физике, и в астрономии и т.п.
Надеюсь все свои мысли я пояснил. Желаю вам всего только самого лучшего в вашей научной одиссее.
QWhisper
А что вы скажите про Прионы?
worldmind
Как я понимаю, по устройству они более примитивны чем вирусы, а в остальном схожи с ними.
gleb_kudr
Тут нет смысла дискутировать. Жизнь — это первичное (неопределяемое) понятие в биологии, так как ни одного полного и непротиворечивого определения ее не существует. Как время, пространство, точка или прямая в других науках.
c0f04
Жизнь могла возникнуть вообще в виде РНК, т.к. РНК может быть одновременно и набором генов, и ферментом. Самой себя теоретически ей может хватать для репликации и эволюции в первичном бульоне. ДНК же могло быть побочным продуктом, который оказался более удачным решением для хранения генома.
Поэтому тут скорее вопрос в другом, — как провести границу между жизнью и химической эволюцией? Если тут можно будет провести границу, то можно будет провести и границу между жизнью и эволюцией любых сложных систем, проведя аналогию.
BigBeaver
Где-то было определение жизни как автокаталитической реакции. То есть то, что само поддерживает себя, то и жизнь)
RomanoBruno
Огонь например?
BigBeaver
Я не настоящий химик, но по-моему, горение не является автокатализом (или обычно не является). Похоже, я имел ввиду эту статью.
phenik
Автокаталитические реакции приводят к колебательным процессам. А в этой симуляции колебательные процессы возникают? По идее должны, так как есть боты поглощающие других ботов (условно «хищники»), есть боты поглощающие органику (условно «травоядные»), и есть боты фотосинтезирующие (условно «растения»). А это значит есть условия для реализации экологических моделей типа «Хищник — Жертва», «Травоядные — Трава», и подобных, с сопутствующими колебательными процессами, как одного из решений. Наблюдаются такие? Или там такого разделения ботов нет, и такие процессы не возникают?
sergix
Вообще в колебательных процессах самым впечатлительным, для меня, всегда был резонанс. Вроде бы все силы одинаковы, а вдруг входя в резонанс они отмачивают что-то очень выходящее из ряда остальных событий. Так что резонансные явления на фоне основных колебаний(если они и правда есть), думаю, будет интересно пронаблюдать.
RomanoBruno
Если ускоренное видео посмотреть то наблюдаются иногда
overtest
Жизнь, как мне кажется, это то, что может меняться безгранично. Например, набор команд в данном проекте ограничен. Все «мутации» влияют только на порядок выполнения команд и их параметры, т.е. принципиально новая команда возникнуть не может, а значит боты не могут эволюционировать в этом направлении, как и в других, которые задуманы автором и будут оставаться неизменными. Сколько бы времени ни прошло, это будет всё тот же мир, в котором не появится ничего нового, пока не вмешается автор. А значит это не есть жизнь — жизни тут не более, чем в любой программе с некоторыми случайными параметрами.
UncleJey
У нас тут вроде как тоже всё в рамках обозначенных, но пока не доконца понятных алгоритмов.
overtest
Наши рамки если и обозначены, то на более низком уровне, чем в данной реализации. К примеру, автор реализует команду «фотосинтез», как неделимую данность, хотя в действительности это очень сложный процесс. Мне кажется, с целью осмысления «жизни» нужно использовать куда более простые «кирпичики». Если сразу начинать с таких сложных процессов, то получится интересный симулятор, не более.
RomanoBruno
вам уже ответили ниже)
overtest
Вы правы, но кол-во и разнообразие софта, однако ж, безгранично, или так только кажется.
Вообще, браться рассуждать о таких вещах — занятие рискованное, можно попасть в ловушку своих же рассуждений.
RomanoBruno
А зачем вы это написали тогда?
«т.е. принципиально новая команда возникнуть не может, а значит боты не могут эволюционировать в этом направлении, как и в других, которые задуманы автором и будут оставаться неизменными.»
overtest
И сейчас считаю, что возможность «возникновения» новых команд в рамках этой симуляции задача не из невозможных, несмотря на то что список команд процессора ограничен. От сделало бы мир более «живым». А вообще, мы тут дискутируем, а не высказываем окончательные умозаключения.
RomanoBruno
Так возникновение новых битов кроме 0 и 1 на компьютере невозможно.
Но программы то новые пишутся.
А вы пишете «будут оставаться неизменными». Это как?
overtest
1 и 0 — это элементраные кирпичики для компьютера, с их помощью можно создавать бесконечное множество комбинаций. В проекте же за «кирпичек» берется сложный процесс, уже выше об этом писал.
RomanoBruno
и что, из сложных процессов нельзя создать бесконечное множество комбинаций?
overtest
Отвечаю на ваш вопрос исключительно в контексте данной дискуссии. Если для вас комбинация «фотосинтез» + «поворот» представляется действительно новой командой, непохожей на предыдущие, тогда можно.
Zavtramen
Автор же предлагает следующим шагов добавить регистры и пр. В принципе можно дойти до того что появятся новые команды из ничего, вопрос только в том что эволюция тут до чего-то интересного займет вечность
vyo
Как насчёт «безграничности» нашего мира? Да, в нём гораздо больше пространства для изменений, но о полной безграничности речи идти не может. В данном проекте реализована просто очень примитивная (по сравнению с нашим миром) модель, все аспекты которой той жизни доступны.
ИМХО, полная безграничность возможна только в полном же хаосе.
overtest
Неспобность разума постичь границы или охватить всё многообразие мира можно считать безграничностью для данного разума. По меньшей мере, пока он эти границы не постигнет, их нет. В любом случае я сторонник более мелких кирпичиков — это дает больше свободы в рандомизации не только последовательности команд, но и их структуры, т.е. появление «новой» команды, что создаст куда большую иллюзию свободы. А так — они слишком велики для комбинаций.
InterceptorTSK
Есть же признаки живого и не живого. Чем больше признаков живого в рассматриваемом кандидате на живое — тем кандидат живее.
И да, ваш вопрос ваще некорректен по-определению.
Потому что вы задаете вопрос. ВОПРОС.
Вопросы способны задавать высшие формы жизни, т.е. конечные автоматы крайне высокого уровня развития. Те что пониже вопросов не задают. Но тогда появляется вопрос — а что такое конечный автомат крайне высокого уровня развития?))
RomanoBruno
Так вот я как раз и пытаюсь составить список всех возможных вариантов признаков живого и неживого. И поверьте он уже не мал)
А как влияет на корректность вопроса то, кто его задал?
Вопрос просто есть, и он сам на себя не ответит.
InterceptorTSK
Ниже прочтите) Влияет логика теории типов и еще как влияет.
У вас она одна, у меня другая.
У муравья ее вообще нет.
Мы никогда не поймем и даже не договоримся о сути вопроса, потому что сам вопрос не имеет почти никакого значения. Более значимо тут как раз таки что подразумевается под вопросом реально)) Я это объяснить запросто смогу. А вы — нет.
Но тогда мы никак и никогда не договоримся даже о сути вопроса.
И т.к. вы не можете объяснить реальную суть вопроса — ваш вопрос вообще теряет всякий смысл.
RomanoBruno
Я же объяснил суть вопроса во втором комментарии. Или что не так?
InterceptorTSK
Не так то, что мы сильно расходимся насчет того, что такое жизнь) Т.е. у вас есть абстракция «жизнь» и у меня есть абстракция «жизнь», НО ОНИ СИЛЬНО РАЗНЫЕ)
Отсюда следует, что я либо должен, например, отвечать вам на вопрос оносительно вашей абстракции, либо относительно моей абстракции.
Но в первом случае я про вашу абстракцию почти ничего не знаю, а точнее считаю ошибочной, а во втором случае вы мало чего поймете, потому что для вас моя абстракция достаточно сложна. При этом это якобы одно и то же. Но это же не так!
Еще раз, у нас разные представления об абстракциях, а именно об абстракции «жизнь», но в таком случае, как мы можем об этом рассуждать, если мы рассуждаем о заведомо разных «вещах»?
RomanoBruno
Понял вас)
Так самое интересное сравнить как раз абстракции «жизнь» произвольных людей и посмотреть как они отличаются. Ведь кажется что все прекрасно понимают что это такое, а на деле получается что все понимают разное.
InterceptorTSK
Вы совершенно точно уловили суть) Я рад. Без шуток.
Очень и очень у многих оное не получается) Рад безмерно.
InterceptorTSK
Признаки живого и не живого ищите у биологов. Тут не нужно выдумывать. Есть специалисты на это. Они уже все разгребли и вменяемые абстракции на сей счет уже создали.
dolovar
Если вспомнить выражения «жизненный цикл продукта» и «образ ожил в книгах», то единственным обязательным свойством жизни является воспроизводимость.
Причем самовоспроизводимость доступна только при делении клеток и почковании колоний, а люди и вирусы слишком сильно зависят от среды.
InterceptorTSK
Еще раз. Я настаиваю на этом. Если про жизнь — к биологам. Они вам дадут исчерпывающий ответ.
Как пример критерия жизни — изменчивость. Если вы создаете точные копии — то это уже не жизнь. Или например закрепление изменчивости, ну или мутация. Это еще один критерий жизни. Жизнь без мутаций не может быть жизнью. И т.д.
И да, выше или ниже написано например про энтропию и то как она работает, а точнее работает с нарушениями законов термодинамики в живом. Это тоже критерий жизни.
И т.д.
RomanoBruno
Вот у меня как раз на сегодня 3 неопровержимых фактора отсеялось из кучи шелухи:
1. воспроизводимость
2. изменчивость
Все остальное спорно и не обязательно
Про нарушение законов термодинамики это ересь, потому что никакие законы термодинамики не нарушаются — система не является замкнутой
InterceptorTSK
Способность перехода из незамкнутой системы в замкнутую и наоборот, причем по собственному усмотрению и является «нарушением закона». Не живое такими магическими способностями никак не обладает)) И да, то что я написал — оное подметить способны совсем единицы) И да, оформить это в виде формул крайне затруднительно.
То что вы пишете совершенно верно. Но суть вовсе не в этом же.
InterceptorTSK
Но такая способность перехода туда-сюда возможна же только в одном случае)) Только если такая способность принудительно «запрограммирована». Магии тут нет никакой.
Всего навсего принудительно нарушаются законы термодинамики да и все тут) Ничего хитрого.
InterceptorTSK
Вы опять расходитесь в том, что такое жизнь. И в данном случае разойдетесь в абстракциях уже не со мной, а со всем биологическим сообществом. Что как бы настораживает.
RomanoBruno
Биологическому обществу я предлагаю рассмотреть такую цепочку.
Человек это жизнь? Безусловно да.
Человек с протезом ноги? Тоже.
Киборгизированный человек наподобии робокопа?
Человек сумевший перенести свою память и сознание на компьютерный носитель?
Датацентр, содержащий развернутые и работотающие сознания таких людей?
Юпитерианские мозги?
То есть например прилетев на чужую планету и обнаружив там гигантские залежи кремниевой (или нет) электроники, биологическое сообщество сможет вообще понять что это высокоразвитая цивилизация прошедшая полный путь эволюции начиная с химической, и продвинувшаяся гораздо дальше нашей?
А сможет ли она отличить такую цивилизацию от цивилизации развившейся на базе «проекта Михаила»?
InterceptorTSK
Эти вопросы из разряда, чем отличается «искусственное» от «не искусственного».
Это тоже крайне значимый вопрос. И вовсе не тривиальный.
И этот вопрос с жизнью связан очень тесно) И связан опять же целиком и полностью через теорию типов, ибо проще нее быть ничего не может.
А значит искусственные штуки так или иначе будут повторять теорию типов создателя.
Moldovich
Позвольте вмешаться: по вашему биологи обнаружившие на "чужой планете" глиняные таблички с записями полного пути эволюции супер-развитой цивилизации должны признать эти таблички жизнью/живыми?
Напомню: текст на табличках — такая же закодированная информация как и информация в кремнии или любом другом носителе.
PS
Человек с протезом и манекен с прикреплённой к нему отрезанной ногой человека — вполне себе разные вещи.
Zenitchik
Всё гораздо хуже. Прилетев на другую планету и найдя на ней что-то торчащее из земли и что-то бегающее — мы не сумеем определить, жизнь это или техника. Критериев нет.
tyomitch
Вышеупомянутое пламя опять оказывается живым?
RomanoBruno
У него нет изменчивости, это один и тот же процесс окисления.
phenik
В определении жизни в первую очередь важно ее самосохранение, с использованием для этого информации, энергии и вещества из окружающей среды. Это подходит для определения жизни в вашей симуляции. Если уточнить, что вещество — высокомолекулярные соединения, то биологической жизни вообще, включая гипотетическую в других мирах, если еще уточнить — углеродные высокомолекулярные соединения, то для земной формы жизни.
А это к эволюции относится, она породила эти механизмы из факта конечного времени существования живых систем, то есть их постепенного разрушения и смерти. Этих форм воспроизводства много, они сами по себе эволюционировали, чтобы повысить эффективность отбора, с начало было копирование, затем деление, почкование, и наконец венец творения — половое размножение. Изменчивость, в виде воздействия вредных факторов внешней среды всегда существует, это одна из причин гибели живых организмов. В половом размножении добавился очень эффективный механизм изменчивости — перемешивание хромосом (мейоз).
dolovar
Проблема неопределенности контекста. Вопрос о жизни действительно лишен смысла, если не указать, с какой точки зрения интересует ответ. Под одним и тем же ярлыком термина разные люди могут понимать очень разные сущности.
С точки зрения биологии — просто нужно посмотреть на мнение большинства современных биологов, которые дадут совокупность обязательных критериев, ответ очевиден. Для простоты скопирую из вики: генетический код, организация, метаболизм, рост, адаптация, реакции, воспроизводство и т.д.
Вы совершенно правы, если контекст вопроса — биология. Но являются ли биологи владельцами патента на термин?
С точки зрения философа — мутабельность должна быть сбалансирована между выживанием сейчас и приспособлением к изменениям условий в будущем. По сути изменчивость определяет качество не особи, а вида. Можно добавить критерий, объединяющий воспроизводство и приспособление — живущий обязан являться представителем вида, которому присущи все качества жизни (общий генетический код, организация, метаболизм, рост, адаптация, реакции, воспроизводство и т.д.).
С точки зрения физика тоже можно добавить обязательный критерий — живой обязан быть наблюдаем. Для военных, кстати, этот критерий тоже может быть важен.
С точки зрения этики, единственный критерий — мне будет жалко, если оно прекратит существовать.
С точки зрения религии — сильно зависит от религии.
С других точек зрения критерии могут быть другими. В вопросе не хватает уточнения контекста.
RomanoBruno
Мне то все сойдет. Больше контекстов хороших и разных.)
Контекст военных например хорош. Даже не думал об этом))
InterceptorTSK
Но откуда идет контекст военных? Кто воюет?
Только тот, у кого есть интеллект.
Остальные не воюют. Ибо зачем?
Под войнами понимается не биологическая доминантность, а именно организованная интеллектуальная доминантность.
Биологическое определение войны: организованная интеллектуальная доминантность определенного вида над определенными видами [возможно такими же] на определенном ареале с целью захвата жизненноважных ресурсов этого ареала.
Высокоорганизованные стайные животные, например, этим и живут.
RomanoBruno
Думаю для войны как и для жизни в целом интеллект не нужен, а иногда и вреден.
В виде примера вам иммунная система.
dolovar
Добавлю минимальный набор (спорная попытка) программиста — живое умеет воспроизводить себя и умирать.
Добавлю филологическое — если критерии существования столь многочисленные и разные, то можно предположить, что мы имеем дело с термином отсутствия противоположного, который обозначает не сущность, а отсутствие противоположных сущностей.
vintage
То есть, если я бесплоден и научился продлевать жизнедеятельность неограниченно долго, то я не живой?
dolovar
Если Вы — это объект в программе, который не создает свои копии (в каких-то условиях) и не прекращает свое существование (в каких-то условиях), то вряд ли программист назовет этот объект живым.
Данный объект может обладать красивым аватаром, могуществом при обращении с другими объектами, эрудицией, интеллектом и другими привлекательными качествами, но если его конструкция изначально не подразумевала размножения (бесплодие не приобретено в результате травмы), и если размножение не ограничивается (этики ради), то на месте программиста я бы не назвал это моделью жизни.
Вспоминается старый вирус Hobo, который при появлении дискеты в дисководе проверял её на наличие своей копии. Если копия есть, то увеличивал свой счетчик «детей» — два бродяги встретились и сделали ребенка. Если на дискете копия не найдена, то проверялся свой счетчик детей, один из которых мог быть выселен на дискету. После проверок сотни дискет, бродяга умирал от старости со всеми детьми. Подселение с дискеты на чистый комп не было реализовано, поэтому бродяги далеко не разбрелись, и даже не успели заинтересовать никого из производителей антивирусов. Не были реализованы мутации, адаптации, метаболизм или рост, но сделанного было достаточно, чтобы воскликнуть — оно живое!
Moldovich
тоже кстати навеяло мысль, что все мы теоретически мертвы —неживые, т.к. критериев нет оказывается)
InterceptorTSK
Биолог говорит следующее: нет никаких балансов и взглядов наперед. Есть цепь случайных событий и не более. Тот кто приобрел случайную мутацию и многократно размножился, с закреплением мутации и в последующем среднем времени не вымер — и определит новый вид.
Точка зрения философа берется на пустом месте, она умозрительна и не требует подтверждений фактами. Точка зрения биолога рассчитана и требует наличия подтверждающих фактов.
Я склоняюсь к биологам, но не исключаю философов как некий хлам. Зачем?
Если появится что-то более вменяемое в сравнении с биологической точкой зрения, я безболезненно переметнусь в этот новый лагерь)
dolovar
Я не считаю различные точки зрения противостоящими лагерями, между которыми нужно выбирать, чтобы смотреть на предмет с одной стороны.
Zenitchik
Не все точки зрения — это взгляды с разных сторон. Большинство их — это вообще не взгляд, а выдумка. Поэтому нужно фильтровать.
dolovar
Фильтр — инструмент, он не самоценен, польза или вред применения любого инструмента определяется ситуацией.
Zenitchik
Не вижу противоречия с тем, что я сказал.
InterceptorTSK
Вам же я бы крайне посоветовал разогнать у «ботов» интеллект. Не бредовую хрень каторую называют искусственным интеллектом, а именно интеллект. Но что это?))
А это очень просто. Интеллект — это способность оперировать логикой теории типов.
А теория типов что это? А это вам уже знакомо — это логика высших порядков, в кампутерах она частично и в общем-то убого реализована в виде ООП.
Вот смотрите, есть «пассатижи», что есть «пассатижи»? Это «инструмент». Что есть «инструмент»? Это «вещь». И так далее. Таким образом вы создадите ваши правила теории типов для ваших ботов, естественно такие сложные штуки как «инструмент» описывать не нужно. Для ваших ботов хватит банальных абстракций.
Но сразу же встает вопрос. А куда это упрется? В ООП это упирается в «объект». В ООП «объект» является базовой абстракцией всего. А у живого как?) У живого базовых абстракций много, но не сильно много. У живого базовые абстракции — это чувства. Именно чувства не поддаются объяснению с точки зрения теории типов и каждое чувство — есть базовая абстракция, т.е. не имеющая родителя.
С точки зрения теории типов что есть «время»? Т.е. что родитель абстракции «время»? Естественно это «процесс». Но какой? Процессы бывают периодическими, а бывают не периодическими. Не периодические процессы «времени» не зададут. Время можно задать только на периодических процессах. Идем далее. Что есть процесс? Это способность восприятия «бифуркации», т.е. именно чувственная способность видеть качественные изменения. Это базовая абстракция) «Периодичность» — ровно такая же базовая абстракция. Вот вы и словили уже что «бифуркация» и «периодичность» — это базовые абстракции, т.к. родителей у них нет. Но как быть с ООП? А все и тут просто. Наследуйте от «объекта» — «абстракцию», у вас это будет база. И навешайте в виде интерфейсов на «абстракцию» «бифуркация-able» и «периодичность-able» и у вас появится «время». В рамках теории типов интерфейсы потому и названы абстрактными абстракциями)
При этом, поймите самое главное, ДЛЯ ТЕОРИИ ТИПОВ НЕ ВАЖНА РЕАЛИЗАЦИЯ ТИПОВ. Важна тут только логика, т.е. кто что из под чего наследуется и какие интерфейсы прицеплены. И все.
Ну и добавьте реальную коммуникацию ботам, пусть общаются. Ограничьте у них память конечно же. И задайте ошибки копирования абстракций друг-другу.
Почти чувства вы уже описали. У вас боты ходят-бродят, видят, всмысле как-то коммуницируют в ваших определениях и так далее. Это все и есть чувства. На эти чувства навешайте интеллект и у вас получится презабавная штукенция я вас уверяю) Тем более это не так сложно как кажется. Тем более все для этого уже есть и на самом деле уже давно придумано и реализовано.
И последнее. Добивайтесь ТОЛЬКО реального интеллекта, а не той убогой байды которую называют «искусственным интеллектом» и которая к интеллекту вообще не имеет никакого отношения от слова совсем.
max1muz
Вы говорите автору — возьми и сделай настоящий интеллект. Причем вещаете как гуру, который этих интеллектов не одну сотню сделал. Забавно)
InterceptorTSK
Так точно. Возьми и сделай настоящий интеллект.
И даже объяснение как сделать — приведено.
Или вы из разряда людей, которые не понимают что такое ООП? Похоже что да.
Давайте на пальцах, этот абсолютно тривиальный пример приводится всегда.
Есть тарелка, вам нужно проявить интеллект относительно абстракции «тарелка».
Т.к. мы рассматриваем теорию типов, то нужно искать родителя тарелки, а это посуда. У посуды есть тоже родитель — это емкость.
У посуды и емкости и можете дальше лезть в абстракции пока не опухните — есть открытые интерфейсы, у емкости есть размер, объем и все те банальности какие захотите, главное что бы логика не нарушалась. Интерфейсы и объекты не требуют реализации вовсе.
Итого, вы составляете иерархию объектов, шарп или джава подойдут наура, джава как наиболее быстро рулящий объектами язык тут предпочтительней конечно же.
Собираете абстракции ручками в иерархии и начинаете обизъяньи скачки с перебором. Т.к. нет реализаций, то только перебор, эвристики, т.е. правил отбора заведомо предпочтительных вариантов нет, но вы можете их написать. На это есть некоторые теоремы теории типов, они вам сократят перебор.
Вот и все))
Так вы за примерно 0.000001 секунду получите «квадратную тарелку».
В чом собственно проблема?
max1muz
Вы я вижу понимаете, что такое ООП. Хорошо. Пожалуйста, набросайте простой интеллект для примера, или выложите ссылки на ваши работы. Чтобы развить дискуссию.
InterceptorTSK
Минусов слишком много.
А значит оно вряд ли востребовано.
Ну а «квадратную тарелку» и с ней гору мусора вы и сами можете запросто получить. Попробуйте, это увлекательно) Рецепт приложен уже.
max1muz
А так все интересно начиналось.
fatronix
Я вас разочарую, но ООП не должно следовать иерархиям рального мира. Довольно умозрительным, кстати.
InterceptorTSK
Да ладно?) Что вам тогда мешает разложить мир на полки? Или хотя бы кусочек мира?
Почему вы пользуетесь «искусственным интеллектом», который ничего не может?
Почему вы все еще надеетесь, что он вам даст ответ, что «пассатижи» — это «вещь» с вероятностью в 84%? Что мешает сразу собрать базу, где сразу написано, что пассатижи — это вещь 100%? Ну или проще — «пассатижи» — это «вещь».
Что-то мешает ага? Попробуйте соберите такую базу)) Тот же гугл или яндекс у вас такую базу купит мгновенно за астрономические деньги.
Но что-то ни у кого пока собрать оное не получилось, даже у гугла и яндекса не выходит, а для вас оно просто и умозрительно.
И покажите пруф, ну раз тут спрашивают за пруфы и прочее — где это написано, что ооп не должно следовать иерархиям реального мира?
fatronix
ООП следует той иерархии, которая решает поставленную задачу. В реальном мире вы не увидите никаких декораторов, FactoryObserver, ObserverFactory, Singletonов и т.п. В компьютерной игре одна тарелка может реализовывать Throwable, а другая — StaticObject только потому, что первой можно кидаться, а второй нет. Объекты вообще могут описывать сущности, которые не выходят за пределы этой программы.
Попытки подвести ООП-сущности под реальный мир — зачастую признак неопытности программиста и прямой путь к говнокоду. Код должен решать задачи, а не мимикрировать под реальный мир — один черт по итогу все превратится в машинный код.
InterceptorTSK
Вы сумасшедший?
Если объектом Plate можно обкидываться, т.е. объект Plate вообще имеет потенциальную возможность быть кинутым, то у него должен быть интерфейс IОбкидывание-able. И не факт, что вы будете обкидываться этим объектом. То чем можно пообкидываться — должно быть потенциально обозначено. Не нужно думать тут, что реализация интерфейса вообще должна быть. Ее может и не быть. В таком случае, интерфейс можете считать флагом объекта. Ну и реализуйте как положено Plate:IОбкидывание-able(INameable Вася, INameable Петя)
Само собой интерфейс IОбкидывание-able должен наследоваться от интерфейса IКинуть-able. Это же разные вещи.
Какие нахрен throwable и причом тут статикобжэкт??? Какое отношение они имеют к ооп вообще?
Вы объяснитесь хоть как-то. Полнейшее идиотство.
Zenitchik
Вы втираете какую-то дичь.
Вам ответили
Совпадает эта иерархия с какой-то из иерархий реального мира или не совпадает ни с какой — зависит от решаемой задачи.
ariklus
В самом широком понимании — самореплицирующиеся сущности и их потомки (включая некоторые кристаллы и мемы, а также рабочих пчел). А сужать и подгонять определение можно сколько угодно.
ncix
Ваш вопрос не имеет ответа, т.к. существует масса противоречивых определений. Дайте свое собственное точное определение и используйте его в дальнейших рассуждениях.
RomanoBruno
Мне очень нравится определение Фон Неймана для самокопирующихся автоматов. Правда он не называл это жизнью. По его мнению для таких агентов необходино 4 компонента:
1. Устройство управления
2. Чертеж
3. Копировальная машина
4. Сборочная фабрика
Ну вот правда вирусы и РНК добавили изюминок в это определение. Точнее убрали))
Оказалось что все необходимое для жизни кроме чертежа можно арендовать у других организмов.
А так вообще в природе сложно найти организмы без симбионтов и паразитов. Например ничего крупнее бактерии не сможет жить без ДНК митохондрий. А некоторые вирусы неспособны размножаться без вироидов, как и наоборот.
akkuraten
Мне тоже определение паразитов в статье как нехищников показалось некорректным.
BigBeaver
Это социальные а не биологические паразиты.
wtg
> Что есть жизнь?
это с одной стороны и очень сложный вопрос и с другой очень простой.
Согласно современным представлениям это нечто что может в дарвиновскую эволюцию.
Как анти пример можете рассмотреть кристаллы(само воспроизведение, деление и тп..). Когда и если мы найдем нечто что противоречит нашим представлениям об эволюции мы подправим формулировку, а пока так.
Fracta1L
По-моему, это чисто условная граница в иерархии самоорганизации материи (если такая иерархия вообще есть)
odissey_nemo
Жизнь — это форма существования белковой материи. Короче сказать сложно.
RomanoBruno
Вы слышали что рухнул Советский Союз?
Уже необязательно опираться в научных дебатах на труды Маркса, Энгельса и других политических деятелей начала 19 века </sarcasm>
odissey_nemo
Мне это определение нравится краткостью и ёмкостью.
Автор тут не при чём. Я его даже не указал, заметьте. Вы же пристрастны.
Предполагаю, читаете РФ-макулатуру и подобные этому сайты. Это Ваш личный выбор, под воздействием внешних обстоятельств. Вряд ли такое мнение самозародилось, как жизнь на планете Земля. И спорить тут не о чем. А Энгельс — мой выбор, с младенчества :o) Тоже внушённый извне и прошедший проверку временем. Лет через 20 поговорим с Вами наравне уже.
poxvuibr
Единственное, что нам сообщает определение, это что структуры, не состоящие из белков живыми быть не могут. Ну, то есть было принято волевое решение считать живым только то, в чём есть белки. Действительно коротко. Очень красноречиво демонстрирует уровень научных знаний о том, что такое жизнь на тот момент времени. Хорошо, что сейчас с этим получше.
odissey_nemo
Сарказм не конструктивен, т.к. вызывает подозрения в личной неожиданной заинтересованности. Спорить на тему что и как «сейчас» лучше, чем было — бессмысленно. Т.к. в прошлом (моём) Вы не были и судить существенно объективнее, чем я — не можете. Лет через 20 — тогда и поговорим)) Если не забудете((( Прощайте, дискуссии не получилось, совершенно неожиданно. А жаль!
poxvuibr
Нет тут никакого сарказма. Определение короткое, потому что мало что нам сообщает, а мало что сообщает потому, что о жизни тогда мало что было известно. Про личную заинтересованность я не понял.
На тему того, когда учёные лучше понимали что такое жизнь — действительно бессмысленно. Сейчас понимают гораздо лучше, это факт.
Я не понял как ваше прошлое связано с пониманием того, что такое жизнь, такое впечатление, что вы говорите о чём-то другом.
RomanoBruno
Ну начнем с того что надо убрать слово «белковой» так как сегодня живыми уже признаны организмы вообще не содержащие белков.
Останется «Жизнь — форма существования материи»
А это уже похоже на каноническое определение «веревка — есть вервие простое»
poxvuibr
Это какие? Можно ссылку или ключ для погуглить?
RomanoBruno
Читайте выше, уже многократно обсудили
crocodile2u
Один миллиардер тоже задался этим вопросом, и однажды ему сказали, что в горах Тибета есть практически недоступный монастырь, в котором живет древний старец, и он знает ответ на этот вопрос. Миллиардер организовал экспедицию, они отправились в путь. Кто-то сорвался с ледника, кто-то погиб от переохлаждения, кто-то сошел с ума от экстремальных условий. Остался только наш герой, который дошел до своей цели и увидел золотой храм, в центре которого сидел на троне старец, поглаживая бороду.
Старец посмотрел на него просветленно, улыбнулся чему-то своему и ответил:
Миллиардер подождал продолжения, но старец закрыл глаза и как будто заснул. Миллиардер пришел в бешенство:
Старец испугался, вскочил и скрылся в подвале храма. Через несколько минут голова его появилась в окошке на уровне пола, и он робко спросил:
phenik
Очень понравилась, то ли притча, то ли анекдот) в контексте споров о смысле жизни))