V ulwimi lokuprograma umthombo ovulekileyo

Iguqulelwe kudidi oluvulekileyo lomqokeleli we ulwimi V. I-V lulwimi oludityaniswe ngomatshini ochwetheziweyo olugxile ekwenzeni uphuhliso lube lula ukulugcina kwaye lukhawuleze kakhulu ukuqulunqa. Ikhowudi yokuhlanganisa, amathala eencwadi kunye nezixhobo ezinxulumeneyo ivuliwe phantsi kwelayisenisi ye-MIT.

I-syntax ye-V ifana kakhulu ne-Go, iboleka ezinye izakhiwo kwi-Oberon, Rust, kunye ne-Swift. Ulwimi lwenziwe lula kangangoko kunokwenzeka kwaye, ngokutsho komphuhlisi, imizuzu engama-30 yokufunda yanele ukufunda iziseko. amaxwebhu. Kwangaxeshanye, ulwimi luhlala lunamandla kwaye lunokusetyenziselwa ukwenza imisebenzi efanayo naxa usebenzisa ezinye iilwimi zokucwangcisa (umzekelo, iilayibrari ziyafumaneka kwimifanekiso ye-2D/3D, ukwenza ii-GUIs kunye nezicelo zewebhu).

Ukwenziwa kolwimi olutsha kwakhuthazwa ngumnqweno wokuphumeza indibaniselwano yolwimi lweGo lula lwe-syntax, isantya sokuhlanganiswa, ukukhululeka kokuhambelana kwemisebenzi, ukuphatheka kunye nokugcinwa kwekhowudi kunye nokusebenza kweC / C ++, ukhuseleko lweRust kunye ukuveliswa kwekhowudi yomatshini kwinqanaba lokuhlanganiswa kweZig. Kwakhona ndifuna ukufumana i-compact kunye ne-compiler ekhawulezayo enokusebenza ngaphandle kokuxhomekeka kwangaphandle, ukulahla umda wehlabathi jikelele (iinguqu zehlabathi) kunye nokubonelela ngekhono "lokutshisa" ukulayisha kwakhona ikhowudi.

Xa kuthelekiswa ne-C ++, ulwimi olutsha lulula kakhulu, lubonelela ngesantya esikhawulezayo sokuhlanganiswa (ukuya kumaxesha angama-400), lusebenzisa iindlela ezikhuselekileyo zokucwangcisa, alunangxaki ngokuziphatha okungachazwanga, kwaye lubonelela ngezixhobo ezakhelwe ngaphakathi zokusebenza ngokuhambelanayo. Xa kuthelekiswa nePython, iV iyakhawuleza, ilula, ikhuselekile, kwaye inokugcinwa ngakumbi. Xa kuthelekiswa ne-Go, i-V ayinazo izinto eziguquguqukayo zehlabathi, akukho nulls, onke amaxabiso aguquguqukayo kufuneka asoloko echazwa, zonke izinto aziguquguquki ngokungagqibekanga, lunye kuphela uhlobo lwesabelo oluxhaswayo ("a: = 0"), icompact ngakumbi. ixesha lokuqhuba kunye nobukhulu beefayile eziphunyezwayo ezibangelwayo, ubukho bokuphatheka ngokuthe ngqo ukusuka ku-C, ukungabikho komqokeleli wenkunkuma, ulandelelwano olukhawulezayo, ukukwazi ukudibanisa imitya (β€œprintln('$foo: $bar.baz')”).

fn eyona () {
iindawo := ['umdlalo', 'web', 'izixhobo', 'inzululwazi', 'iinkqubo', 'GUI', 'mobile'] a := 10
ukuba yinyani {
a:=20
}
kwindawo kwindawo {
println('Molo, abaphuhlisi bendawo ye-$!')
}
}

