July 16th, 2015

Кубическое программирование. Пост 2, вариант решения.

Продолжение, начало тут.

А что, если подойти к самому построению блок-схем несколько иначе? Пусть это будет конструктор. Пусть пользователь выбирает блоки из заданного набора. Конечно, такой набор должен быть большим. Но я почему заговорил про кубики-то. Знаете, сколько этих самых кубиков в игре Minecraft? А если вместе с модами? Тысячи, дамы и господа! Между прочим, многие из них представляют из себя полноценные технические устройства, предназначенные для функционирования в виртуальном мире.

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

Как вы думаете, сложно ли играть в Minecraft? Я думаю, что не очень, потому что видел множество малолетних детей, которые успешно с этим справляются. С модификацией Industrial Craft, как раз и позволяющей сложные механизмы, процент детей несколько падает, но всё ещё остаётся подавляющим. Чтобы их совсем не было, это надо играть в ComputerCraft, например. Там реальное программирование на языке Lua, и там нет ни одного ребенка. Приходят, осматриваются по 10 минут и уходят навсегда. Сложно им там.

Кстати, в нашем конструкторе блок-схем тоже может быть режим для взрослых. И в этом режиме пользователь будет видеть голый код, который на самом деле представляет из себя элемент блок-схемы. Это будет некий объект, или даже (страшно подумать!) просто функция. И она будет делать ровно то, что написано у неё снаружи, когда пользователь имеет с ней дело в качестве элемента блок-схемы.

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

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

А отдельно от этого праздника простоты и эффективности надо собирать сообщество кодеров. Пилить проект на Гитхабе. Договариваться о правилах. Фигачить код. Править код. Короче, обычный opensource-проект. И я думаю, что это могло бы стать популярнее Minecraft'а. Потому что это тот же самый Minecraft, только ещё и полезных дел можно понаделать.

А вы что думаете?