stringtranslate.com

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

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]

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

Функции

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

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

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

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

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

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

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

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

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

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

Синтаксис

Привет, мир

Программа «Hello, World!» на языке V: [17]

fn main () { println ( "Привет, мир!" ) }  

Переменные

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

а := 1 мут б := 2 б = 3       

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

a := 1 { a := 3 // ошибка: переопределение a } a := 2 // ошибка: переопределение a         

Структуры

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

структура Point { x int y int }    mut p := Point { x: 10 y: 20 } println ( p . x ) // Доступ к полям структуры осуществляется с помощью точки // Альтернативный литеральный синтаксис для структур с 3 полями или меньше p = Point { 10 , 20 } assert p . x == 10             

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

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

структура Point { x int y int }    p := & Point { 10 , 10 } // Ссылки имеют тот же синтаксис для доступа к полям println ( p . x )   

Методы

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

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

структура User { age int }   fn ( u Пользователь ) is_registered () bool { return u . age > 16 }        пользователь := Пользователь { возраст: 10 } println ( пользователь . is_registered ()) // "ложь" пользователь2 := Пользователь { возраст: 20 } println ( пользователь 2 . is_registered ()) // "истина"        

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

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

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

fn do_something ( s string ) ! string { if s == "foo" { return "foo" } return error ( "недопустимая строка" ) }          a := do_something ( "foo" ) или { "default" } // a будет "foo" b := do_something ( "bar" ) или { "default" } // b будет "default" c := do_something ( "bar" ) или { panic ( "{err}" ) } // завершается с ошибкой "invalid string" и трассировкой                     println ( а ) println ( б )

Смотрите также

Ссылки

  1. ^ "Создатель V". GitHub .
  2. ^ "Первый публичный релиз". GitHub . 20 июня 2019 г.
  3. ^ "Выпуск 0.4.8". 28 сентября 2024 г. Получено 28 сентября 2024 г.
  4. ^ abcd Рао 2021.
  5. ^ Левкович, Якуб (25 июня 2019 г.). «Дайджест новостей SD Times: язык V теперь с открытым исходным кодом». SD Times . Получено 25 июня 2019 г. .
  6. ^ abcde Джеймс, Бен (23 июля 2019 г.). «Язык программирования V: тщеславный или добродетельный?». Hackaday . Получено 23 июля 2019 г. .
  7. ^ abcd Umoren, Samuel. "Building a Web Server using Vlang". Раздел . Архивировано из оригинала 13 марта 2023 г. Получено 5 апреля 2021 г.
  8. ^ "Язык программирования V". vlang.io . Получено 4 ноября 2023 г. .
  9. ^ abcd Нотт, Саймон (27 июня 2019 г.). "Введение в V" . Получено 27 июня 2019 г.
  10. ^ abc Насуфи, Эрдет. "Введение в V - vlang". DebConf . Получено 24 июля 2022 г.
  11. ^ "Как поддерживать и итерировать с помощью V - SYNCS 2023 (Sydney Computing Society at the University of Sydney)". YouTube . Получено 18 октября 2023 г. .
  12. ^ abcd Независимая лаборатория 2020.
  13. ^ Лайонс 2022.
  14. ^ "Язык V: простой как Go, небольшой двоичный как Rust". TechRacho . Получено 3 марта 2021 г. .
  15. ^ «Языки программирования GitHub (рейтинги репозиториев)» – через OSS .
  16. ^ "Официальный талисман V". GitHub . Получено 8 ноября 2023 г.
  17. ^ abcde Галу, Роза (8 августа 2022 г.). «Краткое введение в язык V». MUO . Получено 8 августа 2022 г. .
  18. ^ Рао 2021, стр. 7.
  19. ^ "Язык программирования V теперь имеет открытый исходный код". Packt Hub . 24 июня 2019 г. Получено 24 июня 2019 г.
  20. ^ Чакраборти 2023.
  21. ^ ab Tsoukalos 2022.
  22. ^ Эми, Джейд (29 августа 2023 г.). «Язык программирования V 0.4 Beta доступен». developpez . Получено 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". Zenn . 26 января 2023 г. Получено 26 января 2023 г.
  26. ^ "The V WebAssembly Compiler Backend". lm . 26 февраля 2023 г. Получено 26 февраля 2023 г.
  27. ^ ab Rao 2021, стр. 28–40.

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

Внешние ссылки