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.

instagram viewer

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
#tartalmazza

intfő-(){
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?