Мысли
Этот странный придуманный мир
Руслан Богатырев
(Продолжение. Начало в № 30)
3. Абстракция и интуиция
Закончив экскурс по различным абстрактным моделям, давайте немного переведем дух и продолжим наши философские рассуждения. Материалисты и идеалисты, атеисты и верующие – все они принимают вполне определенную модель мира. Причем подавляющее большинство людей считает, что выбранная (принятая) ими модель самая что ни на есть верная. Но разве бывают модели (теории) правильные и неправильные? Всякая модель имеет право на существование, однако ее ценность определяется применимостью и полезностью для решения определенного круга жизненных задач. Геометрия Евклида много веков казалась чем-то вечным, незыблемым, но появился Лобачевский и, чуть-чуть изменив аксиоматику, перевернул наши представления. И все же геометрия Евклида удобна, мы продолжаем ею пользоваться и не говорим, что она неправильная.
Зачем люди создают модели? Чтобы понять прошлое, осознать настоящее и предвидеть будущее. Модель может быть отражением чего-то существующего, а может существовать сама по себе. Разве композитор, художник, поэт не воплощают в своем творчестве то, чему они не в силах найти реального объяснения? Обратимся к философии. Могут ли мысли существовать помимо выражаемого в образах чувственного опыта? Аристотель и Кант считали, что это невозможно. Немецкий философ Эдмунд Гуссерль и философы вюрцбургской школы смогли убедительно показать, что мышление есть сфера вполне самостоятельной деятельности.
Модель совсем не обязательно должна быть математической. Но она имеет дело с абстракциями, которые, с одной стороны, являются некоторым упрощением (или идеализацией) действительности, а с другой – могут существовать и сами по себе. Полезность "чистой" абстракции состоит в том, что она служит промежуточным звеном для "реальных" абстракций.
Модель можно рассматривать как своего рода каркас, предназначенный для прикрепления самых разных абстракций, – как некую проволочную основу для удержания глины скульптора. Математические абстракции очень важны для автоматического (независимо от волевых усилий человека) генерирования новых знаний. В то же время математика должна заботиться не о согласовании с действительностью, а о непротиворечивости с самое собой. Ведь это иной, придуманный мир.
Вы никогда не задумывались над тем, почему, скажем, мультфильмы оказывают более глубокое воздействие на людей именно в том случае, когда исполняются с намеренным искажением действительности (ближе к рисунку, чем к фотографии)? Почему профессиональные фотографы предпочитают работать в мире черно-белой, а не цветной фотографии? На мой взгляд, просто потому, что все это – абстракции реального мира, уже готовые для активного"потребления" разумом. Чем сильнее мы огрубляем действительность, искажая ее до неузнаваемости, тем более мощным оружием созидания мы обладаем. Чем больше ограничений мы накладываем на ту или иную абстракцию, тем больше у нас возможностей для ее анализа. Абстракция позволяет отрешиться от мелочей и сконцентрироваться на главном. Другими словами, возникает парадокс: чем больше ограничений, тем больше и творческой свободы!
Итак, абстракции играют роль инструмента. Но где его взять и как его правильнее применить? Это может подсказать человеческая интуиция. Да-да, именно интуиция, которая играет в жизни человека куда большую роль, чем абстрагирование. Интуиция до сих пор остается белым пятном в изучении работы человеческого интеллекта.
Словари определяют ее как "способность к непосредственному постижению истины без логического обоснования". Интуиция человека охватывает его опыт, знания и память. Вспомните, мы принимаем свои решения чаще всего не задумываясь, интуитивно. Даже представить страшно, что было бы, если б каждый свой шаг и поступок человек был вынужден просчитывать. Многое делается "на автомате", без объяснения. Вспомните пресловутую "женскую интуицию". Термин этот наверняка придумали мужчины, потому что чаще всего они просто не в силах найти "разумное"объяснение тем или иным решениям представительниц прекрасного пола. Но что того удивительнее, сами женщины тоже не могут найти какого-нибудь обоснования принятым решениям. И при этом в большинстве жизненных ситуаций женская интуиция редко подводит. Если разложить принятое решение на составляющие, то подчас всплывает такая сложная цепочка логических зависимостей, которую быстро просчитать практически невозможно. Но чаще такой цепочки вообще не видно! Вот вам еще один феномен человеческого интеллекта.
Наука и искусство – это плоды мира придуманного. Их создал человеческий гений, и без них мы уже не можем представить свою жизнь. Наука и искусство, рациональное и иррациональное, абстракция и интуиция, – они идут рука об руку и органически дополняют друг друга.
Возьмем науку. Кто скажет, что наука опирается только на абстрактное мышление и полностью исключает творческое начало? Во всяком открытии есть элемент иррациональности, творческой интуиции. Вспомним слова Альберта Эйнштейна: он говорил о "поиске таких самых универсальных законов, из которых чисто дедуктивно можно вывести некую картину мира". "Нет логического пути, ведущего к таким законам, – утверждал Эйнштейн. – К ним можно прийти лишь с помощью интуиции". Как и все в нашем мире, интуиция не возникает из ничего. Она является плодом "превентивных вычислений", идущих на уровне подсознания. Причем эти "вычисления" (я не зря здесь их взял в кавычки) не ведутся в замкнутом мирке, а "подпитываются" извне соответствующей информацией.
Луи Пастер не напрасно говорил: "Случайность помогает подготовленному уму". Взять хотя бы шахматы. Многие ведущие гроссмейстеры мира просто "видят" хорошие ходы, абсолютно ничего не высчитывая. При анализе сложной позиции на доске (и не только в блиц-партиях) интуиция является палочкой-выручалочкой, ключиком к разгадке. Умение выделять существенное и отбрасывать ненужные детали – это и есть интуиция. Как это ни парадоксально, в результате интуитивного выбора мы создаем новую абстракцию.
Здесь мне хотелось бы обратить внимание читателя на два крупнейших достижения научной мысли XX века – на, два, казалось бы, разнонаправленных открытия, которые тем не менее образуют неразрывное единство. Речь идет о принципиальной ограниченности любого формального знания (теорема Курта Геделя о неполноте исчисления) и неограниченности возможных форм поведения и развития искусственных устройств (автоматов, роботов, компьютеров, сетей и т.п.).
Раз уж мы затронули интуицию, поговорим о ней и применительно к программированию. Мне вспоминается интересный доклад десятилетней давности, с которым выступил известный ученый Питер Наур. Он говорил о роли интуиции в разработке программного обеспечения. Главный вывод, который сделал этот специалист, заключается в том, что разработка программного обеспечения во всех ее фазах (независимо от используемых формальных методов и приемов) всегда будет строиться на интуиции! Но интуиции не принадлежит право принятия окончательного решения. Она играет лишь роль суфлера, и насколько вы будете к ней прислушиваться, зависит только от вас.
В исследовательском центре фирмы Xerox в Пало-Альто (Xerox Palo-Alto Research Center), в том самом, откуда вышли язык Smalltalk и обновленная концепция объектно-ориентированного программирования, совсем недавно группой под руководством Грегора Кишцалеса (Gregor Kiczales) был предложен новый подход к программированию, который получил название аспектно-ориентированное программирование (Aspect-Oriented Programming). Код и данные программисты уже привыкли "упаковывать" в готовые строительные блоки – процедуры, модули, объекты, классы. Все это замечательно, но при этом внутри каждого блока заключается и алгоритм, и управление точностью вычислений, и распределение локальных ресурсов, и логика взаимодействия с другими блоками, и многое другое. Неизбежно возникают проблемы переноса наработанных алгоритмов на другие языки программирования, позволяющие обеспечить эффективную "привязку" системы к соответствующему оборудованию. В аспектно-ориентированном программировании (АОП) программист при решении своей задачи работает как бы в разных абстрактных языках, каждый из которых хорош для своего класса задач. Затем все это отображается на реальные языки (или на один реальный язык), причем сопровождение системы по-прежнему остается на уровне абстрактных языков. Вот эти слои на абстрактных (или, если хотите, на проблемно-ориентированных) языках и называют аспектами.
Открываются новые горизонты для объединения огромного множества самых разных языков программирования, но уже не по принципу доступности библиотек, а на основе соответствия языка решаемой задаче. С АОП тесно связаны и другие работы в Xerox PARC – в частности, уже реализованный для некоторых существующих языков (С, C++, Modula-3, Python, Common Lisp) механизм ILL) (Inter-Language Unification). По сути своей это не язык, а распределенная среда, в которую на равноправной основе погружаются реальные языки программирования. С идеей аспектно-ориентированного программирования в какой-то степени связаны и работы исследовательского центра Microsoft (Microsoft Research) no интенциональному программированию (Intentional Programming). В них также прослеживается желание вычленить в реализации идей наиболее существенные составляющие (intention – замысел, нацеленность). Однако этот подход, пожалуй, ближе к работам по генетическому программированию, о которых речь пойдет чуть ниже.
4. Программирование и искусство
В свое время, еще в институтские годы, на меня произвели большое впечатление слова профессора Дональда Кнута из Стэнфордского университета, который два десятка лет назад при вручении ему премии Тьюринга выступил со своей знаменитой речью "Программирование как искусство". В ней он вдохновенно говорил об эстетических ценностях в программировании. Программирование, на его взгляд, вряд ли когда-нибудь удостоится эпитета "нежное искусство". И в то же время Кнут отмечал: "Бывают ситуации, когда мы призваны не сочинять, а исполнять симфонию; но исполнение прекрасного музыкального произведения – истинное наслаждение, несмотря на то, что наша свобода ограничена предписаниями композитора. Так и программист иногда выступает в роли не столько художника, сколько ремесленника, но и работа ремесленника может доставлять радость, если он имеет дело с хорошими инструментами и материалами".
Итак, искусство может "облагораживать" программирование. А можно ли программировать само искусство? Странный вопрос. Конечно, нет. Хотя постойте... Взгляните на следующую иллюстрацию.
"Что это такое?" – спросите вы. Самый что ни на есть обычный фрактал (в данном случае объемный), построенный на основе множества Мандельброта. Получен он на компьютере. Подобные работы стали возможны благодаря созданию в 1970-х годах фрактальной геометрии, отцом которой заслуженно считается профессор Гарвардского университета Бенуа Мандельброт. Именно Мандельброт и придумал термин "фрактал" (от латинского "fractus" – дробленый). Фрактал – это фрагментированная геометрическая форма, которая не обладает свойством непрерывности. Если взять какой-либо фрагмент такой структуры, он будет походить на уменьшенную копию исходного целого. Фракталы, как правило, самоподобны, их необычные свойства не зависят от масштаба. Фракталы окружают нас повсюду: падающая снежинка, причудливый морозный узор на стекле, сверкающая молния, прожилки опавшего листа. Идея фракталов давно витала в воздухе. В начале 1950-х годов австрийский математик Ф.Хундертвассер написал весьма эмоциональные строки: "Я понял, что прямая линия ведет человечество к упадку. Тирания прямой стала абсолютной. Прямая линия – это нечто трусливое, прочерченное по линейке, без эмоций и размышлений; это линия, не существующая в природе. И на этом насквозь прогнившем фундаменте построена наша обреченная цивилизация!"

