V programming mutauro wakavhurika sosi

Yakashandurwa muchikamu cheakavhurika compiler ye mutauro V. V mutauro wakanyorwa wakanyorwa nemuchina unotarisisa kuita kuti budiriro ive nyore kuchengetedza uye nekukurumidza kuunganidza. Compiler kodhi, maraibhurari uye zvine hukama maturusi kuvhura pasi peMIT rezinesi.

V's syntax yakafanana neGo, kukwereta zvimwe zvinovaka kubva kuOberon, Rust, uye Swift. Mutauro unorerutswa zvakanyanya sezvinobvira uye, sekureva kwemugadziri, maminetsi makumi matatu ekudzidza akakwana kudzidza izvo zvekutanga. zvinyorwa. Panguva imwecheteyo, mutauro unoramba une simba uye unogona kushandiswa kuita mabasa akafanana kana uchishandisa mimwe mitauro yekuronga (semuenzaniso, maraibhurari anowanikwa e2D/3D mifananidzo, kugadzira maGUI uye mawebhu application).

Kusikwa kwemutauro mutsva kwakakurudzirwa nechishuwo chekuwana musanganiswa wemutauro weGo uri nyore we syntax, kukurumidza kuunganidza, kureruka kwekufananidza kwekushanda, kutakura uye kuchengetedza kwekodhi nekushanda kweC / C ++, kuchengetedzwa kweRust uye. kugadzirwa kwekodhi yemuchina paZig compilation stage. Ini ndaidawo kuwana compact uye inokurumidza compiler inogona kushanda pasina kutsamira kwekunze, kubvisa chiyero chepasi rose (pasi rose) uye nekupa kugona "kupisa" kurodha kodhi.

Kuenzaniswa neC ++, mutauro mutsva wakapfava zvakanyanya, unopa kukurumidza kuunganidza kumhanya (kusvika ku400 nguva), kudzidzira nzira dzakachengeteka dzehurongwa, hauna matambudziko nehunhu husina kutsanangurwa, uye unopa zvakavakwa-mukati maturusi ekufananidza mashandiro. Kuenzaniswa nePython, V inokurumidza, iri nyore, yakachengeteka, uye inochengeteka. Kuenzaniswa neGo, V haina machinjiro epasirese, hapana nulls, ese akasiyana siyana anofanirwa kugara achitsanangurwa, zvese zvinhu hazvichinjiki nekusarudzika, rudzi rumwe chete rwekugoverwa runotsigirwa ("a: = 0"), yakanyanya compact. nguva yekumhanya uye saizi yemafaira anokonzeresa, kuvapo kwekutakurika kwakananga kubva kuC, kusavapo kwemuunganidzi wemarara, kukurumidza kuita serialization, kugona kududzira tambo ("println('$foo: $bar.baz')").

fn chikuru() {
nzvimbo := ['mutambo', 'web', 'zvishandiso', 'sainzi', 'system', 'GUI', 'mobile'] a := 10
kana ichokwadi {
ku:=20
}
munzvimbo munzvimbo {
println('Mhoro, vagadziri venzvimbo yemadhora!')
}
}

