Pawn (Programmiersprache)
Pawn ist eine einfache, typenlose, 32-Bit-Erweiterungssprache mit einer Syntax, die der von C ähnelt. Ein Pawn-Programm wird in eine Binärdatei kompiliert. Der Pawn-Compiler erzeugt P-Code (oder Bytecode), der dann auf einer abstrakten Maschine ausgeführt wird. Die Ausführungsgeschwindigkeit, Stabilität, Einfachheit und ein geringer Speicherbedarf waren die Hauptdesignkriterien für die Sprache und die abstrakte Maschine.[1]
Geschichte
BearbeitenDie Pawn-Programmiersprache entstand Ende der 1990er Jahre durch IT-Studenten der Universität Uppsala in Schweden. Ihr Hauptziel war die Entwicklung einer einfachen, aber leistungsfähigen Skriptsprache, die vielseitig einsetzbar ist.[2]
Merkmale
BearbeitenMerkmale 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
BearbeitenPawn ist eine Programmiersprache, die in verschiedenen Anwendungsbereichen Verwendung findet.
Die Sprache erlangte insbesondere als Skriptsprache für Modding-Aktivitäten des Spiels "GTA San Andreas" im Kontext der Multiplayer-Modifikation SAMP (San Andreas Multiplayer) Bekanntheit. Obwohl Pawn oft mit SAMP assoziiert wird, findet es auch in anderen Bereichen Anwendung. So wird Pawn für die Programmierung von Mikrocontrollern und anderen Embedded-Systemen genutzt. Zudem findet Pawn Verwendung in weiteren Spielmodifikationen und Projekten.[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
BearbeitenIm Vergleich zu C weist Pawn weniger Variablentypen auf und die Deklaration ist unterschiedlich. In Pawn ist die Verwendung des Schlüsselwortes "new" erforderlich, welches bei Bedarf durch den entsprechenden Typ ergänzt und vom Variablennamen gefolgt wird. Standardmäßig werden Variablen in Pawn als Integer deklariert, sodass die explizite Typangabe oft entfallen kann. Es gilt als etablierte Konvention, Variablen bei der Deklaration stets zu initialisieren, obwohl der Compiler automatisch einen Wert zuweist.
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
BearbeitenPawn 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
BearbeitenBeispiel 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
BearbeitenEinzelnachweise
Bearbeiten- ↑ The Pawn language. Abgerufen am 10. September 2023.
- ↑ The Pawn language. Abgerufen am 10. September 2023.
- ↑ heise online: Skript-Programmierung mit PAWN. Abgerufen am 10. September 2023.
- ↑ Pawn embedded scripting language A Gentle Introduction to Programming. CompuPhase, abgerufen am 10. September 2023.
- ↑ Pawn Style Guide. Abgerufen am 10. September 2023 (englisch).