Одно время активно писал на C++. Пока решение не вырисовывается, сидишь и тупо строишь “гомоморфные иерархии” , отражающие вселенную задачи. С++ требует заранее описывать каждый чих взаимодействия программных объектов. Как складывать яблоки с грушами? Как уберечься от влияния козла Бориса на ядерный реактор? Как уберечься от того, что жену и легавую зовут одинаково? Шлифовать подобные мелочи в объектно-ориентированных языках программирования можно бесконечно. Но рано или поздно, в этой толпе прекрасно без тебя чувствующих субъектов, ты понимаешь, кто из них будет работать над тем, что тебе надо. Как только понимаешь, как делать, быстренько сводишь концы с концами. Выкидываешь яблоки, оставляешь груши. Жену и легавую записываешь в один разряд. Реактор глушишь окончательно. Потом начинаешь вылизывать, что приводит к выкидыванию почти всех тщательно вылизанных сущностей…
Т.е. построение объектно-ориентированной модели мира пригодилось только для того, чтобы занять время, пока ты не поймешь, в чем действительно состоит твоя задача…
Тогда я стал искать, как описать задачу с пользой для размышлений над ее решением. И, для себя, я такое решение нашел. Нужно образно нарисовать взаимодействие частей проекта…
Например:
Можно даже текстом, хотя это сложнее. Например:
Сначала нарисовал игрока - человека в экзоскелетном скафандре. Нет, не потому, что дело происходит в космосе. Скорее, потому, что игрок, входя в игру, перестает быть человеком о двух руках и двух ногах и превращается в некое странное существо с набором политико-уголовных параметров, межпланетными органами чувств и живущее где-то в торгово-озабоченном космосе из шести планет. Так что у меня получилась страшненькая капсула с электронными индикаторами параметров на брюхе и жуткого вида манипуляторами.
Впрочем, на бок этому монстру пришлось сразу приторочить деревенского вида суму для расписок и заявок. Ведь, невзирая на наличие кучи табло с параметрами игрока, в игре используются прямо-таки средневековая система записи всякой скрытой и явной ерунды на бумажках, хранимых до удобного случая: может, пол-хода, а может - пол-игры. Еще средневековее выглядит табло-счеты для записи активов игрока: линейка ячеек 1-9, на которой сумма устанавливается жетонами “единиц”, “десятков” и “сотен”.
Само поле для игры сначала хотел изобразить чисто декоративным элементом, но потом понял, что оно - стена, отделяющая мир игроков от мира игровых машин. На этой пробковой стене достаточно случайно появляются приколотые булавками листочки-вводные, описывающие рыночную ситуацию.
Как же игрок обустраивает свой мир? Для этого он покупает “кубики” - космические корабли, склады, фабрики, агенты… Раскладывает их перед собой - своими культяпками-ингаустерами - как ему красивее, но позади каждого кубика прицеплен провод со штекером, который игрок втыкает в нужное место обстановки на пробковой стене. А некоторые кубики надо цеплять к другим кубикам.
За стеной расположены машины, управляющие игрой. Рулетка, арифмометр, доски объявлений, глаза и щупальца, какие-то коробки и шланги непонятного назначения… все, что пришло в голову. Сбоку присобачил алтарь-жертвенник для приема записок игроков. Очевидно, сверху пришлось зафигачить идола обратной связи, откуда бьют молнии, временно просветляющие игроков или добавляющие им сил-параметров.
Позади стены можно разглядеть приемник для перфокарт-сценариев…
Самое же неприятное, что компьютерные редакторы для создания текста вперемешку с рисунками практически не приспособлены. Конечно самые сложные из них это умеют, но ценой превращения программы практически в систему профессиональной верстки. Так что, доисторическая Windows-овкая “Картотека” кажется удобнее современных систем.