A V egy új, nyílt forráskódú, statikusan tipizált programozási nyelv, amelyet Alekszandr Medvednyikov készített. A V egyszerűnek, gyorsnak és biztonságosnak ígérkezik a karbantartható szoftverek elkészítéséhez. Számos nyelv befolyásolta a V tervezését, köztük az Oberon, a Swift, a Kotlin és a Python.
Ismerje meg a V-t, annak jellemzőit, és hogyan hasonlítható össze más nyelvekkel.
Amit megtehetsz V
A V-nek nagy teljesítménye van, és szinte minden iparágban használható, beleértve a rendszerprogramozást, a webfejlesztést és a játékfejlesztést. A nyelv egyszerű, gyors és biztonságos.
A V hatékony grafikus könyvtárak széles választékát kínálja játékfejlesztéshez. Ezek a GDI+/Cocoa Drawingre és az OpenGL-re épülnek a kifinomultabb 2D/3D alkalmazások érdekében.
A V rendelkezik egy felhasználói felület modullal, amely natív grafikus felhasználói felület eszközkészleteket használ mobilalkalmazásokhoz, WinAPI/GDI+-t Windowshoz, Cocoát macOS-hez és egyedi rajzot Linuxhoz.
Miért érdemes kipróbálni V
Bár a V egy új nyelv, ezek az előnyök legitim választássá teszik.
Egyszerűség
A projekt elkészítéséhez csak futtassa:
v.
Nincs szükség összeállítási környezet beállítására, makefile létrehozására, fejlécek importálására vagy virtuális környezet beállítására. Ha új könyvtárakat szeretne telepíteni a következőn keresztül vpm (V csomagkezelő), csak futtasd
v telepítse <csomag név>
Biztonság
Alapértelmezés szerint a V rendelkezik:
- megváltoztathatatlan változók
- megváltoztathatatlan struktúrák
- opció/eredmény és kötelező hibaellenőrzések
- összeg típusok
- generikumok
- megváltoztathatatlan függvény args
és nem:
- nulla
- változó árnyékolás
- meghatározatlan viselkedés
- globális változók (engedélyezhető alacsony szintű alkalmazásokhoz, például kernelekhez, zászló segítségével)
Összeállítási sebesség
Egyes programozási nyelvek gyorsabbak, mint mások, a végrehajtás vagy a fordítás szempontjából. V ugyanolyan teljesítőképes, mint C. Körülbelül 110 000 loc/s fordítási idővel büszkélkedhet C háttérrel, és körülbelül 1 millió loc/s-os fordítási idővel natív és tcc háttérprogramokkal. A V emellett elkerüli a szükségtelen allokációkat, hogy egyszerű absztrakciómentes kódolási megközelítést biztosítson.
Memóriakezelés
A V nem használ szemétgyűjtőt, ami különbözik az olyan nyelvektől, mint a Go és a Java. Ehelyett a V a fordítási időben kezeli a memóriát, de csak alaphelyzetekben működik. Bonyolultabb esetekben manuálisan kell kezelnie.
Formázás a kódstílus-konzisztencia érdekében
Használhatja a vfmt formázó a V-kód formázásához és az olvashatóság javításához a következő futtatással:
v fmt -w <your_filename>.v
Barátságos hibaüzenetek
A V hibaüzenetei részletesek, informatívak és hasznosak. Vessen egy pillantást erre a példára:
user.v:8:14: hiba: `felhasználó frissítése` paraméter `felhasználó' változtatható, biztosítania kell `mut`: `update_user (mut user)`
7 | mut user := Felhasználó{}
8 | update_user (felhasználó)
| ~~~~
9 | }
A hibaüzenet segítségével ezt a kódot javíthatja:
mut user := Felhasználó{}
update_user (mut user)
C++ vs. Menj vs. V: A három nyelv összehasonlítása
Ezekben a példákban láthatja, hogyan különbözik a C++, a Go és a V kód az egyes programozási felhasználási esetekben.
Helló Világ
C++ nyelven:
#beleértve <iostream>
intfő-(){
std:: cout <<"Helló Világ!"<< std:: endl;
}
In Go:
csomag fő-
import "fmt"
func fő-(){
fmt. Println("Helló Világ!")
}
V-ben:
println('Helló Világ!')
Ebben az alapvető programban –kinyomtatja a "Hello World!"— láthatja, hogy a V sokkal egyszerűbb, mint a C++ vagy a Go. Egy ilyen egyszerű programhoz nincs szükség könyvtárak importálására vagy felvételére.
Vektor inicializálása
C++ nyelven:
std:: vektor<int> számok = {1, 2, 3, 4};
In Go:
számok := []int{1, 2, 3, 4}
V-ben:
számok := [1, 2, 3, 4]
Ebben a használati esetben láthatja, hogy a V még mindig tisztább kódot produkál, mint a másik kettő. Ellentétben a Go és C++ vektorok, V nem követeli meg vektoraitól, hogy rögzített típusú értékeket tartsanak.
Vektor nyomtatása
C++ nyelven:
std::copy (numbers.begin(), számok.vége(),
std:: ostream_iterator<int>(std:: cout, ""));
std:: cout << std:: endl;
In Go:
fmt.Println(számok)
V-ben:
println (számok)
A V println függvénye natívan ki tudja nyomtatni a vektorváltozót, akárcsak a Go, bár az utóbbi az fmt csomagot használja. A C++ iostream fejlécfájlok hasonló funkcionalitást biztosítanak. A vektor egyes elemeinek kinyomtatásáról azonban továbbra is gondoskodnia kell.
Fájl olvasása
C++ nyelven:
#tartalmazza
#tartalmazzaintfő-(){
std::húr elérési út = "/etc/hosts";
std::ifstream f(pálya);
std::húr szöveg;
text.assign(std::istreambuf_iterator<char>(f), {});
ha (!f)
std::cerr << "hiba a fájl olvasásakor" << std::endl;
}
In Go:
csomag fő-
import (
"io/ioutil"
"log"
)func fő-(){
útvonal := "/etc/hosts"
b, err := ioutil. ReadFile (elérési út)if err != nil {
log.Println(téved)
Visszatérés
}
szöveg := karakterlánc (b)
}
V-ben:
import os
útvonal := "/etc/hosts"
text := os.read_file (elérési út) vagy {
eprintln (hiba)
Visszatérés
}
Fájlolvasáshoz a V az OS modult használja, hogy általános operációs rendszer/platform független funkciókat biztosítson. Ezek olyan feladatokat kezelnek, mint a parancssori argumentumok elérése, a fájlok olvasása és a folyamatok kezelése. Ebben az esetben egy fájlt szeretnénk beolvasni pálya és visszaküldi a tartalmat, így használni fogja a read_file (elérési út) funkció. A read_file hibát ad vissza, ha az adottban nincs tartalom pálya. Ha többet szeretne megtudni a V egyéb moduljai, érdemes megnézni a dokumentációjukat.
Készen áll a V kipróbálására?
A V egy új programozási nyelv, amely még a fejlesztés korai szakaszában van. Ennek ellenére nagy teljesítményű, gyors, biztonságos, egyszerű és karbantartható.
A V-nek tisztább kódja van, mint a C++-nak és a Go-nak. Ez arra utal, hogy a V segíthet a programozóknak az egyik alapvető programozási elv betartásában. Szóval készen állsz arra, hogy kipróbáld a V-t?