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 example 01
//Простой анимационный пример для 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-контейнер, двумерный массив данных. В контейнере может храниться картинка, звук, строка текста или любые другие пользовательские данные. Каждому контейнеру присваивается свой уникальный номер и далее обращение к нему идет через этот номер.

Ссылки[править]

 
Используемые
в разработке

Ада A+ APL Atlast Forth AWL Язык ассемблера ActionScript ABAP/4 AutoIt AWK BeanShell Бейсик Си Кобол C++ C# Clarion Clojure ColdFusion Common Lisp D dBase Delphi DuAL Eiffel Erlang Euphoria F# Форт Фортран Gambas Go Groovy HAL/S Haskell IBM PL/S Icon IridiumJava JavaScript Limbo Lua Модула-3 Object Pascal Objective-C OCaml Oz Parser Паскаль Компонентный Паскаль Perl Pixilang PHP PowerBASIC Python ПЛ/1 Пролог Qi Ruby Scala Scheme Seed7 Smalltalk SQL PL/SQL Tcl TouchDesigner Vala Visual Basic (.NET) • X-Robot

Академические

Agda Clean Curry Idris Лого ML Оберон Planning C РЕФАЛ Симула

IEC 61131-3

Instruction List ST FBD Ladder Diagram (LD) • SFC

Прочие

Алгол Алгол 68 Модула-2 Миранда Hope НОРМИН Санда

Эзотерические

HQ9+/HQ9++ • INTERCAL Brainfuck Befunge Malbolge Piet Spoon Unlambda Whitespace FALSE LOLCODE Глагол

Визуальные

G (LabVIEW) • Microsoft VPL Sikuli VisSim Алиса ДРАКОН Скретч

Прочее

ДинамическиеКомпилируемыеС ключевыми словами не на английском языке С C-style синтаксисом СинтаксисYoptaScript

Категория Языки программирования