**Pawn** (**Small** olarak da bilinir) açık kaynaklı bir programlama dilidir. Hollanda'da kurulan CompuPhase şirketi tarafından geliştirilmiştir. İlk olarak 1998 yılında yayınlanmıştır. 3. versiyonu yayınlanana kadar Small dili olarak bilinmiştir,3.versiyonu 2005 yılının Mart ayında çıkmıştır.

Pawn dinamik yazılı kodlama dilidir. Small-C dilinden etkilenilerek yaratılmıştır ve kodları C dilini andırmaktadır.

Pawn,San Andreas Multiplayer mod, Half-Life mod, AMX Mod X ve Source Engine gibi çeşitli projelerde kullanılmaktadır.

Tasarım
-------

PAWN kodları compiler tabanlıdır. PAWN scriptleri '.pwn' uzantılı dosyada tutulur.Bu pwn uzantılı dosyaları not defteri dahil çeşitli kod editörleri açabilir.

PAWN compiler,kaynak kodlarını P-code veya bytecode dillerine çevirir.Bu diller de '.amx' uzantısıyla kaydedilir. '.amx" uzantılı dosyaların açılma yolu yoktur. Tek bir yolu vardır o da illegal bir yöntemdir ve moda ekleyeceğiniz ufak bir eklentiyle çözülmektedir.

Özellikleri
-----------

* PAWN C kodlama diline benzer.
* Include ekleyebilirsiniz ki bu da fonksiyon çeşitliliği sağlar.
* Başka dillere kolayca çevirebilmek için PAWN,mümkün oldukça ANSI dilinde geliştirilmiştir.
* PAWN Unicode/UCS-4 ve UTF-8 dillerini de destekler.

Kullanım alanları
-----------------

### Grand Theft Auto: San Andreas Multiplayer

Popüler gayriresmî Grand Theft Auto: San Andreas modifikasyonu için kullanılır. "San Andreas Multiplayer26 Nisan 2015 tarihinde Wayback Machine sitesinde arşivlendi.". Bu oyunda,oyunun tek kişilik versiyonundaki her şeyi PAWN ile yapılabilir.Türkiye'de yaygın olarak kullanılır. Counter-Strike 1.6 multiplayer için plug-in yaratmak için kullanılır.

Scriptler arası tasarım
-----------------------

PAWN diğer programlama dillerinin kodları arasındaki bir köprü dil olarak tasarlanmıştır. PAWN dili hiçbir native fonksiyonu taşımaz. PAWN fonksiyonlarını include dosyalarından alır.

Operatörler
-----------

| Operatör | Örnek Kullanım | İşlevi |
| --- | --- | --- |
| + | a + b | iki veya birden fazla sayıyı toplar |
| - | a - b | iki veya birden fazla sayıyı çıkartır |
| \* | a \* b | Bir sayı ile başka bir sayıyı çarpar |
| / | a / b | Bir sayıyı bir diğer sayıya böler |
| = | a = 5 | Bir değişkene değer atama |
| ++ | a++ | Değişkende bulunan değeri 1 arttırır. |
| -- | a-- | Değikende bulunan değeri 1 azaltır. |
| += | a += 5 | Değişkende bulunan değer ile bir başka değer toplanıp tekrar değişkene eşitlenir. |
| -= | a -= 5 | Değişkende bulunan değer ile bir başka değer çıkartılıp tekrar değişkene eşitlenir. |
| /= | a /= 10 | Değişkende bulunan değeri bir başka değere böler ve sonuç yine değişkene aktarılır |
| \*= | a /= 10 | Değişkende bulunan değeri bir başka değerle çarpılır ve sonuç yine değişkene aktarılır |
| == | 5 == 5 | Bir değerin diğer değere eşit olup olmadığını sorgular. |
|  != | 5 != 6 | Bir değerin diğer değere eşit olmadığını sorgular. |
| > | 5 > 3 | Bir değerin diğer değereden büyük olup olmadığını sorgular |
| < | 5 < 8 | Bir değerin diğer değerden küçük olup olmadığını sorgular |
| >= | 5 >= 6 | Bir değerin bir değerden büyük veya o değere eşit olup olmadığını sorgular |
| <= | 5 <= 3 | Bir değerin bir değerden küçük veya o değere eşit olmadığını sorgular |

Örnek Operatör kullanımları

Kod Örnekleri
-------------

Dizi örneği

```
#include <core>

new dizi[3]; // İçerisine 3 adet değer alabilecek bir dizi tanıttık.

main()
{
 dizi[0] = 5; 
 dizi[1] = 10;
 dizi[2] = dizi[1] \* dizi[2]; // Dizi 1 ve 2'deki değerleri çarpıp dizi 3'e atadık.
 printf("Dizi 1 ile Dizi 2'de bulunan değerlerin çarpımı: %i", dizi[3]); // dizi 3 içerisinde bulunan değeri printf ile ekrana yazdırdık
}

```

Dış bağlantılar
---------------

* Resmî site