Фрактальная геометрия Мандельброта бросила еще один вызов геометрии Евклида. Фракталы – это множества дробной размерности (не одномерные, не двумерные); это нечто промежуточное между точкой и линией, линией и поверхностью, поверхностью и телом. Множество Мандельброта (один из примеров фракталов) на плоскости математически определяется очень просто – это множество всех таких комплексных "с", при которых итерационная последовательность z -> z2 + с (начиная с z = О, с = х + iy) остается ограниченной, не уходя на бесконечность. При графической интерпретации цвет точки на плоскости (х,у) может определяться, скажем, номером итерации. Что в результате может получиться, можно увидеть на картинке с изображением фрактала Мандельброта. Здесь приводятся и другие иллюстрации, также полученные с помощью фракталов. Фракталы – это не просто математические абстракции, которые в силу своей красоты и изящества завораживают многих людей, причем даже тех, кто весьма далек от науки. Они дают качественно новое представление об окружающей нас природе. Это очень мощный инструмент для изучения хаоса. И в них, как в капельке росы, отражается наш реальный и придуманный мир – мир самоподобия.

От изобразительного искусства обратимся теперь к музыке. Здесь тоже можно найти немало интересных задач. Возьмем 8 нот, образующих одну октаву, и подсчитаем, сколько существует возможных вариантов мелодий, состоящих всего лишь из 10 нот. Их около 1 миллиарда, или 8Ш. Мы не учитывали вариации ритмов и разные длительности. Но даже это число впечатляет. Как же теперь выбрать из всего этого множества мелодий "благозвучные"?
В общем случае этого добиться непросто. Но если выделить вполне определенный стиль и обеспечивать вариации в довольно жестких рамках, то задача вполне разрешимая. Построением генераторов мелодий люди занимались давно. Еще в 1650 году увидел свет трактат немецкого иезуита Афанасиуса Кирхера "Универсальная музургия, или великое искусство созвучий и диссонансов". Описанная автором механическая машина ("чудесная музарифмика") была построена в 1670 году. Она создавала полифонию путем относительного перемещения столбцов и считывания различных перестановок и сочетаний по строкам. В 1779 году австрийский композитор Максимилиан Штадлер выпустил наборы таблиц тактов для сочинения менуэтов с помощью игральных костей. Но самая известная работа – "Музыкальная игра в кости", – объяснявшая, как с помощью двух игральных костей сочинять сколько угодно немецких вальсов, "вовсе не зная музыки", была впервые опубликована в 1792 году, – через год после смерти Моцарта, которому и приписывалось авторство этого сочинения.
К чему такая длинная историческая преамбула? Дело в том, что ныне существует большая потребность в подобных решениях. Когда создается какое-нибудь мультимедиа-приложение, разработчики часто ломают голову над проблемой фоновой музыки. Такая музыка должна по возможности варьироваться, к тому же есть немало проблем с авторскими правами и объемами памяти для хранения мелодий. Выход из этой ситуации видится прежде всего в использовании различных генераторов мелодий. Кстати, те же проблемы фоновой музыки скоро во весь рост встанут и перед распределенными Java-приложениями. Куда выгоднее генерировать музыку на лету, чем подкачивать ее через сеть.
Но вернемся к нашему рассказу. Система Моцарта состоит из набора коротких тактов, пронумерованных числами от 1 до 176. Две игральные кости бросаются 16 раз. С помощью таблицы, в каждом из S столбцов которой перечислено по 11 номеров, первые 8 бросаний определяют первые 8 тактов вальса. Вторая таблица используется для 8 последующих бросаний, и найденные с ее помощью такты завершают вальс из 16 тактов. Карты составлены с таким расчетом, что вальс начинается с основного тона, или основной ноты, затем модулирует к доминанте и в заключение возвращается к основной ноте. Так как все такты, перечисленные в 8 столбцах каждой карты, имеют много общего, 11 вариантов выбора (11 сумм очков от 2 до 12, выпадающих при одновременном бросании двух игральных костей) существуют только для 14 тактов. Это позволяет системе порождать 1114 вальсов – созданных в отчетливо различимой моцартовской манере!
В 1940 году Дж. Шиллингер, математик из Колумбийского университета, разработал математическую систему музыкальной композиции. Утверждают, что Джордж Гершвин, работая над оперой "Порги и Бесс", пользовался системой Шиллингера.
Первая коммерческая запись вальсов, полученных по системе Моцарта, была сделана шотландским математиком Томасом О'Берном. И рандомизация, и исполнение мелодий были поручены экспериментальному компьютеру Solidak, построенному в начале 1960-х годов в Глазго. О'Берн запрограммировал его так, что он исполнял пьесы в тембре кларнета. В1967 году производитель компьютера фирма Burr & Strand выпустила долгоиграющую запись избранных вальсов и контрдансов.
Из последних работ в этой области можно отметить использование фрактальной геометрии и так называемых генетических алгоритмов, о которых мы поговорим чуть позже.
Хотелось бы добавить, что принцип автоматического сочинения мелодий во многом опирается (по крайней мере, в системе Шиллингера) на идею игрушки, знакомой нам с раннего детства – на самый обычный калейдоскоп.

