V basa programming open source

Ditarjamahkeun kana kategori kompiler kabuka pikeun basa V. V nyaéta basa mesin-disusun statik diketik nu museurkeun kana nyieun ngembangkeun gampang pikeun ngajaga tur pisan gancang pikeun compile. Kode kompiler, perpustakaan sareng alat anu aya hubunganana kabuka handapeun lisénsi MIT.

Sintaksis V mirip pisan sareng Go, nginjeum sababaraha konstruksi tina Oberon, Rust, sareng Swift. Basana disederhanakeun sabisa-bisa sareng, numutkeun pamekar, 30 menit diajar cekap pikeun diajar dasar-dasar. dokuméntasi. Dina waktos anu sami, basa tetep cukup kuat sareng tiasa dianggo pikeun ngalaksanakeun tugas anu sami sareng nalika nganggo basa pamrograman anu sanés (contona, perpustakaan sayogi pikeun grafik 2D/3D, nyiptakeun GUI sareng aplikasi wéb).

Nyiptakeun basa anyar didorong ku kahayang pikeun ngahontal kombinasi kesederhanaan sintaksis basa Go, laju kompilasi, betah paralelisasi operasi, portabilitas sareng mertahankeun kode sareng kinerja C/C++, kaamanan Rust sareng generasi kode mesin dina tahap kompilasi Zig. Kuring ogé hoyong kéngingkeun kompiler anu kompak sareng gancang anu tiasa dianggo tanpa katergantungan éksternal, ngaleungitkeun wengkuan global (variabel global) sareng nyayogikeun kamampuan "panas" ngamuat deui kodeu.

Dibandingkeun C ++, basa anyar nyata basajan, nyadiakeun speed kompilasi gancang (nepi ka 400 kali), prakték téhnik programming aman, bebas tina masalah jeung kabiasaan undefined, sarta nyadiakeun diwangun-di parabot pikeun operasi parallelizing. Dibandingkeun jeung Python, V leuwih gancang, basajan, aman, sarta leuwih maintainable. Dibandingkeun sareng Go, V henteu gaduh variabel global, henteu nol, sadaya nilai variabel kedah didefinisikeun, sadaya obyék teu tiasa dirobih sacara standar, ngan ukur hiji jinis tugas anu dirojong ("a: = 0"), sacara signifikan langkung kompak. runtime sarta ukuran file laksana hasilna, ayana portability langsung ti C, henteuna collector sampah, serialization gancang, kamampuhan pikeun interpolate string ("println ($ foo: $ bar.baz ')").

fn utama() {
wewengkon: = ['game', 'web', 'parabot', 'elmu', 'sistem', 'GUI', 'mobile'] a: = 10
lamun leres {
ka: = 20
}
pikeun wewengkon di wewengkon {
println('Halo, $pengembang kawasan!')
}
}

