מהו קובץ NUT?
ה-NUT מתייחס לקובץ NUT Open Container Format. פורמט קובץ NUT זה שייך לשפת התכנות הידועה בשם Squirrel. זוהי שפת תכנות מונחה עצמים, ברמה גבוהה וחובה המשמשת בעיקר במערכות משובצות ומשחקי וידאו.
שפת הסנאי נחשבת לשפת סקריפטים קלת משקל הניתנת להתאמה בקלות לפי גודל ורוחב פס. זה כרוך ביתרון של ספירת הפניות אוטומטית וניהול אשפה בזיכרון.
התחביר של שפת הסנאי מושך את המפתחים מכיוון שהוא דמוי C וכרוך בתכונה של שפת סקריפטים. אבל עדיין, יש לו די פחות יתרונות בהשוואה לשפות תכנות פופולריות אחרות למטרה זו.
היסטוריה קצרה
הוא עוצב על ידי אלברטו דמישליס בשנת 2003. עם זאת, גרסה יציבה של שפה זו שוחררה בשנת 2016. היא תוכננה ברישיון zlib/libpng. בשנת 2010 שונה הרישיון והועבר ל-MIT. שפה זו נחשבת כגרסה בהשראת LUA (שפת תכנות). יש רשימה של הצעות לשפה הקודמת באתר שתוכנן על ידי אלברטו כדי להפוך אותה למועילה יותר.
מפרט טכני
התכונה והמפרטים של שפת הסנאי הם מרובים. הוא מספק את המתקן של הקלדה דינמית, נכס של האצלה, מספר שימושים במחלקות וממשקים. לתחביר של שפה זו יש דמיון עם התחביר של שפת C. יישומים כגון Enduro/X (שרת יישומי אשכול) משתמשים בשפה זו. מכיוון ש-Squirrel משמש גם למשחקי וידאו, חלקם הם OpenTTD, GTA IV וכו'.
המהדורה היציבה של השפה היא 3.0.7. ערכת כלים הידועה בשם MirthKit משתמשת בשפת התכנות Squirrel כדי לספק קוד פתוח ופלטפורמה למשחקים דו מימדיים. טבעה של שפה זו הוא דינמי ורוב התכונות דומות ל-Python, LUA וכו’. זה כולל גם יישום של VM מבוסס רישום. הביצועים של Squirrel איטיים יותר בהשוואה ל-LUA.
יש גם סוג אחר של קובץ סיומת “.nut” וזו הסיבה שאתה צריך להסתכל על גודל הקובץ כדי לגלות איזה קובץ NUT יש לך. קבצי NUT של סקריפט סנאי הם לרוב קטנים מ-1 MB ואילו קבצי וידאו NUT הם בדרך כלל בגודל של יותר מ-1 MB.
דוגמה לפורמט קובץ NUT
function factorial(x)
{
if (x == 0) {
return 1;
}
else {
return x * factorial(x-1);
}
}
class BaseVector {
constructor(...)
{
if(vargv.len() >= 3) {
x = vargv[0];
y = vargv[1];
z = vargv[2];
}
}
x = 0;
y = 0;
z = 0;
}
class Vector3 extends BaseVector {
function _add(other)
{
if(other instanceof ::Vector3)
return ::Vector3(x+other.x,y+other.y,z+other.z);
else
throw "wrong parameter";
}
function Print()
{
::print(x+","+y+","+z+"\n");
}
}
local v0 = Vector3(1,2,3)
local v1 = Vector3(11,12,13)
local v2 = v0 + v1;
v2.Print();