V (язык программирования)
![]() Официальный логотип V | |
Парадигмы | Мультипарадигмальность : функциональная , императивная , структурированная , параллельная. |
---|---|
Разработано | Alexander Medvednikov [1] |
Впервые появился | 20 июня 2019 г [2] |
Стабильная версия | 0.4.6 [3] ![]() |
Дисциплина набора текста | статический , сильный , предполагаемый |
Управление памятью | опционально ( автоматический или ручной ) |
Язык реализации | 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]

Функции
[ редактировать ]![]() | В этом разделе может содержаться информация, не важная и не относящаяся к теме статьи. ( Ноябрь 2023 г. ) |
Безопасность
[ редактировать ]В V есть политики, обеспечивающие безопасность памяти, скорость и безопасность кода. [7] [17] Язык имеет различные функции по умолчанию для большей безопасности программы. [7] [17] [6] [9] Он использует проверку границ для защиты от использования переменных за пределами границ. опций/результатов , где тип опции ( типы Используются ?
) может быть представлено none
(среди возможных вариантов) и тип результата ( !
) может обрабатывать любые возвращаемые ошибки. Для обеспечения большей безопасности в V обязательна проверка ошибок. По умолчанию неизменяемыми являются переменные , структуры и аргументы функций. Сюда входят строковые значения, которые являются неизменяемыми, поэтому элементы не могут быть изменены. Другими средствами защиты, которые установлены по умолчанию для языка, являются: отсутствие использования неопределенных значений , отсутствие затенения переменных , отсутствие использования значения null (если только код не помечен как небезопасный) и отсутствие использования глобальных переменных (если они не включены с помощью флага).
Производительность
[ редактировать ]V использует типы значений и строковые буферы для уменьшения выделения памяти. [18] [19] [17] Язык может быть скомпилирован в удобочитаемый C. [4] [20] и считается результативным. [17]
Управление памятью
[ редактировать ]Язык поддерживает следующие 4 варианта управления памятью: [21] [6] [22] [20]
- Для обработки выделений используется дополнительный сборщик мусора (который можно отключить). Это значение по умолчанию.
- Ручное управление памятью через отключение ГХ (
-gc none
). - Autofree, который обрабатывает большинство объектов посредством свободной вставки вызова, а затем оставшийся процент освобождается сборщиком мусора (
-autofree
). - Распределение арены (
-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)
См. также
[ редактировать ]- Сравнение языков программирования
- История языков программирования
- Список языков программирования
- Список языков программирования по типам
Ссылки
[ редактировать ]- ^ «Создатель V» . Гитхаб .
- ^ «Первый публичный релиз» . Гитхаб . 20 июня 2019 г.
- ^ «Выпуск 0.4.6» . 20 мая 2024 г. Проверено 25 мая 2024 г.
- ^ Jump up to: а б с д Рао 2021 .
- ^ Левкович, Якуб (25 июня 2019 г.). «Дайджест новостей SD Times: язык V теперь открыт» . СД Таймс . Проверено 25 июня 2019 г.
- ^ Jump up to: а б с д и Джеймс, Бен (23 июля 2019 г.). «Язык программирования V: тщетно или добродетельно?» . Хакадей . Проверено 23 июля 2019 г.
- ^ Jump up to: а б с д Уморен, Самуэль. «Создание веб-сервера с использованием Vlang» . Раздел . Архивировано из оригинала 13 марта 2023 года . Проверено 5 апреля 2021 г.
- ^ «Язык программирования V» . vlang.io . Проверено 4 ноября 2023 г.
- ^ Jump up to: а б с д Нотт, Саймон (27 июня 2019 г.). «Знакомство с В.» . Проверено 27 июня 2019 г.
- ^ Jump up to: а б с Насуфи, Эрдет. «Введение в V — vlang» . ДебКонф . Проверено 24 июля 2022 г.
- ^ «Как поддерживать и выполнять итерации с помощью V — SYNCS 2023 (Сиднейское компьютерное общество при Сиднейском университете)» . Ютуб . Проверено 18 октября 2023 г.
- ^ Jump up to: а б с д Независимая лаборатория 2020 .
- ^ Лион 2022 .
- ^ «Язык V: простой, как Go, небольшой двоичный код, как Rust» . ТехРачо . Проверено 3 марта 2021 г.
- ^ «Языки программирования GitHub (рейтинги репозиториев)» — через OSS .
- ^ «Официальный талисман Ви» . Гитхаб . Проверено 8 ноября 2023 г.
- ^ Jump up to: а б с д и Галух, Роза (8 августа 2022 г.). «Краткое введение в язык V» . МУО . Проверено 8 августа 2022 г.
- ^ Рао 2021 , с. 7.
- ^ «Язык программирования V теперь имеет открытый исходный код» . Пакетный хаб . 24 июня 2019 г. Проверено 24 июня 2019 г.
- ^ Jump up to: а б Чакраборти 2023 .
- ^ Jump up to: а б Цукалос 2022 .
- ^ Эми, Джейд (29 августа 2023 г.). «Доступен язык программирования V 0.4 Beta» . развиватьпез . Проверено 29 августа 2023 г.
- ^ Чоудхури, Амбика (9 февраля 2022 г.). «Знакомьтесь, V — новый статически типизированный язык программирования, вдохновленный Go и Rust» . Журнал Analytics India Magazine (AIM) . Проверено 7 июля 2024 г.
- ^ Шлотауэр, Сара. «Модная пятерка: невероятно горячие репозитории на GitHub в июне 2019 года» . JAXenter . Архивировано из оригинала 17 февраля 2020 года . Проверено 1 июля 2019 г.
- ^ «Преобразовать Go в V с помощью go2v» . Зенн . 26 января 2023 г. Проверено 26 января 2023 г.
- ^ «Бэкэнд компилятора V WebAssembly» . лм . 26 февраля 2023 г. Проверено 26 февраля 2023 г.
- ^ Jump up to: а б Рао 2021 , стр. 28–40.
Дальнейшее чтение
[ редактировать ]- Базовый язык программирования V (на японском языке). Независимая лаборатория. 20 июня 2020 г. ASIN B08BKJDRFR .
- Рао, Навуле Паван Кумар (10 декабря 2021 г.). Начало работы с V-программированием . Пакт Паблишинг . АСИН B09FKK3JL7 . ISBN 978-1839213434 . OCLC 1290492862 .
- Лайонс, Дакота «Кай» (13 апреля 2022 г.). Начнем с V-программирования . Независимо опубликовано. АСИН B09XSZKTJ1 . ISBN 979-8801499963 .
- Чакраборти, Субхик; Халдар, Субхомой (6 декабря 2023 г.). Новый взгляд на случайность с использованием языка программирования V. Издательство Нова Сайенс . дои : 10.52305/CVCN5241 . ISBN 979-8891133280 . S2CID 265170755 .
- Цукалос, Михалис (май 2022 г.). «Откройте для себя язык V». Linux Format Журнал (288). ISSN 1470-4234 .
Внешние ссылки
[ редактировать ]- программное обеспечение 2019 года
- Языки программирования, созданные в 2019 году
- Языки программирования
- Мультипарадигмальные языки программирования
- Процедурные языки программирования
- Функциональные языки
- Параллельные языки программирования
- Кроссплатформенное программное обеспечение
- Кроссплатформенное бесплатное программное обеспечение
- Бесплатные компиляторы и интерпретаторы
- Программное обеспечение, использующее лицензию MIT
- Компиляторы исходного кода
- Статически типизированные языки программирования
- Языки системного программирования