Pawn (שפת תכנות)
פרדיגמות | תכנות פרוצדורלי |
---|---|
מפתח | חברת CompuPhase |
טיפוסיות | חסרת טיפוסים |
הושפעה על ידי | Small-C, C |
www.compuphase.com |
Pawn (בעבר Small C) היא שפת תכנות המפותחת כקוד פתוח ומיועדת לשימוש כשפת תסריט להתאמה אישית של תוכניות. זו שפה חסרת טיפוסים שפותחה על בסיס שפת Small-C, ולה תחביר דומה לשל שפת C.
קוד בשפה מהודר ל P-Code, בדומה לשפת Java, ומורץ על ידי מכונה וירטואלית. ניתן להשתמש גם במפרש לצורך כך.
שפה זו היא השפה העיקרית, יחד עם C++ בשרתי Grand Theft Auto: San Andreas, ומשמשת בשרתי משחקים רבי-משתתפים נוספים כגון Counter-Strike.
מקור השם
השפה פותחה על בסיס שפת Small C, שבפני עצמה הייתה דומה מאוד לשפת C. עם זאת, השינויים שבוצעו בשפה, ובהם הסרת הטיפוסים והפיכת המצביעים להתייחסויות (references), היו מהותיים כל כך שלא היה טעם להשאיר את האות C בשם השפה, ולכן החליטו לקרוא לה פשוט Small. שכיחותה של המילה Small באינטרנט הפריעה לחפש מידע אודותיה, ולכן הוחלט לשנות את שמה, ולקרוא לה Pawn.
מבנה ותכונות
השפה תוכננה במטרה להקל על התאמה אישית של תוכניות (על ידי סקריפטים), ולא במטרה לכתוב תוכנות. בפרט, תמיכה במבני נתונים היא אחד מצדדיה החלשים של השפה. זאת כיוון שתוכניות בשפה אמורות לבצע מניפולציות על עצמים דרך התוכנה המארחת, ונמנעת מהן (במכוון) גישה ישירה למידע כלשהו. הדרך היחידה בה יכולות תוכניות בשפה לפעול על עצמים היא דרך קריאה לשגרות "ילידות", כלומר שגרות אותן מספקת התוכנה המארחת.
עיקר התכנון בשפה כוון להעניק לה גמישות בתחום הקריאה לשגרות ופונקציות. השפה מאפשרת הגדרת ערך ברירת מחדל לכל ארגומנט, העברת משתני ערך ומשתני התייחסות, והעברת ארגומנטים על פי שמם או על פי מיקומם. השפה איננה תומכת בבדיקת טיפוסים, כי היא נטולת טיפוסים, אך יש לה מאפיין חלופי - "תיוג", המאפשר להגדיר רשימת תיוגים קבילים עבור ארגומנט.
השפה מאפשרת מספר תחבירים שונים, וכל מתכנת המשתמש בשפה יכול לבחור ביניהם תחביר לפי טעמו.
השפה משמשת גם כשפת תכנות עבור תוספת למשחק קאונטר סטרייק וכן לתוספת עבור משחקי סורס.
תוכנית שלום עולם
הקוד המשתמש להדפיס "Hello World" בשפת הPAWN ובשפת C דומה מאוד:
#include <a_samp> main() { print("Hello World"); }
קישורים חיצוניים
אתר האינטרנט הרשמי של Pawn
- שפת Pawn, מסמך (באנגלית)
33776128Pawn (שפת תכנות)