وی پروگرامنگ لینگویج اوپن سورس

ترجمہ شدہ کے لیے اوپن کمپائلر کے زمرے میں زبان V. V ایک مستحکم طور پر ٹائپ شدہ مشین سے مرتب کردہ زبان ہے جو ترقی کو برقرار رکھنے میں آسان اور مرتب کرنے میں بہت تیز بنانے پر مرکوز ہے۔ کمپائلر کوڈ، لائبریریاں اور متعلقہ ٹولز کھلا ہوا ہے MIT لائسنس کے تحت.

V کا نحو گو سے بہت ملتا جلتا ہے، اوبرون، رسٹ اور سوئفٹ سے کچھ تعمیرات ادھار لیتا ہے۔ زبان کو ہر ممکن حد تک آسان بنایا گیا ہے اور، ڈویلپر کے مطابق، بنیادی باتیں سیکھنے کے لیے 30 منٹ کا مطالعہ کافی ہے۔ دستاویزات. ایک ہی وقت میں، زبان کافی طاقتور رہتی ہے اور اسی کام کو انجام دینے کے لیے استعمال کی جا سکتی ہے جیسے کہ دوسری پروگرامنگ زبانوں کا استعمال کرتے ہوئے (مثال کے طور پر، لائبریریاں 2D/3D گرافکس کے لیے دستیاب ہیں، GUIs اور ویب ایپلیکیشنز بنانا)۔

ایک نئی زبان کی تخلیق گو لینگوئج کی نحو کی سادگی، تالیف کی رفتار، آپریشنز کے متوازی ہونے میں آسانی، C/C++ کی کارکردگی کے ساتھ کوڈ کی نقل پذیری اور برقرار رکھنے، زنگ کی حفاظت اور Zig تالیف کے مرحلے پر مشین کوڈ کی نسل۔ میں ایک کمپیکٹ اور تیز کمپائلر بھی حاصل کرنا چاہتا تھا جو بیرونی انحصار کے بغیر کام کر سکے، عالمی دائرہ کار (عالمی متغیرات) سے چھٹکارا حاصل کر سکے اور کوڈ کو "ہاٹ" دوبارہ لوڈ کرنے کی صلاحیت فراہم کر سکے۔

C++ کے مقابلے میں، نئی زبان نمایاں طور پر آسان ہے، تیز تر تالیف کی رفتار فراہم کرتی ہے (400 گنا تک)، محفوظ پروگرامنگ کی تکنیکوں پر عمل کرتی ہے، غیر متعینہ رویے کے ساتھ مسائل سے پاک ہے، اور متوازی کارروائیوں کے لیے بلٹ ان ٹولز مہیا کرتی ہے۔ Python کے مقابلے میں، V تیز، آسان، محفوظ، اور زیادہ برقرار رکھنے کے قابل ہے۔ Go کے مقابلے میں، V میں کوئی عالمی متغیر نہیں ہے، کوئی null نہیں ہے، تمام متغیر اقدار کو ہمیشہ بیان کیا جانا چاہیے، تمام اشیاء بطور ڈیفالٹ ناقابل تغیر ہوتی ہیں، صرف ایک قسم کی اسائنمنٹ سپورٹ ہوتی ہے ("a := 0")، ایک نمایاں طور پر زیادہ کمپیکٹ رن ٹائم اور نتیجے میں آنے والی فائلوں کا سائز، C سے براہ راست پورٹیبلٹی کی موجودگی، کوڑا اٹھانے والے کی غیر موجودگی، تیز سیریلائزیشن، تاروں کو انٹرپولیٹ کرنے کی صلاحیت ("println('$foo: $bar.baz')")۔

fn main() {
علاقوں := ['گیم'، 'ویب'، 'ٹولز'، 'سائنس'، 'سسٹم'، 'جی یو آئی'، 'موبائل'] a := 10
اگر سچ ہے {
سے := 20
}
علاقوں کے لیے {
println('ہیلو، $علاقہ ڈویلپرز!')
}
}

