לואה (שפת תכנות) – הבדלי גרסאות
תוכן שנמחק תוכן שנוסף
דויד פון תמר (שיחה | תרומות) מ שינוי התבנית לעבודה מתמשכת כדי לאפשר שינויים של ויקיפדים אחרים. |
דויד פון תמר (שיחה | תרומות) ←מימושים עיקריים: הרחבה, עריכה |
||
שורה 48:
* משתנים פשוטים, שיכולים להיות מספרים או מחרוזות.
* מערך אסוציאטיבי ([[מילון (מבנה נתונים)|מילון]]) שיכול לתפקד גם כרשימה, בעת הצורך.
* מבני נתונים מורכבים יותר מתוארים כקינון מערכים בתוך מערכים במידת הצורך.
<syntaxhighlight lang="lua">
שורה 210:
== מימושים עיקריים ==
מהיותה שפה זעירה ו[[קוד פתוח|חופשית]] שנועדה ל[[מערכת משובצת מחשב|שיבוץ]], ל־Lua קיימים
מצב זה העמיד אתגר ל[[קוד פתוח|קהילת החופשית]] של Lua ולמיזם מערכת ניהול החבילות שלה ([[#LuaRocks|LuaRocks]]) לנסות ליצור שיתוף פעולה ותיאום בין החבילות הזמינות שהציעו חברי הקהילה מול הגרסאות השונות של השפה שחלו במימושים המועדפים עליהם.<ref>{{קישור כללי|כתובת=https://realmensch.org/2016/05/28/goodbye-lua/|הכותב=Tim Mensch|כותרת=Fragmentation of Lua|אתר=RealMensch|תאריך=|תאריך_וידוא=2019-02-28|ציטוט=The major breaking changes in Lua in 5.3 seem to be fragmenting the already sparse Lua library ecosystem. Anyone who creates a library needs to now support LuaJIT (a 5.1/5.2 hybrid)}}</ref>
בסביבות [[2015]] הקהילה
==== Lua (PUC Rio) ====
זהו המימוש המרכזי והנפוץ ביותר של Lua ונהוג לעתים לכנות אותו ''PUC Lua''. הוא מפותח ב[[האוניברסיטה הקתולית (ריו דה ז'ניירו)|אוניברסיטה הקתולית]] (PUC Rio) שב[[ריו דה ז'ניירו]] ב[[ברזיל]] מאז 1993 ומופץ תחת [[רישיון MIT]].<ref name=":1" /> PUC Lua הוא [[מפרש (תוכנה)|מפרש]] זעיר ו[[מערכת טיפוסים#טיפוסיות דינמית|דינמי]] הכתוב ב[[C (שפת תכנות)|שפת C]]<ref name=":0" />, ומצטיין בצריכה חסכונית של [[זיכרון גישה אקראית|זכרון]] וכוח [[מעבד|עיבוד]] למרות ביצועיו המעולים ביחס לשפות מפורשות אחרות.<ref>{{קישור כללי|כתובת=https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/lua-python3.html|כותרת=Lua vs Python 3 - Which programs are faster? {{!}} Computer Language Benchmarks Game|אתר=benchmarksgame-team.pages.debian.net|תאריך_וידוא=2019-02-28}}</ref>
PUC Lua ממיר קוד מקור של Lua ל־[[bytecode]] הסטנדרטי של השפה תוך כדי שהקוד עובר בדיקות ראשוניות כגון חוקיות תחביר לפני הריצה שלו. ניתן לייצא את ה־bytecode שנוצר לתוך קבצים מתוך הקוד בעזרת ה[[שגרה (תכנות)|פונקציה]] <code>()string.dump</code> או מחוץ לקוד בעזרת הפקודה <code>luac</code> [[מדמה מסוף|במסוף]].<ref>{{קישור כללי|כתובת=https://www.lua.org/manual/5.2/luac.html|כותרת=luac man page|אתר=www.lua.org|תאריך_וידוא=2019-02-28}}</ref>
==== LuaJIT ====
LuaJIT הוא מימוש המכוון לביצועים גבוהים מאוד עם Lua בעזרת [[מהדר|הידור]] תוך כדי [[זמן ריצה (תוכנה)|זמן ריצה]] (''Just In Time compilation''), [[מפרש (תוכנה)|מפרש]] שחלקים ממנו כתובים ב[[שפת סף]], וממשק FFI (''Foreign Function Interface'') חדש לתיווך בין Lua ופונקציות ומבני נתונים הכתובים ב[[C (שפת תכנות)|שפת C]] בצורה טבעית מבלי לגרוע בביצועים של המפרש.
בנוסף למהדר, גם המפרש של LuaJIT הוא מהיר בהרבה מהמפרש הסטנדרטי של PUC Lua אפילו אם המהדר אינו מופעל כלל. מייק פול פיתח את המפרש של LuaJIT באופן עצמאי מבלי לפצל את המפרש הסטנדרטי של PUC Lua.
LuaJIT מעודדת את המתכנת להיעזר ב[[שגרה (תכנות)|פונקציות]] ו[[ספרייה (תכנות)|ספריות]] הכתובות בשפת C במקום להיעזר בספריות [[צד שלישי]] הכתובת ב־Lua. ממשק ה־FFI של LuaJIT מאפשר גישה ושימוש טבעי עם ספריות, [[מבנה נתונים|מבני נתונים]] ופונקציות מספריות בשפת C בלי לגרוע בביצועים שלה וגם מבלי צורך להיעזר ב־Lua C API כפי שדרוש במימוש הסטנדרטי של PUC Lua.
הביצועים של LuaJIT לעתים קרובות מהירים משל PUC Lua 5.1 פי כמה עשרות פעמים.<ref>{{קישור כללי|כתובת=http://luajit.org/performance_x86.html|כותרת=Performance: x86/x64|אתר=luajit.org|תאריך_וידוא=2019-02-28}}</ref> מה שהפך את המימוש לאטרקטיבי עבור מפתחים שנשענים על [[גרפיקה ממוחשבת|ספריות גרפיות]], [[יישום רשת|יישומי רשת]], [[תוכנה כשירות|טכנולוגיות ענן]]<ref>{{קישור כללי|כתובת=https://blog.cloudflare.com/tag/lua/|כותרת=LUA|אתר=The Cloudflare Blog|שפה=en|תאריך_וידוא=2019-02-28}}</ref>, וחברות תקשורת גדולות.<ref>{{קישור כללי|כתובת=http://luajit.org/sponsors.html|כותרת=LuaJIT Sponsorship Program|אתר=luajit.org|תאריך_וידוא=2019-02-28}}</ref>
==== eLua ====
שורה 234 ⟵ 242:
* [http://www.lua.org/ דף הבית של Lua]
* [http://www.lua.org/manual/ התיעוד הרשמי]
* [http://lua-users.org/wiki/LuaImplementations רשימת המימושים הידועים של Lua]
* [http://luajit.org/ דף הבית של LuaJIT]
* [https://github.com/lua/lua קוד המקור הרשמי של Lua]
== הערות שוליים ==
|