5. Мир клеточных автоматов
Калейдоскоп... Простейшая и завораживающая модель цвета и формы. Ограниченный мир с бесчисленным множеством вариаций. Кто из нас не удивлялся, глядя на эти изумительные узоры. Детское любопытство столь велико, что редко кому удавалось удержать себя от соблазна выяснить, что же там внутри этой раскрашенной бумажной трубочки. Каково же было наше разочарование, когда, разломав футляр, мы обнаруживали там лишь зеркало да грубые осколки обычного цветного стекла. Клеточные автоматы (cellular automata) устроены столь же просто, как и калейдоскоп. За несколько десятков лет своего развития они смогли настолько завоевать умы и сердца ученых, что послужили основой новому направлению научных исследований, которое получило звучное название "искусственная жизнь" (Artificial Life). Так что же такое клеточный автомат? Возьмите карандаш и обычный тетрадный листок. Теперь произвольным образом в разных клетках поставим крестики. Это и есть начальное состояние нашего клеточного автомата. Обратите внимание, что вокруг каждой клетки находится ровно 8 других клеток (им иногда для удобства дают имена по названиям сторон света: север, юг, запад, восток и т. д.). Возьмем новый, чистый листок и тоже начнем проставлять там крестики, но уже не как попало, а в строгом соответствии с тремя правилами: 1) Если вокруг выбранной нами клетки больше трех или меньше двух соседей, то такая клетка "погибает", и на новом листке она остается пустой.

