V asụsụ mmemme mepere emepe

Asụgharị n'ime udi nke oghe mkpokọta maka asụsụ V. V bụ asụsụ igwe achịkọtara nke ọma pịnye nke ọma na-elekwasị anya n'ime ka mmepe dị mfe idowe yana ngwa ngwa ikpokọta. Koodu nchịkọta, ọba akwụkwọ na ngwaọrụ ndị yiri ya emeghe n'okpuru ikike MIT.

Syntax nke V yiri Go, na-agbaziri ụfọdụ ihe arụrụ n'aka Oberon, Rust na Swift. A na-eme ka asụsụ ahụ dị mfe dị ka o kwere mee na, dịka onye mmepụta si kwuo, nkeji 30 nke ọmụmụ zuru ezu iji mụta ihe ndị bụ isi. akwụkwọ. N'otu oge ahụ, asụsụ ahụ ka dị ike nke ukwuu ma enwere ike iji ya rụọ otu ọrụ dị ka mgbe ị na-eji asụsụ mmemme ndị ọzọ (dịka ọmụmaatụ, ọba akwụkwọ dị maka eserese 2D/3D, mepụta GUI na ngwa weebụ).

Emebere asụsụ ọhụrụ site n'ọchịchọ iji nweta nchikota nke asụsụ Go dị mfe nke syntax, ọsọ nchikota, ịdị mfe nke imekọrịta ihe, Portability na maintainability nke koodu na arụmọrụ nke C/C ++, nchekwa nke nchara na ọgbọ nke koodu igwe na ọkwa nchịkọta Zig. M chọkwara ịnweta kọmpat na ngwa ngwa ngwa ngwa nke nwere ike ịrụ ọrụ na-enweghị ihe ndabere nke mpụga, wepụ ụwa zuru ụwa ọnụ (mgbanwe ụwa) ma nye ikike "ọkụ" ibugharị koodu ahụ.

E jiri ya tụnyere C++, asụsụ ọhụrụ ahụ dị mfe nke ukwuu, na-enye ọsọ nchikota ngwa ngwa (ihe ruru ugboro 400), na-eme usoro mmemme dị nchebe, enweghị nsogbu na omume enweghị nkọwa, ma na-enye ngwaọrụ arụnyere arụ ọrụ maka imekọrịta ihe. Tụnyere Python, V na-agba ọsọ, dị mfe, dị nchebe, yana enwere ike idobe ya. E jiri ya tụnyere Go, V enweghị mgbanwe zuru ụwa ọnụ, ọ nweghị ihe efu, ụkpụrụ niile na-agbanwe agbanwe kwesịrị ịkọwapụta mgbe niile, ihe niile anaghị agbanwe agbanwe na ndabara, naanị otu ụdị ọrụ ka a na-akwado ("a: = 0"), kọmpat ka ukwuu. Oge ojiri gaa na nha nke faịlụ executable ga-esi na ya pụta, ọnụnọ nke mbugharị ozugbo sitere na C, enweghị onye na-achịkọta ihe mkpofu, ngwa ngwa serialization, ikike interpolate ụdọ (“println('$ foo: $bar.baz')”).

fn isi() {
mpaghara: = ['egwuregwu', 'web', 'ngwaọrụ', 'sayensị', 'sistemụ', 'GUI', 'mobile'] a:= 10
ọ bụrụ eziokwu {
na: = 20
}
maka mpaghara na mpaghara {
println ('Ndewo, ndị mmepe mpaghara $!')
}
}

