Копия для печати
Pixilang. В простоте - сила!
Языков программирования и
отдельных скриптов сейчас
достаточно много, но, по существу, в
рамках стандартных операций все
они довольно схожи, отличаются
только синтаксисом. Впрочем, у
каждого есть своя отдельная
область применения и
предназначения. И каждый язык или
скрипт создается только в силу
необходимости, под какие-нибудь
конкретные и насущные задачи.
Для тех, кто впервые столкнется с
Pixilang, все изначально покажется
интересной забавой. Некоторые
подумают, что это весьма
облегченная версия ActionScript
(пресловутый Adobe Flash), другие найдут
явное сходство с Бейсиком, автору
этой статьи почему-то вспомнился
Adobe'вский PostScript. В общем, все весьма
родственно.
Язык Pixilang появился в 2006 году, его
авторами являются Александр
Золотов и Михаил Разуваев. С того
времени он претерпел очень большое
количество изменений, на данный
момент текущая версия 1.5 датируется
22 марта. Для закачки необходимых
файлов можно воспользоваться
следующей ссылкой - www.warmplace.ru. IDE как
таковой нет, есть скрипт, который
набирается в Блокноте, и
специальное окно вывода (окно
интерпретатора). Все.
Несколько "но"
По заверению авторов, Pixilang
является
пиксельно-ориентированным, и среди
плюсов данного языка отмечают
"отсутствие объектной
ориентации". Между тем, основными
структурными элементами являются
так называемые pixi-контейнеры, в
которых может содержаться либо
текст, либо картинки, либо числовые
массивы. По какой причине авторы не
хотят это считать за объекты,
остается только догадываться.
Впрочем, смотря с какой стороны на
все смотреть...
Почему Pixilang сходу многим напомнил
ActionScript? Чем-то схож синтаксис (это
только первое впечатление), и...
наверное, потому, что речь идет о
воспроизведении программы в рамках
специального окна интерпретатора и
возможности анимации с указанием fps
(кадры в секунду), то есть, можно
организовать покадровый подход.
Хотя, в данном случае мы говорим о
пиксельной растровой графике.
Нечто подобное раньше можно было
осуществить во множестве других
языков, в том числе и в самом
детском, то есть, Бейсике, с помощью
циклов и команды GOTO (которая,
кстати, есть и в Pixilang). В данном
случае можно комбинировать оба
варианта.
PostScript вспомнился из-за самой
первоначальной идеи легкого
синтаксиса и
мультиплатформенности. И,
действительно, программный код,
созданный для Pixilang, можно успешно
использовать для платформ Windows, Linux,
PalmOS, WindowsCE (Windows Mobile), он там будет
работать благодаря интерпретатору.
Причем сам код не только пишется в
обычном блокноте, но и сохраняется
в TXT-файлах. При желании созданную
анимацию можно экспортировать в
GIF-файлы (или AVI, но это работает
только для Windows).
В общем, основная идея - большая
свобода в действиях при
минималистичности внутренней
структуры и простейшем синтаксисе.
С помощью Pixilang можно писать игры,
делать интересные анимации.
Программа "Hello, world!"
Рабочее окно интерпретатора Pixilang
может иметь различные размеры. Для
их подробного указания нужно
открыть Блокнот, написать нечто
типа:
width 320
height 240
noborder
windowname "Название окна"
buffer 4096
...а после сохранить это в файл с
названием config.ini. Все!
Теперь создаем в Блокноте новый
файл, пишем:
clear(BLACK) //Черный фон
print("Hello, world!",-20,10,#FFFFFF)
//Вывод текста с указанными координатами, цвет - белый
frame
Сохраняем эту запись в отдельный
TXT-файл и запускаем его в окне
интерпретатора Pixilang. Все работает.
Возможности и некоторые
особенности синтаксиса
Уф-ф. В простоте - сила, но не так
все и просто на самом деле. Данный
язык имеет много синтаксических
заимствований из других, иногда
очень близок к С/С++, правда,
существует ряд упрощений и
специализированных решений. То
есть, мы говорим о чем-то
уникальном.
Как понятно, правила написания
комментариев, обозначения названий
переменных и т.п. близки к
С-подобным. Это же относится к
обозначению математических и
условных операций. Правда, "+"
(плюсом) может обозначаться и
переход к следующему кадру, если он
стоит в отдельной строке как
разделитель.
Что касается вариантов с числами,
то можно пользоваться обычным
десятичным представлением, также
есть формат, называемый Fixed Point
(число с фиксированной точкой),
который используется для некоторых
команд. Это обычные десятичные
числа, умноженные на 256. Например,
если вам нужно написать 0,5, то в Fixed
Point это будет как 128 (256*0,5), а если 4, то
- 1024 (256*4).
Числа типа #4499FF на автомате
преобразуются в представления
цвета, как это есть в том же ActionScript
или даже HTML. Помимо этого, для
обозначения некоторых цветов
зарезервированы определенные
слова. В примере с "Hello, world!" мы
использовали BLACK, хотя белый
описали как #FFFFFF (если бы вместо
этого написали WHITE, результат был бы
тем же).
В рамках кода можно ставить метки,
использовать подпрограммы,
формировать циклы и запускать
таймеры.
Что касается команд, то тут можно
встретить в большей массе много
специализированного. Например, для
рисования и импорта/экспорта
изображений/анимации имеется свой
уникальный, по сути, арсенал. Среди
всего прочего стоит выделить такие
интересные вещи, как команду effector,
предназначенную для использования
стандартных графических эффектов,
предусмотренных разработчиками. Ну
а использованием альфа-канала
(прозрачности) для каждого из
объектов сейчас никого не удивишь.
Это же касается и
музыкальных/звуковых возможностей.
Взаимодействие с пользователем
практически стандартно (мышь,
клавиатура). В общем, язык позволяет
достаточно быстро создавать
2D-анимацию, в том числе и
интерактивную.
В завершение
Сама идея очень хорошая, причем,
если говорить музыкальным языком,
она имеет прямое отношение к
демо-сцене. То есть, помимо
серьезных профессиональных
программ, существует отдельное
направление - трекеры. Это
достаточно "легкие по весу"
разработки, в рамках которых
множество энтузиастов делают
настоящие чудеса. Например, не
секрет, что сейчас можно найти
целые музыкальные альбомы,
загружаемые в виде отдельной
программы, которая занимает 300-500 Кб.
Этим направлением также активно
интересуются разработчики
компьютерных игр. С помощью того же
Pixilang уже написано несколько таких
программ. Да, и в плане игр стоит
отметить достаточно интересное
будущее и, возможно, явную
конкуренцию с флэшем в будущем.
Ведь Pixilang предоставляет
следующие возможности (цитируем):
- быстрое написание небольших
демок/игрушек/открыток и
других графических приложений;
- создание, редактирование и
запуск программ на различных
платформах;
- простой синтаксис и малое
количество команд;
- использование универсального
контейнера (pixi) для хранения
различных данных (текст,
картинки, шрифт);
- пиксельная графика (в том числе
анимация) описывается
непосредственно в исполняемом
TXT-файле при помощи ASCII
символов;
- прозрачность (простая и через
альфа-канал);
- поворот и масштабирование;
- удобные команды синхронизации;
- отсутствие математических
floating point операций для повышения
скорости выполнения программ;
- проигрывание трекерной музыки
в форматах MOD и XM (используется
движок PsyTexx);
- возможность синтеза звука
средствами Pixilang;
- загрузка картинок из форматов
GIF (анимированных) и JPG;
- преобразование любой
анимированной картинки в
моноширный шрифт (каждый кадр -
отдельный символ);
- реал-тайм экспорт видеоряда в
анимированный GIF;
- сохранение области экрана в
TXT-файл с pixilang-кодом внутри
(оптимальное преобразование
цветных пикселов в ASCII коды
производится при помощи
нейросети);
- поддержка библиотеки SDL (для
прямого доступа к видеопамяти)
в Linux-версии, поддержка прямого
доступа к видеопамяти в
PalmOS-версии;
- оптимизированы функции для
рисования в полноэкранном
режиме (SDL, DirectX, OpenGL, GAPI...);
- исходный код распространяется
под лицензией GNU GPL.
И, вообще, интересен сам подход...
Почему? Приведу недавний пример,
когда один из знакомых написал игру
на том же флэше, и заняла она у него
18 Мб. Дело в том, что он не думал о
ресурсах, практически все выполнял
на уровне чуть ли не покадрового
рисования с сохранением большого
количества графических данных,
иногда идентичных и т.п. А вот когда
мы, поспорив, практически все
сделали в коде, оптимизировали сам
вывод изображений, эта же игра
стала занимать... около 2 Мб. Эффект
очевиден. То есть, графику и
анимацию иногда гораздо
эффективнее программировать,
нежели рисовать. А тут появилось
такое чудо, как отдельный
пиксельно-ориентированный язык.
Что касается будущего Pixilang...
Весьма определенный ответ можно
найти в блоге Александра Золотова (nradio.blogspot.com):
"Pixilang хорош. Буду в том же духе
поддерживать и развивать его. А
параллельно попробую заглянуть в
будущее...
Следующий шаг, я думаю, надо будет
делать в сторону мультиязыкового
пространства. Какая-то
универсальная межплатформенная
среда без привязки к конкретному
языку программирования. И основа
для такой среды, кажется, уже
появилась - это инструмент под
названием LLVM. В двух словах не
описать все его преимущества. Но
вот основное: код программ и
модулей можно хранить в бинарных
модулях, слегка напоминающих
байт-код Java или C#; но на самом же
деле эти модули по своей гибкости
влегкую делают и Java, и C#, и всех
остальных. Возможно такое: вы
пишете прогу на языке C или C++ или Basic
или еще каком-нибудь, компилируете
(например, через gcc) эту прогу в
бинарный код LLVM; LLVM грузит бинарный
код, перелопачивает его, сильно
оптимизирует и на выходе дает
готовый исполняемый файл,
оптимизированный под конкретный
девайс (например, windows, linux или Mac OSX).
При этом LLVM открыт и
распространяется под лицензией BSD -
что совсем хорошо... Определенно, за
этим будущее. Недаром Маки и Айфоны
активно юзают эту технологию для
оптимизации графики...".
В общем, посмотрим. Начало
хорошее.
Кристофер,
christopher@tut.by
Обсуждение статьи (записей: 6)