Tekstet e burimit të gjuhës së programimit V janë të hapura

ËshtĂ« transferuar nĂ« kategorinĂ« e kompilerĂ«ve tĂ« hapur pĂ«r gjuhĂ«n V. 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 Ă«shtĂ« i hapur 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 dokumentacion. 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 ndryshimit tĂ« 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 Volt — 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;

    Tekstet e burimit të gjuhës së programimit V janë të hapura
  • 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 VS Code dhe Vim.

Đ Đ°Đ·Ń€Đ°Đ±ĐŸŃ‚Đșа u pranuar nga komuniteti me skepticizĂ«m, 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 është i vendosur 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 ligji i Pareto, 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 demonstruar 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 deklaroi, tha se ai vetëm fshiu mesazhet, të publikuara nga troll (duke pasur parasysh që ndryshimet që konfirmojnë arsyetimin e kritikës, mbetën në në historikun e ndërrimeve).

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster