A PAWN programozási nyelv

Bevezetés

Kis történelem

A nyelvet 1999 októberében jelent meg a Dr. Dobb's Journal újságban Small néven a CompuPhase gondozásában. Alapjait a Small-Cből vette, konkrétabban azt alakították át, „csonkította” meg (például kikerültek belőle a típusok, pointerek, referenciák stb). A csonkítás végett lett a nyelv neve Small. A fejlesztések, javítgatások során sok visszajelzést érkezett a nyelv nevének választásáról, hiszen nem feltétlen jó választás, elég gyakran használt szó. Ezt orvosolta is, hiszen a state-ek bevezetése után nem sokkal már Pawnként futott tovább.

A mai napig fejlesztik, igaz nem olyan gyakorisággal: A legutolsó verzió 2012 augusztusában jelent meg. Nyílt forráskódú szoftver, amiben még mindig láthatóak a SmallC jegyei. Maga a nyelv ANSI Cben készült.

Felhasználási lehetőségek

A cég elsődlegesen saját eszközeihez hozta létre, de ettől függetlenül –mivel nyílt forráskódú – máshol is használják vagy használták. Bővebb információ a hivatalos honlapon érhető el.

Pár fontosabb tétel, röviden:

Pár szó a PAWNról

A PAWN nyelvet legegyszerűbben öt szóval lehet kifejezni:

Miért is hozták létre? A PAWN elsődleges célja az alkalmazások testre szabása, nem pedig önálló alkalmazások készítése. A végrehajtási sebesség, stabilitás, egyszerűség és a kis helyigény nélkülözhetetlen elemei voltak a nyelv és az interpeter/absztrakt gép tervezéséhez, amin a Pawn fut. Mint tudjuk, egy alkalmazás vagy eszköz nem tud mindent megcsinálni amit a felhasználó akar.

Rengeteg dologtól függ, szerkesztő, fordító, OS, s más szoftverek. A nyelvben könnyen manipulálhatjuk a program által használt objektumokat – persze ehhez szükséges feltétele, hogy a nyelv absztrakt gépét (Abstract Machine) implementáljuk. A legtöbb megírt eszközök (fordító, Abstract Machine) már kész, megírt állapotban vannak, letölthetőek, ezeket könnyen – esetleg kis átírásokkal - portolhatjuk különböző platformokra, s futtathatjuk különböző architerktúrákon is.

A nyelv gyenge az adat struktúrákban, hiszen elsődleges célja az adatok manipulálása (text, sprites, streams, queries, ... ) a host alkalmazásban, viszont nem fér hozzá a host alkalmazásban az Abstract Machine kívüli adatokhoz. Fontos, hogy nincsenek típusok a nyelvben, de lehet a változókat osztályozni (classification). Ezeket a nyelv tag-ekenek hívja. A „típusellenőrzés” ezekkel történik.

A nyelv egyik legfontosabb eleme a native függvények, hiszen ezen keresztül történnek a hívások a host felé. Ezeket mind az Abstract Machine kezeli – amennyiben implementálva van(nak).

Az előzőek alapján mondhatjuk, hogy a PAWN rugalmas a számára kulcsfontosságú területen: a függvényhívásokban:

Működési elv

Van hozzá egy Abstract Machine, ami képes a Compiler-rel lefordított programok futtatására (mint Java, C#). Ez az Abstract Machine nem egy konrét fix/kiadott vm, hanem egy könyvtár, ami bővíthető, és beágyazható különböző alkalmazásokba. A lefordított P-kód egy hordozható, mobil kód, de ez az Abstract Machine függő. (pl Pawn livbe nem illeszthető be egy bővített nyelvű Pawn kód)

Különbségek, C-hez képest