2) Если число соседей в точности равно трем, то на новом листке "рождается" новая клетка (проставляем крестик).
3) Если число соседей равно двум и в клетке был проставлен крестик, то на новом листке мы также ставим крестик.
Эти три закона были сформулированы Джоном Конвеем и определили игру под названием "Жизнь" ("Life"). Если мы реализуем эти правила на компьютере, то на экране перед нами предстанет картина эволюции "живых" клеток. Важно, что развитие в клеточных автоматах идет только на основе локальной информации (соседи) и строго по тактам (поколениям).
Игра "Жизнь" представляет собой частный случай клеточного автомата. Здесь он работает в двумерном пространстве (2D), с радиусом 1 (1R – рассматриваются только соседи на расстоянии 1 клетки), с числом состояний клетки, равным 2 (2S – пустая или с крестиком). Да и глубина памяти (предыдущие состояния) в точности равна 1 (1М -мы рассматривали состояние только одного предшествующего поколения). Клеточные автоматы, оказывается, могут быть даже одномерными (1D). Простейшим клеточным автоматом называется автомат со следующими характеристиками: 1D, 1R, 2S, 1М. Состояние каждой клетки здесь зависит от ее предыдущего состояния и состояния двух ее соседей. Рассмотрим два разных правила:
1)010-> 1 (иначе 0)
2)001, 100, 010 -> 1 (иначе 0)
На рисунках вы видите результаты работы этих двух разных автоматов. Здесь каждое поколение представляется новой строкой точек, самая верхняя строка – начальное состояние.
Клеточные автоматы имеют свою историю. Еще в пятидесятых годах ими стал занимать Джон фон Нейман, создавший так называемый универсальный конструктор (Universal Constructor). Этот конструктор представляет собой автомат, который способен выполнять следующие действия.
1) Считывать с ленты описание произвольного набора неподвижных ячеек (клеток).
2) Вырабатывать возбуждения в пустых ячейках таким образом, чтобы можно было построить данный набор неподвижных ячеек.
3) Активировать этот набор ячеек с помощью начального возбуждения.
Джон фон Нейман стремился получить такой автомат, который был бы эквивалентен машине Тьюринга. При этом основное внимание он уделял проблеме самовоспроизводства (self-reproduction). В клеточном автомате фон Неймана самовоспроизводство достигалось за счет предоставления самому универсальному конструктору его описания и возможности копировать предоставленное описание. В 1966 году фон Нейман издал свой труд, который назывался "Теория самовоспроизводящихся автоматов".
Немалый вклад в теорию клеточных автоматов внес Стефен Вольфрам – тот самый ученый, который стал главным вдохновителем ныне хорошо известной компьютерной системы Mathe-matica. Он проделал немалую работу по классификации клеточных автоматов и по сей день уделяет им большое внимание.

