Парад исполнителей biarmicus's blog / 24.04.2012 Езда на машине по GPS навигатору наводит на разные мысли. Например, невозможно отделаться от ощущения, что ты не просто едешь, а выполняешь некую миссию – квест, которая была тебе кем-то задана. И тебе надо не просто доехать, а пройти те точки маршрута, которые были для тебя выбраны. Причем то, почему этот маршрут должен быть именно таким, а не каким-нибудь другим, решаешь не ты, а некто иной – тот, кому гораздо лучше известны мотивы и резоны, который видит твою ситуацию не через стекла машины, а как бы сверху – и анализирует данные, получаемые со спутников, сопоставляет их с интерактивными картами и говорит тебе – «через 200 метров поверните направо» - и ты поворачиваешь, но не потому, что знаешь, что там будет, через 200 метров, а потому, что понимаешь, что ты только поворачиваешь руль и жмешь на педали, а настоящая панель управления – у того, кто говорит, куда ехать. В какой-то момент начинает казаться, что роли поменялись. Последние сорок лет, что программирование входило в нашу жизнь, мы все время оттачивали наше мастерство управления объектами. И то, что программирование из весьма замкнутой, доступной весьма узкому кругу специальным образом обученных и нетривиальным образом выглядящих людей деятельности, превратилось в занятие, доступное даже шестилетним детям – очевидное свидетельство этого прогресса. Совершенно точно известна дата и событие, которые к этому привели – в 1967 году американский математик и психолог Сеймур Пейперт создал в лаборатории MIT управляемого с помощью компьютера робота, чем-то напоминавшего ползавшую по полу черепаху. То, что делал Пейперт, было направлено прежде всего на освоение компьютера, как инструмента мышления. Робот Черепаха – побочный продукт этого процесса – стал основателем целой династии совершенно удивительных объектов – исполнителей. Программирование в том смысле, в каком его понимал создатель ЭВМ фон Нейман, ориентировано прежде всего на разработку некоей выполняемой процедуры. Это безукоризненно с точки зрения соответствия этого процесса архитектуре ЭВМ, но именно это делает процесс программирования таким непонятным для большинства нормальных людей. Ведь для того, чтобы научиться программировать, нужно написать хотя бы одну программу. Чтобы написать ее до конца без ошибок, надо владеть, как минимум, синтаксисом программы. Ошибки в таком непростом деле, как освоение синтаксиса языка программирования – неизбежны. Получается замкнутый круг, выпутаться из которого могут только очень немногие люди, которые и становятся небритыми программистами в драных свитерах (за всю свою жизнь я лишь один раз видел программистку в вечернем платье и с макияжем – это было лет пять назад в нижегородском офисе Intel). Предложенный Пейпертом путь, при котором, кроме программы у нас есть еще и исполнитель этой программы, оказывается очень продуктивным, прежде всего, с точки зрения освоения логики программирования. Мы создаем (или же берем в готовом виде) маленькие кусочки программ и смотрим, как наш исполнитель реагирует на эти кусочки. Если что-то не так – ремонтируем кусочек. Если все так – движемся дальше. В 1970 году состоялось «пересаживание» робота с пола на монитор компьютера и программируемая черепаха приняла вид мерцающего треугольника - примерно вот такого. Именно в таком виде черепаха стала «лицом с обложки» языка программирования Logo.Черепаха-треугольник могла не только двигаться, но и тащить за собой «перо» оставляя замысловатые следы. Считается, что благодаря этой черепашьей способности, дети, программировавшие на Logo в семидесятые годы, узнали о фракталах значительно раньше, чем это сделали профессиональные математики.«Один черепах – в поле не воин» - видимо, таким лозунгом руководствовался выходец из медиалаборатории MIT Ури Виленский, создавая язык Netlogo, в котором одиноко бродящие черепахи уступили место на тучных пастбищах целым стадам носящихся туда-сюда черепашек, открывая, таким образом путь к мультиагентному моделированию. В рамках этого направления стало возможным не только чертить забавные фракталы, но и моделировать вполне реальные экологические, химические и социальные процессы. К слову, оставшееся по наследству от Logo название исполнителя «черепаха» в Netlogo является уже чистой метафорой – понятно, что толпу офисных работников удобнее изображать в виде пляшущих человечков, а не ориентированных мерцающих треугольников. Несколько в другую сторону пошел язык программирования Scratch. Мало того, что он стал полностью визуальным (процесс программирования в нем гораздо более напоминает складывание пазлов, чем написание каких-либо кодов), так еще исполнителя в нем перестали звать черепахой. Вполне в традициях современного ребрендинга исполнитель по умолчанию приобрел вид кота, так еще и звать его стали просто «призраком», намекая на то, что он может принимать любой вид, который захочет придать ему создатель.Где-то на стыке между логовскими черепахами и скретчевыми котами находятся исполнители из еще одного современного языка визуального программирования Starlogo TNG, предназначенного для создания трехмерных игровых миров. Библиотека спрайтов Старлого весьма обширна – при желании весь мир можно населить клонами Гомера Симпсона. Справедливости ради надо сказать, что на отечественной ниве тоже взрастают свои исполнители. Пейпертовская идея робота, пересаженного на экран компьютера, оказалась весьма востребованной в языке программирования Кумир, разработанном в середине 1980-х годов. Просто виртуального робота без особых изысков так и зовут – Робот. Зато робота, который умеет опускать перо и оставлять с его помощью след – уже изысканно называют Чертежником. Как и положено патриотам, Робот и Чертежник понимают только команды на русском языке, зато сам продукт рекомендован к использованию Министерством образования.Несмотря на такую обширную историю виртуальных исполнителей, и у самих разработчиков, и у пользователей не исчезает ностальгия по тем временам, когда черепаха была не виртуальной – когда ее можно было погладить рукой или поползать за ней следом. Именно таким путем идут создатели программных сред для роботов Lego Mindstorms. Их исполнители – вполне материальны, хотя и небесплатны. Ну и совсем уж интересный сюжет возникает с разработкой исполнителей для мобильных андроидных устройств – ведь в каком-то смысле, создавая программы для своего телефона, который всегда с нами, мы программируем и свое собственное поведение – то есть сами становимся Демиургами. Scratch Starlogo lego mindstorms инструмент исполнитель моделирование мультиагентное мышление программирование