Pawn
Pawn (pôvodne vyvýjaný pod názvom Small) (chybne nazývaný Pawno) je skriptovací jazyk, ktorý nachádza využitie najmä v programovaní (skriptovaní) serverov do hry Grand Theft Auto: San Andreas či do hry Counter strike.
Pawn | |
| |
Druh | Štruktúrovaný |
---|---|
Dátum vzniku | 1998 |
Použitie | Multiplatformové |
Typová kontrola | Áno, ale neštandardná |
Tvorca | ITB CompuPhase |
Implementácie | Windows, Linux, 8-bit, Playstation 2, XBox, ... |
Dialekty | SA-MP, AMXMODX |
Používané prípony | .amx, .pwn, .p |
Pawn je dynamický jazyk, so syntaxou vychádzajúcou z jazyka C, no voľnejšou. Pôvodne bol vyvýjaný s cieľom vytvoriť jednoduchý, rýchly, moderný a prenosný jazyk. Na jeho použitie je potrebné "prostredie" - AMX, v ktorom je daný program spustený. Prostredie AMX je dostupné na viaceré operačné systémy, aj na 8-bitové prístroje.[1]
História
Pôvodný názov Small-C bol čoskoro zmenený na Small, pretože autori považovali jazyk za niečo viac než len kópiu jazyka C. Došlo k fundamentálnym zmenám oproti jazyku C, napríklad odstránenie typov premenných, či nahradenie a prerobenie systému ukazovateľov (pointerov). Neskôr, keď jazyk nadobudol vyššiu komplexnosť, bol premenovaný ešte raz, na Pawn. Tento názov nesie už niekoľko rokov.[2]
Technológia a AMX
Ako skriptovací jazyk potrebuje virtuálne prostredie - virtuálny stroj, na fungovanie. Toto prostredie autori nazvali AMX, zo skratky Abstract Machine eXecutor. AMX vo veľkej miere udáva vlastnosti jazyka.[3]
Jazyk je beztypový, všetky údaje sa ukladajú do rovnako veľkých premenných, zväčša o veľkosti 4 Bajtov. Počas programovania je možné používať tzv. Tagy, ktoré umožňujú typovú kontrolu. Táto kontrola však neexistuje v reálnom čase, iba počas kompilácie je možné vytvárať vlastné typy, bežne dostupné sú Boolean či Float. U znakov a textových reťazcov sa tagy nepoužívajú.[4]
AMX používa technológiu "stack-based", čiže vo virtuálnom stroji sú všetky údaje uložené v zásobníku (Stack).[5] Toto vo veľkej miere negatívne ovplyvňuje rýchlosť jazyka Pawn. Kompilácia má tak ako v podobných jazykoch dva kroky - prvotná kompilácia, ktorá pozostáva z prekladu zdrojového kódu do byte-kódu. Byte-kód ešte nie je spustiteľný na danom stroji. Musí teda prejsť cez AMX, kde je v reálnom čase prekladaný na binárny kód spustiteľný na danom stroji.[6]
Ukážka kódu
#include <float>
#include <core>
const new text[64] = "Addition";
main() {
new cislo = 5;
new Float:realneCislo = 7.43;
printf("%s: %i + %f = %f", text, cislo, realneCislo, realneCislo + cislo);
printf("Faktorial: %i! = %i", cislo, faktorial(cislo));
printf("Faktorial2: %i! = %i", cislo, faktorial2(cislo));
}
stock faktorial(n) {
return n > 0 ? (n*faktorial(n-1)) : 1;
}
stock faktorial2(n) {
new ret = 1;
while(n > 1) {
ret *= n--;
}
return ret;
}
Referencie
- http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf, 1. strana
- http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf, 1. strana
- http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf
- http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf, 6. strana
- http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf, 92. strana
- http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf, 2. strana