Краткое введение в язык V
V — это новый язык с быстрым временем компиляции, простым обучением и функциями, гарантирующими безопасность кода. Узнайте, из-за чего весь этот шум.
V — это новый статически типизированный язык программирования с открытым исходным кодом, созданный Александром Медведниковым. V обещает быть простым, быстрым и безопасным для создания поддерживаемого программного обеспечения. На дизайн V повлияли несколько языков, включая Oberon, Swift, Kotlin и Python.
Узнайте о V, его возможностях и его сравнении с другими языками.
Что вы можете сделать с V
V обладает огромной мощью, и вы можете использовать его практически в любой отрасли, включая системное программирование, веб-разработку и разработку игр. Язык простой, быстрый и безопасный.
V предлагает широкий спектр мощных графических библиотек для разработки игр. Они основаны на GDI+/Cocoa Drawing и OpenGL для более сложных 2D/3D-приложений.
V имеет модуль пользовательского интерфейса, который использует собственные наборы инструментов графического интерфейса для мобильных приложений, WinAPI/GDI+ для Windows, Cocoa для macOS и пользовательское рисование для Linux.
Причины попробовать V
Хотя V — новый язык, эти преимущества делают его законным вариантом.
Простота
Чтобы создать свой проект, вам просто нужно запустить:
v .
Вам не нужно настраивать среду сборки, создавать make-файл, импортировать заголовки или настраивать виртуальную среду. Если вы хотите установить новые библиотеки через vpm (менеджер пакетов V), просто запустите
v install <package_name>
Безопасность
По умолчанию V имеет:
- неизменяемые переменные
- неизменяемые структуры
- опция/результат и обязательные проверки ошибок
- типы сумм
- дженерики
- неизменяемая функция args
и нет:
- нулевой
- переменное затенение
- неопределенное поведение
- глобальные переменные (можно включить для низкоуровневых приложений, таких как ядра, с помощью флага)
Скорость компиляции
Некоторые языки программирования быстрее других с точки зрения выполнения или компиляции. V столь же производительен, как и C. Он может похвастаться временем компиляции около 110 тыс. локальных сетей в секунду с серверной частью C и примерно 1 миллионом локальных сетей в секунду с собственными серверными модулями и tcc. V также избегает ненужных выделений, чтобы обеспечить простой подход к кодированию без абстракций.
Управление памятью
V не использует сборщик мусора, что отличает его от таких языков, как Go и Java. Вместо этого V управляет памятью во время компиляции, но работает только в базовых ситуациях. В более сложных случаях вам придется управлять им вручную.
Форматирование для обеспечения единообразия стиля кода
Вы можете использовать форматтер vfmt, чтобы отформатировать код V и улучшить его читаемость, выполнив:
v fmt -w <your_filename>.v
Дружественные сообщения об ошибках
Сообщения об ошибках V подробные, информативные и полезные. Взгляните на этот пример:
user.v:8:14: error: `update_user` parameter `user` is mutable, you need to provide `mut`: `update_user(mut user)`
7 | mut user := User{}
8 | update_user(user)
| ~~~~
9 | }
С помощью сообщения об ошибке вы можете исправить этот код:
mut user := User{}
update_user(mut user)
C++ против Go против V: сравнение трех языков
В этих примерах вы можете увидеть, как код C++, Go и V различается в конкретных случаях использования программирования.
Привет, мир
В С++:
#include <iostream>
int main() {
std::cout << "Hello World!" << std::endl;
}
В Го:
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
В В:
println('Hello World!')
В этой самой простой программе — выводе текста «Hello World!» — вы можете видеть, что V намного проще, чем C++ или Go. Для такой простой программы вам не нужно импортировать или включать какие-либо библиотеки.
Векторная инициализация
В С++:
std::vector<int> numbers = {1, 2, 3, 4};
В Го:
numbers := []int{1, 2, 3, 4}
В В:
numbers := [1, 2, 3, 4]
В этом варианте использования вы можете видеть, что V по-прежнему создает более чистый код, чем два других. В отличие от векторов Go и C++, V не требует, чтобы векторы содержали значения фиксированного типа.
Печать вектора
В С++:
std::copy(numbers.begin(), numbers.end(),
std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
В Го:
fmt.Println(numbers)
В В:
println(numbers)
Функция println V может печатать векторную переменную в исходном виде, как и Go, хотя последний использует пакет fmt. Файлы заголовков C++ iostream предоставляют аналогичную функциональность. Однако вам все равно придется позаботиться о печати отдельных элементов вектора самостоятельно.
Чтение файла
В С++:
#include <iostream>
#include <fstream>
int main() {
std::string path = "/etc/hosts";
std::ifstream f(path);
std::string text;
text.assign(std::istreambuf_iterator<char>(f), {});
if (!f)
std::cerr << "error reading from file" << std::endl;
}
В Го:
package main
import (
"io/ioutil"
"log"
)
func main() {
path := "/etc/hosts"
b, err := ioutil.ReadFile(path)
if err != nil {
log.Println(err)
return
}
text := string(b)
}
В В:
import os
path := "/etc/hosts"
text := os.read_file(path) or {
eprintln(err)
return
}
Для чтения файлов V использует модуль os для обеспечения общих функций, независимых от ОС/платформы. Они решают такие задачи, как доступ к аргументам командной строки, чтение файлов и обработка процессов. В данном случае мы хотим прочитать файл по path и вернуть его содержимое, поэтому вы воспользуетесь функцией read_file(path). read_file возвращает ошибку, если по данному пути нет существующего контента. Если вы хотите узнать больше о других модулях V, вы можете просмотреть их документацию.
Готовы попробовать V?
V — новый язык программирования, который все еще находится на ранней стадии разработки. Несмотря на это, он обладает большой мощностью и является быстрым, безопасным, простым и ремонтопригодным.
V имеет более чистый код, чем C++ и Go. Это говорит о том, что V может помочь программистам придерживаться одного из основных принципов программирования. Итак, вы готовы попробовать V?