Pawn

z Wikipédie, slobodnej encyklopédie
Skočit na navigaci Skočit na vyhledávání
Pawn
Pawn logo.png
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 (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 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[upraviť | upraviť kód]

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[upraviť | upraviť kód]

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[upraviť | upraviť kód]

#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[upraviť | upraviť kód]

  1. http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf, 1. strana
  2. http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf, 1. strana
  3. http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf
  4. http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf, 6. strana
  5. http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf, 92. strana
  6. http://www.compuphase.com/pawn/Pawn_Implementer_Guide.pdf, 2. strana