Jump to content

V (язык программирования)

V
Заглавная буква V синего цвета.
Официальный логотип V
Парадигмы Мультипарадигмальность : функциональная , императивная , структурированная , параллельная.
Разработано Alexander Medvednikov [1]
Впервые появился 20 июня 2019 г .; 5 лет назад ( 20.06.2019 ) [2]
Стабильная версия
0.4.6 [3]  Отредактируйте это в Викиданных / 20 мая 2024 г .; 2 месяца назад ( 20 мая 2024 г. )
Дисциплина набора текста статический , сильный , предполагаемый
Управление памятью опционально ( автоматический или ручной )
Язык реализации V
Платформа х86-64
ТЫ Linux , macOS , Windows , FreeBSD , OpenBSD , NetBSD , DragonflyBSD , Solaris
Лицензия С
Расширения имен файлов .v, .vsh
Веб-сайт вланг .что
Под влиянием
Go , Котлин , Оберон , Python , Rust , Swift

V , также известный как vlang статически типизированный , компилируемый язык программирования созданный Александром Медведниковым в начале 2019 года. [4] Он был вдохновлен языком Go и другими влияниями, включая Oberon , Swift и Rust . [5] [6] [7] Это бесплатное программное обеспечение с открытым исходным кодом , выпущенное под лицензией MIT и в настоящее время находящееся в стадии бета-тестирования . [8]

Цели V включают простоту использования, читабельность и удобство сопровождения. [9] [10]

По словам одного из разработчиков, новый язык был создан в результате разочарования в использовании существующих языков в личных проектах. [11] Изначально язык предназначался для личного использования, но после того, как он был упомянут публично и вызвал интерес, было решено сделать его общедоступным. Первоначально V был создан для разработки настольного клиента обмена сообщениями, известного как Volt. [6] После публичного выпуска компилятор был написан на V и мог компилироваться сам. [4] Ключевыми целями проектирования, лежащими в основе создания V, были простота изучения и использования, более высокая читаемость, быстрая компиляция, повышенная безопасность, эффективная разработка, кроссплатформенность, улучшенная совместимость с C, лучшая обработка ошибок, современные функции и более удобное в обслуживании программное обеспечение. [12] [13] [10] [14]

V выпускается и разрабатывается через GitHub. [15] [6] и поддерживается разработчиками и участниками сообщества. [4]

Veasel — официальный талисман языка программирования V. [16]

Безопасность

[ редактировать ]

В V есть политики, обеспечивающие безопасность памяти, скорость и безопасность кода. [7] [17] Язык имеет различные функции по умолчанию для большей безопасности программы. [7] [17] [6] [9] Он использует проверку границ для защиты от использования переменных за пределами границ. опций/результатов , где тип опции ( типы Используются ?) может быть представлено none (среди возможных вариантов) и тип результата ( !) может обрабатывать любые возвращаемые ошибки. Для обеспечения большей безопасности в V обязательна проверка ошибок. По умолчанию неизменяемыми являются переменные , структуры и аргументы функций. Сюда входят строковые значения, которые являются неизменяемыми, поэтому элементы не могут быть изменены. Другими средствами защиты, которые установлены по умолчанию для языка, являются: отсутствие использования неопределенных значений , отсутствие затенения переменных , отсутствие использования значения null (если только код не помечен как небезопасный) и отсутствие использования глобальных переменных (если они не включены с помощью флага).

Производительность

[ редактировать ]

V использует типы значений и строковые буферы для уменьшения выделения памяти. [18] [19] [17] Язык может быть скомпилирован в удобочитаемый C. [4] [20] и считается результативным. [17]

Управление памятью

[ редактировать ]

Язык поддерживает следующие 4 варианта управления памятью: [21] [6] [22] [20]

  1. Для обработки выделений используется дополнительный сборщик мусора (который можно отключить). Это значение по умолчанию.
  2. Ручное управление памятью через отключение ГХ ( -gc none).
  3. Autofree, который обрабатывает большинство объектов посредством свободной вставки вызова, а затем оставшийся процент освобождается сборщиком мусора ( -autofree).
  4. Распределение арены ( -prealloc).

Переводчики исходного кода

[ редактировать ]

V поддерживает компилятор исходного кода (транспилятор) и может транслировать код C в V. [23] [24] [10]

Также разрабатываются рабочие трансляторы для Go, JavaScript и WebAssembly . [25] [26]

Синтаксис

[ редактировать ]

Привет, мир

[ редактировать ]

Программа «Привет, мир!» программа на языке V: [17]

fn main() {
	println("Hello, World!")
}

Переменные

[ редактировать ]

Переменные по умолчанию неизменяемы и определяются с помощью := и ценность. Используйте mut ключевое слово, чтобы сделать их изменяемыми. Изменяемые переменные могут быть назначены с помощью =: [27]

a := 1
mut b := 2
b = 3

Переобъявление переменной, будь то во внутренней области или в той же области, не допускается: [27]

a := 1
{
    a := 3 // error: redefinition of a
}
a := 2 // error: redefinition of a

Структуры

[ редактировать ]

Пример структуры: [12]

struct Point {
	x int
	y int
}

mut p := Point {
	x: 10
	y: 20
}
println(p.x) // Struct fields are accessed using a dot
// Alternative literal syntax for structs with 3 fields or fewer
p = Point{10, 20}
assert p.x == 10

Структуры кучи

[ редактировать ]

