V er et nytt, åpen kildekode, statisk skrevet programmeringsspråk laget av Alexander Medvednikov. V lover å være enkel, rask og sikker å bygge vedlikeholdbar programvare med. Flere språk har påvirket Vs design, inkludert Oberon, Swift, Kotlin og Python.
Lær om V, dens funksjoner og hvordan den kan sammenlignes med andre språk.
Ting du kan gjøre med V
V har mye kraft, og du kan bruke den i nesten alle bransjer, inkludert systemprogrammering, webutvikling og spillutvikling. Språket er enkelt, raskt og trygt.
V tilbyr et bredt utvalg av kraftige grafikkbiblioteker for spillutvikling. Disse bygger på toppen av GDI+/Cocoa Drawing og OpenGL for mer sofistikerte 2D/3D-applikasjoner.
V har en UI-modul som bruker native GUI-verktøysett for mobilapper, WinAPI/GDI+ for Windows, Cocoa for macOS og tilpasset tegning for Linux.
Grunner til å prøve V
Selv om V er et nytt språk, gjør disse fordelene det til et legitimt alternativ.
Enkelhet
For å bygge prosjektet ditt trenger du bare å kjøre:
v.
Du trenger ikke å sette opp et byggemiljø, lage en makefile, importere overskrifter eller sette opp et virtuelt miljø. Hvis du ønsker å installere nye biblioteker via
vpm (V-pakkebehandler), bare kjørv installere <pakkenavn>
Sikkerhet
Som standard har V:
- uforanderlige variabler
- uforanderlige strukturer
- alternativ/resultat og obligatoriske feilkontroller
- sumtyper
- generiske legemidler
- uforanderlig funksjon args
og nei:
- null
- variabel skyggelegging
- udefinert oppførsel
- globale variabler (kan aktiveres for apper på lavt nivå som kjerner, via flagg)
Kompileringshastighet
Noen programmeringsspråk er raskere enn andre, når det gjelder utførelse eller kompilering. V er like presterende som C. Den kan skryte av kompileringstider på rundt 110k loc/s med en C-backend og omtrent 1 million loc/s med native og tcc-backends. V styrer også unna unødvendige tildelinger for å gi en enkel abstraksjonsfri kodingstilnærming.
Minnehåndtering
V bruker ikke en søppeloppsamler, noe som gjør det forskjellig fra språk som Go og Java. I stedet administrerer V minnet på kompileringstidspunktet, men fungerer bare for grunnleggende situasjoner. Du må administrere det manuelt for mer komplekse saker.
Formatering for konsistens i kodestil
Du kan bruke vfmt formatter for å formatere V-koden og forbedre lesbarheten ved å kjøre:
v fmt -w <ditt_filnavn>.v
Vennlige feilmeldinger
Vs feilmeldinger er detaljerte, informative og nyttige. Ta en titt på dette eksemplet:
bruker.v:8:14:feil: `oppdateringsbruker` parameter `bruker` er foranderlig, må du gi 'mut': `update_user (mut bruker)`
7 | mut bruker := bruker{}
8 | update_user (bruker)
| ~~~~
9 | }
Ved hjelp av feilmeldingen kan du fikse denne koden:
mut bruker := bruker{}
update_user (mut bruker)
C++ vs. Gå vs. V: Sammenligning av de tre språkene
I disse eksemplene kan du se hvordan C++-, Go- og V-koden er forskjellig i spesifikke programmeringsbruk.
Hei Verden
I C++:
#inkludere <iostream>
inthoved-(){
std:: cout <<"Hei Verden!"<< std:: endl;
}
In Go:
pakke hoved-
import "fmt"
func hoved-(){
fmt. Println("Hei Verden!")
}
I V:
println('Hei Verden!')
I dette helt grunnleggende programmet—skrive ut teksten "Hello World!"— Du kan se at V er mye enklere enn C++ eller Go. Du trenger ikke å importere eller inkludere noen biblioteker for et så enkelt program.
Vektorinitialisering
I C++:
std:: vektor<int> tall = {1, 2, 3, 4};
In Go:
tall := []int{1, 2, 3, 4}
I V:
tall := [1, 2, 3, 4]
I dette tilfellet kan du se at V fortsatt produserer renere kode enn de to andre. I motsetning til Go og C++ vektorer, V krever ikke at vektorene holder verdier av en fast type.
Skrive ut en vektor
I C++:
std::copy (numbers.begin(), tall.slutt(),
std:: ostream_iterator<int>(std:: cout, ""));
std:: cout << std:: endl;
In Go:
fmt.Skriv ut(tall)
I V:
println (tall)
Vs println-funksjon kan skrive ut vektorvariabelen naturlig, akkurat som Gos kan, selv om sistnevnte bruker fmt-pakken. C++ iostream-headerfilene gir lignende funksjonalitet. Du må likevel ta vare på å skrive ut de individuelle elementene i vektoren selv.
Lese en fil
I C++:
#inkludere
#inkludereinthoved-(){
std::streng path = "/etc/hosts";
std::ifstream f(sti);
std::streng tekst;
text.assign(std::istreambuf_iterator<røye>(f), {});
hvis (!f)
std::cerr << "feil ved lesing fra fil" << std::endl;
}
In Go:
pakke hoved-
import (
"io/ioutil"
"Logg"
)func hoved-(){
sti := "/etc/hosts"
b, feil := ioutil. ReadFile (bane)hvis feil != null {
Logg.Skriv ut(feil)
komme tilbake
}
tekst := streng (b)
}
I V:
import os
sti := "/etc/hosts"
tekst := os.read_file (bane) eller {
eprintln (feil)
komme tilbake
}
For fillesing bruker V OS-modulen for å gi vanlige OS/plattformuavhengige funksjoner. Disse håndterer oppgaver som tilgang til kommandolinjeargumenter, lesing av filer og håndteringsprosesser. I dette tilfellet ønsker vi å lese en fil inn sti og returner innholdet, slik at du bruker lese_fil (bane) funksjon. read_file returnerer en feil hvis det ikke er noe eksisterende innhold i den gitte sti. Hvis du vil lære mer om andre moduler av V, kan det være lurt å sjekke ut dokumentasjonen deres.
Klar til å prøve V?
V er et nytt programmeringsspråk som fortsatt er i sine tidlige utviklingsstadier. Likevel har den mye kraft og er rask, trygg, enkel og vedlikeholdbar.
V har renere kode enn C++ og Go. Dette antyder at V kan hjelpe programmerere med å følge et av de grunnleggende programmeringsprinsippene. Så, er du klar til å prøve V?