زبان برنامه نویسی V متن باز

ترجمه شده در دسته کامپایلر باز برای زبان V. V یک زبان کامپایل شده توسط ماشین تایپ ایستا است که بر سهولت نگهداری توسعه و کامپایل بسیار سریع تمرکز دارد. کد کامپایلر، کتابخانه ها و ابزارهای مرتبط باز کن تحت مجوز MIT

سینتکس V بسیار شبیه Go است و برخی از ساختارها را از Oberon، Rust و Swift به عاریت گرفته است. زبان تا حد امکان ساده شده است و به گفته سازنده، 30 دقیقه مطالعه برای یادگیری اصول کافی است. مستندات. در عین حال، این زبان کاملاً قدرتمند باقی می ماند و می توان از آن برای انجام همان وظایفی که هنگام استفاده از زبان های برنامه نویسی دیگر استفاده می شود استفاده کرد (به عنوان مثال، کتابخانه ها برای گرافیک های 2D/3D، ایجاد رابط کاربری گرافیکی و برنامه های کاربردی وب در دسترس هستند).

ایجاد یک زبان جدید به دلیل تمایل به دستیابی به ترکیبی از زبان Go در سادگی نحو، سرعت کامپایل، سهولت موازی سازی عملیات، قابلیت حمل و نگهداری کد با عملکرد C/C++، امنیت Rust و تولید کد ماشین در مرحله کامپایل Zig. همچنین می‌خواستم یک کامپایلر فشرده و سریع دریافت کنم که بتواند بدون وابستگی‌های خارجی کار کند، از دامنه جهانی (متغیرهای جهانی) خلاص شود و توانایی بارگذاری مجدد کد را فراهم کند.

در مقایسه با C++، زبان جدید به طور قابل توجهی ساده‌تر است، سرعت کامپایل سریع‌تری را ارائه می‌کند (تا 400 بار)، تکنیک‌های برنامه‌نویسی ایمن را تمرین می‌کند، مشکلی با رفتار تعریف‌نشده ندارد، و ابزارهای داخلی برای موازی کردن عملیات ارائه می‌کند. در مقایسه با پایتون، V سریع‌تر، ساده‌تر، ایمن‌تر و قابل نگهداری‌تر است. در مقایسه با Go، V هیچ متغیر سراسری، تهی ندارد، همه مقادیر متغیر همیشه باید تعریف شوند، همه اشیا به طور پیش‌فرض غیرقابل تغییر هستند، فقط یک نوع انتساب پشتیبانی می‌شود ("a := 0")، به طور قابل توجهی فشرده تر زمان اجرا و اندازه فایل های اجرایی به دست آمده، وجود قابلیت حمل مستقیم از C، عدم وجود جمع کننده زباله، سریال سازی سریع تر، توانایی درون یابی رشته ها ("println('$foo: $bar.baz')").

fn main() {
مناطق := ['بازی'، 'وب'، 'ابزار'، 'علم'، 'سیستم'، 'GUI'، 'موبایل'] a := 10
اگر درست باشد {
به := 20
}
برای منطقه در مناطق {
println ('سلام، توسعه دهندگان $area!')
}
}

