V proqramlaşdırma dili açıq mənbə

Tərcümə edilmişdir üçün açıq kompilyator kateqoriyasına daxil edilir dil V. V, inkişafın saxlanmasını asanlaşdırmağa və çox sürətli tərtib etməyə yönəlmiş statik olaraq yazılmış maşın tərəfindən tərtib edilmiş bir dildir. Kompilyator kodu, kitabxanalar və əlaqəli alətlər açıq MIT lisenziyası altında.

V-nin sintaksisi Oberon, Rust və Swift-dən bəzi konstruksiyalar götürərək Go ilə çox oxşardır. Dil mümkün qədər sadələşdirilmişdir və tərtibatçının fikrincə, əsasları öyrənmək üçün 30 dəqiqəlik təhsil kifayətdir. sənədləşdirmə. Eyni zamanda, dil kifayət qədər güclü olaraq qalır və digər proqramlaşdırma dillərindən istifadə edərkən eyni vəzifələri yerinə yetirmək üçün istifadə edilə bilər (məsələn, kitabxanalar 2D/3D qrafika, GUI və veb proqramlar yaratmaq üçün mövcuddur).

Yeni dilin yaradılmasına Go dilinin sadə sintaksisi, kompilyasiya sürəti, əməliyyatların paralelləşdirilməsinin asanlığı, C/C++ performansı ilə kodun daşınması və davamlılığı, Rust təhlükəsizliyi və Zig kompilyasiya mərhələsində maşın kodunun yaradılması. Həm də xarici asılılıqlar olmadan işləyə bilən, qlobal əhatə dairəsindən (qlobal dəyişənlər) xilas ola bilən və kodu “qaynar” yenidən yükləmək imkanı verən yığcam və sürətli kompilyator əldə etmək istədim.

C++ ilə müqayisədə yeni dil əhəmiyyətli dərəcədə sadədir, daha sürətli kompilyasiya sürətini (400 dəfəyə qədər) təmin edir, təhlükəsiz proqramlaşdırma üsullarını tətbiq edir, qeyri-müəyyən davranışla bağlı problemlərdən azaddır və əməliyyatları paralelləşdirmək üçün daxili alətlər təqdim edir. Python ilə müqayisədə V daha sürətli, daha sadə, daha təhlükəsiz və daha davamlıdır. Go ilə müqayisədə V-nin qlobal dəyişənləri yoxdur, null yoxdur, bütün dəyişən dəyərlər həmişə müəyyən edilməlidir, bütün obyektlər defolt olaraq dəyişməzdir, yalnız bir təyinat növü dəstəklənir (“a := 0”), əhəmiyyətli dərəcədə daha yığcam. iş vaxtı və nəticədə ortaya çıxan icra edilə bilən faylların ölçüsü, C-dən birbaşa daşınmanın olması, zibil toplayıcının olmaması, daha sürətli seriallaşdırma, sətirləri interpolyasiya etmək imkanı (“println('$foo: $bar.baz')”).

fn main() {
sahələr := ['oyun', 'veb', 'alətlər', 'elm', 'sistemlər', 'GUI', 'mobil'] a := 10
doğrudursa {
-ə := 20
}
ərazilər üçün {
println('Salam, $alan tərtibatçıları!')
}
}

