Pawn

Pawn (прежнее название — Small)[1] — простой, не типизированный 32-битный скриптовый язык программирования с синтаксисом, подобным языку Си. Компилятор генерирует P-код (или байт-код), запускаемый на абстрактной машине. Файлы исходного кода Pawn имеют расширение .pwn; скомпилированные и готовые к исполнению — .amx. Популярный язык программирования для игровых серверов на базе SAMP. Имеет необычный компилятор, а также редактор кода — Pawno.

Pawn
Класс языка Си-образный
Тип исполнения компилируемый
Появился в 1998
Автор ITB CompuPhase
Расширение файлов .pwn, .p, .amx, .inc
Выпуск 4.0.5749 (18 октября 2017[1])
Испытал влияние Small-C[2]
Лицензия лицензия zlib
Сайт compuphase.com/pawn/pawn…

История языка

Введение в язык Pawn и в понятие абстрактной машины было описано как перспектива программистов, и опубликовано в журнале доктора Добба[3] в октябре 1999 года. Язык был разработан для начинающих программистов, которые допускали множество ошибок, связанных с освобождением памяти компьютера[4].

Основой для Pawn был взят язык Си. Целью разработчиков было упростить и изменить язык Си таким образом, чтобы синтаксис языка позволял избегать или обходить те ошибки, которые допускают неопытные программисты. Выбор языка Си определило то, что этот язык в тот момент достиг максимума своего развития и был довольно популярен[4].

Особенности языка

  • Pawn — это Си-подобный скриптовый язык.
  • Можно подключать файлы (#include).
  • Pawn — это скриптовый язык с компилятором, который выполняет статические проверки, и с абстрактной машиной, которая (статически) выполняет верификацию P-кода и динамическую проверку.
  • С целью портирования, Pawn был написан на ANSI C.
  • Pawn поддерживает Unicode/UCS-4 и UTF-8, а также кодовые страницы. Компилятор может преобразовать введённый исходный код в особую кодовую страницу Unicode; он также поддерживает файлы исходного кода в кодировке UTF-8.
  • Он был установлен на микроконтроллеры Atmel ATmega128, Philips LPC2138 и LPC2106 (ядро ARM7TDMI с 32 КБ ОЗУ), а также на Texas Instrument MSP430F1611 (ядро MSP430 с 10 КБ оперативной памяти и 48 КБ Flash ROM). Pawn позволяет запускать большие скрипты с небольшим объёмом памяти.
  • Документирование исходного кода может быть сделано с помощью «комментариев документации»; компилятор Pawn извлекает эти комментарии, объединяет их с информацией из исходного кода и записывает в XML-файл, который можно просмотреть (и распечатать) с помощью веб-браузера.
  • Pawn поддерживает состояния и автоматы, включая переменные локальных состояний.

Типы данных

В языке Pawn существует 4 типа данных:

Примеры кода

«Hello World» выглядит почти так же, как и в Си:

#include a_samp

main() printf("Hello World!");

Пример создания и использования массива для целочисленных значений

#include <core>

main() 
{
    new array[4]; // Инициализация массива с 4 элементами
    array[0] = 43; // Изменение значения элемента с индексом 0
    array[1] = 10; // Изменение значения элемента с индексом 1
    array[2] = 799; // Изменение значения элемента с индексом 2
    array[3] = 121332; // Изменение значения элемента с индексом 3

    return 1; // Возвращает 1
}

Пример цикла и оператора if-else

#include <core>

main() 
{
    new i;
    for(i = 0; i < 10; i++)
    {
        if (i != 9) 
        {
          printf("%d", i);
        }
        else
        {
          print("девять");
        }
    }

    return 1; // Возвращает 1
}

Пример использование переменных.

#include <a_samp>

main{}

new a = 3;

new b = 1;

printf("А равно = %d, а Б = %s", a,b); // При старте будет писать: А равно = 3, а Б = 1.




Применение языка

Некоторые примеры использования языка Pawn:

  • Grand Theft Auto: San Andreas Multiplayer — для написания игровых режимов/сценариев, использующих API, для собственных серверов популярного неофициального мультиплеера San Andreas Multiplayer игры Grand Theft Auto: San Andreas.
  • AmxModX[5] — в написании плагинов для AmxModX, которые позволяют выполнять сценарии на серверах игр на движке GoldSrc. Самыми популярными являются применения в играх Half-life и Counter-Strike
  • SourceMod — в написании плагинов для модулей SourceMod, которые позволяют выполнять сценарии на серверах игр Half-Life 2: Deathmatch, Counter-Strike: Source и других игр на движке Source.
  • WOWCube — написание прикладных игр для этой игровой консоли, и его эмулятора[6].

Примечания

  1. The Pawn Language (англ.) (недоступная ссылка). Дата обращения: 19 июля 2011. Архивировано 14 августа 2012 года.
  2. The Pawn Booklet: 1. Language Guide (недоступная ссылка) (4 марта 2008). Архивировано 14 августа 2012 года.
  3. Dr. Dobb’s Journal (англ.) (недоступная ссылка). Архивировано 14 августа 2012 года.
  4. The Pawn language - language and toolkit features (англ.) (недоступная ссылка). Дата обращения: 19 июля 2011. Архивировано 14 августа 2012 года.
  5. AMX Mod X - Half-Life Scripting for Pros!. www.amxmodx.org. Дата обращения: 10 апреля 2019.
  6. Dean Takahashi. Cubios’ WowCube is a handheld game console inspired by Rubik’s Cube, VentureBeat (30 мая 2018). Дата обращения 28 июня 2018.

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.