Iimpawu zeProjekthi:

  • Umqulunqi obambeneyo nokhawulezayo, othi kunye nelayibrari eqhelekileyo ithathe malunga ne-400 KB. Isantya esiphezulu sokuhlanganiswa sifezekiswa ngokuvelisa ngokuthe ngqo ikhowudi yomatshini kunye nemodyuli. Isantya sokuhlanganiswa simalunga ne-1.2 yezigidi zemigca yekhowudi ngesekhondi enye kwi-CPU engundoqo (kuphawulwe ukuba ngexesha lokusebenza V ingasebenzisa i-C, ngoko isantya sihla ukuya kwi-100 amawaka emigca ngomzuzwana). Ukuzihlanganisa komqokeleli, okukwabhalwe ngolwimi lwe-V (kukwakho nenguqulelo yereferensi kwiGo), kuthatha malunga nemizuzwana eyi-0.4. Ekupheleni konyaka, umsebenzi wokulungiswa okongeziweyo kulindeleke ukuba ugqitywe, oya kunciphisa ixesha lokwakha umqambi ukuya kwimizuzwana eyi-0.15. Ukuqwalasela iimvavanyo eziqhutywe ngumphuhlisi, ukuzihlanganisa kwe-Go kufuna i-512 MB yendawo yediski kwaye iqhube kwimizuzu enye enesiqingatha, iRust ifuna i-30 GB kunye nemizuzu engama-45, i-GCC - i-8 GB kunye nemizuzu engama-50, i-Clang - 90 GB kunye imizuzu engama-25,
    I-Swift - i-70 GB kunye nemizuzu ye-90;

  • Iinkqubo zihlanganiswe kwiifayile eziphunyezwayo ngaphandle kokuxhomekeka kwangaphandle. Ubungakanani befayile ephunyezwayo yomncedisi we-http olula emva kokuhlanganisa kuphela ngama-65 KB;
  • Ukusebenza kwezicelo ezihlanganisiweyo kwinqanaba leendibano zeenkqubo zeC;
  • Ukukwazi ukusebenzisana ngaphandle komthungo kunye nekhowudi ye-C, ngaphandle kokungaphezulu okongeziweyo. Imisebenzi kulwimi lwe-C inokubizwa ngokusuka kwikhowudi kulwimi lwe-V, kwaye ngokuchaseneyo, ikhowudi kulwimi lwe-V inokubizwa ngalo naluphi na ulwimi oluhambelana noC;
  • Inkxaso yokuguqulela iiprojekthi ze-C/C++ zibe ngumelo kulwimi lwe-V. I-parser evela ku-Clang isetyenziselwa ukuguqulela. Ayizizo zonke iimpawu zomgangatho we-C ezixhaswayo okwangoku, kodwa amandla angoku omguquli sele anele uguqulelo ngolwimi lomdlalo we-V DOOM. Umguquleli weC ++ usekwinqanaba lokuqala lophuhliso;
  • Inkxaso eyakhelwe-ngaphakathi yolandelelwano, ngaphandle kokubotshelelwa kwixesha lokuqhuba;
  • Ukunciphisa imisebenzi yokunikezelwa kweememori;
  • Ukuqinisekisa ukhuseleko: akukho NULL, iinguqu zehlabathi, amaxabiso angachazwanga kunye nokuchazwa kwakhona okuguquguqukayo. Eyakhelwe-ngaphakathi isithinteli overrun checking. Inkxaso kwimisebenzi eyenziwa ngabenzi (generic). izinto kunye nezakhiwo ezingenakuguqulwa ngokungagqibekanga;
  • Ukukwazi ukulayishwa kwakhona kwekhowudi "eshushu" (ukubonisa utshintsho kwikhowudi kwi-fly ngaphandle kokubuyisela);
  • Izixhobo zokuqinisekisa i-multithreading. Kanye njengakulwimi lweGo, ulwakhiwo olufana no β€œrun foo()” lusetyenziswa ukuqalisa umsonto omtsha wophumezo (ofana no β€œhamba foo()”). Kwixesha elizayo, inkxaso ye-goroutines kunye nomcwangcisi wentambo ucetywayo;
  • Inkxaso yeWindows, macOS, Linux, * BSD iinkqubo zokusebenza. Kucetywa ukongeza inkxaso ye-Android kunye ne-iOS ekupheleni konyaka;
  • Ulawulo lwememori ngexesha lokuqokelela (njengakwi-Rust), ngaphandle kokusebenzisa umqokeleli wenkunkuma;
  • Ubukho besixhobo se-multi-platform toolkit yemveliso yegraphics, usebenzisa i-GDI +/Cocoa kunye ne-OpenGL yokunikezela (inkxaso ye-DirectX, i-Vulkan kunye ne-Metal APIs icwangcisiwe). Kukho izixhobo zokusebenza kunye nezinto ze-3D, i-animation yamathambo kunye nokulawula ikhamera;
  • Ubukho bethala leencwadi lokwenza ujongano lomzobo olunezinto zoyilo eziphuma kwi-OS nganye. IiWindows zisebenzisa iWinAPI/GDI+, iMacOS isebenzisa iCocoa, kwaye iLinux isebenzisa isethi yayo yamawijethi. Ithala leencwadi sele lisetyenziswa kuphuhliso Volt -umxhasi weSlack, iSkype, iGmail, iTwitter kunye neFacebook;

    Isicwangciso kukudala i-Delphi-like interface design application, ukubonelela nge-API echazayo efana ne-SwiftUI kunye ne-React Native, kwaye inike inkxaso yokudala izicelo zeselula ze-iOS kunye ne-Android;

    V ulwimi lokuprograma umthombo ovulekileyo

  • Ukufumaneka kwesakhelo sewebhu esakhelwe ngaphakathi, esisetyenziselwa ukudala iwebhusayithi, iforamu kunye neblogi yabaphuhlisi beprojekthi. Ukuqulunqwa kwangaphambili kweetemplates zeHTML kuyaxhaswa, ngaphandle kokuqhubekeka kwisicelo ngasinye;
  • Inkxaso yokuhlanganiswa komnqamlezo. Ukwakha ifayile ephunyeziweyo yeWindows, vele usebenze "v -os windows", kunye neLinux - "v -os linux" (inkxaso yokuhlanganiswa kwe-macOS ilindeleke kamva). Ukuhlanganiswa kwe-Cross-compilation kukwasebenza kwizicelo zegraphical;
  • Umphathi wokuxhomekeka owakhelwe-ngaphakathi, umphathi wephakheji kunye nezixhobo zokwakha. Ukwakha inkqubo, vele usebenze "v.", ngaphandle kokusebenzisa i-make okanye izixhobo zangaphandle. Ukufakela iilayibrari ezongezelelweyo, vele usebenze, umzekelo, "v fumana sqlite";
  • Ubukho beeplagi zophuhliso kulwimi lwe-V kubahleli Code VS ΠΈ vΓ­m.

