Gjuhë programimi V me burim të hapur

Përkthyer në kategorinë e përpiluesit të hapur për gjuha V. V është një gjuhë e përpiluar nga makineritë e shtypur statike që fokusohet në lehtësimin e mirëmbajtjes së zhvillimit dhe përpilimin shumë të shpejtë. Kodi i përpiluesit, bibliotekat dhe mjetet përkatëse e hapur nën licencën MIT.

Sintaksa e V është shumë e ngjashme me Go, duke huazuar disa konstruksione nga Oberon, Rust dhe Swift. Gjuha është thjeshtuar sa më shumë që të jetë e mundur dhe, sipas zhvilluesit, 30 minuta studim janë të mjaftueshme për të mësuar bazat. dokumentacionin. Në të njëjtën kohë, gjuha mbetet mjaft e fuqishme dhe mund të përdoret për të kryer të njëjtat detyra si kur përdorni gjuhë të tjera programimi (për shembull, bibliotekat janë të disponueshme për grafika 2D/3D, duke krijuar GUI dhe aplikacione në ueb).

Krijimi i një gjuhe të re u nxit nga dëshira për të arritur një kombinim të thjeshtësisë së sintaksës së gjuhës Go, shpejtësisë së përpilimit, lehtësisë së paralelizimit të operacioneve, transportueshmërisë dhe mirëmbajtjes së kodit me performancën e C/C++, sigurinë e Rust dhe gjenerimi i kodit të makinës në fazën e përpilimit Zig. Doja gjithashtu të merrja një përpilues kompakt dhe të shpejtë që mund të funksiononte pa varësi të jashtme, të shpëtonte nga shtrirja globale (ndryshoret globale) dhe të siguronte mundësinë për të rifreskuar kodin "të nxehtë".

Krahasuar me C++, gjuha e re është dukshëm më e thjeshtë, ofron shpejtësi më të shpejtë përpilimi (deri në 400 herë), praktikon teknika programimi të sigurta, nuk ka probleme me sjellje të papërcaktuara dhe ofron mjete të integruara për paralelizimin e operacioneve. Krahasuar me Python, V është më i shpejtë, më i thjeshtë, më i sigurt dhe më i mirëmbajtur. Krahasuar me Go, V nuk ka variabla globale, nuk ka null, të gjitha vlerat e variablave duhet të përcaktohen gjithmonë, të gjitha objektet janë të pandryshueshme si parazgjedhje, vetëm një lloj caktimi mbështetet ("a := 0"), një shumë më kompakte koha e ekzekutimit dhe madhësia e skedarëve të ekzekutueshëm që rezultojnë, prania e transportueshmërisë direkte nga C, mungesa e një grumbulluesi të mbeturinave, serializimi më i shpejtë, aftësia për të ndërthurur vargjet ("println('$foo: $bar.baz')").

fn main() {
zonat := ['lojë', 'web', 'vegla', 'shkencë', 'sisteme', 'GUI', 'celular'] a := 10
nese e vertete {
a := 20
}
për zonën në zonat {
println('Përshëndetje, zhvillues të $area!')
}
}