پروجیکٹ کی خصوصیات:

  • کومپیکٹ اور تیز کمپائلر، جو معیاری لائبریری کے ساتھ مل کر تقریباً 400 KB لیتا ہے۔ اعلی تالیف کی رفتار مشین کوڈ اور ماڈیولریٹی کی براہ راست نسل کے ذریعے حاصل کی جاتی ہے۔ ایک سی پی یو کور پر تالیف کی رفتار تقریباً 1.2 ملین لائنز کوڈ فی سیکنڈ ہے (یہ نوٹ کیا جاتا ہے کہ آپریشن کے دوران V C استعمال کر سکتا ہے، پھر رفتار 100 ہزار لائنز فی سیکنڈ تک گر جاتی ہے)۔ کمپائلر کی خود اسمبلی، جو V زبان میں بھی لکھی جاتی ہے (گو میں ایک حوالہ ورژن بھی ہے)، تقریباً 0.4 سیکنڈ کا وقت لیتا ہے۔ سال کے آخر تک، اضافی اصلاح پر کام مکمل ہونے کی توقع ہے، جس سے کمپائلر کی تعمیر کا وقت 0.15 سیکنڈ تک کم ہو جائے گا۔ ڈویلپر کی طرف سے کئے گئے ٹیسٹوں کو دیکھتے ہوئے، گو کی خود اسمبلی کو 512 MB ڈسک کی جگہ درکار ہوتی ہے اور یہ ڈیڑھ منٹ میں چلتا ہے، رسٹ کے لیے 30 GB اور 45 منٹ، GCC - 8 GB اور 50 منٹ، Clang - 90 GB اور 25 منٹ،
    سوئفٹ - 70 جی بی اور 90 منٹ؛

  • پروگراموں کو بیرونی انحصار کے بغیر قابل عمل فائلوں میں مرتب کیا جاتا ہے۔ اسمبلی کے بعد ایک سادہ HTTP سرور کی قابل عمل فائل کا سائز صرف 65 KB ہے۔
  • مرتب کردہ ایپلی کیشنز کی کارکردگی C پروگراموں کی اسمبلیوں کی سطح پر ہے۔
  • بغیر کسی اضافی اوور ہیڈ کے C کوڈ کے ساتھ بغیر کسی رکاوٹ کے تعامل کرنے کی صلاحیت۔ C زبان میں افعال کو V زبان میں کوڈ سے بلایا جا سکتا ہے، اور اس کے برعکس، V زبان میں کوڈ کو C کے ساتھ مطابقت رکھنے والی کسی بھی زبان میں بلایا جا سکتا ہے۔
  • C/C++ پروجیکٹس کو V زبان میں نمائندگی میں ترجمہ کرنے کے لیے معاونت۔ ترجمے کے لیے Clang سے ایک پارسر استعمال کیا جاتا ہے۔ C معیار کی تمام خصوصیات ابھی تک معاون نہیں ہیں، لیکن مترجم کی موجودہ صلاحیتیں پہلے سے ہی کافی ہیں ترجمہ وی گیم ڈوم کی زبان میں۔ C++ مترجم اب بھی ترقی کے ابتدائی مرحلے میں ہے۔
  • بلٹ ان سیریلائزیشن سپورٹ، رن ٹائم سے منسلک کیے بغیر؛
  • میموری مختص کی کارروائیوں کو کم سے کم کرنا؛
  • حفاظت کو یقینی بنانا: کوئی NULL، عالمی متغیر، غیر متعینہ اقدار اور متغیر کی نئی تعریف۔ بلٹ ان بفر اووررن چیکنگ۔ عام افعال (جنرک) کے لیے معاونت۔ آبجیکٹ اور ڈھانچے جو پہلے سے طے شدہ طور پر تبدیل نہیں ہوسکتے ہیں۔
  • "ہاٹ" کوڈ کو دوبارہ لوڈ کرنے کا امکان (دوبارہ مرتب کیے بغیر فلائی پر کوڈ میں تبدیلیوں کی عکاسی کرتا ہے)؛
  • ملٹی تھریڈنگ کو یقینی بنانے کے لیے ٹولز۔ گو لینگویج کی طرح، "رن foo()" جیسی تعمیر کا استعمال ایک نیا تھریڈ شروع کرنے کے لیے کیا جاتا ہے ("go foo()" کی طرح)۔ مستقبل میں، گوروٹینز اور تھریڈ شیڈیولر کے لیے سپورٹ کا منصوبہ بنایا گیا ہے۔
  • ونڈوز، میکوس، لینکس، *بی ایس ڈی آپریٹنگ سسٹم کے لیے سپورٹ۔ سال کے آخر تک اینڈرائیڈ اور آئی او ایس کے لیے سپورٹ شامل کرنے کا منصوبہ ہے۔
  • کوڑا اٹھانے والے کا استعمال کیے بغیر، کمپائل کے وقت میموری کا انتظام (جیسا کہ زنگ میں ہوتا ہے)؛
  • رینڈرنگ کے لیے GDI+/Cocoa اور OpenGL کا استعمال کرتے ہوئے گرافکس آؤٹ پٹ کے لیے ملٹی پلیٹ فارم ٹول کٹ کی دستیابی (DirectX، Vulkan اور Metal APIs کے لیے سپورٹ کا منصوبہ بنایا گیا ہے)۔ 3D اشیاء، کنکال حرکت پذیری اور کیمرہ کنٹرول کے ساتھ کام کرنے کے لیے ٹولز موجود ہیں۔
  • ہر OS کے مقامی ڈیزائن عناصر کے ساتھ گرافیکل انٹرفیس بنانے کے لیے لائبریری کی دستیابی۔ ونڈوز WinAPI/GDI+ استعمال کرتا ہے، macOS Cocoa استعمال کرتا ہے، اور لینکس اپنے ویجٹ کا اپنا سیٹ استعمال کرتا ہے۔ لائبریری پہلے ہی ترقی میں استعمال ہو چکی ہے۔ وولٹ - سلیک، اسکائپ، جی میل، ٹویٹر اور فیس بک کے لیے کلائنٹ؛

    منصوبہ یہ ہے کہ ڈیلفی جیسی انٹرفیس ڈیزائن ایپلی کیشن بنائیں، SwiftUI اور React Native کی طرح ایک اعلانیہ API فراہم کریں، اور iOS اور Android کے لیے موبائل ایپلی کیشنز بنانے کے لیے تعاون فراہم کریں۔

    وی پروگرامنگ لینگویج اوپن سورس

  • ایک بلٹ ان ویب فریم ورک کی دستیابی، جو پروجیکٹ ڈویلپرز کے لیے ویب سائٹ، فورم اور بلاگ بنانے کے لیے استعمال ہوتی ہے۔ ایچ ٹی ایم ایل ٹیمپلیٹس کی پری کمپائلیشن کی حمایت کی جاتی ہے، ہر درخواست پر ان پر کارروائی کیے بغیر۔
  • کراس تالیف کی حمایت. ونڈوز کے لیے قابل عمل فائل بنانے کے لیے، صرف "v -os windows" چلائیں، اور Linux کے لیے - "v -os linux" (macOS کے لیے کراس کمپائلیشن سپورٹ بعد میں متوقع ہے)۔ کراس تالیف گرافیکل ایپلی کیشنز کے لیے بھی کام کرتی ہے۔
  • بلٹ ان انحصار مینیجر، پیکج مینیجر اور بلٹ ٹولز۔ پروگرام بنانے کے لیے، میک یا بیرونی یوٹیلیٹیز استعمال کیے بغیر، صرف "v" چلائیں۔ اضافی لائبریریاں انسٹال کرنے کے لیے، بس چلائیں، مثال کے طور پر، "v get sqlite"؛
  • ایڈیٹرز میں V زبان میں ترقی کے لیے پلگ انز کی دستیابی۔ وی ایس کوڈ и طاقت.

