Рисовать каракули, делать скетчи и всячески возиться с компьютером — это очень странное, но одновременно и великое удовольствие.

Когда семь лет назад я только-только начал постигать основы программирования, мне казалось, что все приобретенные навыки я буду использовать только для того, чтобы создавать разные полезные штуки: анализаторы данных, которые пригодятся мне на моем журналистском поприще или, например, веб-парсеры для автоматического сбора нужной мне информации.

Конечно же, я написал все эти важные и нужные прикладные программы! Было приятно разрабатывать приложения, которые решали настоящие, практические проблемы.

Но со временем я обнаружил, что наибольшее удовлетворение мне приносят куда более странные проекты, не имеющие никакого практического смысла.

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

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

В чем же для меня заключается очарование этих необычных поделок? Что за удовольствие создавать совершенно несерьёзное, бессмысленное приложение — код, который существует не для решения какой-нибудь реальной проблемы, а для того, чтобы получилось что-то вычурное, или глупое, или красивое?

Частично получение удовольствия зависит от самого факта использования компьютера для творческих задач. Я намеренно говорю «творчество», а не «искусство», отчасти потому, что не уверен в том, что создаваемые мной штуковины достаточно объемны и цельны, чтобы называться громким словом «искусство».

Впрочем, на свете определенно существуют выдающиеся творцы от мира вычислительной техники, и возясь со своими крохотными кодерскими поделками, я испытываю удовольствие, близкое к тому, что чувствуют программисты-маэстро, когда заставляют высокопроизводительные кремниевые процессоры, предназначенные для обработки сухих цифр, составления электронных таблиц или решения военно-промышленных задач, создать что-то красивое в визуальном плане. В этом есть что-то бунтарское!

Кроме того, в компьютерах есть своя эстетика, которую просто приятно ощущать и использовать. Компьютеры замечательно подходят для выполнения однотипных операций с филигранной точностью, чего не скажешь о людях. Возможность использовать эту фантастическую силу для художественных целей — это очень круто, почти как использовать спирограф — диковинный предмет, который помогает рисовать красивые узоры с нечеловеческой точностью, находясь при этом в руках ребенка.

Вдобавок ко всему, компьютеры также хороши в выполнении задач, завязанных на использование случайных чисел! Разумеется, речь идет только о псевдослучайных числах, но и этого вполне хватает, если от компьютера требуется сгенерировать что-то симпатичное или необычное. Мы, люди, очень плохо справляемся с задачами по рандому, поэтому иметь машину, которая может непрестанно удивлять вас своими странными решениями (разумеется, если это вы попросили у нее немного рандома), — это просто восхитительно.

Конечно же, люди развлекаются подобным образом далеко не первое десятилетие. Вера Молнар еще в ламповые 60-е годы прошлого века стала первопроходцем в использовании компьютеров для создания произведений искусства. В 70-х годах начинающие хакеры Массачусетского технологического института были очарованы так называемыми клеточными автоматами — вроде «Игры жизни» Конвея — поскольку казалось, что они объединяют компьютерную логику с невероятно органичной, непредсказуемой эволюцией цифровых форм жизни. А в наши дни существует огромное сообщество цифровых художников и даже специальные языки и фреймворки наподобие небезызвестного P5, предназначенные для создания всевозможных интерактивных и зачастую непрактичных штуковин.

Это подводит меня к моему очередному, последнему на данный момент вкладу в мир бесполезного программного обеспечения: знакомьтесь, это «Садовник».

На прошлой неделе, во время отпуска, мне в голову пришла отличная идея — генерировать случайные пиксельные цветы. Поначалу я собирался написать небольшой инструмент, который позволил бы расставлять цветы по сетке, а при каждом клике генерировался бы случайный вариант внешнего вида цветка. Предполагалось, что алгоритм будет выбирать одну из четырёх возможных форм внутренней части цветка, одну из семи возможных форм лепестков и один из нескольких десятков возможных сочетаний для каждого из них. Проведя нехитрые подсчеты в уме, я определил, что всего будет примерно 26 000 вариантов цветков.

Код для генерации цветов заработал достаточно быстро, и первые цветочки выглядели вот так …

Безусловно, самым интересным моментом оказалась псевдослучайность каждой генерации: невозможно знать наверняка, что именно получится при каждом нажатии на кнопку «посадить».

Однако затем я решил еще сильнее повысить градус случайности и понял, что хочу, чтобы программа сама сажала цветы. Поэтому я написал программу маленького «садовника» — это одинокий синий пиксель, который бродит по сетке и раз в 10 секунд или около того высаживает цветок. При этом он произвольно меняет направление движения, чтобы в посадке не было никакой особой закономерности.

В каком-то смысле я стремился сделать нечто настолько самостоятельное и неинтерактивное, чтобы оно напоминало дальнего родственника программы-скринсейвера. Смотреть на исполнение программы должно быть приятно (в идеале), но при этом сам наблюдатель никаких действий не предпринимает. Достаточно просто ... смотреть.

После целого вечера, проведенного за работой, я наконец-то заставил садовника функционировать. Кроме того, я сочинил коротенькую музыкальную композицию, которая постоянно проигрывается, пока садовник занимается своим делом.

Когда я только-только запустил программу, сад выглядел довольно скудно. А вот что с ним стало буквально через пять минут…

...спустя еще пять минут он стал выглядеть гораздо более оживленным…

.... Мы посидели еще немного …

... и еще немного …

... Спустя приблизительно 45 минут весь экран превратился в яркое, непонятное цветочное месиво, которое выглядело примерно так:

На этом этапе картинка как бы немного распадается; первоначальная концепция «сада» выдерживается лишь частично, потому что цветы накладываются друг на друга слишком часто — результат беспорядочной деятельности садовника, — и в них не остается ни капли их прежней «цветочности». Только несколько штук все еще стоят особняком настолько, что производят впечатление настоящих цветов. Остальные похожи на... пестрый цифровой шум?

Я до сих пор не могу сказать, зачем я это сделал. Я считаю, что наблюдение за садом странным образом успокаивает; я часто запускаю сад в отдельном окне браузера, затем занимаюсь своей обычной работой или переписываюсь с коллегами в других окошках, а сад в это время подглядывает за мной из-за угла. (На самом деле нужно, чтобы он был хотя бы частично виден; если его не видно вовсе, приложение как бы останавливается — музыка продолжает играть, но садовник уже ничего не сажает). Забавно было переключать каждые несколько минут окно и наблюдать за развитием сада, слыша при этом похожий на Minecraft'овский «хруст» высаживаемых цветов раз в десять секунд. Иногда я просто садился и смотрел, как садовник работает, по пять-десять минут. Это по-своему медитативно. Я думал о чём-то своем — о работе, об идеях для статей, — глядя на эту странную пиксельную форму жизни.

Правда, я также подозреваю, что многие люди сочтут садовника суперскучным. Он умеет делать совсем мало вещей. И сажает цветы он, правду говоря, очень медленно.

Но если проект вас заинтересовал, смотрите на здоровье! Он всегда доступен в сети.

Зачем я его куда-то выложил? Понятия не имею.

(О, точно! Проект размещен на Glitch, так что если вам захочется посмотреть код или сделать свой ремикс, действуйте — вот он, прямо перед вами!).

Комментарии (10)


  1. MentalBlood
    18.12.2022 20:44
    +5

    ИМХО в проектах/продуктах маленьких компаний тоже много творчества


    Дело не только в творчестве. От поломок "непрактичных" программ никто не пострадает — они же все равно ничего важного не делали


  1. zhka
    19.12.2022 02:30

    Мне кажется, что первопричина стремления создавать странные и (иногда) бесполезные программы в абсолютном ощущении того, что ты создаешь уникальное, неповторимое приложение.
    Сколько раз среднестатистический разработчик думает, что пишет очередной "велосипед", осознает, что в <programname> какая-то фича реализована лучше?
    А работая на примерно на третьей работе в одной и той же бизнес-сфере, уже начинаешь очень неплохо в сортах этих велосипедов разбираться.
    Немаловажен и тот факт, что программа, не решающая какую-то задачу, априори неподвержена критике (в т.ч. и со стороны автора). Ведь нельзя сказать,что она служит своей цели плохо или хорошо, если цель изначально не стояла (или была настолько абстрактной, что, даже никогда не была записана на бумаге).


  1. desolover
    19.12.2022 02:45

    Ничего не знаю, но скриншоты выглядят мило — ассоциации, так сказать..


  1. gruzoveek
    19.12.2022 07:44
    +1

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


  1. moroz69off
    19.12.2022 11:04

    Грибы уже были, теперь вот маки...
    Вам помогут, сейчас это лечится. Травами...

    Первый взгляд на заглавную картинку как раз и напомнил о "Жизнь" Конвея. Не хотите попробовать? Придать своему уютному садику признаки эволюции.


  1. Askalite
    19.12.2022 13:05

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


  1. Rikhmayer
    19.12.2022 13:23

    Когда работаешь с простыми графическими приложениями, мозг видит быстрый и понятный ему результат, выделяет дофаминку, что стимулирует работать ещё усерднее, результат опять в понятном для мозга виде на экране, мозг выделяет две дофаминки... Затягивает. Совсем не то же самое, что в случае с сухой надписью вроде "автотесты успешно пройдены".


  1. Mishootk
    19.12.2022 16:43
    +3

    У меня бесполезняшка была такой. Сгенерирован двумерный случайный ландшафт и раскрашен по уровням от воды до заснеженных гор. Вобщем географическая карта. Периодически на этой карте происходили случайные терраформирования (перегенерировался случайный участок). В зависимости от "климатического пояса" там росла трава. Сверху бегали зверушки (размером в пиксель), когда было много травки, они размножались, когда мало, дохли (типа клеточного автомата). Травку кушали, травка восстанавливалась. Капельку генетики, мутаций. Сидел втыкал на развитие и угасание цивилизаций. Все еще во времена DOS, никаких библиотек, творец в своем маленьком мирке. Было и увлекательно программировать и приятно глазу наблюдать.


    1. zugzug
      20.12.2022 08:00

      Это круто. Кажется вы создали что-то типа версии генерации мира в Minecraft. Тут на Хабре статья, возможно заинтересует вас: https://habr.com/ru/post/673268/


      1. Mishootk
        20.12.2022 11:00

        Да, шум Перлинга как основа, а дальше по цветам распределение характеристик. Хотя и просто разукрашивание уже завораживало. Этим меня и зацепило. Умных слов я тогда не знал, тупо пытался сгенерировать в одной из первых своих игрушек двумерную землю как в Scorched Earth (тогда в школе рубились в нее еще на 286). Сначала получался кусочно-линейный ландшафт, путем экспериментов подбирал коэффициенты чтобы получалось нечто плавное. А потом вдруг резко осознал, что все то же самое можно вывести из режима платформера в двумерную карту, и дальше понеслось. Только-только у школьников по домам стали появляться SVGA адаптеры тянущие 640x480x256, мы вооружившись бумажными книжками и ассемблером заставляли Turbo Pascal выжимать максимум из наших компов...