Layihə Xüsusiyyətləri:

  • Standart kitabxana ilə birlikdə təxminən 400 KB yer tutan yığcam və sürətli kompilyator. Yüksək kompilyasiya sürəti birbaşa maşın kodunun və modulluğun yaradılması ilə əldə edilir. Kompilyasiya sürəti bir CPU nüvəsində saniyədə təxminən 1.2 milyon kod satırıdır (qeyd edilir ki, V əməliyyat zamanı C-dən istifadə edə bilər, sonra sürət saniyədə 100 min sətirə enir). V dilində də yazılmış kompilyatorun (Go-da istinad versiyası da var) öz-özünə yığılması təxminən 0.4 saniyə çəkir. İlin sonuna kimi əlavə optimallaşdırma üzrə işlərin başa çatdırılması nəzərdə tutulur ki, bu da kompilyatorun qurulması müddətini 0.15 saniyəyə qədər azaldacaq. Tərtibatçı tərəfindən aparılan sınaqlara əsasən, Go-nun özünü yığması 512 MB disk sahəsi tələb edir və bir dəqiqə yarımda işləyir, Rust üçün 30 GB və 45 dəqiqə, GCC - 8 GB və 50 dəqiqə, Clang - 90 GB və 25 dəqiqə,
    Swift - 70 GB və 90 dəqiqə;

  • Proqramlar xarici asılılıqlar olmadan icra edilə bilən fayllara yığılır. Sadə http serverinin montajdan sonra icra edilə bilən fayl ölçüsü cəmi 65 KB-dir;
  • Tərtib edilmiş proqramların icrası C proqramlarının montajları səviyyəsindədir;
  • Əlavə yük olmadan C kodu ilə problemsiz qarşılıqlı əlaqə qurmaq imkanı. C dilindəki funksiyalar V dilindəki koddan çağırıla bilər və əksinə, V dilindəki kodu C ilə uyğun gələn istənilən dildə çağırmaq olar;
  • C/C++ layihələrinin V dilində təmsilə tərcüməsi üçün dəstək.Tərcümə üçün Clang-dan təhlilçi istifadə olunur. C standartının bütün xüsusiyyətləri hələ dəstəklənmir, lakin tərcüməçinin hazırkı imkanları artıq kifayətdir tərcümə V oyun DOOM dilində. C++ tərcüməçisi hələ inkişafın ilkin mərhələsindədir;
  • Quraşdırılmış seriallaşdırma dəstəyi, işləmə müddətinə bağlı olmadan;
  • Yaddaş ayırma əməliyyatlarının minimuma endirilməsi;
  • Təhlükəsizliyin təmin edilməsi: NULL yoxdur, qlobal dəyişənlər, qeyri-müəyyən dəyərlər və dəyişənlərin yenidən təyin edilməsi. Daxili bufer həddi yoxlanılır. Ümumi funksiyalar üçün dəstək (Ümumi). Varsayılan olaraq dəyişdirilə bilməyən obyektlər və strukturlar;
  • "Qaynar" kodun yenidən yüklənməsi imkanı (yenidən tərtib edilmədən tez kodda dəyişiklikləri əks etdirir);
  • Multithreading təmin etmək üçün alətlər. Go dilində olduğu kimi, “run foo()” kimi konstruksiya yeni icra xəttinə başlamaq üçün istifadə olunur (“go foo()” kimi). Gələcəkdə goroutines və iplik planlayıcısı üçün dəstək planlaşdırılır;
  • Windows, macOS, Linux, *BSD əməliyyat sistemləri üçün dəstək. İlin sonuna qədər Android və iOS üçün dəstəyin əlavə edilməsi planlaşdırılır;
  • Zibil toplayıcıdan istifadə etmədən kompilyasiya zamanı yaddaşın idarə edilməsi (Rust-da olduğu kimi);
  • Göstərmə üçün GDI+/Cocoa və OpenGL-dən istifadə edərək qrafik çıxışı üçün çox platformalı alət dəstinin mövcudluğu (DirectX, Vulkan və Metal API-lərə dəstək planlaşdırılır). 3D obyektlərlə işləmək, skelet animasiyası və kameraya nəzarət etmək üçün alətlər var;
  • Hər bir ƏS-ə xas olan dizayn elementləri ilə qrafik interfeyslər yaratmaq üçün kitabxananın mövcudluğu. Windows WinAPI/GDI+-dan, macOS-da Kakao-dan, Linux isə öz vidjet dəstindən istifadə edir. Kitabxana artıq inkişaf mərhələsində istifadə olunur Volt — Slack, Skype, Gmail, Twitter və Facebook üçün müştəri;

    Plan Delphi-yə bənzər interfeys dizayn tətbiqi yaratmaq, SwiftUI və React Native-ə bənzər deklarativ API təqdim etmək və iOS və Android üçün mobil proqramların yaradılmasına dəstək verməkdir;

    V proqramlaşdırma dili açıq mənbə

  • Layihə tərtibatçıları üçün vebsayt, forum və blog yaratmaq üçün istifadə edilən daxili veb çərçivənin mövcudluğu. HTML şablonlarının hər bir sorğu üzrə emal edilmədən əvvəlcədən tərtib edilməsi dəstəklənir;
  • Çapraz tərtib dəstəyi. Windows üçün icra edilə bilən faylı yaratmaq üçün sadəcə olaraq “v -os windows”, Linux üçün isə “v -os linux” (macOS üçün çarpaz kompilyasiya dəstəyi daha sonra gözlənilir) işə salın. Çarpaz kompilyasiya qrafik proqramlar üçün də işləyir;
  • Daxili asılılıq meneceri, paket meneceri və qurma alətləri. Proqramı qurmaq üçün maket və ya xarici utilitlərdən istifadə etmədən sadəcə “v.” i işə salın. Əlavə kitabxanalar quraşdırmaq üçün sadəcə işləyin, məsələn, “v get sqlite”;
  • Redaktorlarda V dilində inkişaf üçün plaginlərin mövcudluğu VS Kodu и cəldlik.

İnkişaf dərk edilmiş ilə icma skeptisizm, çünki dərc edilmiş kod bütün elan edilmiş imkanların hələ həyata keçirilmədiyini və bütün planların həyata keçirilməsi üçün çox böyük iş tələb olunduğunu göstərdi.
Bundan əlavə, ilkin olaraq depo var idi yerləşdirilmişdir montaj və icra ilə bağlı problemləri olan sınıq kod. Ehtimal olunur ki, müəllif hələ onların fərqinə varmağa başladıqları mərhələyə çatmayıb Pareto qanunu, buna görə səyin 20% -i nəticənin 80% -ni, qalan 80% səy isə nəticənin yalnız 20% -ni verir.

Bu arada, Project V-in səhv izləyicisində 10-a yaxın yazı silinib nümayiş aşağı keyfiyyətli kod, məsələn, C-insertlərinin istifadəsini və os.system("rm -rf $path") çağırışı vasitəsilə rm əmrinin kataloqunu silmək üçün funksiyaların kitabxanasında istifadəni göstərir. Layihənin müəllifi deyibyalnız mesajları sildiyini, nəşr olundu trol (tənqidin əsaslılığını təsdiq edən dəyişikliklərlə, qaldı в tarixi redaktə edin).

Mənbə: opennet.ru

Добавить комментарий