Поиск по сайту:

Краткое введение в язык 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?

Статьи по данной тематике: