Pawn
Пішак (англ. Pawn) — проста, безтипова, 32-бітна скриптова мова програмування з розширенням синтаксису подібним до мови програмування C. Програма Pawn компілюється в бінарний файл для оптимальної швидкості виконання. Компілятор Pawn виводить P-код (або байт-код), який згодом працює на абстрактну машину. Швидкість виконання, стійкість, простота і компактність були основними критеріями дизайну як для мови і абстрактної машини. Вихідний файл має розширення — *.pwn, а скомпільований (готовий до роботи) одержує розширення — *.amx.
Pawn | |
---|---|
Мова скриптингу | |
Офіційний логотип | |
Розробники (компанія) | |
ITB CompuPhase | |
Основний опис | |
Перший спогад | 1998 |
Реліз | 4.0.4733 / 22 червня 2012 року |
Розширення файлів | *.p, *.pwn, *.amx |
Тип виконання | Компільований |
ОС | Cross-platform |
Ліцензія | Apache 2.0 з виключенням лінкування |
Колишня назва | Small-C |
Офіційний вебсайт |
Впровадження
Введення в мову Pawn і термін абстрактної машини з точки зору програмістів був опублікований в жовтневому питанні журналу Dr. Dobb's Journal 1999 року, в той час, мова називалася Small. Мова програмування більше підходить для недосвідчених програмістів, також Pawn є безкоштовним продуктом, який підтримується в основному у вільний час.
Особливості мови
- Pawn є простою, С-подібною мовою програмування.
- Pawn є надійною мовою, яка за допомогою компілятора, виконує максимальну кількість статичних перевірок разом з абстрактним рушієм перевірок P-кода (статично), в також динамічних перевірок.
- Для цілей переносу, Pawn записується в ANSI C, наскільки це можливо; Великий порядок байтів проти маленького порядку - обробляється.
- Для комфорту інтернаціоналізації та локалізації, Pawn підтримує Unicode / UCS-4 і UTF-8, а також кодові сторінки. Компілятор може перетворити вихідний код, введений в тій чи іншій кодової сторінці в Unicode; він також підтримує файли вихідного коду в форматі UTF-8.
- Pawn є швидким (особливо з впровадженням асемблера Марка Петерса та / або його «just-in-time» компілятором).
- Pawn є малим. Він був встановлений на мікроконтролер Atmel ATmega128, Philips LPC2138 і LPC2106 мікроконтролери (ядро ARM7TDMI з 32 КБ оперативної пам'яті), а також на MSP430F1611 Texas Instrument (в MSP430 ядро з 10 КБ оперативної пам'яті і 48 КБ флеш-пам'яті). Використання коду накладки, які завантажуються на вимогу - не є проблемою. Pawn може працювати з великим скриптом, використовуючи мало пам'яті.
- Документування вихідного коду може бути зроблено з «Коментарями документації»; Pawn (компілятор) витягує ці коментарі, об'єднує їх з інформацією, пізніше виводить з вихідного коду і створює XML файл, який відразу ж можна побачити (і роздрукувати) за допомогою веб-браузера.
- Pawn підтримує статику і автоматони на мові, в тому числі локальні змінні.
- Pawn є вільним і опублікований під ліцензією Apache 2.0 , застереження дозволяє зв'язувати бібліотеки для комерційних додатків.
Типи даних
Застосування мови
Grand Theft Auto: San Andreas Multiplayer
Мова Pawn активно використовується для написання ігрових режимів / сценаріїв, що використовують API, для власних серверів популярного неофіційного мультиплеєра San Andreas Multiplayer гри Grand Theft Auto: San Andreas.
AmxModX
Мова Pawn використовується в написанні плагінів для AmxModX, які дозволяють виконувати сценарії на ігровому рушію GoldScr, наприклад в іграх Counter-Strike, Half-Life, Day of Defeat.
SourceMod
Мова Pawn використовується в написанні плагінів для модулю SourceMod, що дозволяє виконувати сценарії на Source Engine, наприклад в іграх Half-Life 2: Deathmatch, Counter Strike: Source, Counter-Strike: Global Offensive, Team Fortress 2, Left 4 Dead, Left 4 Dead 2.
Приклади коду
Ініціалізація тексту "Привіт світ":
#include <core>
main()
{
print("Привіт світ!");
return 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;
}
Ініціалізація for, if, else:
#include <core>
main()
{
for(new i = 0; i < 10; i++)
{
if(i != 9) printf("%d,", i);
else print("дев'ять");
}
return 1;
}
Зовнішні посилання
- Офіційний вебсайт
- SA-MP
- AmxModX
- SourceMod
- AlliedModders Архівовано 25 червня 2013 у Wayback Machine.