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.
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?