në kategorinë e kompilerëve të hapur për . V është një gjuhë e kompiluara në kodin makinerik me tipizim statik, e përqendruar në thjeshtimin e mbështetjeve për zhvillimin dhe sigurimin e një shpejtësie shumë të lartë kompilimi. Kodi i kompilerit, bibliotekave dhe mjeteve ndihmëse në përputhje me licencën MIT.
Sintaksa e V është shumë e ngjashme me gjuhën Go, duke huazuar disa struktura nga Oberon, Rust dhe Swift. Gjuha është sa më e thjeshtë e mundshme dhe, sipas zhvilluesit, për të mësuar bazat e saj mjafton 30 minuta studim . Gjuha mbetet mjaft e fuqishme dhe mund të përdoret për të njëjtat qëllime si në përdorimin e gjuhëve të tjera të programimit (p.sh., janë të disponueshme biblioteka për grafikë 2D/3D, krijimin e GUI dhe aplikacioneve web).
Krijimi i njĂ« gjuhe tĂ« re u nxitur nga dĂ«shira pĂ«r tĂ« arritur njĂ« kombinim tĂ« thjeshtĂ«sisĂ« sĂ« sintaksĂ«s sĂ« gjuhĂ«s Go, shpejtĂ«sisĂ« sĂ« kompilimit, lehtĂ«sisĂ« sĂ« shkallĂ«zimit tĂ« operacioneve, portabilitetit dhe mbĂ«shtetjes sĂ« kodit me performancĂ«n e C/C++, sigurinĂ« qĂ« ofron Rust dhe gjenerimin e kodit makinerik nĂ« fazĂ«n e kompilimit nga Zig. Gjithashtu, Ă«shtĂ« dĂ«shiruar njĂ« kompiler kompakt dhe tĂ« shpejtĂ«, qĂ« funksionon pa varĂ«si tĂ« jashtme, duke eliminuar hapĂ«sirĂ«n globale (variablat globale) dhe duke siguruar mundĂ«sinĂ« e riparimit tĂ« ânxehtĂ«â tĂ« kodit.
NĂ« krahasim me C++, gjuha e re Ă«shtĂ« ndjeshĂ«m mĂ« e thjeshtĂ«, siguron njĂ« shpejtĂ«si mĂ« tĂ« lartĂ« kompilimi (deri nĂ« 400 herĂ«), praktikon praktika tĂ« programimit tĂ« sigurt, Ă«shtĂ« e lirĂ« nga problemet me sjelljen e paqartĂ« dhe ofron mjete tĂ« integruara pĂ«r shkallĂ«zimin e operacioneve. NĂ« krahasim me Python, gjuha V Ă«shtĂ« mĂ« e shpejtĂ«, mĂ« e thjeshtĂ«, mĂ« e sigurt dhe mĂ« e lehtĂ« pĂ«r mbĂ«shtetje. NĂ« krahasim me Go, V nuk ka variabla globale, nuk ka null, tĂ« gjitha vlerat e variablave duhet gjithmonĂ« tĂ« jenĂ« tĂ« pĂ«rcaktuara, tĂ« gjitha objektet janĂ« pĂ«r default tĂ« palĂ«vizshme (immutable), mbĂ«shtetet vetĂ«m njĂ« lloj caktimi (âa := 0â), runtime Ă«shtĂ« dukshĂ«m mĂ« kompakt dhe madhĂ«sia e skedave tĂ« ekzekutueshme pĂ«rfundimtare Ă«shtĂ« mĂ« e vogĂ«l, ofrohet portabilitet direkt me C, nuk ka mbledhĂ«s plehrash, serializimi Ă«shtĂ« mĂ« i shpejtĂ« dhe mundĂ«sia e interpolimit tĂ« vargjeve (âprintln(â$foo: $bar.bazâ)â).
fn main() {
areas := [âgameâ, âwebâ, âtoolsâ, âscienceâ, âsystemsâ, âGUIâ, âmobileâ]
a := 10
if true {
a := 20
}
for area in areas {
println(âHello, $area developers!â)
}
}
Karakteristikat e projektit:
- Një kompiler kompakt dhe i shpejtë që së bashku me bibliotekën standarde zë rreth 400 KB. Shpejtësia e lartë e kompilimit arrihet përmes gjenerimit të drejtpërdrejtë të kodit makinerik dhe modularizmit. Shpejtësia e kompilimit arrin rreth 1.2 milion rreshta kodi në sekondë në një bërthamë CPU (vërehet se gjatë punës V mund të përdorë C, kurse shpejtësia bie në 100 mijë rreshta në sekondë). Vetë ndërtimi i kompilerit, i cili gjithashtu është shkruar në gjuhën V (përveç një versioni referues në Go), zë rreth 0.4 sekonda. Parashikohet që deri në fund të vitit të përfundojnë optimizimet shtesë, që do të lejojnë reduktimin e kohës së ndërtimit të kompilerit në 0.15 sekonda. Sipas testeve të kryera nga zhvilluesi, vetë ndërtimi i Go kërkon 512 MB hapësirë disku dhe realizohet për një minutë e gjysmë, Rust kërkon 30 GB dhe 45 minuta, GCC - 8 GB dhe 50 minuta, Clang - 90 GB dhe 25 minuta,
Swift - 70 GB dhe 90 minuta; - Programet kompilohet në skedarë ekzekutues pa varësi të jashtme. Madhësia e skedarit ekzekutiv të një serveri http të thjeshtë pas ndërtimit është vetëm 65 KB;
- Performanca e aplikacioneve të kompiluara është në nivelin e ndërtimeve të programeve në gjuhën C;
- Mundësia e ndërveprimit pa probleme me kodin C, pa shpenzime shtesë. Funksionet në gjuhën C mund të thirren nga kodi në gjuhën V dhe anasjelltas, kodi në gjuhën V mund të thirret në çdo gjuhë që është komaptible me C;
- Mbështetje për përkthimin e projekteve nga C/C++ në formën e gjuhës V. Për përkthimin përdoret parser nga Clang. Jo të gjitha mundësitë e standardit C janë për momentin mbështetur, por mundësitë aktuale të përkthyesit janë të mjaftueshme për në gjuhën V për lojën DOOM. Përkthyesi nga C++ është ende në fazën e hershme të zhvillimit;
- Mbështetje e integruar për serializimin, pa lidhje me runtime;
- Minimizimi i operacioneve të shpërndarjes së memories;
- Sigurimi i sigurisë: mungesa e NULL, variablave globale, vlerave të paqartë dhe rishtas caktimit të variablave. Mjetet e brendshme për kontrollin e kalimit përtej kufijve të tamponit. Mbështetje për funksione të përgjithshme (Generic). Objektet dhe strukturat janë të pasqyruara si të palëvizshme për default;
- MundĂ«sia e riparimit tĂ« ânxehtĂ«â tĂ« kodit (reflektimi i ndryshimeve nĂ« kod nĂ« fluks pa rikompilim);
- Mjetet për sigurinë e shumëproceseve. Siç është në gjuhën Go, për të nisur një proces të ri ekzekutimi përdoret konstrukti i tipit «run foo()» (në mënyrë të ngjashme me «go foo()»). Në të ardhmen planifikohet mbështetje për goroutines dhe një planifikues procesesh;
- Mbështetje për sistemet operative Windows, macOS, Linux, *BSD. Deri në fund të vitit planifikohet të shtohet mbështetje për Android dhe iOS;
- Menaxhimi i memories në fazën e kompilimit (ashtu si në Rust), pa përdorimin e mbledhësit të plehrave;
- Prania e një toolkit shumëplatformësh për skicimin e grafikës, i cili përdor GDI+/Cocoa dhe OpenGL për renderim (në plan është mbështetje për API-të DirectX, Vulkan dhe Metal). Kane mjete për punë me objekte 3D, animacion skeletor dhe menaxhimin e kamerës;
- Prania e njĂ« bibloteke pĂ«r formimin e ndĂ«rfaqeve grafike me elemente tĂ« dizajnit native pĂ«r çdo sistem operativ. NĂ« Windows pĂ«rdoret WinAPI/GDI+, nĂ« macOS â Cocoa, nĂ« Linux â njĂ« grup i tij widget-esh. Bibloteka tashmĂ« po pĂ«rdoret gjatĂ« zhvillimit â klient pĂ«r Slack, Skype, Gmail, Twitter dhe Facebook;
Planifikohet krijimi i një aplikacioni të ngjashëm me Delphi për projektimin e ndërfaqeve, ofrimin e një API deklarativ, të ngjashëm me SwiftUI dhe React Native, dhe të sigurojë mbështetje për krijimin e aplikacioneve mobile për iOS dhe Android;

