ID работы: 2274482

Ошибка сегментации

Джен
G
Заморожен
15
автор
Размер:
5 страниц, 4 части
Описание:
Посвящение:
Публикация на других ресурсах:
Уточнять у автора/переводчика
Поделиться:
Награды от читателей:
15 Нравится 26 Отзывы 4 В сборник Скачать

0000h

Настройки текста
«Segmentation fault». Это все, что я получил, впервые запустив скомпилированную программу, которая должна была изменить всю мою жизнь. Нередкая, но очень обидная ошибка, которую бывает довольно сложно найти в коде. Лучше бы я тогда все бросил — нашел бы, наконец, работу, зажил в свое удовольствие. Но нет, мой энтузиазм не мог сломаться о 18 символов ошибки в консоли выполнения. Недели кропотливого труда, ушедшие на разработку компонентов системы, просто не могли кануть в бездну собственной бессмысленности, и я начал отладку. Тысячи и тысячи строк путались в голове, знакомые названия классов перемежались с уже частично забытыми — структура данных была невообразимо сложной. Разобраться — на грани возможного. Раньше я ничего подобного не писал... Началось все с программы «Game of life». Это такой клеточный автомат с предельно простыми правилами: есть «живые» и «неживые» клетки на квадратной сетке двухмерного пространства. Вокруг трех «живых» клеток рождается новая «живая». Если вокруг одной «живой» меньше двух или более трех «живых», она «погибает». Вот такой простой естественный отбор. Ни десоциализации, ни перенаселения. Результат потрясающий: в случайном порядке заполненная «живыми» клетками, симуляция порождает огромный ряд самосохраняющихся и даже самовоспроизводящихся последовательностей новых «живых» клеток. Это было похоже на самую настоящую простейшую программную жизнь. Придумал эту гениальную штуку Джон Конвей еще в далеком 1970 году. Написать самому такой клеточный автомат оказалось делом трех часов, но пару дней после этого меня было просто не оторвать от уже написанной программы — нечастый случай. Я пробовал огромное множество различных комбинаций живых клеток, получая потрясающие жизненные циклы существ этого странного необычного мира. Всю следующую неделю я пытался выдумать способ как-нибудь прикрутить к «Игре в жизнь» генетические алгоритмы, чтобы таким образом увеличить устойчивость системы и подарить ей новые пути для саморазвития, но все попытки лишь вносили в симуляцию хаос. Множество статей в сети были перечитаны в попытке откопать годную мысль, но все было тщетно. Разве что кроме одной: кто-то попытался свести дискретный клеточный автомат к нечеткой логике в непрерывной среде, как бы скруглив границы клеток и проведя для подгонки правил множество сложных вычислений. На рендеринг нескольких десятков секунд видео, визуализирующего результат, у автора статьи ушло несколько часов работы компьютера, но оно того стоило — кадры крайне сильно напоминали съемку процесса деления клеток под микроскопом. Все это, конечно, прекрасно, но мне был нужен более производительный алгоритм. Тогда я начал задумываться над многомерным пространством, состоящим из кубических клеток мерности n. При этом измерения, в отличие от наших с вами трех, не были независимы друг от друга в плане передвижения в таком пространстве. Это позволяло сделать систему более шустрой, чем симуляцию непрерывной среды, оставляя при этом ряд возможностей, которые были реализованы автором зацепившей меня статьи. Кроме того, это открывало кучу других перспектив, которые мне было сложно даже представить своим жалким трехмерным мозгом. Страдала только визуализация — в каждый момент времени Я мог наблюдать развитие системы только в двух измерениях — в виде все тех же квадратиков на сетке. Неделя на формализацию, две недели на разработку, и вот, в самый ответственный момент все накрывается беспощадным «Segmentation fault». Нервно курю и отлаживаю...
Отношение автора к критике
Приветствую критику в любой форме, укажите все недостатки моих работ.
Права на все произведения, опубликованные на сайте, принадлежат авторам произведений. Администрация не несет ответственности за содержание работ.