ترقی سمجھا کے ساتھ کمیونٹی شکوک و شبہات، چونکہ شائع شدہ کوڈ سے پتہ چلتا ہے کہ تمام اعلان کردہ صلاحیتوں کو ابھی تک نافذ نہیں کیا گیا ہے اور تمام منصوبوں کو نافذ کرنے کے لئے بہت زیادہ کام کی ضرورت ہے۔
اس کے علاوہ، ابتدائی طور پر ذخیرہ تھا پوسٹ کیا گیا ٹوٹا ہوا کوڈ جس میں اسمبلی اور عمل درآمد میں دشواری ہے۔ خیال کیا جاتا ہے کہ مصنف ابھی اس مرحلے پر نہیں پہنچے ہیں جس پر وہ نظر آنے لگتے ہیں۔ پاریٹو کا قانونجس کے مطابق 20% کوششیں 80% رزلٹ دیتی ہیں، اور بقیہ 80% کوشش صرف 20% نتیجہ دیتی ہے۔

دریں اثنا، پروجیکٹ V کے بگ ٹریکر سے تقریباً 10 پوسٹیں ہٹا دی گئی ہیں۔ مظاہرہ کم معیار کا کوڈ، مثال کے طور پر، کال os.system("rm -rf $path") کے ذریعے rm کمانڈ کی ڈائرکٹری کو حذف کرنے کے لیے C-inserts کے استعمال اور فنکشنز کی لائبریری میں استعمال کی نشاندہی کرتا ہے۔ پروجیکٹ کے مصنف انہوں نے کہا کہکہ اس نے صرف پیغامات کو حذف کیا، شائع ٹرول (تنقید کی درستگی کی تصدیق کرنے والی تبدیلیوں کے ساتھ، ٹھہر گیا в تاریخ میں ترمیم کریں).

ماخذ: opennet.ru

نیا تبصرہ شامل کریں