По умолчанию структуры размещаются в стеке. Чтобы выделить структуру в куче и получить ссылку на нее, & префикс можно использовать: [12]

struct Point {
	x int
	y int
}

p := &Point{10, 10}
// References have the same syntax for accessing fields
println(p.x)

Методы в V — это функции, определенные с аргументом-получателем. Получатель появляется в своем собственном списке аргументов между ключевым словом fn и именем метода. Методы должны находиться в том же модуле, что и тип получателя.

Метод is_registered имеет получателя типа User с именем u. По соглашению не следует использовать имена получателей, такие как self или this, а желательно использовать короткое имя. Например: [9] [12]

struct User {
	age int
}

fn (u User) is_registered() bool {
	return u.age > 16
}

user := User{
	age: 10
}
println(user.is_registered()) // "false"
user2 := User{
	age: 20
}
println(user2.is_registered()) // "true"

Обработка ошибок

[ редактировать ]

Необязательные типы предназначены для типов, которые могут ничего не представлять. Типы результатов могут представлять ошибку, возвращаемую функцией.

Типы опций объявляются путем добавления ? к имени типа: ?Type. Типы результатов используют !: !Тип. [9] [7] [21]

fn do_something(s string) !string {
	if s == "foo" {
		return "foo"
	}
	return error("invalid string")
}

a := do_something("foo") or { "default" } // a will be "foo"
b := do_something("bar") or { "default" } // b will be "default"
c := do_something("bar") or { panic("{err}") } // exits with error "invalid string" and a traceback

println(a)
println(b)

См. также

[ редактировать ]
  1. ^ «Создатель V» . Гитхаб .
  2. ^ «Первый публичный релиз» . Гитхаб . 20 июня 2019 г.
  3. ^ «Выпуск 0.4.6» . 20 мая 2024 г. Проверено 25 мая 2024 г.
  4. ^ Jump up to: а б с д Рао 2021 .
  5. ^ Левкович, Якуб (25 июня 2019 г.). «Дайджест новостей SD Times: язык V теперь открыт» . СД Таймс . Проверено 25 июня 2019 г.
  6. ^ Jump up to: а б с д и Джеймс, Бен (23 июля 2019 г.). «Язык программирования V: тщетно или добродетельно?» . Хакадей . Проверено 23 июля 2019 г.
  7. ^ Jump up to: а б с д Уморен, Самуэль. «Создание веб-сервера с использованием Vlang» . Раздел . Архивировано из оригинала 13 марта 2023 года . Проверено 5 апреля 2021 г.
  8. ^ «Язык программирования V» . vlang.io . Проверено 4 ноября 2023 г.
  9. ^ Jump up to: а б с д Нотт, Саймон (27 июня 2019 г.). «Знакомство с В.» . Проверено 27 июня 2019 г.
  10. ^ Jump up to: а б с Насуфи, Эрдет. «Введение в V — vlang» . ДебКонф . Проверено 24 июля 2022 г.
  11. ^ «Как поддерживать и выполнять итерации с помощью V — SYNCS 2023 (Сиднейское компьютерное общество при Сиднейском университете)» . Ютуб . Проверено 18 октября 2023 г.
  12. ^ Jump up to: а б с д Независимая лаборатория 2020 .
  13. ^ Лион 2022 .
  14. ^ «Язык V: простой, как Go, небольшой двоичный код, как Rust» . ТехРачо . Проверено 3 марта 2021 г.
  15. ^ «Языки программирования GitHub (рейтинги репозиториев)» — через OSS .
  16. ^ «Официальный талисман Ви» . Гитхаб . Проверено 8 ноября 2023 г.
  17. ^ Jump up to: а б с д и Галух, Роза (8 августа 2022 г.). «Краткое введение в язык V» . МУО . Проверено 8 августа 2022 г.
  18. ^ Рао 2021 , с. 7.
  19. ^ «Язык программирования V теперь имеет открытый исходный код» . Пакетный хаб . 24 июня 2019 г. Проверено 24 июня 2019 г.
  20. ^ Jump up to: а б Чакраборти 2023 .
  21. ^ Jump up to: а б Цукалос 2022 .
  22. ^ Эми, Джейд (29 августа 2023 г.). «Доступен язык программирования V 0.4 Beta» . развиватьпез . Проверено 29 августа 2023 г.
  23. ^ Чоудхури, Амбика (9 февраля 2022 г.). «Знакомьтесь, V — новый статически типизированный язык программирования, вдохновленный Go и Rust» . Журнал Analytics India Magazine (AIM) . Проверено 7 июля 2024 г.
  24. ^ Шлотауэр, Сара. «Модная пятерка: невероятно горячие репозитории на GitHub в июне 2019 года» . JAXenter . Архивировано из оригинала 17 февраля 2020 года . Проверено 1 июля 2019 г.
  25. ^ «Преобразовать Go в V с помощью go2v» . Зенн . 26 января 2023 г. Проверено 26 января 2023 г.
  26. ^ «Бэкэнд компилятора V WebAssembly» . лм . 26 февраля 2023 г. Проверено 26 февраля 2023 г.
  27. ^ Jump up to: а б Рао 2021 , стр. 28–40.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a7b411d812b4e27a33400b24c9c5811b__1720329660
URL1:https://arc.ask3.ru/arc/aa/a7/1b/a7b411d812b4e27a33400b24c9c5811b.html
Заголовок, (Title) документа по адресу, URL1:
V (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)