최근 수정 시각 : 2023-03-08 19:20:11

V(프로그래밍 언어)

프로그래밍 사이트 선정 프로그래밍 언어 순위 목록
{{{#!wiki style="margin: 0 -10px -5px; word-break: keep-all"
{{{#!wiki style="display: inline-table; min-width: 25%; min-height: 2em;"
{{{#!folding [ IEEE Spectrum 2024 ]
{{{#!wiki style="margin: -5px 0"
<rowcolor=#fff> 스펙트럼 부문 상위 10개 프로그래밍 언어 직업 부문 상위 10개 프로그래밍 언어
1 Python 1 SQL
2 Java 2 Python
3 JavaScript 3 Java
4 C++ 4 TypeScript
5 TypeScript 5 SAS
6 SQL 6 JavaScript
7 C# 7 C#
8 Go 8 HTML
9 C 9 Shell
10 HTML 10 C++
}}}
}}}
}}}
[ Stack Overflow 2024 ]
[ TIOBE 2024 ]
||<tablewidth=100%><width=9999><-4><bgcolor=deepskyblue><tablebgcolor=#fff,#222> 2024년 8월 기준 검색어 점유율 상위 20개 프로그래밍 언어 ||
1 Python 11 MATLAB
2 C++ 12 Delphi / Object Pascal
3 C 13 PHP
4 Java 14 Rust
5 C# 15 Ruby
6 JavaScript 16 Swift
7 SQL 17 Assembly language
8 Visual Basic 18 Kotlin
9 Go 19 R
10 Fortran 20 Scratch
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px);"
{{{#!folding [ 21위 ~ 50위 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
21 COBOL 36 Scala
22 Classic Visual Basic 37 Transact-SQL
23 LISP 38 PL/SQL
24 Prolog 39 ABAP
25 Perl 40 Solidity
26 (Visual) FoxPro 41 GAMS
27 SAS 42 PowerShell
28 Haskell 43 TypeScript
29 Dart 44 Logo
30 Ada 45 Wolfram
31 D 46 Awk
32 Julia 47 RPG
33 Objective-C 48 ML
34 VBScript 49 Bash
35 Lua 50 Elixir
}}}}}}}}} ||
[ PYPL 2024 ]

}}} ||
프로그래밍 언어 목록 · 분류 · 문법


1. 개요2. 특징3. 문법
3.1. 주석3.2. 자료형3.3. 조건문3.4. 반복문
4. 논란

1. 개요

알렉스 메드베드니코프가 제작중인 프로그래밍 언어. 2019년 2월에 선보였으며 2019년 6월 22일 첫 알파 버전의 소스 코드가 공개되었다. 2020년 12월 22일에 안정화 버전인 0.2 버전이 공개되었다.

Go의 단순함에 Rust의 안전함을 접목하는 것을 목표로 하고 있다.

2021년 1월 기준으로 2만 1천개의 GitHub 스타 수를 기록하고 있다.

2. 특징

홈페이지에서 주장하고 있는 언어의 특징은 아래와 같다. 이 중 많은 부분이 아직까지 실제로 구현되지는 않았으므로 참고할 것.
목표가 대단해서 가능할지 의문이 들지만 대신 언어스펙이 Go 이상으로 매우 간단하여 가능하다고 주장하고있다.
  • 안전함
    • Null 없음
    • 전역 변수 없음
    • 정의되지 않은( undefined) 값 없음
    • 정의되지 않은 동작 없음
    • 변수 가려짐(variable shadowing) 없음
    • 배열 경계 검사
    • Option/Result 타입
    • 제너릭
    • 기본이 불변(immutable) 변수
    • 기본이 순수 함수
    • 기본이 불변 구조체
    • 가비지 컬렉터와 레퍼런스 카운팅 없는 자동 메모리 관리
  • 성능
    • C만큼 빠름
    • 추가 비용 없는 C 연동
    • 최소한의 메모리 할당
    • 리플렉션 없는 직렬화(serialization)
    • 추가 의존성 없는 바이너리 빌드: 간단한 웹서버가 65kb의 용량만 차지함
  • 빠른 컴파일: 초당 10만 줄에서 120만 줄의 코드를 컴파일 가능
  • 가벼운 컴파일러: 컴파일러를 컴파일하는데 1MB 미만의 디스크 용량만을 요구하며, 0.15초에서 0.6초 사이에 컴파일 가능
  • (WIP) C 코드를 V 코드로 변환 가능: 소스 코드를 V로 변환하면 전체 소스 코드를 0.7초 안에 컴파일 가능
  • 핫 코드 리로딩: 소스 코드를 고치면 변경 내용이 바로 반영됨
  • (WIP) 복잡한 3D 모델과 텍스쳐를 렌더링할 수 있는 3D 라이브러리
  • 네이티브 크로스컴파일 UI 라이브러리 내장
  • 크로스 컴파일 기능
  • 간단한 의존성 관리 기능: v 컴파일러 내에 배포/의존성 관리 기능이 내장
  • V 코드를 C 코드로 변환 가능: C 컴파일러가 있는 모든 운영체제/하드웨어에서 구동 가능
  • REPL[1]
  • 스크립트 기능
  • 내장 웹 프레임워크
  • 내장 ORM

3. 문법

함수나 변수는 기본적으로 private이고 public은 앞에 pub를 붙인다.
변수는 기본적으로 immutable이고 mutable은 앞에 mut를 붙인다.

3.1. 주석

c like언어로 동일하게 //와 /* */를 사용한다.

3.2. 자료형

boolean bool
문자열 string
정수 i8 i16 int[2] i64 i128(soon)
부호 없는 정수 byte u16 u32 u64 u128(soon)
유니코드 rune
실수 f32 f64
포인터 byteptr voidptr

3.3. 조건문

if 조건 {
} else {
}

match 변수 {
    값1 {}
    값2 {}
    ....
    else {}
}

match는 리턴값을 가질 수 있다.

3.4. 반복문

for하나만 있지만 다양한 형태를 지원한다.
for 값 in 배열 배열 순회
for 인덱스, 값 in 배열 배열 순회
for 키, 값 in 맵 맵 순회
for 조건 조건 반복
for 무한 반복
for 시작;조건;증감 c 스타일

4. 논란

베이퍼웨어라는 논란이 있다. #
안정화 버전인 0.2는 2020년 1월 말에 나올 계획이었지만 2020년 12월 22일에 공개되었다.
혁신적인 메모리 관리를 한다고 한다. 컴파일 단계에서 90~100% 메모리를 해제하고 나머지는 레퍼런스 카운팅으로 해제한다고한다. 프로그래머가 따로 손볼 곳이 없다고.....

[1] Python처럼 한줄씩 입력받아 결과물을 즉시 보여주는 기능. [2] int는 항상 32비트다.