Karakteristikat e projektit:

  • Përpilues kompakt dhe i shpejtë, i cili së bashku me bibliotekën standarde zë rreth 400 KB. Shpejtësia e lartë e përpilimit arrihet përmes gjenerimit të drejtpërdrejtë të kodit të makinës dhe modularitetit. Shpejtësia e përpilimit është afërsisht 1.2 milion rreshta kodi në sekondë në një bërthamë CPU (vërehet se gjatë funksionimit V mund të përdorë C, atëherë shpejtësia bie në 100 mijë rreshta në sekondë). Vetë-montimi i përpiluesit, i cili gjithashtu është shkruar në gjuhën V (ekziston gjithashtu një version referencë në Go), zgjat afërsisht 0.4 sekonda. Deri në fund të vitit pritet të përfundojë puna për optimizime shtesë, të cilat do të reduktojnë kohën e ndërtimit të kompajlerit në 0.15 sekonda. Duke gjykuar nga testet e kryera nga zhvilluesi, vetë-montimi i Go kërkon 512 MB hapësirë ​​në disk dhe funksionon në 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 përpilohen në skedarë të ekzekutueshëm pa varësi të jashtme. Madhësia e skedarit të ekzekutueshëm të një serveri të thjeshtë http pas montimit është vetëm 65 KB;
  • Performanca e aplikacioneve të përpiluara është në nivel të asambleve të programeve C;
  • Aftësia për të bashkëvepruar 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ë të pajtueshme me C;
  • Mbështetje për përkthimin e projekteve C/C++ në një përfaqësim në gjuhën V. Një analizues nga Clang përdoret për përkthim. Jo të gjitha tiparet e standardit C janë mbështetur ende, por aftësitë aktuale të përkthyesit janë tashmë të mjaftueshme për përkthim në gjuhën e lojës V DOOM. Përkthyesi C++ është ende në një fazë të hershme zhvillimi;
  • Mbështetje e integruar për serializimin, pa u lidhur me kohën e funksionimit;
  • Minimizimi i operacioneve të alokimit të memories;
  • Sigurimi i sigurisë: pa NULL, variabla globale, vlera të papërcaktuara dhe ripërcaktim të ndryshores. Kontroll i integruar i tejkalimit të tamponit. Mbështetje për funksionet gjenerike (Generic). Objektet dhe strukturat që nuk mund të ndryshohen si parazgjedhje;
  • Mundësia e rimbushjes së kodit "të nxehtë" (duke reflektuar ndryshimet në kod në fluturim pa ripërpilim);
  • Mjete për të siguruar multithreading. Ashtu si në gjuhën Go, një konstrukt si "run foo()" përdoret për të nisur një fill të ri ekzekutimi (i ngjashëm me "go foo()"). Në të ardhmen, është planifikuar mbështetje për gorutinat dhe një planifikues fijesh;
  • Mbështetje për sistemet operative Windows, macOS, Linux, *BSD. Është planifikuar të shtohet mbështetje për Android dhe iOS deri në fund të vitit;
  • Menaxhimi i kujtesës në kohën e kompilimit (si në Rust), pa përdorur një grumbullues mbeturinash;
  • Disponueshmëria e një pakete veglash me shumë platforma për daljen grafike, duke përdorur GDI+/Cacoa dhe OpenGL për renderim (është planifikuar mbështetje për DirectX, Vulkan dhe Metal API). Ka mjete për të punuar me objekte 3D, animacion skeletor dhe kontrollin e kamerës;
  • Disponueshmëria e një biblioteke për gjenerimin e ndërfaqeve grafike me elementë të dizajnit vendas për secilin OS. Windows përdor WinAPI/GDI+, macOS përdor Kakaon dhe Linux përdor grupin e vet të miniaplikacioneve. Biblioteka është përdorur tashmë në zhvillim Volt — klient për Slack, Skype, Gmail, Twitter dhe Facebook;

    Plani është të krijohet një aplikacion i dizajnit të ndërfaqes si Delphi, të ofrohet një API deklarative e ngjashme me SwiftUI dhe React Native dhe të ofrohet mbështetje për krijimin e aplikacioneve celulare për iOS dhe Android;

    Gjuhë programimi V me burim të hapur

  • Disponueshmëria e një kornize të integruar në internet, e cila përdoret për të krijuar një faqe interneti, forum dhe blog për zhvilluesit e projektit. Mbështetet parapërpilimi i shablloneve HTML, pa i përpunuar ato për çdo kërkesë;
  • Mbështetje për përpilim të kryqëzuar. Për të ndërtuar skedarin e ekzekutueshëm për Windows, thjesht ekzekutoni "v -os windows", dhe për Linux - "v -os linux" (mbështetja e ndërthurjes për macOS pritet më vonë). Kompilimi i kryqëzuar funksionon edhe për aplikacione grafike;
  • Menaxheri i integruar i varësisë, menaxheri i paketave dhe mjetet e ndërtimit. Për të ndërtuar programin, thjesht ekzekutoni "v.", pa përdorur markë ose shërbime të jashtme. Për të instaluar biblioteka shtesë, thjesht ekzekutoni, për shembull, "v get sqlite";
  • Disponueshmëria e shtojcave për zhvillim në gjuhën V në redaktorë VS Kodi и vrull.

Разработка perceptuar komunitet me skepticizëm, pasi kodi i publikuar tregonte se jo të gjitha aftësitë e deklaruara janë zbatuar ende dhe kërkohet një punë shumë e madhe për zbatimin e të gjitha planeve.
Përveç kësaj, fillimisht depoja kishte vendosur kod i prishur që ka probleme me montimin dhe ekzekutimin. Supozohet se autori nuk ka arritur ende në fazën në të cilën ata fillojnë të vërejnë Ligji i Paretos, sipas të cilit 20% e përpjekjes prodhon 80% të rezultatit, dhe 80% e mbetur e përpjekjes prodhon vetëm 20% të rezultatit.

Ndërkohë, gjurmuesit të gabimeve të Project V janë hequr rreth 10 postime demonstrim kodi me cilësi të ulët, për shembull, tregon përdorimin e inserteve C dhe përdorimin në bibliotekën e funksioneve për fshirjen e drejtorisë së komandës rm përmes thirrjes os.system("rm -rf $path"). Autor i projektit thase ai fshiu vetëm mesazhet, botuar troll (me ndryshime që konfirmojnë vlefshmërinë e kritikës, mbetur в historia e redaktimit).

Burimi: opennet.ru

Shto një koment