- Prania e një web-frame të integruar, i cili është përdorur për të krijuar faqen e internetit, forum dhe blogun e zhvilluesve të projektit. Mbështetet parakompozimi i HTML-shablloneve, pa përpunimin e tyre për çdo kërkesë;
- MbĂ«shtetje pĂ«r ndĂ«rlidhjen e kryqĂ«zuar. PĂ«r tĂ« ndĂ«rtuar njĂ« skedhĂ« ekzekutimi pĂ«r Windows, mjafton tĂ« filloni «v -os windows», dhe pĂ«r Linux â «v -os linux» (mbĂ«shtetje pĂ«r ndĂ«rlidhjen e kryqĂ«zuar pĂ«r macOS pritet mĂ« vonĂ«). NdĂ«rlidhja e kryqĂ«zuar gjithashtu funksionon pĂ«r aplikacionet grafike;
- Menaxheri i integruar i varësive, menaxheri i paketave dhe mjetet e ndërtimit. Për të ndërtuar programin mjafton të filloni «v .», pa përdorur make dhe mjete të jashtme. Për të instaluar bibloteka shtesë mjafton të ekzekutoni, për shembull, «v get sqlite»;
- Prania e plug-in-eve për zhvillim në gjuhën V në redaktorët dhe .
РазŃĐ°Đ±ĐŸŃĐșа nga komuniteti me , duke pasur parasysh se kodi i botuar tregoi se jo tĂ« gjitha funksionalitetet e shpallura janĂ« realizuar deri tani dhe pĂ«r realizimin e tĂ« gjitha planeve kĂ«rkohet njĂ« volum shumĂ« i madh pune.
Përveç kësaj, në fillim në depotin ishte kodi jo funksional, në të cilin vërehen probleme me ndërtimin dhe ekzekutimin. Supozohet se autori ende nuk ka arritur në fazën ku fillojnë të vihen re , sipas të cilit 20% e përpjekjeve japin 80% të rezultatit, ndërsa 80% e përpjekjeve japin vetëm 20% të rezultatit.
Ndërkohë, në trackerin e gabimeve të projektit V janë fshirë rreth 10 mesazhe me cilësi të ulët të kodit, për shembull, është theksuar përdorimi i përfshirjeve C dhe përdorimi në biblotekë i funksioneve për fshirjen e katalogëve nga komanda rm përmes thirrjes os.system(«rm -rf $path»). Autori i projektit , tha se ai vetëm fshiu mesazhet, (duke pasur parasysh që ndryshimet që konfirmojnë arsyetimin e kritikës, në ).
Burimi: opennet.ru

