V(프로그래밍 언어)

V (programming language)
V
A capitalized letter V colored blue
공식 V로고
패러다임다중 패러다임: 기능적, 명령적, 구조적, 동시성
설계자 :알렉산드르 메드베드니코프[1]
첫 등장2019년 6월 20일; 4년 전 (2019-06-20)[2]
안정적 해제
0.4.2[3] / 2023년 9월 30일; 42일전 (2023-09-30)
타이핑규율정적인, 강한, 추론된
메모리관리옵션(자동 또는 수동)
구현언어V
플랫폼x86-64
OSLinux, macOS, Windows, FreeBSD, OpenBSD, NetBSD, DragonflyBSD, Solaris
면허증.MIT
파일 확장명.v,.vsh
웹사이트vlang.io
영향을 받음
, 코틀린, 오베론, 파이썬, 러스트, 스위프트

vlang으로도 알려진 V는 2019년 초에 알렉산더 메드베드니코프가 만든 베타 버전의[4] 정적 형식 컴파일 프로그래밍 언어입니다.[5]이것은 바둑 프로그래밍 언어와 오베론, 스위프트, 러스트 등 다른 영향에서 영감을 얻었습니다.[6][7][8]MIT 라이선스 하에 출시된 자유-오픈 소스 소프트웨어입니다.

V의 목표는 사용 편의성, 가독성 및 유지보수성입니다.[9][10]이 언어는 또한 안전성과 모호성 제거를 촉진합니다. 예를 들어, 변수 음영화는 허용되지 않습니다. 즉, 상위 범위에서 이미 사용되고 있는 이름으로 변수를 선언하면 컴파일 오류가 발생합니다.[5][11]

역사

개발자 중 한 명에 따르면, 기존의 언어들이 개인적인 프로젝트에 사용되는 것에 대한 불만으로 인해 새로운 언어가 만들어졌다고 합니다.[12]이 언어는 원래 개인적인 용도로 쓰였으나, 공개적으로 언급되고 관심을 끌자 공개하기로 결정했습니다.V는 처음에 볼트(Volt)라는 데스크톱 메시징 클라이언트를 개발하기 위해 만들어졌습니다.[7]공개된 이후 컴파일러는 V로 작성되었으며 자체 컴파일이 가능했습니다.[5]V를 만든 주요 설계 목표는 학습 및 사용이 용이하고 가독성이 높으며, 빠른 컴파일이 가능하며, 안전성이 향상되고, 개발이 효율적이며, 크로스 플랫폼 사용성이 향상되었으며, Cinterop, 오류 처리 능력이 향상되었으며, 최신 기능 및 유지보수가 가능한 소프트웨어가 제공되었습니다.[13][14][10]

V는 GitHub[15][7] 통해 출시되고 개발되며 커뮤니티의 개발자와 기여자에 의해 유지 관리됩니다.[5]

Veasel은 V 프로그래밍 언어의[16] 공식 마스코트입니다.

특징들

안전.

V에는 메모리 안전, 속도 및 보안 코드를 용이하게 하는 정책이 있습니다.[8][17]이러한 기본 안전 기능 중에는 다음과 같은 것이 있습니다: [8][17][7][18]1) 경계 검사의 사용.2) Option/Result 사용 3) 오류 확인 의무화4) 변수는 기본적으로 불변입니다. 5) Structs는 기본적으로 불변입니다.6) 함수 arg는 기본적으로 불변입니다. 7) 정의되지 않은 값의 사용은 없습니다.8) 변수의 음영이 없습니다.9) null을 사용하지 않습니다(코드에 안전하지 않음).10) 글로벌 변수 사용 금지(플래그를 통해 활성화되지 않은 경우)

성능

언어에 따라 할당이 최소화됩니다.[19][20]네이티브 바이너리는 종속성 없이 컴파일할 수 있습니다.[8][21]

메모리관리

V는 값 유형과 문자열 버퍼를 사용하여 최소량의 메모리 할당을 수행하며, 이는 설계상 추상화가 없는 코드 스타일을 보다 단순하게 촉진합니다.[5][8]이 언어가 메모리 관리를 위해 지원하는 4가지 옵션은 다음과 같습니다.[22][7][23] 1) 할당 처리를 위한 선택적 GC 사용(비활성화 가능), 기본값입니다. 2) GC 비활성화를 통한 수동 메모리 관리(-gc none. 3) 대부분의 객체를 무료 통화 삽입을 통해 처리한 후 남은 비율을 GC에서 자유롭게 처리하는 오토프리 (-autofree. 4) 경기장 배정(-prealloc).

소스코드번역기

V는 소스 대 소스 컴파일러(트랜스필러)를 지원하며 C 코드를 V로 변환할 수 있습니다.[24][25][10]

바둑, 자바스크립트, WASM용 워킹 번역기도 개발 중입니다.[26][27]

구문

안녕 세계

V의 "Hello, World!" 프로그램입니다.[17]

fn 주된() {  인쇄된('안녕하세요., 세계!') } 

구조물

구조 예제:[13]

짜임새 있는 포인트 {  x 인트  y 인트 }  잡동사니를 하다 p := 포인트{  x: 10  y: 20 } 인쇄된(p.x) // 구조 필드는 점을 사용하여 액세스됩니다. // 필드가 3개 이하인 구조의 대체 리터럴 구문 p = 포인트{10, 20} 주장하다 p.x == 10 

