Игры для программистовCore Wars. Учимся эмулировать!

Core Wars logoCore Wars! Эти два слова вызывают трепет. У программистов появляется легкая дрожь, волнение. Потому что на них накатываются воспоминания о счастливом юношестве.

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

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

На таких играх воспитывались хакеры. Люди, которые сейчас возглавляют крупные IT-компании, проектируют и разрабатывают сложнейшие проекты, преподают, творят и занимаются тем, что им действительно нравится!

Это отдельный мир. Со своими правилами, обычаями и сленгом. После этой игры, Colobot и Robocode вызывают легкую ухмылку.

У Википедии хорошо получилось описать смысл игры:

Программы размещаются в циклически замкнутом участке памяти (core), состоящей из 8000 ячеек и зацикленной в кольцо. Каждая команда занимает одну ячейку. Redcode-программы работают под управлением MARS (англ. Memory Array Redcode Simulator — Симулятор Массива Памяти Redcode). Программы загружаются по случайным адресам в памяти.

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

Интересно: Создание программ происходит на урезанном и неизвестном диалекте ассемблера. Разработчики даже придумали ему свое название: Redcode.

Вместить огромное количество информации по этой многогранной игре в одну статью достаточно сложно. Поэтому я разнесу материал на несколько частей, в каждой из которых рассмотрю отдельные моменты Core Wars.

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

А кто-то делает еще один точно такой же эмулятор, с таким же функционалом, но с более крутой иконкой...

Некоторые разработки уже навсегда заброшены. Другие, наоборот, иногда подают признаки жизни.

CoreWin

Первой программой, с которой мы познакомимся, будет CoreWin.

CoreWin

Разработчики уверяют нас, что перед нами полнофункциональный и потрясающий эмулятор Core Wars для Windows с GUI-интерфейсом. Он запуститься на любой 32-битной Windows. Суровые товарищи проверяли: на Windows 95 он исправно работает.

Corewin редактор

Интегрированная среда поддерживает все виды сражений, брейкпоинты, подсветку кода и невероятно огромное количество прочих IDE-штучек.

Corewin options

Итак, Вы сейчас должны находиться в одном из четырех состояний:

  • 1. Немедленно хотите скачать CoreWin — вам срочно на страницу загрузки!
  • 2. Хотите еще подробностей! — вам поможет онлайн-документация.
  • 3. Вас одолевает множество вопросов — FAQ вам!
  • 4. Вы в ужасе. Вам страшно. Вы не знаете что делать! — Спокойно. Глубоко вдохните. (Выдыхать нельзя) Ничего не скачивайте. Ждите следующей статьи, где мы рассмотрим примеры.

Corewin settings

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

Есть еще один приятный плюс: Скачав этот эмулятор Вам не понадобится ничего устанавливать. Просто запустите exe-файл и наслаждайтесь процессом.

Active Redcode Elaboration System

Active Redcode Elaboration System

A.R.E.S — это серьезный конкурент CoreWin. Перед нами полнофункциональная интегрированная среда разработки.

Ares Main

Включает в себя режим сражения(tournament mode), дебаггер, брейкпоинты, условия прерывания и много другой IDE-функциональность.

Ares warrior edit

Есть даже некий режим CPU-инспекции, но разработчик сам еще не понял что это.

ares_cpu_registers

A.R.E.S полностью совместим с официальным стандартом Core War ICWS'94. Автор утверждает, что это идеальный обучающий инструмент, который уже используется в школах и университетах по всему миру. Ну-ну...

Разработка абсолютно бесплатна. И вот еще что: если у Вас получится зарабатывать на ней деньги — автор просит рассказать ему как это Вам вообще удалось. ;-)

Ares Options

Вы используете Linux? Программа успешно запускается под Wine. Проверено.

Если Вы хотите более подробно узнать об этой программе — то Вам в документацию.

Или можете приступить непосредственно к скачиванию.

nMars

Core War MARS for .NET

nMars — очередной конкурент с блекджеком и девушками. Удобный IDE, и что немаловажно, написанный на .NET. Как это не обидно, но под Mono он не запускается.

Автор утверждает, что к проектированию и разработке программы он подошел очень грамотно. Все компоненты выделил в отдельные модули, разнес в отдельные блоки функциональность Парсера, Движка и Дебаггера.