Project Features:

  • Compact uye inokurumidza compiler, iyo pamwe chete neyakajairwa raibhurari inotora inosvika 400 KB. Yakakwira yekumhanyisa kumhanya inowanikwa kuburikidza nekugadzirwa kwakananga kwekodhi yemuchina uye modularity. Iyo yekumhanyisa kumhanya inosvika miriyoni miriyoni mitsara yekodhi pasekondi imwe chete yeCPU core (inocherechedzwa kuti panguva yekushanda V inogona kushandisa C, ipapo kumhanya kunodonha kusvika 1.2 zviuru mitsetse pasekondi). Kuzvibatanidza kwemugadziri, iyo yakanyorwa zvakare mumutauro weV (kune zvakare referensi vhezheni muGo), inotora anenge 100 masekondi. Pakupera kwegore, basa rekuwedzera optimizations rinotarisirwa kupedzwa, izvo zvinoderedza iyo compiler kuvaka nguva kusvika 0.4 masekondi. Tichitarisa bvunzo dzinoitwa nemugadziri, kuzvibatanidza kweGo kunoda 0.15 MB yedhisiki nzvimbo uye inomhanya muminiti imwe nehafu, Rust inoda 512 GB uye 30 maminetsi, GCC - 45 GB uye 8 maminetsi, Clang - 50 GB uye. 90 maminitsi,
    Swift - 70 GB uye 90 maminitsi;

  • Zvirongwa zvinounganidzwa kuita mafaera anogoneka pasina kutsamira kwekunze. Iyo inogoneka faira saizi yeyakareruka http server mushure mekusangana ingori 65 KB;
  • Kuita kwezvikumbiro zvakaunganidzwa kuri pamwero wemagungano eC zvirongwa;
  • Iko kugona kupindirana zvisina musono neC kodhi, pasina yekuwedzera pamusoro. Mabasa mumutauro weC anogona kudanwa kubva kukodhi mumutauro weV, uye zvinopesana, kodhi mumutauro weV inogona kudanwa mune chero mutauro unowirirana neC;
  • Rutsigiro rwekushandura mapurojekiti eC/C++ kuita chimiriri mumutauro weV. Muparidzi kubva kuClang anoshandiswa pakushandura. Haasi ese maficha eC standard anotsigirwa parizvino, asi kugona kwemuturikiri kwatokwana kududzira mumutauro weV mutambo DOOM. Mushanduri weC ++ achiri padanho rekutanga rebudiriro;
  • Yakavakirwa-mukati serialization rutsigiro, pasina kusungirirwa kunguva yekumhanya;
  • Kuderedza ndangariro yekugovera mabasa;
  • Kuve nechokwadi chekuchengetedza: hapana NULL, machinjiro epasi rose, hunhu husina kutsanangurwa uye kutsanangurwa patsva. Yakavakwa-mukati buffer pamusoro pekutarisa. Tsigiro yemabasa egeneric (Generic). Zvinhu uye zvimiro zvisingagoni kuchinjwa nekusavapo;
  • Mikana ye "inopisa" kodhi reloading (inoratidza shanduko yekodhi pane nhunzi pasina kudzoreredza);
  • Zvishandiso zvekusimbisa multithreading. Semumutauro weGo, chivakwa senge "run foo()" chinoshandiswa kutanga tambo nyowani yekuuraya (yakafanana ne"enda foo()"). Mune ramangwana, kutsigirwa kwegoroutines uye tambo scheduler inorongwa;
  • Tsigiro yeWindows, macOS, Linux, * BSD masisitimu anoshanda. Yakarongwa kuwedzera rutsigiro rwe Android uye iOS pakupera kwegore;
  • Memory management panguva yekuunganidza (semuna Rust), pasina kushandisa muunganidzi wemarara;
  • Kuwanikwa kwe-multi-platform toolkit yemifananidzo inobuda, uchishandisa GDI+/Cocoa uye OpenGL yekupa (rutsigiro rweDirectX, Vulkan uye Metal APIs yakarongwa). Pane zvishandiso zvekushanda nezvinhu zve 3D, skeletal animation uye kamera control;
  • Kuwanikwa kweraibhurari yekugadzira graphical interfaces ine dhizaini zvinhu zvakazvarwa kune yega OS. Windows inoshandisa WinAPI/GDI+, macOS inoshandisa Cocoa, uye Linux inoshandisa yayo seti yemajeti. Raibhurari iri kutoshandiswa mukuvandudza Volt - mutengi weSlack, Skype, Gmail, Twitter uye Facebook;

    Chirongwa ndechekugadzira Delphi-like interface design application, kupa declarative API yakafanana neSwiftUI uye React Native, uye kupa rubatsiro rwekugadzira nharembozha yeIOS ne Android;

    V programming mutauro wakavhurika sosi

  • Kuvepo kweiyo yakavakirwa-mukati webhu dhizaini, iyo inoshandiswa kugadzira webhusaiti, foramu uye blog kune vanogadzira chirongwa. Precompilation yeHTML templates inotsigirwa, pasina kuigadzirisa pachikumbiro chega chega;
  • Cross compilation rutsigiro. Kuti uvake faira rinogoneka reWindows, ingomhanya "v -os windows", uye yeLinux - "v -os linux" (muchinjika-kuunganidza rutsigiro rweMacOS unotarisirwa gare gare). Cross-compilation inoshandawo kune graphical application;
  • Akavakirwa-mukati anotsamira maneja, package maneja uye kuvaka maturusi. Kuvaka chirongwa, ingomhanya "v.", pasina kushandisa make kana ekunze zvishandiso. Kuisa mamwe maraibhurari, ingomhanya, semuenzaniso, "v get sqlite";
  • Kuvepo kwemaplugins ekuvandudza mumutauro weV muvapepeti VS Code ΠΈ Vim.

Development nzwisisa community with kusava nechokwadi, sezvo iyo yakadhindwa kodhi yakaratidza kuti hazvisi zvese zvakaziviswa masimba zvisati zvaitwa uye basa rakakura kwazvo rinodiwa kuita zvirongwa zvese.
Mukuwedzera, pakutanga repository yakanga ine posted kodhi yakaputsika ine matambudziko nekuungana uye kuuraya. Zvinofungidzirwa kuti munyori haasati asvika padanho ravanotanga kuona Mutemo waPareto, maererano neiyo 20% yekuedza inoburitsa 80% yemhedzisiro, uye yasara 80% yekuedza inoburitsa 20% chete yemhedzisiro.

Zvichakadaro, Project V's bug tracker yakange yave nezvikamu gumi zvabviswa kubva kuratidzira kodhi yemhando yakaderera, semuenzaniso, inoratidza kushandiswa kweC-insets uye kushandiswa muraibhurari yemabasa ekudzima dhairekitori remirairo yerm kuburikidza necall os.system("rm -rf $path"). Munyori wechirongwa yakashamiswakuti akangodzima mameseji chete, rakabudiswa troll (neshanduko dzinosimbisa chokwadi chekushoropodzwa, akagara Π² edit history).

Source: opennet.ru

Voeg