V er et nyt, open source, statisk-type programmeringssprog skabt af Alexander Medvednikov. V lover at være enkel, hurtig og sikker at bygge vedligeholdelsesvenlig software med. Flere sprog har påvirket V's design, herunder Oberon, Swift, Kotlin og Python.
Lær om V, dets funktioner, og hvordan det kan sammenlignes med andre sprog.
Ting du kan gøre med V
V har en masse magt, og du kan bruge den i næsten enhver industri, inklusive systemprogrammering, webudvikling og spiludvikling. Sproget er ligetil, hurtigt og sikkert.
V tilbyder en bred vifte af kraftfulde grafikbiblioteker til spiludvikling. Disse bygger oven på GDI+/Cocoa Drawing og OpenGL for mere sofistikerede 2D/3D-applikationer.
V har et UI-modul, der anvender native GUI-værktøjssæt til mobilapps, WinAPI/GDI+ til Windows, Cocoa til macOS og tilpasset tegning til Linux.
Grunde til at prøve V
Selvom V er et nyt sprog, gør disse fordele det til en legitim mulighed.
Enkelhed
For at bygge dit projekt skal du blot køre:
v .
Du behøver ikke at konfigurere et byggemiljø, oprette en make-fil, importere overskrifter eller konfigurere et virtuelt miljø. Hvis du ønsker at installere nye biblioteker via
vpm (V-pakkemanager), bare kørv installere <pakkenavn>
Sikkerhed
Som standard har V:
- uforanderlige variable
- uforanderlige strukturer
- mulighed/resultat og obligatoriske fejltjek
- sumtyper
- generiske lægemidler
- uforanderlig funktion args
og nej:
- nul
- variabel skygge
- udefineret adfærd
- globale variabler (kan aktiveres for apps på lavt niveau som kerner, via flag)
Kompilationshastighed
Nogle programmeringssprog er hurtigere end andre, hvad angår udførelse eller kompilering. V er lige så performant som C. Det kan prale af kompileringstider på omkring 110k loc/s med en C-backend og cirka 1 million loc/s med native og tcc-backends. V styrer også uden om unødvendige allokeringer for at give en enkel-abstraktionsfri kodningstilgang.
Hukommelseshåndtering
V bruger ikke en skraldeopsamler, hvilket gør det anderledes end sprog som Go og Java. I stedet administrerer V hukommelsen på kompileringstidspunktet, men fungerer kun til grundlæggende situationer. Du skal administrere det manuelt for mere komplekse sager.
Formatering for kodestilskonsistens
Du kan bruge vfmt formatter til at formatere din V-kode og forbedre dens læsbarhed ved at køre:
v fmt -w <dit_filnavn>.v
Venlige fejlmeddelelser
V's fejlmeddelelser er detaljerede, informative og nyttige. Tag et kig på dette eksempel:
bruger.v:8:14:fejl: `opdateringsbruger` parameter 'bruger' er foranderlig, skal du sørge for 'mut': `update_user (mut bruger)`
7 | mut bruger := Bruger{}
8 | update_user (bruger)
| ~~~~
9 | }
Ved hjælp af fejlmeddelelsen kan du rette denne kode:
mut bruger := Bruger{}
update_user (mut bruger)
C++ vs. Gå vs. V: Sammenligning af de tre sprog
I disse eksempler kan du se, hvordan C++-, Go- og V-kode adskiller sig i specifikke programmeringstilfælde.
Hej Verden
I C++:
#omfatte <iostream>
intvigtigste(){
std:: cout <<"Hej Verden!"<< std:: endl;
}
I gang:
pakke vigtigste
importere "fmt"
func vigtigste(){
fmt. Println("Hej Verden!")
}
I V:
println('Hej Verden!')
I dette meget grundlæggende program—udskrivning af teksten "Hello World!"— Du kan se, at V er meget enklere end C++ eller Go. Du behøver ikke at importere eller inkludere nogen biblioteker for et så enkelt program.
Vektor initialisering
I C++:
std:: vektor<int> tal = {1, 2, 3, 4};
I gang:
tal := []int{1, 2, 3, 4}
I V:
tal := [1, 2, 3, 4]
I dette tilfælde kan du se, at V stadig producerer renere kode end de to andre. I modsætning til Go og C++ vektorer, V kræver ikke, at dens vektorer holder værdier af en fast type.
Udskrivning af en vektor
I C++:
std::copy (numbers.begin(), tal.ende(),
std:: ostream_iterator<int>(std:: cout, ""));
std:: cout << std:: endl;
I gang:
fmt.Println(tal)
I V:
println (tal)
V's println-funktion kan udskrive vektorvariablen native, ligesom Go's kan, selvom sidstnævnte bruger fmt-pakken. C++ iostream-headerfilerne giver lignende funktionalitet. Du skal dog stadig selv sørge for at udskrive de enkelte elementer i vektoren.
Læsning af en fil
I C++:
#omfatte
#omfatteintvigtigste(){
std::snor sti = "/etc/hosts";
std::ifstream f(sti);
std::snor tekst;
text.assign(std::istreambuf_iterator<char>(f), {});
hvis (!f)
std::cerr << "fejl ved læsning fra fil" << std::endl;
}
I gang:
pakke vigtigste
importere (
"io/ioutil"
"log"
)func vigtigste(){
sti := "/etc/hosts"
b, fejl := ioutil. ReadFile (sti)hvis fejl != nul {
log.Println(fejl)
Vend tilbage
}
tekst := streng (b)
}
I V:
importere os
sti := "/etc/hosts"
tekst := os.read_file (sti) eller {
eprintln (fejl)
Vend tilbage
}
Til fillæsning bruger V os-modulet til at levere almindelige OS/platform-uafhængige funktioner. Disse håndterer opgaver som adgang til kommandolinjeargumenter, læsning af filer og håndteringsprocesser. I dette tilfælde ønsker vi at læse en fil ind sti og returner indholdet, så du vil bruge læse_fil (sti) fungere. read_file returnerer en fejl, hvis der ikke er noget eksisterende indhold i den givne sti. Hvis du vil lære mere om andre moduler af V, vil du måske tjekke deres dokumentation.
Klar til at prøve V?
V er et nyt programmeringssprog, der stadig er i sine tidlige udviklingsstadier. Alligevel har den en masse kraft og er hurtig, sikker, nem og vedligeholdelsesvenlig.
V har renere kode end C++ og Go. Dette tyder på, at V kan hjælpe programmører med at overholde et af de grundlæggende programmeringsprincipper. Så er du klar til at prøve V?