Pawn (Programmiersprache)

Logo

Pawn ist eine einfache, typenlose, 32-Bit-Erweiterungssprache mit einer C-ähnlichen Syntax. Ein Pawn-Programm wird in eine Binärdatei kompiliert. Der Pawn-Compiler generiert P-Code (oder Bytecode), der anschließend auf einer abstrakten Maschine ausgeführt wird. Ausführungsgeschwindigkeit, Stabilität, Einfachheit und ein kleiner Speicherbedarf waren wesentliche Designkriterien sowohl für die Sprache als auch für die abstrakte Maschine.[1]

Geschichte

Die Pawn-Programmiersprache wurde erstmals in den späten 1990er Jahren von IT-Studenten der Universität Uppsala in Schweden entwickelt. Das Hauptziel war es, eine einfache und leistungsstarke Skriptsprache zu schaffen, die in unterschiedlichen Anwendungsfällen verwendet werden kann.[2]

Merkmale

Merkmale von Pawn

  • C-ähnliche Syntax: Die Syntax von Pawn ist an C/C++ angelehnt, was sie für Entwickler, die mit diesen Sprachen vertraut sind, leicht verständlich macht.
  • Kompaktheit: Pawn zeichnet sich durch seine geringe Größe aus und erfordert wenig Speicherplatz, was für den Einsatz in ressourcenbeschränkten Umgebungen wie Mikrocontrollern vorteilhaft ist.
  • Precompiler-System: Das Precompiler-System von Pawn ermöglicht es Entwicklern, benutzerdefinierte Befehle und Funktionen zu erstellen, um ihre Arbeitsabläufe zu automatisieren und zu optimieren.
  • Portabilität: Pawn ist auf verschiedenen Plattformen verfügbar und bietet somit eine hohe Portabilität für Entwickler.
  • Modularität: Entwickler können Bibliotheken und Module in Pawn schreiben und wiederverwenden, um die Entwicklung von Skripten zu beschleunigen.

Anwendungsbereiche

Pawn ist eine Programmiersprache, die in verschiedenen Anwendungsbereichen Verwendung findet.

Bekanntheit hat Pawn vor allem als Skriptsprache für das Modding des Spiels "GTA San Andreas" im Rahmen der Multiplayer-Modifikation SAMP (San Andreas Multiplayer) erlangt. Obwohl Pawn häufig mit SAMP in Verbindung gebracht wird, wurde es auch für andere Anwendungsfälle eingesetzt. So kommt Pawn bei der Programmierung von Mikrocontrollern und anderen eingebetteten Systemen zum Einsatz. Darüber hinaus wird Pawn auch in anderen Spielmodifikationen und Projekten verwendet.[3][4]

Wenn Pawn für SAMP verwendet wird, erfolgt dies durch das Einbinden von SAMP-spezifischen Includes in das Skript wie z. B.:

#include <a_samp>

Dadurch können alle relevanten Publics, Funktionen und Callbacks von SAMP benutzt werden.

Variablen

Die Variablentypen in Pawn sind im Vergleich zu C eingeschränkter, und ihre Deklaration erfolgt auf eine andere Weise. Statt der üblichen C-Deklaration verwenden wir das Schlüsselwort "new", gefolgt vom Typ (falls erforderlich), und dem Namen der Variablen. In der Standardeinstellung werden Variablen als Ganzzahlen deklariert, weshalb in diesem Fall keine explizite Typangabe erforderlich ist. Es ist jedoch eine bewährte Praxis, jede deklarierte Variable zu initialisieren, um sicherzustellen, dass sie keinen fehlerhaften Wert enthält, auch wenn ihr standardmäßig ein Wert zugewiesen wird. Dies trägt zur Robustheit und Fehlervermeidung in Pawn-Programmen bei.

Typ Deklaration Spezifizierer
Integer
new a = 3;
%d, %i
Float
new Float:pi = 3.14;
%f (%.2f → 2 Dezimalstellen)
Boolean
new bool:lightOn = false;
%b
Charakter
new lettreB = 'B';
%c (%d → code ASCII)
Zeichenkette/String
new monEncyclopedie[] = "Wikipédia";
%s
main()
{
   new Float:pi = 3.14;
   printf("Näherungswert von pi : %f");
}

Strukturen und Schleifen, Operatoren

Pawn kennt, analog zu C, Kontrollstrukturen wie if-else, switch; Schleifenkonstrukte wie for, while oder do while sowie arithmetische Operatoren (z. B. +) und auch logische (z. B. ||).[5]

Funktionen

Beispiel einer Funktion:

forward bool:Gleich(a, b); // Erstellen eines Vorwärtsdeklaration unter Verwendung des Schlüsselworts forward

main()
{
   new a = 5, b = 3;
   printf("A und B gleich? %b\n", Gleich(a, b));
}
bool:Gleich(a, b)
{
   return a == b;
}

Weblinks

Commons: Pawn – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

  1. The Pawn language. Abgerufen am 10. September 2023.
  2. The Pawn language. Abgerufen am 10. September 2023.
  3. heise online: Skript-Programmierung mit PAWN. Abgerufen am 10. September 2023.
  4. Pawn embedded scripting language A Gentle Introduction to Programming. CompuPhase, abgerufen am 10. September 2023.
  5. Pawn Style Guide. Abgerufen am 10. September 2023 (englisch).