힙 구조물

구조물은 기본적으로 스택에 할당됩니다.힙에 구조체를 할당하고 참조를 가져오려면 & 접두사를 사용합니다.[13]

짜임새 있는 포인트 {  x 인트  y 인트 }  p := &포인트{10, 10} // 참조는 필드에 액세스할 때 동일한 구문을 갖습니다. 인쇄된(p.x) 

방법들

V의 메서드는 수신기 인수로 정의된 함수입니다.수신기는 fn 키워드와 메서드 이름 사이의 고유 인수 목록에 나타납니다.메서드는 수신기 유형과 동일한 모듈에 있어야 합니다.

is_registered 메서드의 수신기 유형은 u입니다.관례는 자기나 이런 수신기 이름을 사용하는 것이 아니라, 가급적 짧은 이름을 사용하는 것입니다.예를 들어,[18][13]

짜임새 있는 사용자 {  나이 인트 }  fn (u 사용자) is_registered() 부글부글 {  돌아가다 u.나이 > 16 }  사용자 := 사용자{  연령: 10 } 인쇄된(사용자.is_registered()) // false user2 := 사용자{  연령: 20 } 인쇄된(user2.is_registered()) // "참" 

오류처리

옵션 유형은 없음을 나타낼 수 있는 유형에 대한 것입니다.결과 유형은 함수에서 반환된 오류를 나타낼 수 있습니다.

옵션 유형은 유형 이름 앞에 ?를 붙여 선언됩니다.유형. 결과 유형은 !:!Type을 사용합니다.[18][8][22]

fn 어떤 일을 하다(s 끈을) !끈을 {  한다면 s == '푸우' {   돌아가다 '푸우'  }  돌아가다 오류를('무효한 끈을') }  a := 어떤 일을 하다('푸우') 아니면 { '체납' } // a는 'foo' 가 될 것입니다. b := 어떤 일을 하다('') 아니면 { '체납' } // b는 'default'가 됩니다. c := 어떤 일을 하다('') 아니면 { 패닉에 빠진("{err}") } // 'invalid 문자열' 오류 및 추적과 함께 종료됩니다.  인쇄된(a) 인쇄된(b) 

참고문헌

  1. ^ "Creator of V". GitHub.
  2. ^ "First public release". GitHub. 20 June 2019.
  3. ^ "Latest releases". GitHub.
  4. ^ "The V Programming Language". vlang.io. Retrieved 4 November 2023.
  5. ^ a b c d e Rao 2021.(
  6. ^ Lewkowicz, Jakub (25 June 2019). "SD Times news digest: V language now open sourced". SD Times. Retrieved 25 June 2019.
  7. ^ a b c d e James, Ben (23 July 2019). "The V Programming Language: Vain Or Virtuous?". Hackaday. Retrieved 23 July 2019.
  8. ^ a b c d e f Umoren, Samuel. "Building a Web Server using Vlang". Section. Retrieved 5 April 2021.
  9. ^ Knott, Simon (27 June 2019). "An introduction to V". Retrieved 27 June 2019.
  10. ^ a b c Nasufi, Erdet. "An introduction to V - the vlang". DebConf. Retrieved 24 July 2022.
  11. ^ Galuh, Rosa (8 August 2022). "A Brief Introduction to the V Language". MUO. Retrieved 8 August 2022.
  12. ^ "How To Maintain And Iterate With V - SYNCS 2023 (Sydney Computing Society at the University of Sydney)". YouTube. Retrieved 18 October 2023.
  13. ^ a b c d Independent Laboratory 2020. CITEREF (
  14. ^ Lyons 2022. CITEREFLyons (
  15. ^ "GitHub Programming Languages (repository rankings)" – via OSS.
  16. ^ "V's official mascot". GitHub. Retrieved 8 November 2023.
  17. ^ a b c Galuh, Rosa (8 August 2022). "A Brief Introduction to the V Language". MUO. Retrieved 8 August 2022.
  18. ^ a b c Knott, Simon (27 June 2019). "An introduction to V". Retrieved 27 June 2019.
  19. ^ "The V programming language is now open source". Packt Hub. 24 June 2019. Retrieved 24 June 2019.
  20. ^ Galuh, Rosa (8 August 2022). "A Brief Introduction to the V Language". MUO. Retrieved 8 August 2022.
  21. ^ Dr. Rangarajan Krishnamoorthy. "Building V Language DLL". rangakrish. Retrieved 2 April 2023.
  22. ^ a b 츠우칼로스 2022.
  23. ^ Emy, Jade (29 August 2023). "The programming language V 0.4 Beta is available". developpez. Retrieved 29 August 2023.
  24. ^ "Introducing the V Tutorial!". Replit. Retrieved 4 January 2021.
  25. ^ Schlothauer, Sarah. "The trendy five: Blazing hot GitHub repos in June 2019". JAXenter. Archived from the original on 17 February 2020. Retrieved 1 July 2019.
  26. ^ "Convert Go to V with go2v". Zenn. 26 January 2023. Retrieved 26 January 2023.
  27. ^ "The V WebAssembly Compiler Backend". l-m. 26 February 2023. Retrieved 26 February 2023.

더보기

외부 링크