V zimanê bernamekirinê çavkaniya vekirî

Wergerandin nav kategoriya berhevkarê vekirî ji bo ziman V. V zimanek statîkî ye ku ji hêla makîneyê ve hatî berhev kirin e ku balê dikişîne ser domandina pêşkeftinê hêsantir û berhevkirina pir bilez. Koda berhevkar, pirtûkxane û amûrên têkildar vekirî ye di bin lîsansa MIT.

Hevoksaziya V-yê pir dişibihe Go, hin avahî ji Oberon, Rust û Swift deyn dike. Ziman bi qasî ku gengaz tê hêsan kirin û, li gorî pêşdebiran, 30 hûrdeman xwendin ji bo fêrbûna bingehîn bes e. belgekirin. Di heman demê de, ziman pir bi hêz dimîne û dikare ji bo pêkanîna heman karan wekî dema karanîna zimanên din ên bernamekirinê (mînakî, pirtûkxane ji bo grafikên 2D/3D, afirandina GUI û serîlêdanên malperê hene) were bikar anîn.

Afirandina zimanek nû ji ber xwesteka bidestxistina hevoksaziya hevoksaziya zimanê Go, leza berhevkirinê, hêsankirina paralelkirina operasyonan, veguheztin û domandina kodê bi performansa C/C++, ewlehiya Rust û hilberîna koda makîneyê di qonaxa berhevkirina Zig de. Di heman demê de min dixwest ku ez berhevkarek tevlihev û bilez bistînim ku karibe bêyî girêdanên derveyî bixebite, ji qada gerdûnî (guherbarên gerdûnî) xilas bibe û şiyana barkirina kodê "germ" peyda bike.

Li gorî C++, zimanê nû bi girîngî hêsantir e, leza berhevkirinê ya zûtir peyda dike (heta 400 carî), teknîkên bernamesaziya ewledar dixebitîne, ji pirsgirêkên tevgerên nediyar re bêpar e, û amûrên çêkirî yên ji bo paralelkirina operasyonan peyda dike. Li gorî Python-ê, V zûtir, hêsan, ewledar û domdartir e. Li gorî Go, V guhêrbarên gerdûnî tune, bê null, divê hemî nirxên guhêrbar her gav bêne diyar kirin, hemî tişt ji hêla xwerû ve neguhêrbar in, tenê celebek peywirê tê piştgirî kirin ("a := 0"), pir girîngtir dema xebitandinê û mezinahiya pelên îcrakar ên ku têne encamdan, hebûna veguheztina rasterast ji C, nebûna berhevkarek çopê, serialîzasyona zûtir, şiyana navhevkirina rêzan ("println('$foo: $bar.baz')").

fn main() {
qadên := ['lîstik', 'web', 'alav', 'zanist', 'pergal', 'GUI', 'mobîl'] a := 10
heke rast {
a: = 20
}
ji bo herêmê li herêmên {
println('Silav, pêşdebirên $area!')
}
}

