Pixilang
Pixilang — язык программирования для небольших приложений и аудиовизуальных экспериментов. Позиционируется, как пиксельно-ориентированный, так как большая часть функционала заточена на работу с растровой графикой. Если сравнивать его с другими языками, то можно сказать, что Pixilang находится где-то между Бейсиком, Си и Ассемблером.
Концепция языка разработана в 2006 году Александром Золотовым (warmplace.ru) и Михаилом Разуваевым (goglus.com).
Ключевые особенности:
- простые правила, низкий порог вхождения;
- программу можно писать без объявления функций, просто списком инструкций с условными переходами;
- сразу после старта программе выделяется чистый экран (или окно), к которому можно обращаться как к массиву пикселей, или использовать готовые граф. примитивы;
- универсальные контейнеры (pixi-контейнеры) для хранения любых типов данных;
- функции для синтеза/записи звука и обработки блоков данных;
- поддерживаемые форматы файлов (загрузка и сохранение): WAV, PNG, JPG, GIF (анимированный);
- OpenGl ускорение (опциональное);
- MIDI In/Out;
- кроссплатформенность;
- минимальное использование внешних библиотек.
Pixilang-программы хранятся в текстовых файлах (UTF8) с расширением .txt или .pixi. Поэтому можно использовать любой текстовый редактор для создания таких программ. Pixilang не имеет встроенного редактора. После старта появляется файловый диалог, в котором нужно указать, где лежит запускаемая pixi-программа. Кроме того, путь к запускаемой программе можно указать как параметр Pixilang в командной строке.
Версия 3[править]
Pixilang 3 — новая версия языка, переписанная практически с нуля. В ней устранены некоторые недостатки предыдущих версий и добавлены новые возможности. Версия 3 совместима с 1.6 и 2.0 лишь частично.
Основные отличия от предыдущих версий:
- переменная может хранить либо целое число, либо число с плавающей точкой (floating point);
- появились локальные переменные (активны только в рамках одной функции); отличаются символом $, стоящим перед именем;
- язык портирован на OSX, iOS и Android;
- появилась возможность вызова функций из динамических библиотек операционной системы.
Простые примеры программ для Pixilang 3[править]
//Пример загрузки и вывода на экран картинки из файла: img = load( "image.jpg" ) s: pixi( img ) frame() go s
//Вывод картинки на экран с масштабированием и перекрашиванием в зеленый цвет: img = load( "image.jpg" ) s: pixi( img, 0, 0, GREEN, 2, 2 ) frame() go s
//Пример загрузки и воспроизведения GIF-анимации: img = load( "animation.gif" ) play( img ) s: pixi( img ) frame() go s
Версии 1.6 и 2.0[править]
Pixilang 1.6 (14 августа 2008) — последняя стабильная из ветки 1.x. Работает в операционных системах GNU/Linux, Microsoft Windows, Microsoft Windows CE и PalmOS. Распространяется под лицензией BSD License (основная часть) и GNU General Public License (библиотеки GIF и XM).
Pixilang 2.0 (14 августа 2008) — экспериментальная версия; по функционалу полностью идентична версии 1.6, но имеет встроенный JIT компилятор для повышения производительности на платформе x86. Запускается только в Linux и Windows.
Возможности[править]
- пиксельная графика (в том числе анимация) описывается непосредственно в исполняемом TXT-файле при помощи ASCII символов;
- продвинутые графические команды (анимация, трансформация координат, пиксельные шейдеры);
- отсутствие математических floating point операций для повышения скорости выполнения программ;
- проигрывание трекерной музыки в форматах MOD и XM (используется движок PsyTexx);
- реал-тайм экспорт видеоряда в анимированный GIF;
- сохранение области экрана в TXT-файл с pixilang-кодом внутри (оптимальное преобразование цветных пикселей в ASCII коды производится при помощи нейросети).
Простой пример программы для Pixilang 1.6 или 2.0[править]
Откройте любимый текстовый редактор и создайте новый файл со следующим содержимым:
//Простой анимационный пример для Pixilang 1.6 или 2.0 //Запишем цвет #003050 в переменную o o = #003050 //Опишем анимированную картинку (pixi), //состоящую из двух кадров: logo = " .o...ooo...o. ..o..o.o..o.. ...ooooooo... ...ooooooo... .ooooooooooo. .o.ooooooo.o. oo.........oo + .o...ooo...o. ..o..o.o..o.. ...ooo.ooo... ...ooooooo... .ooooooooooo. .o.ooooooo.o. oo.........oo " //Теперь заставим язык преобразовать эту картинку //из текстового вида в графический: make_pixi( logo ) //В этой переменной будем хранить коэффициент увеличения: zm = 20 //Метка: start: //Устанавливаем прозрачность 64: transp( 64 ) //Стираем экран белым цветом. Слегка стираем, //так как установлена прозрачность 64: clear( #FFFFFF ) //Устанавливаем прозрачность 256 (непрозрачный): transp( 256 ) //Рисуем нашу картинку logo по координатам 0,0 с увеличением zm: pixi( logo, 0, 0, zm ) //Уменьшаем увеличение на единицу: zm - 1 //Выводим результат на экран и ждем 100 миллисекунд: frame( 100 ) //Переходим на метку start: go start
Далее запустите Pixilang интерпретатор и укажите созданный вами файл.
Технические детали[править]
Pixilang запускает программу в два шага: читает исходный текст и генерирует байт-код; запускает байт-код в виртуальной машине. Если в папке с Pixilang имеется файл boot.txt, то он загружается автоматически.
Основа Pixilang — это pixi-контейнер, двумерный массив данных. В контейнере может храниться картинка, звук, строка текста или любые другие пользовательские данные. Каждому контейнеру присваивается свой уникальный номер и далее обращение к нему идет через этот номер.
Ссылки[править]
- сайт проекта
- собственное wiki
- примеры приложений
- статья о языке pixilang: «Pixilang. В простоте — сила!»