V 언어 입문: 왜 V인가? 설치부터 Hello World까지
"주말이면 문법을 다 익힐 수 있는 프로그래밍 언어가 있다면?" — V 언어는 바로 그런 목표로 태어났다. C만큼 빠르고, Go만큼 쉽고, Rust만큼 안전한 것을 지향하는 이 언어를 지금부터 함께 시작해보자.
V 언어란?
V(또는 Vlang) 는 2019년 Alexander Medvednikov가 만든 정적 타입, 컴파일 프로그래밍 언어다.
"정적 타입"이라는 말이 나왔으니 쉽게 풀어보자. 프로그래밍 언어는 크게 두 가지로 나뉜다.
- 동적 타입 (Python, JavaScript 등) — 변수에 아무 값이나 넣을 수 있고, 실행해봐야 에러를 발견한다.
- 정적 타입 (C, Go, Rust 등) — 변수에 들어갈 값의 종류를 미리 정해두고, 실행 전(컴파일 단계)에 에러를 잡아준다.
V는 정적 타입이지만, 타입을 일일이 적지 않아도 V가 알아서 추론해주기 때문에 코드 작성은 Python처럼 간결하다. 컴파일 언어이므로 작성한 코드를 기계어로 변환한 뒤 실행하는데, 이 변환 속도가 매우 빠른 것이 V의 핵심 특징이다.
V의 세 가지 설계 철학
V 언어는 세 가지 가치를 동시에 추구한다.
| 가치 | 의미 | 비유 |
|---|---|---|
| 심플함 | 문법이 적고 읽기 쉽다 | 26개 알파벳만으로 모든 영어를 쓸 수 있듯, V도 최소한의 문법으로 모든 것을 표현한다 |
| 속도 | 컴파일이 빠르고 실행도 빠르다 | C/C++ 수준의 실행 성능을 목표로 한다 |
| 안전성 | 실수를 원천 차단하는 설계 | 변수는 기본적으로 변경 불가, null이 없음, 경계 검사 자동 수행 |
왜 V인가? 다른 언어와 한눈에 비교
"이미 Go도 있고 Rust도 있는데, 왜 또 새로운 언어?"라고 생각할 수 있다. 각 언어가 강조하는 점이 다르기 때문에 비교표로 정리해보자.
| 특징 | V | Go | Rust | Python |
|---|---|---|---|---|
| 배우기 쉬움 | ★★★★★ | ★★★★☆ | ★★☆☆☆ | ★★★★★ |
| 실행 속도 | ★★★★★ | ★★★★☆ | ★★★★★ | ★★☆☆☆ |
| 컴파일 속도 | ★★★★★ | ★★★★☆ | ★★☆☆☆ | - (인터프리터) |
| 메모리 안전성 | ★★★★☆ | ★★★☆☆ | ★★★★★ | ★★★☆☆ |
| 바이너리 크기 | ★★★★★ | ★★★☆☆ | ★★★★☆ | - (인터프리터) |
| 생태계 성숙도 | ★★☆☆☆ | ★★★★★ | ★★★★☆ | ★★★★★ |
V의 포지션을 한 줄로 요약하면:
Go의 심플한 문법 + Rust의 안전성 + C의 실행 속도를 하나로 합치려는 언어
물론 V는 아직 성장 중인 언어(2026년 3월 기준 v0.4.x)라서 생태계는 Go나 Python에 비해 작다. 하지만 핵심 언어 기능은 안정적으로 동작하며, "배우기 쉬운 시스템 프로그래밍 언어" 를 찾고 있다면 V는 훌륭한 선택지가 된다.
V 설치하기
V는 소스 코드에서 직접 빌드하는 방식으로 설치한다. 복잡해 보이지만, 실제로는 명령어 2~3개면 끝난다.
Windows
# 1) Git이 없다면 먼저 설치: https://git-scm.com/download/win
# 2) V 소스코드 다운로드
git clone https://github.com/vlang/v
# 3) V 빌드
cd v
make.bat
# 4) 시스템 어디서나 v 명령어를 쓸 수 있도록 PATH에 추가
.\v.exe symlink
💡
make.bat이 하는 일: V의 소스코드를 읽어서v.exe실행 파일을 만든다. V는 자기 자신을 컴파일하는 "셀프 호스팅(Self-hosting)" 컴파일러이기도 하다. 처음 한 번만 C 컴파일러를 빌려 쓰고, 그 다음부터는 V가 V 자신을 컴파일한다. 꽤 멋지지 않은가?
macOS / Linux
# 1) V 소스코드 다운로드
git clone https://github.com/vlang/v
# 2) V 빌드
cd v
make
# 3) PATH에 추가 (어디서나 v 명령어 사용 가능)
sudo ./v symlink
설치 확인
터미널(혹은 명령 프롬프트)을 열고 다음 명령어를 입력해보자.
v version
아래와 비슷한 출력이 나오면 성공이다.
V 0.4.9 abcdef1
버전 번호는 설치 시점에 따라 다를 수 있다. 숫자가 출력되면 설치가 정상적으로 완료된 것이다.
첫 번째 V 프로그램: Hello World
모든 프로그래밍 언어 학습의 첫 관문, Hello World를 작성해보자.
1단계: 파일 만들기
원하는 폴더에 hello.v 파일을 만들고 아래 코드를 입력한다.
fn main() {
println('Hello, V!')
}
고작 세 줄이다. 한 줄씩 뜯어보자.
| 코드 | 설명 |
|---|---|
fn main() | fn 은 "함수(function)를 정의한다"는 뜻이다. main은 프로그램의 시작점으로, V는 이 함수부터 실행을 시작한다. |
{ ... } | 중괄호 안이 함수의 본문이다. 이 안에 실행할 코드를 작성한다. |
println('Hello, V!') | 화면에 글자를 출력하는 내장 함수다. 작은따옴표('...') 안에 출력할 텍스트를 넣는다. |
🔍 다른 언어와 비교:
- Python:
print("Hello, V!")— 함수 선언 없이 바로 실행 가능- Go:
fmt.Println("Hello, V!")—import "fmt"가 필요- C:
printf("Hello, V!\n");—#include <stdio.h>가 필요, 줄바꿈도 직접 추가V는
import없이println을 바로 쓸 수 있어서 Go보다 간결하고, 함수 구조가 있어서 Python보다 체계적이다.
2단계: 실행하기
터미널에서 hello.v 파일이 있는 폴더로 이동한 뒤, 다음 명령어를 입력한다.
v run hello.v
출력:
Hello, V!
축하한다! 첫 번째 V 프로그램을 성공적으로 실행했다. 🎉
v run이 하는 일
v run은 내부적으로 두 가지를 동시에 처리한다.
hello.v (소스코드) → [컴파일] → hello (실행파일) → [실행] → Hello, V! (출력)
즉, 컴파일과 실행을 한 번에 해주는 편의 명령어다. 만약 컴파일만 하고 싶다면 v hello.v를 입력하면 실행 파일만 생성된다.
V 프로젝트 폴더 구조
간단한 V 프로젝트의 구조를 살펴보자.
my-project/
├── src/
│ └── main.v # 진입점 (fn main)
├── v.mod # 프로젝트 정보 파일 (이름, 버전, 의존성)
└── README.md
| 파일/폴더 | 역할 |
|---|---|
src/main.v | 프로그램의 시작점. fn main()이 여기에 있다. |
v.mod | 프로젝트의 이름, 버전, 사용 라이브러리 등을 기록하는 설정 파일. Python의 pyproject.toml, Node.js의 package.json과 비슷하다. |
지금은 단일 파일(hello.v)로 충분하지만, 프로그램이 커지면 코드를 여러 파일과 모듈로 나누게 된다. 모듈에 대해서는 9편에서 자세히 다룰 예정이다.
📝 정리
이번 글에서 배운 핵심 포인트를 체크리스트로 정리한다.
- [x] V는 정적 타입 컴파일 언어다 — 실행 전에 에러를 잡아주고, 실행 속도가 빠르다
- [x] V의 3대 가치: 심플함, 속도, 안전성
- [x] 설치:
git clone→make→v symlink세 단계로 끝 - [x] Hello World:
fn main()함수 안에println()— 세 줄이면 충분 - [x] 실행:
v run 파일명.v한 줄이면 컴파일 + 실행 동시 처리
🧪 직접 해보기
아래 과제를 직접 시도해보자. 정답은 없다 — 실행되면 성공이다!
과제 1: 자기소개 프로그램
println을 여러 번 사용해서 아래처럼 출력되는 프로그램을 만들어보자.
안녕하세요!
저는 V 언어를 배우고 있습니다.
오늘이 첫날입니다!
과제 2: 문자열 보간 맛보기
아래 코드를 intro.v로 저장하고 실행해보자. 아직 배우지 않은 문법이 나오지만, 신기하게도 그냥 읽힌다.
fn main() {
name := '홍길동' // 변수에 이름 저장
println('안녕! 나는 ${name}') // 변수 값을 문자열에 끼워넣기
}
name 부분을 자신의 이름으로 바꿔서 실행해보자. :=이 뭔지, ${}이 뭔지는 다음 편에서 자세히 설명한다!
다음 편 예고
2편: V 언어 문법 — 변수, 상수, 기본 타입 완전 정복
데이터를 담는 "상자"인 변수, 바꿀 수 없는 상수, 그리고 V가 제공하는 다양한 데이터 타입(정수, 실수, 문자열 등)을 하나하나 파헤친다.