nMars Engine

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

nMars main

Очень приятно, что разработчик решил распространять программу по лицензии LGPL. Исходный код полностью открыт.

Вы можете ознакомиться с скриншотами программы, с документацией и с новостями проекта.

Ну или сразу перейти на страницу скачивания.

pMARS

pMARS-эмулятор

Наверное, большинство читателей уже пошли создавать свой стартап IDE для Core Wars со своим уникальным функционалом. Но подождите! Ознакомьтесь еще с официальным тру-эмулятором Redcode-языка: pMars.

Он написан на чистом C. Исходные коды Вы можете легко скачать на официальном сайте.

Если же Вы относитесь к тем девственникам, которые еще не компилировали программу — Joonas Pihlaja специально для Вас предоставил готовые бинарные файлы.

С интерфейсом и юзабилити у pMars все совсем плохо. Нужно потратить некоторое время, чтобы понять что к чему. Передача параметров происходит через консоль.

pMars Concole

Недостатки:

  • Неудобный интерфейс
  • Отсутствие юзабили
  • Ужасный дизайн
  • Чувство, что Вы находитесь в другом тысячелетии

Преимущества:

  • Вы смотрите на всех этих GUI-шников с высоко поднятой головой.

RedCoder

RedCoder Mars Core

RedCoder. Здесь все сложно и неоднозначно. С одной стороны, шаг в эпоху оконных интерфейсов. С другой стороны — это, по сути, тот же pMars, только в windows-обертке.

Авторы утверждают, что перед нами графический эмулятор со встроенным мощным дебаггером. Написан на C++ с использованием wxWidgets.

Параметры передаются через командную строку, как и у pMARS.

Тем не менее, ребята уже начали работу над новой RedCoder 2. На сайт его еще не выложили, но приведенный единственный скриншот крайне настораживает:

Redcoder 2

Встроенные эмуляторы

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

Кстати! Если Вы разрабатываете бухгалтерский софт — встройте Core Wars в него. Пусть Марья Ивановна оттянется по полной!

exhaust разработал M. Joonas Pihlaja's. Легковесный эмулятор RedCode, разработанный для простого встраивания в приложения.

exhaust-ma разработал, опять же, M. Joonas Pihlaja's. Но с оптимизацией ему помогал Martin Ankerl.

exMARS представляет собой высокоуровневую абстракцию для pMARS`а на Ruby. Автор Martin Ankerl.

QMars — C++ эмулятор RedCode, созданный все тем же Martin`ом Ankerl. Парень не на шутку разошелся.

PyCorewar — да! И здесь Python! Это библиотека для эмуляции, дебаггинга и бенчмаркинга RedCode.

Если Вам приведенных разработок мало, то можете также ознакомится с fmars, XRK, CoreLife.

Не забудьте пройтись по музею эмуляторов RedCode.

Конец

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

Теперь можете приступать к моральной подготовке к следующей статье, где мы рассмотрим простейшие программы и попытаемся разобраться в этой потрясающей игре Core Wars.

А для затравки можете посмотреть на HelloWorld-программу на CoreWars. Да! Это возможно!

Если Вам нравятся мои статьи, то существует хак, позволяющий всегда узнавать о их появлении: подписаться на мой блог или на твиттер.


Есть мысли на этот счет:
AVE 30.05.2009 21:10 пишет:

Жду продолжения

And1ty 31.05.2009 09:00 пишет:

Заинтриговали.

Творите! Спасибо!

Алексей Копылов 05.10.2009 13:02 пишет:

Штука клевая, я когда-то, очень давно писал своих бойцов и даже как-то начинал писать интерпретатор. Недавно искал среду для iPhone, чтобы в метро коротать время, но не нашел...

    v673 05.10.2009 19:55 пишет:

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

      Алексей Копылов 06.10.2009 18:25 пишет:

      Все проще — я написал несколько программок под Corewars очень и очень давно (когда-то работал программистом и это дело мне нравилось), время же свободное есть только в метро, так что буду ждать интерпретатора под iPhone :)

Есть что сказать?
Ваше имя:
Ваш e-mail:
Ваш сайт:
Ваше мнение:




земляные работы в Донецке