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 , застереження дозволяє зв'язувати бібліотеки для комерційних додатків.

Типи даних

  • Цілі числа (Integer, new int:Змінна;)
  • Числа з рухливою комою (Floating, new float:Змінна;)
  • Логічний тип (Boolean, new bool:Змінна;)

Застосування мови

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;
}

Джерела

  1. The Pawn Language
  2. The Pawn Booklet: 1. Language Guide

Зовнішні посилання

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