Phuhliso kuqondwa uluntu kunye ukuthandabuza, ekubeni ikhowudi epapashiweyo ibonise ukuba akuzona zonke izakhono ezichaziweyo eziye zaphunyezwa kwaye inani elikhulu kakhulu lomsebenzi lifunekayo ukuphumeza zonke izicwangciso.
Ukongeza, ekuqaleni indawo yokugcina yayinayo iposwe ikhowudi eyaphukileyo eneengxaki ngendibano kunye nokuphunyezwa. Kucingelwa ukuba umbhali akakafiki kwinqanaba aqala ngalo ukuqaphela Umthetho kaPareto, ngokubhekiselele kwi-20% yomgudu uvelisa i-80% yesiphumo, kwaye i-80% eseleyo yomgudu ivelisa kuphela i-20% yesiphumo.

Ngeli xesha, iProject V's bug tracker inezithuba ezili-10 ezisusiweyo umboniso ikhowudi yomgangatho ophantsi, umzekelo, ibonisa ukusetyenziswa kwe-C-insert kunye nokusetyenziswa kwilayibrari yemisebenzi yokucima ulawulo lwe-rm yomyalelo nge-call os.system("rm -rf $path"). Umbhali weprojekthi bhengezweukuba uyicime kuphela imiyalezo, ipapashiwe troli (kunye notshintsho oluqinisekisa ubunyani bokugxekwa, ndahlala Π² hlela imbali).

umthombo: opennet.ru

Yongeza izimvo