V on uusi, avoimen lähdekoodin, staattisesti kirjoitettu ohjelmointikieli, jonka on luonut Alexander Medvednikov. V lupaa olla yksinkertainen, nopea ja turvallinen rakentaa ylläpidettävä ohjelmisto. Useat kielet ovat vaikuttaneet V: n suunnitteluun, mukaan lukien Oberon, Swift, Kotlin ja Python.

Opi V: stä, sen ominaisuuksista ja vertaa sitä muihin kieliin.

Asiat, joita voit tehdä V: n kanssa

V: ssä on paljon voimaa, ja voit käyttää sitä lähes kaikilla toimialoilla, mukaan lukien järjestelmäohjelmointi, web-kehitys ja pelikehitys. Kieli on suoraviivaista, nopeaa ja turvallista.

V tarjoaa laajan valikoiman tehokkaita grafiikkakirjastoja pelien kehittämiseen. Nämä rakentuvat GDI+/Cocoa Drawingin ja OpenGL: n päälle kehittyneemmille 2D/3D-sovelluksille.

V: ssä on käyttöliittymämoduuli, joka käyttää alkuperäisiä GUI-työkalusarjoja mobiilisovelluksille, WinAPI/GDI+:aa Windowsille, Cocoaa macOS: lle ja mukautettua piirustusta Linuxille.

Syitä kokeilla V

Vaikka V on uusi kieli, nämä edut tekevät siitä laillisen vaihtoehdon.

Yksinkertaisuus

Rakentaaksesi projektisi sinun tarvitsee vain suorittaa:

v.

Sinun ei tarvitse määrittää rakennusympäristöä, luoda make-tiedostoa, tuoda otsikoita tai perustaa virtuaaliympäristöä. Jos haluat asentaa uusia kirjastoja kautta vpm (V-paketinhallinta), suorita vain

v asentaa <paketin nimi>

Turvallisuus

Oletuksena V: ssä on:

  • muuttumattomia muuttujia
  • muuttumattomia rakenteita
  • vaihtoehto/tulos ja pakolliset virhetarkistukset
  • summatyypit
  • geneeriset lääkkeet
  • muuttumaton funktio args

ja ei:

  • tyhjä
  • muuttuva varjostus
  • määrittelemätön käytös
  • globaalit muuttujat (voidaan ottaa käyttöön matalan tason sovelluksille, kuten ytimille, lipun kautta)

Kokoamisnopeus

Jotkut ohjelmointikielet ovat nopeampia kuin toiset suorituksen tai kääntämisen suhteen. V on yhtä suorituskykyinen kuin C. Sen käännösajat ovat noin 110 000 loc/s C-taustajärjestelmällä ja noin 1 miljoona loc/s alkuperäisillä ja tcc-taustajärjestelmillä. V välttää myös tarpeettomia varauksia tarjotakseen yksinkertaisen abstraktiottoman koodausmenetelmän.

Muistin hallinta

V ei käytä roskakoria, mikä tekee siitä erilaisen kuin Go ja Java. Sen sijaan V hallitsee muistia käännöshetkellä, mutta toimii vain perustilanteissa. Sinun on hallittava sitä manuaalisesti monimutkaisemmissa tapauksissa.

Muotoilu koodityylien johdonmukaisuutta varten

Voit käyttää vfmt formatteri muotoillaksesi V-koodisi ja parantamalla sen luettavuutta suorittamalla:

v fmt -w <sinun_tiedostonimi>.v

Ystävälliset virheilmoitukset

V: n virheilmoitukset ovat yksityiskohtaisia, informatiivisia ja hyödyllisiä. Katso tämä esimerkki:

user.v:8:14: virhe: `update_user` parametri `käyttäjä` on muuttuva, sinun on annettava `mut`: "update_user (mut user)".
7 | mut user := Käyttäjä{}
8 | update_user (käyttäjä)
| ~~~~
9 | }

Virheilmoituksen avulla voit korjata tämän koodin:

mut user := Käyttäjä{}
update_user (mut user)