ویژگی های پروژه:

  • کامپایلر فشرده و سریع که همراه با کتابخانه استاندارد حدود 400 کیلوبایت را اشغال می کند. سرعت کامپایل بالا از طریق تولید مستقیم کد ماشین و مدولار بودن به دست می آید. سرعت کامپایل تقریباً 1.2 میلیون خط کد در ثانیه روی یک هسته CPU است (توجه شده است که در حین کار V می تواند از C استفاده کند ، سپس سرعت به 100 هزار خط در ثانیه کاهش می یابد). خود مونتاژ کامپایلر که به زبان V نیز نوشته شده است (نسخه مرجع در Go نیز وجود دارد) تقریباً 0.4 ثانیه طول می کشد. تا پایان سال، انتظار می‌رود کار بر روی بهینه‌سازی‌های اضافی تکمیل شود که زمان ساخت کامپایلر را به 0.15 ثانیه کاهش می‌دهد. با قضاوت بر اساس آزمایشات انجام شده توسط توسعه دهنده، خود مونتاژ Go به 512 مگابایت فضای دیسک نیاز دارد و در یک دقیقه و نیم اجرا می شود، Rust به 30 گیگابایت و 45 دقیقه، GCC - 8 گیگابایت و 50 دقیقه، Clang - 90 گیگابایت و 25 دقیقه،
    سوئیفت - 70 گیگابایت و 90 دقیقه؛

  • برنامه ها در فایل های اجرایی بدون وابستگی خارجی کامپایل می شوند. اندازه فایل اجرایی یک سرور http ساده پس از مونتاژ تنها 65 کیلوبایت است.
  • عملکرد برنامه های کامپایل شده در سطح اسمبلی برنامه های C است.
  • توانایی تعامل یکپارچه با کد C، بدون هزینه اضافی. توابع در زبان C را می توان از کد در زبان V فراخوانی کرد و بالعکس، کد در زبان V را می توان به هر زبانی که با C سازگار باشد فراخوانی کرد.
  • پشتیبانی از ترجمه پروژه های C/C++ به یک نمایش در زبان V. یک تجزیه کننده از Clang برای ترجمه استفاده می شود. هنوز همه ویژگی‌های استاندارد C پشتیبانی نمی‌شوند، اما قابلیت‌های فعلی مترجم در حال حاضر برای ترجمه به زبان بازی V DOOM. مترجم C++ هنوز در مراحل اولیه توسعه است.
  • پشتیبانی از سریال سازی داخلی، بدون اینکه به زمان اجرا گره بخورد.
  • به حداقل رساندن عملیات تخصیص حافظه؛
  • تضمین ایمنی: بدون NULL، متغیرهای سراسری، مقادیر تعریف نشده و تعریف مجدد متغیر. بررسی بیش از حد بافر داخلی. پشتیبانی از توابع عمومی (Generic). اشیاء و ساختارهایی که به طور پیش فرض قابل تغییر نیستند.
  • امکان بارگذاری مجدد کد "داغ" (انعکاس تغییرات در کد در حال پرواز بدون کامپایل مجدد).
  • ابزارهایی برای اطمینان از Multithreading. درست مانند زبان Go، ساختاری مانند run foo()" برای شروع یک رشته جدید اجرا استفاده می شود (شبیه به "go foo()"). در آینده، پشتیبانی از گوروتین‌ها و زمان‌بندی رشته برنامه‌ریزی شده است.
  • پشتیبانی از سیستم عامل های Windows، macOS، Linux، *BSD. قرار است تا پایان سال پشتیبانی از اندروید و iOS اضافه شود.
  • مدیریت حافظه در زمان کامپایل (مانند Rust)، بدون استفاده از زباله گرد.
  • در دسترس بودن یک جعبه ابزار چند پلتفرمی برای خروجی گرافیک، با استفاده از GDI+/Cocoa و OpenGL برای رندر (پشتیبانی از DirectX، Vulkan و APIهای فلزی برنامه ریزی شده است). ابزارهایی برای کار با اشیاء سه بعدی، انیمیشن اسکلتی و کنترل دوربین وجود دارد.
  • در دسترس بودن یک کتابخانه برای تولید رابط های گرافیکی با عناصر طراحی بومی هر سیستم عامل. ویندوز از WinAPI/GDI+، macOS از کاکائو و لینوکس از مجموعه ویجت‌های خاص خود استفاده می‌کند. کتابخانه در حال حاضر در توسعه استفاده می شود ولت - مشتری برای Slack، Skype، Gmail، Twitter و Facebook؛

    این طرح ایجاد یک برنامه طراحی رابط کاربری شبیه به دلفی، ارائه یک API اعلامی مشابه SwiftUI و React Native و ارائه پشتیبانی برای ایجاد برنامه های کاربردی تلفن همراه برای iOS و Android است.

    زبان برنامه نویسی V متن باز

  • در دسترس بودن یک چارچوب وب داخلی، که برای ایجاد یک وب سایت، انجمن و وبلاگ برای توسعه دهندگان پروژه استفاده می شود. پیش کامپایل قالب های HTML بدون پردازش آنها در هر درخواست پشتیبانی می شود.
  • پشتیبانی از کامپایل متقابل. برای ساخت فایل اجرایی برای ویندوز، فقط “v -os windows” و برای لینوکس – “v -os linux” را اجرا کنید (پشتیبانی از کامپایل متقابل برای macOS بعدا انتظار می رود). کامپایل متقابل نیز برای برنامه های گرافیکی کار می کند.
  • مدیر وابستگی داخلی، مدیر بسته و ابزارهای ساخت. برای ساختن برنامه، فقط "v." را بدون استفاده از make یا ابزارهای خارجی اجرا کنید. برای نصب کتابخانه های اضافی، به عنوان مثال، "v get sqlite" را اجرا کنید.
  • در دسترس بودن افزونه ها برای توسعه به زبان V در ویرایشگرها کد VS и نیرو.

توسعه درک شده جامعه با شک و تردیداز آنجایی که کد منتشر شده نشان می دهد که هنوز همه قابلیت های اعلام شده اجرا نشده است و برای اجرای همه طرح ها نیاز به کار بسیار زیادی است.
علاوه بر این، در ابتدا مخزن داشت ارسال شده کد شکسته که در مونتاژ و اجرا مشکل دارد. فرض بر این است که نویسنده هنوز به مرحله ای نرسیده است که آنها شروع به توجه کنند قانون پارتوکه بر اساس آن 20 درصد تلاش 80 درصد نتیجه و 80 درصد باقی مانده تلاش تنها 20 درصد نتیجه را ایجاد می کند.

در همین حال، ردیاب اشکال Project V حدود 10 پست از آن حذف شده است تظاهرات به عنوان مثال، کد با کیفیت پایین، استفاده از C-inserts و استفاده در کتابخانه توابع برای حذف دایرکتوری دستور rm از طریق فراخوانی os.system ("rm -rf $path") را نشان می دهد. نویسنده پروژه گفت:که او فقط پیام ها را حذف کرد، منتشر شده ترول (با تغییراتی که صحت انتقاد را تایید می کند، ماند в تاریخچه ویرایش).

منبع: opennet.ru

اضافه کردن نظر