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 vzniku1998
PoužitieMultiplatformové
Typová kontrolaÁno, ale neštandardná
TvorcaITB CompuPhase
ImplementácieWindows, Linux, 8-bit, Playstation 2, XBox, ...
DialektySA-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