C++ vs. Mene vs. V: Kolmen kielen vertailu

Näissä esimerkeissä voit nähdä, kuinka C++-, Go- ja V-koodi eroavat tietyissä ohjelmoinnin käyttötapauksissa.

Hei maailma

C++:ssa:

#sisältää <iostream>

intpää(){
std:: cout <<"Hei maailma!"<< std:: endl;
}

In Go:

paketti pää
tuonti "fmt"

func pää(){
fmt. Println("Hei maailma!")
}

V: ssä:

println('Hei maailma!')

Tässä aivan perusohjelmassa -tulostamalla tekstin "Hei maailma!"-Voit nähdä, että V on paljon yksinkertaisempi kuin C++ tai Go. Sinun ei tarvitse tuoda tai sisällyttää kirjastoja tällaista yksinkertaista ohjelmaa varten.

Vektorin alustus

C++:ssa:

std:: vektori<int> numerot = {1, 2, 3, 4};

In Go:

numerot := []int{1, 2, 3, 4}

V: ssä:

numerot := [1, 2, 3, 4]

Tässä käyttötapauksessa voit nähdä, että V tuottaa silti puhtaamman koodin kuin kaksi muuta. Toisin kuin Go ja C++-vektorit, V ei vaadi vektoreillaan olevan kiinteän tyyppisiä arvoja.

Vektorin tulostaminen

C++:ssa:

std::copy (numbers.begin(), numeroita.end(),
std:: ostream_iterator<int>(std:: cout, ""));

std:: cout << std:: endl;

In Go:

fmt.Println(numeroita)

V: ssä:

println (numerot)

V: n println-funktio voi tulostaa vektorimuuttujan natiivisti, aivan kuten Go voi, vaikka jälkimmäinen käyttää fmt-pakettia. C++ iostream -otsikkotiedostot tarjoavat samanlaisia ​​toimintoja. Sinun on kuitenkin silti huolehdittava vektorin yksittäisten elementtien tulostamisesta itse.

Tiedoston lukeminen

C++:ssa:

#sisältää
#sisältää

intpää(){
std::merkkijono polku = "/etc/hosts";
std::ifstream f(polku);
std::merkkijono teksti;
text.assign(std::istreambuf_iterator<hiiltyä>(f), {});

jos (!f)
std::cerr << "virhe luettaessa tiedostosta" << std::endl;
}

In Go:

paketti pää

tuonti (
"io/ioutil"
"Hirsi"
)

func pää(){
polku := "/etc/hosts"
b, err := ioutil. ReadFile (polku)

jos err != nolla {
Hirsi.Println(err)
palata
}

teksti := merkkijono (b)
}

V: ssä:

tuonti os

polku := "/etc/hosts"
teksti := os.read_file (polku) tai {
eprintln (err)
palata
}

Tiedostojen lukemiseen V käyttää os-moduulia tarjotakseen yleisiä käyttöjärjestelmästä/ympäristöstä riippumattomia toimintoja. Nämä käsittelevät tehtäviä, kuten komentoriviargumenttien käyttöä, tiedostojen lukemista ja käsittelyprosesseja. Tässä tapauksessa haluamme lukea tiedoston sisään polku ja palauta sisältö, joten käytät read_file (polku) toiminto. read_file palauttaa virheen, jos annetussa tiedostossa ei ole sisältöä polku. Jos haluat oppia lisää muut V: n moduulit, sinun kannattaa tutustua heidän asiakirjoihin.

Oletko valmis kokeilemaan V: tä?

V on uusi ohjelmointikieli, joka on vielä kehitysvaiheessa. Siitä huolimatta siinä on paljon tehoa ja se on nopea, turvallinen, helppo ja huollettava.

V: ssä on puhtaampi koodi kuin C++:ssa ja Gossa. Tämä viittaa siihen, että V voi auttaa ohjelmoijia noudattamaan yhtä ohjelmoinnin perusperiaatteista. Joten oletko valmis kokeilemaan V: tä?