V 言語で Hello, World
V 言語とは
V 言語は最近出てきたプログラミング言語です。
公式サイトには
The V Programming Language
Simple, fast, safe, compiled. For developing maintainable software.
と書いてあります。
シンプルで速くて安全らしいです。
私の環境
OS: macOS 12.3 21E230 x86_64
デバイス: MacBook Pro 2019 13 インチ
CPU: Intel i7-8569U (8) @ 2.80GHz
メモリ: 16GB
インストール
ドキュメント
現在(2022/04/05)時点では、ソースからビルドする方法しかないようです。
大人しくビルドします。
git
と C コンパイラ(tcc
、gcc
、clang
のどれか)、make
が必要です。
Linux、macOS 系の場合
git clone https://github.com/vlang/v
cd v
make
Windows の場合
git clone https://github.com/vlang/v
cd v
make.bat -tcc
グローバルで v
を使いたい場合は
sudo ./v symlink
でどこでも v
が使えるようになります。
v
v help
でコマンドの説明が見れます。
$ v help
V is a tool for managing V source code.
Usage:
v [options] [command] [arguments]
Examples:
v hello.v Compile the file `hello.v` and output it as `hello` or `hello.exe`.
v run hello.v Same as above but also run the produced executable immediately after compilation.
v -cg run hello.v Same as above, but make debugging easier (in case your program crashes).
v -o h.c hello.v Translate `hello.v` to `h.c`. Do not compile further.
v -o - hello.v Translate `hello.v` and output the C source code to stdout. Do not compile further.
v watch hello.v Re-does the same compilation, when a source code change is detected.
The program is only compiled, not run.
v watch run hello.v Re-runs the same `hello.v` file, when a source code change is detected.
V supports the following commands:
* New project scaffolding:
new Setup the file structure for a V project (in a sub folder).
init Setup the file structure for an already existing V project.
* Ordinary development:
run Compile and run a V program.
test Run all test files in the provided directory.
fmt Format the V code provided.
vet Report suspicious code constructs.
doc Generate the documentation for a V module.
vlib-docs Generate and open the documentation of all the vlib modules.
repl Run the REPL.
watch Re-compile/re-run a source file, each time it is changed.
* Installation/self updating:
symlink Create a symbolic link for V.
up Run the V self-updater.
self [-prod] Run the V self-compiler, use -prod to optimize compilation.
version Print the version text and exits.
* Module/package management:
install Install a module from VPM.
remove Remove a module that was installed from VPM.
search Search for a module from VPM.
update Update an installed module from VPM.
upgrade Upgrade all the outdated modules.
list List all installed modules.
outdated List installed modules that need updates.
show Display information about a module on vpm
* Others:
doctor Display some useful info about your system to help reporting bugs.
translate Translate C code to V (coming soon in 0.3).
tracev Produce a tracing version of the v compiler.
Use `tracev yourfile.v` when the compiler panics.
NB: `tracev` is much slower and more verbose than ordinary `v`
Use "v help <command>" for more information about a command, example: `v help build`, `v help build-c`, `v help build-native`
Use "v help other" to see less frequently used commands.
Use "v help topics" to see a list of all known help topics.
Note: Help is required to write more help topics.
Only build, new, init, doc, fmt, vet, run, test, watch, search, install, remove, update, bin2v, check-md are properly documented currently.
v
で Python のように対話モードに入ることができます。
$ v
____ ____
\ \ / / | Welcome to the V REPL (for help with V itself, type exit , then run v help ).
\ \/ / | Note: the REPL is highly experimental. For best V experience, use a text editor,
\ / | save your code in a main.v file and execute: v run main.v
\ / | V 0.2.4 0bd8fbc . Use list to see the accumulated program so far.
\__/ | Use Ctrl-C or exit to exit, or help to see other available commands.
四則演算はこんな感じになります。
>>> 1 + 1
2
>>> 3 * 4
12
>>> 0.004 - 0.001
0.003
>>> 1 / 3
0
>>> 1.0 / 3.0
0.3333333
計算は普通にできるのですが、体感めちゃくちゃ遅いです。
足し算に 2 秒くらいかかってる気がします。
V 言語は一度 C にトランスパイルされるらしいので、多分毎回ビルド作業が挟まっているのだと思います。
Hello, World する
拡張機能
私は VS Code を使うので、拡張機能をインストールします。
シンタックスハイライトやスニペットが付いてきます。
残念ながら、現在(2022/04/05)はフォーマット機能は付いていないようです。
シンタックスエラーを指摘してくれなかったり、サジェストが弱かったりとあまり頼りにはできません...
プロジェクト作成
先ほどインストールした v
コマンドを使うと簡単にプロジェクトが作成できます。
$ v new
Input your project name: hello_world
Input your project description:
Input your project version: (0.0.0)
Input your project license: (MIT)
Initialising ...
Complete!
npm init
と似てますね。
実行すると、新たに hello_world
という名前のディレクトリが作成されます。
これを VS Code で開きます。
おそらくこんな感じの構成になっていると思います。
(.gitignore
がネストしているのは他の拡張機能のせいです。)
実行
すでに Hello, World
を出力するプログラムはできているので、後は実行するだけです。
$ v run ./hello_world.v
Hello World!
できました。
コードはこんな感じになっていると思います。
module main
fn main() {
println('Hello World!')
}
Rust と Go を合わせた雰囲気です。
終わり
V 言語で Hello, World しました。
より詳細な仕様を知りたければ、公式ドキュメントを参照してください。
文字列や Array、for ループなどは独特な仕様があり面白いです。
Discussion