V programlama dili açık kaynak

Çevrildi için açık derleyici kategorisine dil V. V, geliştirmeyi sürdürmeyi kolaylaştırmaya ve derlemeyi çok hızlı hale getirmeye odaklanan, statik olarak yazılan, makine tarafından derlenen bir dildir. Derleyici kodu, kitaplıklar ve ilgili araçlar açık MIT lisansı altında.

V'nin sözdizimi Go'ya çok benziyor ve Oberon, Rust ve Swift'ten bazı yapıları ödünç alıyor. Dil mümkün olduğunca basitleştirildi ve geliştiriciye göre temel bilgileri öğrenmek için 30 dakikalık çalışma yeterli belgeleme. Aynı zamanda, dil oldukça güçlü kalır ve diğer programlama dillerini kullanırken olduğu gibi aynı görevleri gerçekleştirmek için kullanılabilir (örneğin, 2D/3D grafikler, GUI'ler ve web uygulamaları oluşturma için kütüphaneler mevcuttur).

Yeni bir dilin yaratılması, Go dilinin sözdizimi basitliği, derleme hızı, operasyonların paralelleştirilmesi kolaylığı, kodun taşınabilirliği ve bakımı ile C/C++ performansı, Rust'un güvenliği ve güvenliğinin bir kombinasyonunu elde etme arzusuyla ortaya çıktı. Zig derleme aşamasında makine kodunun oluşturulması. Ayrıca, harici bağımlılıklar olmadan çalışabilecek, küresel kapsamdan (global değişkenler) kurtulabilecek ve kodu "çalışırken" yeniden yükleme yeteneği sağlayacak kompakt ve hızlı bir derleyici almak istedim.

C++ ile karşılaştırıldığında yeni dil önemli ölçüde daha basittir, daha yüksek derleme hızı sağlar (400 kata kadar), güvenli programlama tekniklerini uygular, tanımsız davranış sorunları içermez ve işlemleri paralelleştirmek için yerleşik araçlar sağlar. Python ile karşılaştırıldığında V daha hızlı, daha basit, daha güvenli ve bakımı daha kolaydır. Go ile karşılaştırıldığında, V'nin global değişkenleri yoktur, boş değerleri yoktur, tüm değişken değerleri her zaman tanımlanmalıdır, tüm nesneler varsayılan olarak değişmezdir, yalnızca tek bir atama türü desteklenir ("a := 0"), önemli ölçüde daha kompakt çalışma zamanı ve ortaya çıkan yürütülebilir dosyaların boyutu, C'den doğrudan taşınabilirliğin varlığı, bir çöp toplayıcının olmaması, daha hızlı serileştirme, dizeleri enterpolasyon yeteneği ("println('$foo: $bar.baz')").

fn ana() {
alanlar := ['oyun', 'web', 'araçlar', 'bilim', 'sistemler', 'GUI', 'mobil'] a := 10
Eğer doğruysa {
:= 20
}
alanlardaki alan için {
println('Merhaba $alan geliştiricileri!')
}
}

