V هي لغة برمجة جديدة ومفتوحة المصدر ومكتوبة بشكل ثابت أنشأها Alexander Medvednikov. يعد V بأن يكون بسيطًا وسريعًا وآمنًا لإنشاء برامج قابلة للصيانة باستخدام. أثرت عدة لغات على تصميم شركة V بما في ذلك Oberon و Swift و Kotlin و Python.
تعرف على معلومات حول V ومميزاته وكيفية مقارنته باللغات الأخرى.
أشياء يمكنك القيام بها مع V
يتمتع V بالكثير من القوة ويمكنك استخدامه في أي صناعة تقريبًا ، بما في ذلك برمجة النظام وتطوير الويب وتطوير الألعاب. اللغة واضحة وسريعة وآمنة.
تقدم V مجموعة كبيرة من مكتبات الرسومات القوية لتطوير الألعاب. هذه تعتمد على GDI + / Cocoa Drawing و OpenGL لتطبيقات 2D / 3D أكثر تعقيدًا.
يحتوي V على وحدة نمطية لواجهة المستخدم التي تستخدم مجموعات أدوات واجهة المستخدم الرسومية الأصلية لتطبيقات الأجهزة المحمولة ، و WinAPI / GDI + لنظام التشغيل Windows ، و Cocoa لنظام التشغيل MacOS ، والرسم المخصص لنظام التشغيل Linux.
أسباب لمحاولة V
على الرغم من أن V لغة جديدة ، إلا أن هذه الفوائد تجعلها خيارًا شرعيًا.
بساطة
لإنشاء مشروعك ، ما عليك سوى تشغيل:
الخامس .
لست بحاجة إلى إعداد بيئة بناء ، أو إنشاء ملف makefile ، أو استيراد الرؤوس ، أو إعداد بيئة افتراضية. إذا كنت ترغب في تثبيت مكتبات جديدة عبر
vpm (مدير الحزم V) ، فقط قم بتشغيلv التثبيت <اسم_حزمة>
أمان
بشكل افتراضي ، يمتلك V:
- المتغيرات الثابتة
- الهياكل الثابتة
- الاختيار / النتيجة والتحقق من الأخطاء الإلزامية
- أنواع المجموع
- الأدوية
- وظائف غير قابلة للتغيير
و لا:
- لا شيء
- تظليل متغير
- سلوك غير محدد
- المتغيرات العالمية (يمكن تمكينها للتطبيقات منخفضة المستوى مثل النواة ، عبر العلم)
سرعة الترجمة
بعض لغات البرمجة أسرع من غيرها من حيث التنفيذ أو التجميع. V هو أداء مثل C. تتميز بأوقات تجميع تبلغ حوالي 110k موقع / ثانية مع خلفية C وحوالي 1 مليون موقع / ثانية مع خلفيات أصلية و tcc. يبتعد V أيضًا عن التخصيصات غير الضرورية لتوفير نهج تشفير بسيط خالٍ من التجريد.
إدارة الذاكرة
لا يستخدم V أداة تجميع القمامة ، مما يجعلها مختلفة عن لغات مثل Go و Java. بدلاً من ذلك ، يدير V الذاكرة في وقت الترجمة ، ولكنه يعمل فقط في المواقف الأساسية. تحتاج إلى إدارته يدويًا للحالات الأكثر تعقيدًا.
التنسيق لاتساق نمط التعليمات البرمجية
يمكنك استخدام ال vfmt المنسق لتنسيق كود V الخاص بك وتحسين قابليته للقراءة عن طريق تشغيل:
الخامس fmt -w <your_filename>.الخامس
رسائل خطأ ودية
رسائل خطأ V مفصلة وغنية بالمعلومات ومفيدة. الق نظرة على هذا المثال:
user.v:8:14: خطأ: "update_user" معامل "المستخدم" قابل للتغيير ، تحتاج إلى تقديمه "موت": `` update_user (mut user) ''
7 | المستخدم المتغير: = المستخدم {}
8 | update_user (المستخدم)
| ~~~~
9 | }
بمساعدة رسالة الخطأ ، يمكنك إصلاح هذا الرمز:
المستخدم المتغير: = المستخدم {}
update_user (المستخدم الآخر)
C ++ مقابل. Go vs. الخامس: مقارنة اللغات الثلاث
في هذه الأمثلة ، يمكنك أن ترى كيف يختلف كود C ++ و Go و V في حالات استخدام برمجة معينة.
مرحبا بالعالم
في C ++:
#تضمن <iostream>
intرئيسي(){
الأمراض المنقولة جنسيا:: cout <<"مرحبا بالعالم!"<< الأمراض المنقولة جنسيا:: endl ؛
}
في الذهاب:
حزمة رئيسي
يستورد "FMT"
func رئيسي(){
FMT. Println ("مرحبا بالعالم!")
}
في الخامس:
println ('مرحبا بالعالم!')
في هذا البرنامج الأساسي جدًا -طباعة النص "Hello World!"—يمكنك أن ترى أن V أبسط بكثير من C ++ أو Go. لا تحتاج إلى استيراد أو تضمين أي مكتبات لمثل هذا البرنامج المباشر.
تهيئة المتجهات
في C ++:
الأمراض المنقولة جنسيا:: ناقلات<int> الأرقام = {1 ، 2 ، 3 ، 4} ؛
في الذهاب:
الأرقام: = []int{1, 2, 3, 4}
في الخامس:
الأرقام: = [1، 2، 3، 4]
في حالة الاستخدام هذه ، يمكنك أن ترى أن V لا يزال ينتج رمزًا أنظف من الرمزين الآخرين. على عكس Go و نواقل C ++، لا يتطلب V متجهاته الاحتفاظ بقيم من نوع ثابت.
طباعة متجه
في C ++:
الأمراض المنقولة جنسيا:: نسخة (number.begin (), أعداد.نهاية(),
الأمراض المنقولة جنسيا:: ostream_iterator<int>(الأمراض المنقولة جنسياً:: cout ، ""));
std:: cout << std:: endl؛
في الذهاب:
FMT.Println(أعداد)
في الخامس:
println (أرقام)
يمكن لوظيفة println الخاصة بـ V طباعة متغير المتجه محليًا ، تمامًا مثل علبة Go ، على الرغم من أن الأخير يستخدم الحزمة fmt. توفر ملفات رأس C ++ iostream وظائف مماثلة. ومع ذلك ، ستظل بحاجة إلى الاهتمام بطباعة العناصر الفردية للمتجه بنفسك.
قراءة ملف
في C ++:
#تضمن
#تضمنintرئيسي(){
الأمراض المنقولة جنسيا::سلسلة المسار = "/ etc / hosts" ؛
الأمراض المنقولة جنسيا:: ifstream F(طريق);
الأمراض المنقولة جنسيا::سلسلة نص؛
تعيين النص (الأمراض المنقولة جنسيا:: istreambuf_iterator <شار> (و) ، {}) ؛
إذا (!F)
الأمراض المنقولة جنسيا::سير << "خطأ في القراءة من الملف" << الأمراض المنقولة جنسيا::إندل;
}
في الذهاب:
حزمة رئيسي
يستورد (
"io / ioutil"
"سجل"
)func رئيسي(){
المسار: = "/etc/hosts"
ب ، يخطئ: = ioutil. ReadFile (مسار)إذا أخطأت! = لا شيء {
سجل.Println(يخطئ)
إرجاع
}
نص: = سلسلة (ب)
}
في الخامس:
يستورد نظام التشغيل
المسار: = "/etc/hosts"
النص: = os.read_file (المسار) أو {
eprintln (يخطئ)
إرجاع
}
لقراءة الملف ، يستخدم V وحدة نظام التشغيل لتوفير وظائف مشتركة مستقلة لنظام التشغيل / النظام الأساسي. هذه تتعامل مع مهام مثل الوصول إلى وسيطات سطر الأوامر وقراءة الملفات ومعالجة العمليات. في هذه الحالة ، نريد قراءة ملف بتنسيق طريق وإرجاع المحتويات ، لذلك ستستخدم ملف read_file (مسار) وظيفة. يعرض read_file خطأ إذا لم يكن هناك محتوى موجود في المعطى طريق. إذا كنت تريد معرفة المزيد عن وحدات أخرى من V.، قد ترغب في التحقق من وثائقهم.
هل أنت جاهز لتجربة V؟
V هي لغة برمجة جديدة لا تزال في مراحلها الأولى من التطوير. ومع ذلك ، فهو يتمتع بقدر كبير من القوة وسريع وآمن وسهل وقابل للصيانة.
يحتوي V على كود أنظف من C ++ و Go. يشير هذا إلى أن V يمكن أن يساعد المبرمجين في الالتزام بأحد مبادئ البرمجة الأساسية. إذن ، هل أنت مستعد لتجربة V؟