לואה (שפת תכנות)

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

לואה (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:

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

קישורים חיצוניים[עריכת קוד מקור | עריכה]