Taybetmendiyên Projeyê:

  • Berhevkarê tevlihev û bilez, ku digel pirtûkxaneya standard bi qasî 400 KB digire. Leza berhevokê ya bilind bi hilberîna rasterast a koda makîneyê û modularîteyê ve tê bidestxistin. Leza berhevkirinê bi qasî 1.2 mîlyon xetên kodê li ser yek bingehek CPU-yê ye (tê zanîn ku di dema xebatê de V dikare C bikar bîne, wê hingê leza di çirkeyê de dadikeve 100 hezar xetên). Xwe-sazkirina berhevkerê, ku di heman demê de bi zimanê V-yê jî hatî nivîsandin (di Go de guhertoyek referansê jî heye), bi qasî 0.4 saniyeyan digire. Di dawiya salê de, tê payîn ku xebata li ser xweşbîniyên zêde were qedandin, ku dê dema çêkirina berhevkerê 0.15 çirkeyan kêm bike. Li gorî ceribandinên ku ji hêla pêşdebiran ve hatine kirin dadbar kirin, xwe-civîna Go 512 MB cîhê dîskê hewce dike û di yek deqîqe û nîv de dixebite, Rust 30 GB û 45 hûrdem hewce dike, GCC - 8 GB û 50 hûrdem, Clang - 90 GB û 25 deqîqe,
    Swift - 70 GB û 90 hûrdem;

  • Bername bêyî girêdanên derve di nav pelên îcrakar de têne berhev kirin. Mezinahiya pelê ya kargêr a serverek http ya hêsan piştî kombûnê tenê 65 KB ye;
  • Performansa serîlêdanên berhevkirî di asta meclîsên bernameyên C de ye;
  • Kapasîteya ku meriv bi koda C-yê re bêkêmasî têkilî daynin, bêyî serê zêde. Fonksiyon di zimanê C de dikarin ji koda bi zimanê V bêne gazî kirin, û berevajî vê yekê, koda di zimanê V de dikare bi her zimanî ku bi C re lihevhatî be were gotin;
  • Piştgiriya ji bo wergerandina projeyên C/C++ bo temsîla bi zimanê V. Parserek ji Clang ji bo wergerê tê bikaranîn. Hemî taybetmendiyên standard C hîn nayên piştgirî kirin, lê kapasîteyên heyî yên wergêr jixwe têra werger bi zimanê V game DOOM. Wergêrê C++ hîna di qonaxeke destpêkê ya pêşveçûnê de ye;
  • Piştgiriya serialîzasyonê ya çêkirî, bêyî ku bi dema xebitandinê ve were girêdan;
  • Kêmkirina operasyonên veqetandina bîrê;
  • Paqijkirina ewlehiyê: bê NULL, guhêrbarên gerdûnî, nirxên nediyar û ji nû ve pênasekirina guhêrbar. Kontrolkirina derbasbûna tamponê ya çêkirî. Piştgiriya ji bo fonksiyonên gelemperî (Generic). Tişt û avahiyên ku ji hêla xwerû ve nayên guhertin;
  • Ihtîmala ji nû ve barkirina koda "germ" (berçavkirina guheztinên kodê yên di firînê de bêyî ji nû ve berhevkirinê);
  • Amûrên ji bo misogerkirina multithreading. Mîna di zimanê Go de, avahiyek mîna "run foo()" tê bikar anîn da ku têlek nû ya darvekirinê dest pê bike (mîna "go foo()"). Di pêşerojê de, piştgirî ji bo goroutines û plansazkerek mijarê tê plan kirin;
  • Piştgiriya pergalên xebitandinê yên Windows, macOS, Linux, *BSD. Tê plan kirin ku heya dawiya salê piştgirî ji bo Android û iOS zêde bikin;
  • Rêvebiriya bîranînê di dema berhevkirinê de (wek Rust), bêyî karanîna berhevkarek çopê;
  • Hebûna amûrek pir-platformê ya ji bo hilberîna grafîkê, bi karanîna GDI+/Kakao û OpenGL-ê ji bo renderkirinê (piştgiriya DirectX, Vulkan û API-yên Metal tê plansaz kirin). Amûrên ji bo xebitandina tiştên 3D, anîmasyona skeletal û kontrola kamerayê hene;
  • Hebûna pirtûkxaneyek ji bo hilberîna navgînên grafîkî yên bi hêmanên sêwiranê yên xwecihî yên her OS-ê. Windows WinAPI/GDI+ bikar tîne, macOS Cocoa bikar tîne, û Linux komek widgetên xwe bikar tîne. Pirtûkxane jixwe di pêşveçûnê de tê bikar anîn Wolt - xerîdar ji bo Slack, Skype, Gmail, Twitter û Facebook;

    Plan ev e ku meriv serîlêdanek sêwirana navberê ya mîna Delphi-yê biafirîne, API-yek daxuyandî ya mîna SwiftUI û React Native peyda bike, û ji bo çêkirina serîlêdanên mobîl ji bo iOS û Android-ê piştgirî peyda bike;

    V zimanê bernamekirinê çavkaniya vekirî

  • Hebûna çarçoveyek malperê ya çêkirî, ku ji bo pêşdebirên projeyê ji bo afirandina malper, forum û blogê tê bikar anîn. Berhevkirina şablonên HTML-ê têne piştgirî kirin, bêyî ku wan li ser her daxwazek pêvajoyê bikin;
  • Piştgiriya berhevkirina xaçê. Ji bo avakirina pelê îcrakar ji bo Windows-ê, tenê "v -os windows" bimeşînin, û ji bo Linux - "v -os linux" (piştgiriya hevberhevkirina ji bo macOS paşê tê çaverê kirin). Xaça-berhevkirin ji bo sepanên grafîkî jî dixebite;
  • Rêvebirê pêwendiya çêkirî, rêveberê pakêtê û amûrên çêkirinê. Ji bo avakirina bernameyê, tenê "v.", bêyî karanîna make an karûbarên derveyî bikar bînin. Ji bo sazkirina pirtûkxaneyên din, tenê bimeşînin, mînakî, "v get sqlite";
  • Hebûna pêvekan ji bo pêşkeftina bi zimanê V di edîtoran de Koda VS и Vim.

Pêşveçûn têgihîştin civaka bi gumanbariyê, ji ber ku koda hatî weşandin nîşan da ku hîna hemî şiyanên ku hatine ragihandin nehatine bicîh kirin û ji bo cîbicîkirina hemî planan xebatek pir mezin hewce ye.
Wekî din, di destpêkê de depo hebûn şandin koda şikestî ku pirsgirêkên civîn û darvekirinê hene. Tê texmîn kirin ku nivîskar hîn negihîştiye qonaxa ku tê de dest pê dike Qanûna Pareto, li gorî ku 20% ji hewldana 80% ji encamê, û 80% mayî ji hewldanên tenê 20% ji encama.

Di vê navberê de, şopînera xeletiya Project V bi qasî 10 postan jê hatine rakirin xwepişanî Mînakî, koda kalîteya nizm, karanîna navdêrên C-yê û karanîna di pirtûkxaneya fonksiyonan de ji bo jêbirina pelrêça fermana rm bi banga os.system ("rm -rf $path") destnîşan dike. Nivîskarê projeyê ragihandku wî tenê peyam jêbirin, weşandin troll (bi guhertinên ku rastbûna rexneyê piştrast dikin, sekinî в dîroka biguherîne).

Source: opennet.ru

Add a comment