Pawn

Поделись знанием:
Перейти к: навигация, поиск
Pawn
Тип исполнения:

компилируемый

Появился в:

1998

Автор:

ITB CompuPhase

Расширение файлов:

.pwn, .p, .amx

Выпуск:

4.0.4733 (22 июня 2012[1])

Испытал влияние:

Small-C[2]

Лицензия:

Apache 2.0 с исключением линкования

Сайт:

[www.compuphase.com/pawn/pawn.htm puphase.com/pawn/pawn.htm]

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





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

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

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

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

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

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

Grand Theft Auto: San Andreas Multiplayer

Язык Pawn активно используется для написания игровых режимов (модов) и модулей (скриптов) для серверов популярного неофициального мультиплеера San Andreas Multiplayer игры Grand Theft Auto: San Andreas (а так же для его адаптаций: Anderius Multiplayer, Criminal Russia Multiplayer, United Multiplayer, Gostown6 Multiplayer).

Grand Theft Auto: Vice MultiPlayer

Язык Pawn активно используется для написания игровых режимов (модов) и модулей (скриптов) для серверов не особо популярного неофициального мультиплеера Vice Multiplayer (VMP), также его использует еще один мультиплеер Vice City MultiPlayer (VC:MP). Не путайте VMP и VC:MP. VMP - подобен SA-MP

Counter Strike: AmxModX и SourceMod

Язык Pawn используется в написании плагинов для модулей AmxModX и SourceMod, которые позволяют выполнять сценарии на серверах мультиплеера игры Counter Strike.

Типы данных

Pawn является бестиповым сценарным языком, однако при подключении дополнительных библиотек разработчику станут доступны следующие типы данных:

Примеры кода

"Hello World" выглядит так же, как и в Си:

#include <core>
main() 
{
    print("Hello World!");
    return 1; // Возвращает 1
}

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

#include <core>
main() 
{
    new array[4]; // Инициализация массива с 4 элементами
    array[0] = 43; // Изменение значения элемента с индексом 0
    array[1] = 10; // Изменение значения элемента с индексом 1
    array[2] = 799; // Изменение значения элемента с индексом 2
    array[3] = 1212; // Изменение значения элемента с индексом 3
    return 1; // Возвращает 1
}

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

#include <core>
main() 
{
    for(new i = 0; i < 10; i++)
    {
        if(i != 9) printf("%d,", i);
        else print("девять");
    }
    return 1; // Возвращает 1
}

Напишите отзыв о статье "Pawn"