Projenin özellikleri:

  • Standart kütüphaneyle birlikte yaklaşık 400 KB yer kaplayan kompakt ve hızlı derleyici. Doğrudan makine kodu oluşturma ve modülerlik sayesinde yüksek derleme hızı elde edilir. Derleme hızı, bir CPU çekirdeğinde saniyede yaklaşık 1.2 milyon satır koddur (V'nin çalışması sırasında C'yi kullanabileceği, ardından hızın saniyede 100 bin satıra düştüğü belirtilmektedir). Yine V dilinde yazılan (Go'da referans versiyonu da mevcut) derleyicinin kendi kendine montajı yaklaşık 0.4 saniye sürmektedir. Yıl sonuna kadar, derleyici oluşturma süresini 0.15 saniyeye düşürecek ek optimizasyon çalışmalarının tamamlanması bekleniyor. Geliştirici tarafından yapılan testlere göre, Go'nun kendi kendine montajı 512 MB disk alanı gerektirir ve bir buçuk dakikada çalışır, Rust 30 GB ve 45 dakika, GCC - 8 GB ve 50 dakika, Clang - 90 GB ve 25 dakika,
    Hızlı - 70 GB ve 90 dakika;

  • Programlar, harici bağımlılıklar olmaksızın yürütülebilir dosyalar halinde derlenir. Basit bir http sunucusunun montaj sonrasında çalıştırılabilir dosya boyutu yalnızca 65 KB'tır;
  • Derlenen uygulamaların performansı, C programlarının derlemeleri düzeyindedir;
  • Ek yük olmadan C koduyla sorunsuz bir şekilde etkileşim kurma yeteneği. C dilindeki işlevler, V dilindeki koddan çağrılabilir ve tam tersi, V dilindeki kod, C ile uyumlu herhangi bir dilde çağrılabilir;
  • C/C++ projelerini V dilindeki bir temsile çevirme desteği. Çeviri için Clang'dan bir ayrıştırıcı kullanılır. C standardının tüm özellikleri henüz desteklenmemektedir ancak çevirmenin mevcut yetenekleri halihazırda yeterlidir. çeviri V oyunu DOOM'un dilinde. C++ çevirmeni henüz geliştirme aşamasındadır;
  • Çalışma zamanına bağlı kalmadan yerleşik serileştirme desteği;
  • Bellek ayırma işlemlerinin en aza indirilmesi;
  • Güvenliğin sağlanması: NULL yok, global değişkenler, tanımlanmamış değerler ve değişkenlerin yeniden tanımlanması. Dahili arabellek taşması kontrolü. Genel işlevler için destek (Genel). Varsayılan olarak değiştirilemeyen nesneler ve yapılar;
  • "Sıcak" kodu yeniden yükleme imkanı (yeniden derleme olmadan koddaki değişiklikleri anında yansıtır);
  • Çoklu iş parçacığının sağlanmasına yönelik araçlar. Tıpkı Go dilinde olduğu gibi, yeni bir yürütme iş parçacığı başlatmak için "run foo()" gibi bir yapı kullanılır ("go foo()"ya benzer). Gelecekte goroutinler ve iş parçacığı planlayıcısı için destek planlanıyor;
  • Windows, macOS, Linux, *BSD işletim sistemleri desteği. Yıl sonuna kadar Android ve iOS desteğinin eklenmesi planlanıyor;
  • Çöp toplayıcı kullanmadan derleme zamanında bellek yönetimi (Rust'ta olduğu gibi);
  • İşleme için GDI+/Cocoa ve OpenGL'yi kullanan, grafik çıktısı için çok platformlu bir araç setinin mevcudiyeti (DirectX, Vulkan ve Metal API'leri için destek planlanmaktadır). 3 boyutlu nesnelerle çalışmak, iskelet animasyonu ve kamera kontrolü için araçlar var;
  • Her işletim sistemine özgü tasarım öğeleriyle grafiksel arayüzler oluşturmak için bir kitaplığın varlığı. Windows WinAPI/GDI+'ı kullanır, macOS Cocoa'yı kullanır ve Linux kendi widget setini kullanır. Kütüphane geliştirme aşamasında zaten kullanılıyor Volt — Slack, Skype, Gmail, Twitter ve Facebook istemcisi;

    Plan, Delphi benzeri bir arayüz tasarımı uygulaması oluşturmak, SwiftUI ve React Native'e benzer bir bildirimsel API sağlamak ve iOS ve Android için mobil uygulamalar oluşturmaya yönelik destek sağlamaktır;

    V programlama dili açık kaynak

  • Proje geliştiricileri için bir web sitesi, forum ve blog oluşturmak için kullanılan yerleşik bir web çerçevesinin varlığı. HTML şablonlarının önceden derlenmesi, her istekte işlenmeden desteklenir;
  • Çapraz derleme desteği. Windows için yürütülebilir dosyayı oluşturmak için "v -os windows"u ve Linux için - "v -os linux"u çalıştırmanız yeterlidir (macOS için çapraz derleme desteği daha sonra beklenmektedir). Çapraz derleme aynı zamanda grafik uygulamalar için de işe yarar;
  • Yerleşik bağımlılık yöneticisi, paket yöneticisi ve derleme araçları. Programı oluşturmak için make veya harici yardımcı programları kullanmadan "v." komutunu çalıştırmanız yeterlidir. Ek kitaplıklar yüklemek için örneğin “v get sqlite” komutunu çalıştırmanız yeterlidir;
  • Editörlerde V dilinde geliştirilmeye yönelik eklentilerin mevcudiyeti VS Kodu и Gayret.

Gelişme algılanan olan topluluk şüphecilikçünkü yayınlanan kod, bildirilen tüm yeteneklerin henüz uygulanmadığını ve tüm planların uygulanması için çok büyük miktarda çalışma gerektiğini gösterdi.
Ek olarak, başlangıçta depoda gönderildi derleme ve yürütmeyle ilgili sorunları olan bozuk kod. Yazarın henüz fark etmeye başlayacak aşamaya ulaşmadığı varsayılmaktadır. Pareto yasasıBuna göre çabanın %20'si sonucun %80'ini üretir, geri kalan %80'lik çaba ise sonucun yalnızca %20'sini üretir.

Bu arada Project V'in hata takip aracından yaklaşık 10 gönderi kaldırıldı. gösteri Örneğin düşük kaliteli kod, os.system("rm -rf $path") çağrısı yoluyla rm komutunun dizinini silmek için C-eklerinin kullanımını ve işlevler kitaplığında kullanımını belirtir. Projenin yazarı bahsedilensadece mesajları sildiğini, yayınlanan trol (eleştirinin geçerliliğini teyit eden değişikliklerle, kalmıştır в geçmişi düzenle).

Kaynak: opennet.ru

Yorum ekle