V to nowy, otwarty, statycznie typowany język programowania stworzony przez Aleksandra Medvednikova. V zapowiada się na proste, szybkie i bezpieczne tworzenie oprogramowania, które można konserwować. Kilka języków miało wpływ na projekt V, w tym Oberon, Swift, Kotlin i Python.

Dowiedz się o V, jego funkcjach i porównaniu z innymi językami.

Rzeczy, które możesz zrobić z V

V ma dużą moc i można go używać w prawie każdej branży, w tym w programowaniu systemów, tworzeniu stron internetowych i tworzeniu gier. Język jest prosty, szybki i bezpieczny.

V oferuje szeroką gamę potężnych bibliotek graficznych do tworzenia gier. Opierają się one na GDI+/Cocoa Drawing i OpenGL dla bardziej wyrafinowanych aplikacji 2D/3D.

V ma moduł interfejsu użytkownika, który wykorzystuje natywne zestawy narzędzi GUI dla aplikacji mobilnych, WinAPI/GDI+ dla Windows, Cocoa dla macOS i niestandardowe rysowanie dla systemu Linux.

Powody, dla których warto wypróbować V

Chociaż V jest nowym językiem, te zalety sprawiają, że jest to uzasadniona opcja.

instagram viewer

Prostota

Aby zbudować swój projekt, wystarczy uruchomić:

v .

Nie musisz konfigurować środowiska kompilacji, tworzyć pliku makefile, importować nagłówki ani konfigurować środowiska wirtualnego. Jeśli chcesz zainstalować nowe biblioteki przez vpm (Menedżer pakietów V), po prostu uruchom

v zainstaluj <nazwa_pakietu>

Bezpieczeństwo

Domyślnie V ma:

  • zmienne niezmienne
  • niezmienne struktury
  • opcje/wyniki i obowiązkowe sprawdzanie błędów
  • typy sum
  • generyczne
  • niezmienne argumenty funkcji

i nie:

  • zero
  • zmienne cieniowanie
  • niezdefiniowane zachowanie
  • zmienne globalne (można włączyć dla aplikacji niskiego poziomu, takich jak jądra, za pomocą flagi)

Szybkość kompilacji

Niektóre języki programowania są szybsze niż inne pod względem wykonania lub kompilacji. V jest tak samo wydajny jak C. Oferuje czasy kompilacji wynoszące około 110 tys. loc/s z backendem C i około 1 milion loc/s z natywnymi i tcc backendami. V unika również niepotrzebnych alokacji, aby zapewnić podejście do kodowania bez prostej abstrakcji.

Zarządzanie pamięcią

V nie używa garbage collectora, co odróżnia go od języków takich jak Go i Java. Zamiast tego V zarządza pamięcią w czasie kompilacji, ale działa tylko w podstawowych sytuacjach. W przypadku bardziej skomplikowanych spraw musisz nim zarządzać ręcznie.

Formatowanie dla spójności stylu kodu

Możesz użyć vfmt formater, aby sformatować kod V i poprawić jego czytelność, uruchamiając:

v fmt -w <twoja_nazwa_pliku>.v

Przyjazne komunikaty o błędach

Komunikaty o błędach V są szczegółowe, pouczające i pomocne. Spójrz na ten przykład:

użytkownik.v:8:14: błąd: `użytkownik_aktualizacji` parametr `użytkownik` jest zmienny, musisz podać „mut”: `użytkownik_aktualizacji (mut użytkownik)`
7 | mut użytkownik := Użytkownik{}
8 | użytkownik_aktualizacji (użytkownik)
| ~~~~
9 | }

Za pomocą komunikatu o błędzie możesz naprawić ten kod:

mut użytkownik := Użytkownik{}
update_user (mut user)

C++ a Idź kontra V: Porównanie trzech języków

W tych przykładach możesz zobaczyć, jak kod C++, Go i V różni się w określonych przypadkach użycia programowania.

Witaj świecie

W C++:

#włączać <jostream>

intGłówny(){
std:: cout <<"Witaj świecie!"<< std:: koniecl;
}

W drodze:

pakiet Główny
import "fmt"

funkcjonować Główny(){
fmt. Drukujln("Witaj świecie!")
}

W V:

drukujln('Witaj świecie!')

W tym bardzo podstawowym programie —drukowanie tekstu "Hello World!"— widać, że V jest znacznie prostsze niż C++ czy Go. Nie musisz importować ani dołączać żadnych bibliotek dla tak prostego programu.

Inicjalizacja wektora

W C++:

std:: wektor<int> liczby = {1, 2, 3, 4};

W drodze:

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

W V:

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

W tym przypadku widać, że V nadal tworzy czystszy kod niż dwa pozostałe. W przeciwieństwie do Go i Wektory C++, V nie wymaga, aby jego wektory zawierały wartości stałego typu.

Drukowanie wektora

W C++:

standardowe::kopiuj (liczby.rozpocznij(), liczby.koniec(),
std:: iterator_ostream<int>(std:: cout, ""));

std:: cout << std:: endl;

W drodze:

fmt.Drukuj(liczby)

W V:

println (liczby)

Funkcja println V może drukować zmienną wektora natywnie, podobnie jak puszka Go, chociaż ta ostatnia używa pakietu fmt. Pliki nagłówkowe iostream C++ zapewniają podobną funkcjonalność. Jednak nadal będziesz musiał sam zadbać o wydrukowanie poszczególnych elementów wektora.

Czytanie pliku

W C++:

#włączać
#włączać

intGłówny(){
standardowe::strunowy ścieżka = "/etc/hosts";
standardowe::ifstream f(ścieżka);
standardowe::strunowy tekst;
tekst.przypisz(standardowe::istreambuf_iterator<zwęglać>(f), {});

jeśli (!f)
standardowe::zły << "błąd odczytu z pliku" << standardowe::koniec;
}

W drodze:

pakiet Główny

import (
"io/ioutil"
"dziennik"
)

funkcjonować Główny(){
ścieżka := "/etc/hosts"
b, błąd := ioutil. Czytaj plik (ścieżka)

jeśli błąd != zero {
dziennik.Drukuj(błądzić)
zwrócić
}

tekst := ciąg (b)
}

W V:

import os

ścieżka := "/etc/hosts"
tekst := os.read_file (ścieżka) lub {
eprintln (błąd)
zwrócić
}

Do odczytu plików V używa modułu os, aby zapewnić wspólne funkcje niezależne od systemu operacyjnego/platformy. Obsługują one zadania, takie jak dostęp do argumentów wiersza poleceń, odczytywanie plików i obsługa procesów. W takim przypadku chcemy wczytać plik w ścieżka i zwróć zawartość, więc użyjesz plik_odczytu (ścieżka) funkcjonować. read_file zwraca błąd, jeśli w podanym nie ma żadnej treści ścieżka. Jeśli chcesz dowiedzieć się więcej o inne moduły V, warto zapoznać się z ich dokumentacją.

Gotowy do wypróbowania V?

V to nowy język programowania, który wciąż znajduje się na wczesnym etapie rozwoju. Mimo to ma dużą moc i jest szybki, bezpieczny, łatwy i łatwy w utrzymaniu.

V ma czystszy kod niż C++ i Go. Sugeruje to, że V może pomóc programistom w przestrzeganiu jednej z podstawowych zasad programowania. Czy jesteś gotowy na wypróbowanie V?