Atụmatụ oru ngo:

  • Kọmpat na ngwa ngwa ngwa ngwa, nke yana ụlọ akwụkwọ ọkọlọtọ na-ewe ihe dịka 400 KB. A na-enweta ọsọ nchikota dị elu site n'ọgbọ nke koodu igwe na modularity. Ọsọ nchikota bụ ihe dịka 1.2 nde ahịrị koodu kwa sekọnd na otu isi CPU (a na-ahụta na n'oge ọrụ V nwere ike iji C, yabụ ọsọ na-agbada ruo 100 puku ahịrị kwa sekọnd). Mgbakọ nke onye nchịkọta onwe, nke edekwara n'asụsụ V (enwekwara ụdị ntụaka na Go), na-ewe ihe dịka 0.4 sekọnd. Ka ọ na-erule ngwụsị nke afọ, a na-atụ anya ịrụ ọrụ na njikarịcha ndị ọzọ, nke ga-ebelata oge nhazi ihe nchịkọta na 0.15 sekọnd. Na-ekpe ikpe site na ule nke onye mmepụta na-eduzi, mgbakọ onwe onye nke Go chọrọ 512 MB ohere diski ma na-agba ọsọ na otu nkeji na ọkara, nchara na-achọ 30 GB na 45 nkeji, GCC - 8 GB na 50 nkeji, Clang - 90 GB na Nkeji 25,
    Swift - 70 GB na nkeji 90;

  • A na-achịkọta mmemme n'ime faịlụ ndị enwere ike ịmegharị na-enweghị ndabere mpụga. Nha faịlụ nwere ike ime nke ihe nkesa http dị mfe mgbe mgbakọ gasịrị bụ naanị 65 KB;
  • Arụmọrụ nke ngwa achịkọtara dị na ọkwa nke mgbakọ nke mmemme C;
  • Ikike iji koodu C na-emekọrịta ihe n'enweghị ihe ọ bụla, na-enweghị ihe ọ bụla ọzọ. Enwere ike ịkpọ ọrụ dị n'asụsụ C site na koodu n'asụsụ V, ma ọzọ, koodu dị n'asụsụ V nwere ike ịkpọ n'asụsụ ọ bụla dabara na C;
  • Nkwado maka ịtụgharị ọrụ C/C++ ka ọ bụrụ nnọchite n'asụsụ V. A na-eji nzagharị si Clang mee ntụgharị asụsụ. Ọ bụghị atụmatụ niile nke ọkọlọtọ C ka akwadoro, mana ikike onye ntụgharị ugbu a ezuola ntụgharị n'asụsụ V game DOOM. Onye ntụgharị C ++ ka nọ n'oge mmalite nke mmepe;
  • Nkwado serialization wuru n'ime, na-enweghị njikọ na oge ojiri gaa;
  • Ibelata ọrụ oke ebe nchekwa;
  • Na-ahụ maka nchekwa: enweghị NULL, mgbanwe ụwa, ụkpụrụ na-akọwapụtaghị na ngbanwe agbanwe. Nlele ihe nkpuchi arụnyere arụrụala. Nkwado maka ọrụ izugbe (Generic). Ihe na ihe owuwu nke enweghị ike ịgbanwe site na ndabara;
  • Enwere ike ịmegharị koodu "ọkụ" (na-egosipụta mgbanwe na koodu na ofufe na-enweghị nchịkọta);
  • Ngwa maka ịhụ na multithreading. Dịka n'asụsụ Go, a na-eji ihe nrụpụta dị ka "run foo()" na-amalite eri ogbugbu ọhụrụ (nke yiri "go foo()"). N'ọdịnihu, a na-eme atụmatụ nkwado maka goroutines na onye nhazi eri;
  • Nkwado maka Windows, macOS, Linux, * BSD sistemụ arụmọrụ. A na-eme atụmatụ ịgbakwunye nkwado maka gam akporo na iOS na njedebe nke afọ;
  • Njikwa ebe nchekwa na oge nchịkọta (dị ka ọ dị na nchara), na-ejighi ihe mkpofu;
  • Ịnweta ngwa ọrụ ọtụtụ nyiwe maka mmepụta eserese, na-eji GDI+/Cocoa na OpenGL maka nsụgharị (akwado maka DirectX, Vulkan na Metal APIs). Enwere ngwaọrụ maka ịrụ ọrụ na ihe 3D, ihe nkiri skeletal na njikwa igwefoto;
  • Ịnweta ọbá akwụkwọ maka ịmepụta ihe osise eserese nwere ihe ndị e ji emepụta ihe dị na OS ọ bụla. Windows na-eji WinAPI/GDI+, macOS na-eji koko, Linux na-ejikwa wijetị nke ya. Ejila ụlọ akwụkwọ ahụ na mmepe volt - onye ahịa maka Slack, Skype, Gmail, Twitter na Facebook;

    Atụmatụ ahụ bụ ịmepụta ngwa imewe ihe dị ka Delphi, nye API nkwupụta yiri SwiftUI na React Native, ma nye nkwado maka ịmepụta ngwa mkpanaaka maka iOS na Android;

    V asụsụ mmemme mepere emepe

  • Ịnweta ihe nrụnye webụ arụnyere, nke a na-eji emepụta weebụsaịtị, forum na blọọgụ maka ndị mmepe ọrụ. A na-akwado nhazi nke ndebiri HTML, na-enweghị nhazi ha na arịrịọ ọ bụla;
  • Nkwado mkpokọta obe. Iji wuo faịlụ executable maka Windows, gbaa ọsọ “v -os windows”, yana maka Linux - “v -os linux” (a na-atụ anya nkwado mkpokọta-cross maka macOS ma emechaa). Mkpokọta obe na-arụkwa ọrụ maka ngwa eserese;
  • Onye njikwa ndabere arụnyere arụnyere, njikwa ngwugwu na ngwaọrụ wuo. Iji wuo mmemme ahụ, gbaa ọsọ “v.” na-ejighi ihe eji eme ihe ma ọ bụ mpụga. Iji wụnye ọba akwụkwọ ndị ọzọ, gbaa ọsọ, dịka ọmụmaatụ, "v get sqlite";
  • Nnweta plugins maka mmepe na asụsụ V na ndị ndezi Usoro VS и Vim.

Mmepe ghọtara obodo na obi abụọ, ebe ọ bụ na koodu e bipụtara gosipụtara na ọ bụghị ikike niile ekwuputara ka emejuputala ma a na-achọ nnukwu ọrụ dị ukwuu iji mejuputa atụmatụ niile.
Ke adianade do, na mbụ repository nwere etinyere koodu agbajiri agbaji nke nwere nsogbu na mgbakọ na mkpochapụ. A na-eche na onye edemede ahụ erubeghị ọkwa nke ha malitere ịhụ Iwu Pareto, dị ka nke 20% nke mgbalị na-emepụta 80% nke nsonaazụ, na 80% fọdụrụnụ na-arụpụta nanị 20% nke nsonaazụ.

Ka ọ dịgodị, Project V's bug tracker ewepụrụ ihe dị ka posts iri na ya ngosi koodu dị ala, dịka ọmụmaatụ, na-egosi iji ntinye C-inserts na iji n'ọbá akwụkwọ nke ọrụ maka ihichapụ ndekọ nke iwu rm site na oku os.system ("rm -rf $ ụzọ"). Onye edemede nke oru ngo kwuruna ọ na-ehichapụ naanị ozi, bipụtara troll (ya na mgbanwe na-akwado nkwado nke nkatọ ahụ, nọrọ в dezie akụkọ ihe mere eme).

isi: opennet.ru

Tinye a comment