Fitur proyék:

  • Compiler kompak tur gancang, nu bareng jeung perpustakaan baku nyokot ngeunaan 400 KB. Laju kompilasi anu luhur kahontal ngaliwatan generasi langsung kode mesin sareng modularitas. Laju kompilasi kira-kira 1.2 juta garis kode per detik dina hiji inti CPU (perhatikeun yén nalika operasi V tiasa nganggo C, teras laju turun ka 100 sarébu garis per detik). Majelis diri tina kompiler, anu ogé diserat dina basa V (aya ogé versi rujukan dina Go), nyandak kirang langkung 0.4 detik. Nepi ka tungtun taun, gawé dina optimizations tambahan diperkirakeun réngsé, nu bakal ngurangan waktu ngawangun compiler ka 0.15 detik. Ditilik ku tés anu dilakukeun ku pamekar, timer assembly of Go merlukeun 512 MB spasi disk jeung ngajalankeun dina hiji satengah menit, Rust merlukeun 30 GB na 45 menit, GCC - 8 GB na 50 menit, Clang - 90 GB na 25 menit,
    Swift - 70 GB sareng 90 menit;

  • Program disusun kana file anu tiasa dieksekusi tanpa katergantungan éksternal. Ukuran file laksana tina server http basajan sanggeus assembly ngan 65 KB;
  • Kinerja aplikasi anu disusun aya dina tingkat rakitan program C;
  • Kamampuhan pikeun seamlessly berinteraksi sareng kode C, tanpa overhead tambahan. Fungsi dina basa C bisa disebut tina kode dina basa V, sarta sabalikna, kode dina basa V bisa disebut dina basa mana wae nu cocog jeung C;
  • Rojongan pikeun narjamahkeun C / C ++ proyék kana representasi dina basa V. A parser ti Clang dipaké pikeun tarjamah. Henteu sadayana fitur standar C dirojong acan, tapi kamampuan penerjemah ayeuna parantos cekap tarjamahan dina basa V kaulinan DOOM. C ++ penerjemah masih dina tahap awal pangwangunan;
  • Diwangun-di rojongan serialization, tanpa keur dihijikeun ka runtime;
  • Ngaminimalkeun operasi alokasi mémori;
  • Mastikeun kasalametan: euweuh NULL, variabel global, nilai undefined sarta redefinition variabel. Diwangun-di panyangga overrun mariksa. Rojongan pikeun fungsi generik (Generik). Objék sareng struktur anu teu tiasa dirobih sacara standar;
  • Kamungkinan "panas" reloading kode (reflecting parobahan kode dina laleur tanpa recompilation);
  • Alat pikeun mastikeun multithreading. Sapertos dina basa Go, konstruksi sapertos "run foo ()" dianggo pikeun ngamimitian palaksanaan énggal (sarupa sareng "go foo ()"). Dina mangsa nu bakal datang, rojongan pikeun goroutines sarta scheduler thread rencanana;
  • Rojongan pikeun Windows, macOS, Linux, *sistem operasi BSD. Direncanakeun pikeun nambihan dukungan pikeun Android sareng ios dina ahir taun;
  • Manajemén mémori dina waktos kompilasi (sapertos dina Rust), tanpa nganggo tukang sampah;
  • Kasadiaan toolkit multi-platform pikeun kaluaran grafik, ngagunakeun GDI + / Kakao sarta OpenGL pikeun rendering (rojongan pikeun DirectX, Vulkan na Metal API rencanana). Aya alat pikeun damel sareng objék 3D, animasi rangka sareng kontrol kaméra;
  • Kasadiaan perpustakaan pikeun ngahasilkeun interfaces grafis jeung elemen desain asli unggal OS. Windows make WinAPI/GDI+, macOS make Cocoa, jeung Linux make set widget sorangan. Perpustakaan geus dipaké dina pangwangunan polt - klien pikeun Slack, Skype, Gmail, Twitter sareng Facebook;

    Rencanana nyaéta nyiptakeun aplikasi desain antarmuka sapertos Delphi, nyayogikeun API déklaratif anu sami sareng SwiftUI sareng React Native, sareng nyayogikeun dukungan pikeun nyiptakeun aplikasi mobile pikeun ios sareng Android;

    V basa programming open source

  • Kasadiaan kerangka wéb anu diwangun, anu dianggo pikeun nyiptakeun halaman wéb, forum sareng blog pikeun pamekar proyék. Precompilation template HTML dirojong, tanpa ngolah aranjeunna dina unggal pamundut;
  • rojongan kompilasi cross. Pikeun ngawangun file anu tiasa dieksekusi pikeun Windows, jalankeun "v -os windows", sareng pikeun Linux - "v -os linux" (pangrojong kompilasi silang pikeun macOS diperkirakeun engké). Cross-kompilasi ogé lumaku pikeun aplikasi grafis;
  • Pangatur dependensi anu diwangun, manajer pakét sareng alat ngawangun. Pikeun ngawangun program, ngan ngajalankeun "v.", tanpa make make atawa Utiliti éksternal. Pikeun masang perpustakaan tambahan, ngan ngajalankeun, contona, "v meunang sqlite";
  • Kasadiaan plugins pikeun ngembangkeun dina basa V di redaktur Kodeu VS и Vim.

rarancang katarima masarakat kalawan skeptisisme, Kusabab kodeu anu diterbitkeun nunjukkeun yén henteu sadayana kamampuan anu dinyatakeun parantos dilaksanakeun sareng seueur padamelan anu diperyogikeun pikeun ngalaksanakeun sadaya rencana.
Sajaba ti éta, mimitina Repository miboga disimpen kode rusak nu boga masalah sareng assembly sarta palaksanaan. Hal ieu dianggap yén pangarang teu acan ngahontal tahap di mana maranéhna mimiti perhatikeun hukum Pareto urang, nurutkeun nu 20% usaha ngahasilkeun 80% hasilna, sarta sésana 80% usaha ngahasilkeun ngan 20% hasilna.

Samentara éta, pelacak bug Project V ngagaduhan sakitar 10 tulisan anu dipiceun démo kode kualitas low, contona,, nunjukkeun pamakéan C-inserts sarta pamakéan dina perpustakaan fungsi pikeun mupus diréktori paréntah rm ngaliwatan panggero os.system ("rm -rf $ jalur"). Panulis proyék anjeunna nyatakeunyén anjeunna ngan ukur ngahapus pesen, diterbitkeun troll (kalayan parobahan anu mastikeun validitas kritik, tinggal в édit sajarah).

sumber: opennet.ru

Tambahkeun komentar