Примечания

  1. 1 2 [www.compuphase.com/pawn/pawn.htm The Pawn Language] (англ.). Проверено 19 июля 2011. [www.webcitation.org/69uNrB5Rg Архивировано из первоисточника 14 августа 2012].
  2. [www.compuphase.com/pawn/Pawn_Language_Guide.pdf The Pawn Booklet: 1. Language Guide] (4 марта 2008). [www.webcitation.org/69uNrsljq Архивировано из первоисточника 14 августа 2012].
  3. [www.ddj.com/ Dr. Dobb’s Journal] (англ.). [www.webcitation.org/69uNsjlj3 Архивировано из первоисточника 14 августа 2012].
  4. 1 2 [www.compuphase.com/pawn/pawnfeatures.htm#ROBUST The Pawn language - language and toolkit features] (англ.). Проверено 19 июля 2011. [www.webcitation.org/69uNtMbTO Архивировано из первоисточника 14 августа 2012].

Ссылки

  • [www.compuphase.com/pawn/pawn.htm The Pawn Language] (англ.) — официальный сайт

Отрывок, характеризующий Pawn

– Сергей Кузьмич, со всех сторон , – проговорил он, расстегивая верхнюю пуговицу жилета.
Пьер улыбнулся, но по его улыбке видно было, что он понимал, что не анекдот Сергея Кузьмича интересовал в это время князя Василия; и князь Василий понял, что Пьер понимал это. Князь Василий вдруг пробурлил что то и вышел. Пьеру показалось, что даже князь Василий был смущен. Вид смущенья этого старого светского человека тронул Пьера; он оглянулся на Элен – и она, казалось, была смущена и взглядом говорила: «что ж, вы сами виноваты».
«Надо неизбежно перешагнуть, но не могу, я не могу», думал Пьер, и заговорил опять о постороннем, о Сергее Кузьмиче, спрашивая, в чем состоял этот анекдот, так как он его не расслышал. Элен с улыбкой отвечала, что она тоже не знает.
Когда князь Василий вошел в гостиную, княгиня тихо говорила с пожилой дамой о Пьере.
– Конечно, c'est un parti tres brillant, mais le bonheur, ma chere… – Les Marieiages se font dans les cieux, [Конечно, это очень блестящая партия, но счастье, моя милая… – Браки совершаются на небесах,] – отвечала пожилая дама.
Князь Василий, как бы не слушая дам, прошел в дальний угол и сел на диван. Он закрыл глаза и как будто дремал. Голова его было упала, и он очнулся.
– Aline, – сказал он жене, – allez voir ce qu'ils font. [Алина, посмотри, что они делают.]
Княгиня подошла к двери, прошлась мимо нее с значительным, равнодушным видом и заглянула в гостиную. Пьер и Элен так же сидели и разговаривали.
– Всё то же, – отвечала она мужу.
Князь Василий нахмурился, сморщил рот на сторону, щеки его запрыгали с свойственным ему неприятным, грубым выражением; он, встряхнувшись, встал, закинул назад голову и решительными шагами, мимо дам, прошел в маленькую гостиную. Он скорыми шагами, радостно подошел к Пьеру. Лицо князя было так необыкновенно торжественно, что Пьер испуганно встал, увидав его.
– Слава Богу! – сказал он. – Жена мне всё сказала! – Он обнял одной рукой Пьера, другой – дочь. – Друг мой Леля! Я очень, очень рад. – Голос его задрожал. – Я любил твоего отца… и она будет тебе хорошая жена… Бог да благословит вас!…
Он обнял дочь, потом опять Пьера и поцеловал его дурно пахучим ртом. Слезы, действительно, омочили его щеки.
– Княгиня, иди же сюда, – прокричал он.
Княгиня вышла и заплакала тоже. Пожилая дама тоже утиралась платком. Пьера целовали, и он несколько раз целовал руку прекрасной Элен. Через несколько времени их опять оставили одних.
«Всё это так должно было быть и не могло быть иначе, – думал Пьер, – поэтому нечего спрашивать, хорошо ли это или дурно? Хорошо, потому что определенно, и нет прежнего мучительного сомнения». Пьер молча держал руку своей невесты и смотрел на ее поднимающуюся и опускающуюся прекрасную грудь.
– Элен! – сказал он вслух и остановился.
«Что то такое особенное говорят в этих случаях», думал он, но никак не мог вспомнить, что такое именно говорят в этих случаях. Он взглянул в ее лицо. Она придвинулась к нему ближе. Лицо ее зарумянилось.
– Ах, снимите эти… как эти… – она указывала на очки.
Пьер снял очки, и глаза его сверх той общей странности глаз людей, снявших очки, глаза его смотрели испуганно вопросительно. Он хотел нагнуться над ее рукой и поцеловать ее; но она быстрым и грубым движеньем головы пeрехватила его губы и свела их с своими. Лицо ее поразило Пьера своим изменившимся, неприятно растерянным выражением.
«Теперь уж поздно, всё кончено; да и я люблю ее», подумал Пьер.
– Je vous aime! [Я вас люблю!] – сказал он, вспомнив то, что нужно было говорить в этих случаях; но слова эти прозвучали так бедно, что ему стало стыдно за себя.
Через полтора месяца он был обвенчан и поселился, как говорили, счастливым обладателем красавицы жены и миллионов, в большом петербургском заново отделанном доме графов Безухих.


Старый князь Николай Андреич Болконский в декабре 1805 года получил письмо от князя Василия, извещавшего его о своем приезде вместе с сыном. («Я еду на ревизию, и, разумеется, мне 100 верст не крюк, чтобы посетить вас, многоуважаемый благодетель, – писал он, – и Анатоль мой провожает меня и едет в армию; и я надеюсь, что вы позволите ему лично выразить вам то глубокое уважение, которое он, подражая отцу, питает к вам».)
– Вот Мари и вывозить не нужно: женихи сами к нам едут, – неосторожно сказала маленькая княгиня, услыхав про это.
Князь Николай Андреич поморщился и ничего не сказал.
Через две недели после получения письма, вечером, приехали вперед люди князя Василья, а на другой день приехал и он сам с сыном.
Старик Болконский всегда был невысокого мнения о характере князя Василья, и тем более в последнее время, когда князь Василий в новые царствования при Павле и Александре далеко пошел в чинах и почестях. Теперь же, по намекам письма и маленькой княгини, он понял, в чем дело, и невысокое мнение о князе Василье перешло в душе князя Николая Андреича в чувство недоброжелательного презрения. Он постоянно фыркал, говоря про него. В тот день, как приехать князю Василью, князь Николай Андреич был особенно недоволен и не в духе. Оттого ли он был не в духе, что приезжал князь Василий, или оттого он был особенно недоволен приездом князя Василья, что был не в духе; но он был не в духе, и Тихон еще утром отсоветывал архитектору входить с докладом к князю.