Какая же польза от клеточных автоматов? Подумаешь, какие-то клеточки, крестики. Но не все так примитивно, как выглядит на первый взгляд. С помощью клеточных автоматов можно восстанавливать частично поврежденные или даже почти полностью разрушенные фотографии (около 10 лет назад мне довелось видеть специальную плату для PC, – которая была, кстати, разработана небольшим коллективом из нашей страны – позволявшую решать эту задачу). Клеточные автоматы весьма интенсивно стали использоваться в области криптографии для получения новых алгоритмов шифрования информации. Автоматы задействованы в некоторых географических информационных системах (ГИС). Поведение разных социальных групп также может замечательно описываться теорией клеточных автоматов за счет присущего им параллелизма. Ныне ведутся различные работы в области моделирования поведения муравьев и пчел (о людях я уже и не говорю). Большую роль клеточные автоматы играют в экологическом моделировании (самый простой пример – лесные пожары). В области биологии они ныне тоже взяты на вооружение (скажем, развитие планктона великолепно представляется с помощью этой абстракции). Немало работ посвящено использованию клеточных автоматов в описании химических и физических процессов. Обратите внимание, что практически везде используются две важнейшие особенности клеточных автоматов: локальные изменения, приводящие к глобальным последствиям, и свойственный этим автоматам параллелизм.
В предыдущем разделе мы обращались к фазным попыткам программировать искусство. Клеточные автоматы – очень интересный инструмент для соответствующих работ в области музыки, скульптуры и живописи. Читатель сам может вообразить, что получится в случае двумерного и даже трехмерного автомата с 256 состояниями (цветами) клеток. Но как говорится, лучше один раз увидеть, так что просто взгляните на соответствующие цветные иллюстрации.
На последней иллюстрации слева вы видите красивую раковину морского моллюска; справа – она же, но уже сгенерированная с помощью клеточного автомата.
Я познакомился с клеточными автоматами еще в студенческие годы, и мне довелось изучить самые разные работы в этой области. Наиболее яркой и доступной работой, которую хочется порекомендовать читателю, явилась книга двух американских ученых из Массачусетского технологического института Тома Тоффоли и Нормана Марголуса, которая в 1990 году вышла в переводе на русский язык в издательстве "Мир". Попробуйте ее разыскать. Для анализа клеточных автоматов авторы этой книги использовали язык Forth (очень простой стековый язык, допускающий реализацию крайне компактных и эффективных программ). В книге они рассказывают о работе над специальной машиной САМ (Cellular Automata Machine). 0 том, в каком состоянии ныне находятся работы над этой тематикой в Лаборатории компьютерных наук (LCS, MIT Laboratory for Computer Science), речь пойдет в следующем разделе статьи.
6. Искусственная жизнь
Виртуальная реальность (virtual reality)... Этот термин столь хорошо нам знаком, что теперь вряд ли кого можно удивить специальными очками, шлемами, тренажерами и другими устройствами, входящими в состав так называемых VR-имитаторов, цель которых, в общем-то, одна – воздействуя на разные органы чувств (прежде всего на зрение), создать у человека иллюзию реальности происходящего. Кстати, наркотики в какой-то степени можно рассматривать как VR-имитаторы, но уже воздействующие не просто на эрение, а на всю нервную систему человека. При работе с VR-имитаторами человек думает, что это он хозяин, что именно он и воздействует на окружающий мир. В то время как все обстоит совершенно наоборот.


