V is een nieuwe, open-source, statisch getypeerde programmeertaal gemaakt door Alexander Medvednikov. V belooft eenvoudig, snel en veilig te zijn om onderhoudbare software mee te bouwen. Verschillende talen hebben het ontwerp van V beïnvloed, waaronder Oberon, Swift, Kotlin en Python.

Meer informatie over V, de functies ervan en hoe het zich verhoudt tot andere talen.

Dingen die je kunt doen met V

V heeft veel kracht en je kunt het in bijna elke branche gebruiken, inclusief systeemprogrammering, webontwikkeling en game-ontwikkeling. De taal is eenvoudig, snel en veilig.

V biedt een breed scala aan krachtige grafische bibliotheken voor game-ontwikkeling. Deze bouwen voort op GDI+/Cocoa Drawing en OpenGL voor meer geavanceerde 2D/3D-toepassingen.

V heeft een UI-module die gebruikmaakt van native GUI-toolkits voor mobiele apps, WinAPI/GDI+ voor Windows, Cocoa voor macOS en aangepaste tekeningen voor Linux.

Redenen om V. te proberen

Hoewel V een nieuwe taal is, maken deze voordelen het een legitieme optie.

Eenvoud

Om uw project te bouwen, hoeft u alleen maar het volgende uit te voeren:

v.

U hoeft geen build-omgeving op te zetten, een makefile te maken, headers te importeren of een virtuele omgeving in te stellen. Als u nieuwe bibliotheken wilt installeren via vpm (V-pakketbeheerder), gewoon uitvoeren

v installeren <verpakkingsnaam>

Veiligheid

Standaard heeft V:

  • onveranderlijke variabelen
  • onveranderlijke structuren
  • optie/resultaat en verplichte foutcontroles
  • soorten som
  • Merkloos product
  • onveranderlijke functieargs

en nee:

  • nul
  • variabele schaduw
  • ongedefinieerd gedrag
  • globale variabelen (kan worden ingeschakeld voor apps op laag niveau zoals kernels, via vlag)

Compilatiesnelheid

Sommige programmeertalen zijn sneller dan andere, in termen van uitvoering of compilatie. V is net zo performant als C. Het heeft een compilatietijd van ongeveer 110k loc/s met een C-backend en ongeveer 1 miljoen loc/s met native en tcc-backends. V vermijdt ook onnodige toewijzingen om een ​​eenvoudige, abstractievrije coderingsbenadering te bieden.

Geheugen management

V maakt geen gebruik van een garbage collector, wat het anders maakt dan talen als Go en Java. In plaats daarvan beheert V het geheugen tijdens het compileren, maar werkt alleen voor basissituaties. U moet het handmatig beheren voor complexere gevallen.

Opmaak voor consistentie van codestijlen

U kunt de vfmt formatter om uw V-code op te maken en de leesbaarheid ervan te verbeteren door het volgende uit te voeren:

v fmt -w <uw_bestandsnaam>.v

Vriendelijke foutmeldingen

De foutmeldingen van V zijn gedetailleerd, informatief en nuttig. Kijk eens naar dit voorbeeld:

gebruiker.v:8:14: fout: `update_gebruiker` parameter `gebruiker` is veranderlijk, u moet opgeven `mut`: `update_user (mut gebruiker)`
7 | mut gebruiker := Gebruiker{}
8 | update_user (gebruiker)
| ~~~~
9 | }

Met behulp van de foutmelding kunt u deze code oplossen:

mut gebruiker := Gebruiker{}
update_user (mut gebruiker)

C++ versus Ga tegen V: De drie talen vergelijken

In deze voorbeelden kunt u zien hoe C++-, Go- en V-code verschilt in specifieke programmeertoepassingen.

Hallo Wereld

In C++:

#erbij betrekken <iostream>

inthoofd(){
std:: cout <<"Hallo Wereld!"<< std:: endl;
}

In Go:

pakket hoofd
importeren "fmt"

func hoofd(){
fmt. Println("Hallo Wereld!")
}

In V:

println('Hallo Wereld!')

In dit zeer eenvoudige programma—het afdrukken van de tekst "Hello World!"-je kunt zien dat V veel eenvoudiger is dan C++ of Go. U hoeft geen bibliotheken te importeren of op te nemen voor zo'n eenvoudig programma.

Vector initialisatie

In C++:

std:: vector<int> getallen = {1, 2, 3, 4};

In Go:

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

In V:

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

In deze use-case kun je zien dat V nog steeds schonere code produceert dan de twee andere. In tegenstelling tot Go and C++ vectoren, V vereist niet dat zijn vectoren waarden van een vast type bevatten.

Een vector afdrukken

In C++:

soa::kopie (getallen.begin(), nummers.einde(),
std:: ostream_iterator<int>(std:: cout, ""));

std:: cout << std:: endl;

In Go:

fmt.Println(nummers)

In V:

println (cijfers)

De println-functie van V kan de vectorvariabele native afdrukken, net zoals Go's dat kan, hoewel de laatste het fmt-pakket gebruikt. De C++ iostream-headerbestanden bieden vergelijkbare functionaliteit. U moet echter nog steeds zelf zorgen voor het afdrukken van de afzonderlijke elementen van de vector.

Een bestand lezen

In C++:

#erbij betrekken
#erbij betrekken

inthoofd(){
soa::snaar path = "/etc/hosts";
soa::ifstream f(pad);
soa::snaar tekst;
tekst.toewijzen(soa::istreambuf_iterator<char>(f), {});

als (!f)
soa::zeker << "fout bij lezen van bestand" << soa::eindel;
}

In Go:

pakket hoofd

importeren (
"io/ioutil"
"log"
)

func hoofd(){
pad := "/etc/hosts"
b, fout := ioutil. ReadFile (pad)

als fout != nul {
log.Println(foutje)
opbrengst
}

tekst := tekenreeks (b)
}

In V:

importeren os

pad := "/etc/hosts"
tekst := os.read_file (pad) of {
eprintln (fout)
opbrengst
}

Voor het lezen van bestanden gebruikt V de os-module om algemene OS/platformonafhankelijke functies te bieden. Deze verwerken taken zoals toegang tot opdrachtregelargumenten, het lezen van bestanden en het afhandelen van processen. In dit geval willen we een bestand inlezen in pad en retourneer de inhoud, zodat u de read_file (pad) functie. read_file retourneert een fout als er geen bestaande inhoud is in de gegeven pad. Als je meer wilt weten over andere modules van V, wilt u misschien hun documentatie bekijken.

Klaar om V te proberen?

V is een nieuwe programmeertaal die zich nog in de beginfase van ontwikkeling bevindt. Toch heeft het veel kracht en is het snel, veilig, gemakkelijk en onderhoudbaar.

V heeft schonere code dan C++ en Go. Dit suggereert dat V programmeurs kan helpen bij het naleven van een van de basisprogrammeerprincipes. Dus, ben je klaar om V te proberen?