فایل NUT چیست؟
فرمت فایل NUT متعلق به زبان برنامه نویسی است که به Squirrel معروف است. این یک زبان برنامه نویسی شی گرا، سطح بالا و ضروری است که بیشتر در سیستم های تعبیه شده و بازی های ویدیویی استفاده می شود.
زبان squirrel یک زبان برنامه نویسی سبک در نظر گرفته می شود که به راحتی می توان آن را با توجه به اندازه و پهنای باند تنظیم کرد. این شامل مزیت شمارش خودکار مراجع و مدیریت زباله در حافظه است.
نحو زبان squirrel توسعه دهندگان را جذب می کند زیرا C مانند است و شامل ویژگی زبان اسکریپت است. اما با این حال، در مقایسه با سایر زبان های برنامه نویسی محبوب تر، مزایای بسیار کمتری برای این منظور دارد.
تاریخچه مختصر
It was designed by Alberto Demichelis in 2003. با این حال، یک نسخه پایدار از این زبان در سال 2016 منتشر شد. این زبان تحت مجوز zlib/ libpng طراحی شده است. در سال 2010 مجوز تغییر و به MIT منتقل شد. این زبان به عنوان نسخه الهام گرفته شده از LUA (زبان برنامه نویسی) در نظر گرفته می شود. لیستی از پیشنهادات برای زبان قبلی در وب سایت طراحی شده توسط آلبرتو وجود دارد تا آن را سودمندتر کند.
مشخصات فنی
ویژگی و مشخصات زبان سنجاب چندگانه است. این امکان تایپ پویا، ویژگی تفویض اختیار، چندین کاربرد کلاس ها و رابط ها را فراهم می کند. نحو این زبان شباهتی با نحو زبان C دارد. برنامه هایی مانند Enduro/X (یک سرور برنامه کلاستر) از این زبان استفاده می کنند. همانطور که Squirrel برای بازی های ویدیویی نیز استفاده می شود، برخی از آنها OpenTTD، GTA IV و غیره هستند.
The stable release of the language is 3.0.7. جعبه ابزار معروف به MirthKit از زبان برنامه نویسی Squirrel برای ارائه یک منبع باز و کراس پلتفرم برای بازی های دو بعدی استفاده می کند. ماهیت این زبان پویا است و بیشتر ویژگیهای آن شبیه به Python، LUA و غیره است. همچنین شامل پیادهسازی VM مبتنی بر ثبت است. عملکرد سنجاب در مقایسه با LUA کندتر است.
همچنین یک نوع فایل پسوند .nut وجود دارد که به همین دلیل است که باید به اندازه فایل نگاه کنید تا بفهمید کدام فایل NUT را دارید. فایلهای NUT اسکریپت Squirrel عمدتاً کوچکتر از 1 مگابایت هستند در حالی که فایلهای NUT ویدیویی معمولاً بزرگتر از 1 مگابایت هستند.
فرمت فایل 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();