Ahfe-имитаторы, получившие свое название от термина "искусственная жизнь" (Artificial Life), идут от обратного: человек с их помощью сам творит "несуществующую" жизнь. Надеюсь, я вас вконец не запутаю, если скажу, что здесь вполне подходит обратный термин – "реальная виртуальность". Искусственная жизнь – это уже не искусственный интеллект. Задача ставится иная и, на первый взгляд, куда более скромная. Как мы знаем, не все, что является живым, обладает разумом. Главная цель искусственной жизни – воссоздать "жизнь" в иной среде, воображаемой, где "суть жизни" отделена от деталей ее реализации.
В области искусственной жизни уже сформировалось несколько направлений исследований. Это и нейронные сети, о которых нужно рассказывать особо и обстоятельно, и уже известные нам клеточные автоматы, и автономные (интеллектуальные) агенты, и генетическое программирование.


Хотелось бы сказать еще несколько слов о машине клеточных автоматов, которая называется САМ-8. Она разработана в рамках проекта ARPA в Лаборатории компьютерных наук Массачусетского технологического института (MIT LCS) и представляет собой компьютерную архитектуру, построенную на клеточных автоматах. И в то же время – это параллельная масштабируемая архитектура для высокоскоростного моделирования пространственных систем средствами клеточных автоматов. Вычислительный комплекс представлен на фотографии. Он состоит из рабочей станции Sun, на которой под управлением операционной системы SunOS функционирует специальная среда программирования. Эта среда реализована в рамках коммерческого интерпретатора языка Forth для SunOS. САМ-8 представляет собой отдельный наращиваемый аппаратный модуль, в который встроены специально разработанные кристаллы STEP и который подключается к рабочей станции Sun через интерфейсную плату с шиной SBus. Для низкоуровневого управления модулями САМ-8 разработана библиотека Си-функций, что позволяет для программного подключения использовать различные интерпретаторы головного компьютера.
Продолжение следует