V è un nuovo linguaggio di programmazione open source con tipizzazione statica creato da Alexander Medvednikov. V promette di essere semplice, veloce e sicuro con cui creare software gestibile. Diversi linguaggi hanno influenzato il design di V tra cui Oberon, Swift, Kotlin e Python.

Scopri V, le sue caratteristiche e come si confronta con altre lingue.

Cose che puoi fare con V

V ha molta potenza e puoi usarlo in quasi tutti i settori, inclusi programmazione di sistema, sviluppo web e sviluppo di giochi. Il linguaggio è semplice, rapido e sicuro.

V offre un'ampia gamma di potenti librerie grafiche per lo sviluppo di giochi. Questi si basano su GDI+/Cocoa Drawing e OpenGL per applicazioni 2D/3D più sofisticate.

V ha un modulo interfaccia utente che utilizza toolkit GUI nativi per app mobili, WinAPI/GDI+ per Windows, Cocoa per macOS e disegni personalizzati per Linux.

Motivi per provare V

Sebbene V sia un nuovo linguaggio, questi vantaggi lo rendono un'opzione legittima.

Semplicità

Per costruire il tuo progetto, devi solo eseguire:

instagram viewer
v.

Non è necessario configurare un ambiente di compilazione, creare un makefile, importare intestazioni o configurare un ambiente virtuale. Se vuoi installare nuove librerie tramite vpm (Gestione pacchetti V), esegui

v installare <nome del pacchetto>

Sicurezza

Per impostazione predefinita, V ha:

  • variabili immutabili
  • strutture immutabili
  • opzione/risultato e controlli obbligatori degli errori
  • tipi di somma
  • generici
  • funzione immutabile args

e no:

  • nullo
  • ombreggiatura variabile
  • comportamento indefinito
  • variabili globali (possono essere abilitate per app di basso livello come kernel, tramite flag)

Velocità di compilazione

Alcuni linguaggi di programmazione sono più veloci di altri, in termini di esecuzione o compilazione. V è performante come C. Vanta tempi di compilazione di circa 110k loc/s con un backend C e circa 1 milione di loc/s con backend nativi e tcc. V evita inoltre allocazioni non necessarie per fornire un approccio di codifica semplice e privo di astrazione.

Gestione della memoria

V non usa un Garbage Collector, il che lo rende diverso da linguaggi come Go e Java. Invece, V gestisce la memoria in fase di compilazione, ma funziona solo per le situazioni di base. È necessario gestirlo manualmente per i casi più complessi.

Formattazione per la coerenza dello stile del codice

Puoi usare il vfmt formattatore per formattare il codice V e migliorarne la leggibilità eseguendo:

v fmt -w <il tuo_nomefile>.v

Messaggi di errore amichevoli

I messaggi di errore di V sono dettagliati, informativi e utili. Dai un'occhiata a questo esempio:

utente.v:8:14: errore: `aggiornamento_utente` parametro `utente` è mutevole, è necessario fornire `mut`: `update_user (utente muto)`
7 | utente muto := Utente{}
8 | update_user (utente)
| ~~~~
9 | }

Con l'aiuto del messaggio di errore, puoi correggere questo codice:

utente muto := Utente{}
update_user (utente muto)

C++ contro Vai contro V: Confrontando le tre lingue

In questi esempi, puoi vedere come il codice C++, Go e V differisce in casi d'uso di programmazione specifici.

Ciao mondo

In C++:

#includere <iostream>

intprincipale(){
std:: cout <<"Ciao mondo!"<< std:: fine;
}

In Vai:

pacchetto principale
importare "fmt"

funz principale(){
fmt. Stampaln("Ciao mondo!")
}

In V:

println('Ciao mondo!')

In questo programma molto semplice—stampando il testo "Hello World!"— puoi vedere che V è molto più semplice di C++ o Go. Non è necessario importare o includere librerie per un programma così semplice.

Inizializzazione del vettore

In C++:

std:: vettore<int> numeri = {1, 2, 3, 4};

In Vai:

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

In V:

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

In questo caso d'uso, puoi vedere che V produce ancora un codice più pulito rispetto agli altri due. A differenza di Go e vettori C++, V non richiede che i suoi vettori contengano valori di tipo fisso.

Stampa di un vettore

In C++:

std::copia (numeri.inizio(), numeri.fine(),
std:: ostream_iterator<int>(std:: cout, ""));

std:: cout << std:: endl;

In Vai:

fmt.Stampa(numeri)

In V:

println (numeri)

La funzione println di V può stampare la variabile vettoriale in modo nativo, proprio come Go, sebbene quest'ultimo utilizzi il pacchetto fmt. I file di intestazione iostream C++ forniscono funzionalità simili. Tuttavia, dovrai comunque occuparti della stampa dei singoli elementi del vettore.

Lettura di un file

In C++:

#includere
#includere

intprincipale(){
std::corda percorso = "/etc/host";
std::ifstream f(sentiero);
std::corda testo;
text.assign(std::istreambuf_iteratore<car>(f), {});

Se (!f)
std::cerr << "errore durante la lettura del file" << std::fine;
}

In Vai:

pacchetto principale

importare (
"io/ioutil"
"tronco d'albero"
)

funz principale(){
percorso := "/etc/hosts"
b, err := ioutil. ReadFile (percorso)

se err != zero {
tronco d'albero.Stampa(err)
Restituzione
}

testo := stringa (b)
}

In V:

importare os

percorso := "/etc/hosts"
testo := os.read_file (percorso) o {
eprintln (err)
Restituzione
}

Per la lettura dei file, V utilizza il modulo os per fornire funzioni comuni indipendenti dal sistema operativo/dalla piattaforma. Questi gestiscono attività come l'accesso agli argomenti della riga di comando, la lettura di file e la gestione dei processi. In questo caso, vogliamo leggere un file in sentiero e restituisci il contenuto, quindi utilizzerai il file read_file (percorso) funzione. read_file restituisce un errore se non c'è contenuto esistente nel dato sentiero. Se vuoi saperne di più su altri moduli di V, potresti voler controllare la loro documentazione.

Pronto a provare V?

V è un nuovo linguaggio di programmazione che è ancora nelle sue prime fasi di sviluppo. Anche così, ha molta potenza ed è veloce, sicuro, facile e manutenibile.

V ha un codice più pulito rispetto a C++ e Go. Ciò suggerisce che V può aiutare i programmatori ad aderire a uno dei principi di programmazione di base. Allora, sei pronto per provare V?