Pawn
| Pawn | |
|---|---|
| | |
| Семантика | мультипарадигмальный: динамическая типизация, обработка исключений |
| Класс языка | Си-образный |
| Тип исполнения | компилируемый |
| Появился в | 1998 |
| Автор | ITB CompuPhase |
| Расширение файлов |
.pwn, .amx, .inc, .p |
| Выпуск | 4.1.7152 (25 марта 2024[1]) |
| Тестовая версия | 4.0.5691 (13 июня 2017) |
| Система типов | статическая |
| Испытал влияние | Small-C[2] |
| Повлиял на | Squirrel |
| Лицензия | лицензия zlib |
| Сайт | compuphase.com/pawn/pawn… |
Pawn (прежнее название — Small)[1] — простой, типизированный 32-битный скриптовый язык программирования с синтаксисом, подобным языку Си. Компилятор генерирует P-код (или байт-код), запускаемый на абстрактной машине. Файлы исходного кода Pawn имеют расширение .pwn; скомпилированные и готовые к исполнению — .amx. Популярный язык программирования для игровых серверов Grand Theft Auto: San Andreas Multiplayer (GTA SA-MP) и Counter-Strike 1.6. Имеет необычный компилятор, а также редактор кода — Pawno.
История языка
Введение в язык 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 заключается в его простоте и интуитивности. Синтаксис языка очень похож на C/C++, поэтому программисты, знакомые с этими языками, смогут быстро освоить Pawn. Кроме того, в Pawn есть множество встроенных функций, которые упрощают разработку и позволяют быстро достичь нужного функционала. Он предоставляет разработчикам возможность создавать и управлять внутриигровыми сценариями, добавлять новые возможности и изменять поведение игры.
Типы данных
В языке Pawn существует 4 типа данных:
- Целые числа, Integer (при объявлении переменной тип данных указывать не требуется,
new Переменная;) - Числа с плавающей точкой (
new Float:Переменная;) - Логический тип, булев или Boolean (
new bool:Переменная;) - Символ
Примеры кода
«Hello World» выглядит почти так же, как и в Си:
main()
{
print("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()
{
for(new i = 0; i < 10; i++)
{
if (i != 9)
printf("%d", i);
else
print("девять");
}
return 1; // Возвращает 1
}
Пример использования переменных:
#include <core>
main()
{
new a = 3;
new b = 1;
printf("А равно = %d, а Б = %d", a, b); // При старте будет писать: А равно = 3, а Б = 1.
return 1; // Возвращает 1
}
Пример использования операторов выражения:
#include <core>
main()
{
new a = 1;
new b = 2;
new c = 3;
if(a < b)
print("A меньше B"); // При старте будет писать: A меньше B
if(c != a)
print("C не равняется A"); // При старте будет писать: C не равняется A
if(a == 1 && a != b)
print("A равняется 1 и не равняется B"); // При старте будет писать: A равняется 1 и не равняется B
if(b == 2 || c == 3)
print("B равняется 2 или C равняется 3"); // При старте будет писать: B равняется 2 или C равняется 3
return 1; // Возвращает 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 2 The Pawn Language (англ.). Дата обращения: 13 июля 2011. Архивировано из оригинала 31 августа 2012 года.
- ↑ The Pawn Booklet: 1. Language Guide (4 марта 2008). Архивировано из оригинала 14 августа 2012 года.
- ↑ Dr. Dobb’s Journal (англ.). Архивировано из оригинала 14 августа 2012 года.
- ↑ 1 2 The Pawn language - language and toolkit features (англ.). Дата обращения: 19 июля 2011. Архивировано из оригинала 14 августа 2012 года.
- ↑ AMX Mod X - Half-Life Scripting for Pros! www.amxmodx.org. Дата обращения: 10 апреля 2019. Архивировано 10 апреля 2019 года.
- ↑ Dean Takahashi (30 мая 2018). Cubios' WowCube is a handheld game console inspired by Rubik's Cube. VentureBeat. Архивировано 2 июня 2021. Дата обращения: 28 июня 2018.
Ссылки
- The Pawn Language (англ.) — официальный сайт
- Pawn.Wiki — Форум по программированию на языке Pawn.
- SA-MP.Wiki — Полный сборник функций с описанием и примерами для GTA San Andreas Multiplayer.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.