לואה (שפת תכנות)
לואה (Lua, מפורטוגזית: ירח) היא שפת תכנות דינאמית. היא מצטיינת בכך שלמרות היותה שפה דינמית היא לא דורשת משאבים רבים. משמשת בעיקר כשפת תכנות משובצת בתוכניות אחרות. אוצר המילים של השפה ניתן להרחבה בקלות. המפרש הסטנדרטי של השפה כתוב בשפת C, ולכן השפה זמינה בקשת רחבה של פלטפורמות.
שפת לואה מפותחת על ידי הקבוצה לגרפיקה ממוחשבת באוניברסיטה הקתולית (PUC Rio) שבריו דה ז'ניירו בברזיל. השפה התפרסמה ב-1993 בכנס השביעי הברזלאי להנדסת תוכנה, והגרסה הציבורית הראשונה הייתה ב-8 ביולי 1994, ונכון להיום הגרסה היא 5.2 כאשר בכל שינוי גרסה יש תוספות והרחבות לשפה.
המוטיבציה לפיתוח השפה נבעה מכיוון שבברזיל משנת 1977 ועד 1992 הייתה הגבלה על הסחר במחשבים, בתוכנה ובחומרה. המימוש הרגיל של השפה הוא תוכנה חופשית שמופצת ברישיון MIT.
בניגוד להרבה מימושים דומים, יש לה איסוף זבל על ידי סימון ומחיקה ולא רק על ידי מניית התייחסות.
תוכן עניינים |
היסטוריה [עריכה]
לואה החלה את דרכה בשנת 1993 בפרויקטים שנכתבו באוניברסיטה הקתולית בריו עבור חברת הנפט הברזילאית פטרוברז. היו צריכים לתאר בקלות נתונים מסוגים מגוונים. התברר להם שהדרך היעילה ביותר לייצג אותם היא על ידי שפת תכנות ייעודית. לפני שכתבו את Lua כתבו גם שפה יותר מוגבלת בשם Sol (ראשי תיבות באנגלית של Simple Object Language, אך גם המילה "שמש" בפורטוגזית).
תחביר [עריכה]
מבני הנתונים הבסיסיים בלואה הם:
- משתנים פשוטים, שיכולים להיות מספרים או מחרוזות
- מערך אסוציאטיבי (מילון) שיכול לתפקד גם כרשימה, בעת הצורך.
names = {"List", "of", "Names"} nums = {1, 2, 3} dict = {carrot = "orange", cucumber = "green"}
תוכניות לדוגמה: [עריכה]
הדפסת ההודעה Hello world:
print "Hello world"
הערה בת שורה אחת מתחילה בזוג מקפים. הערה בת שורות אחדות מתחילה בזוג מקפים ואחריהם זוג סוגריים מרובעים, ומסתיימת בזוג סוגריים מרובעים (כך נכתבת הערה גם ב-SQL)
-- A comment in Lua starts with a double-hyphen and runs to the end of the line. --[[ Multi-line strings & comments are adorned with double square brackets. ]]
for i = 1,5 do -- Statements end
function factorial(n) if n == 0 then return 1 else return n * factorial(n - 1) end end
יצירת משמעות חלופית למילת מפתח בשפה:
do local oldprint = print -- Store current print function as oldprint function print(s) -- Redefine print function if s == "foo" then oldprint("bar") else oldprint(s) end end end