2019/09/17

プログラミング言語 V を試してみた

プログラミング言語 V とは

謳い文句では「保守性に優れたソフトウェアを開発するための、シンプル・高速・安全なコンパイラ言語」と公式ドキュメントには書かれております。またGoに似ており、Oberon、Rust、Swiftの影響を受けているとも書かれており、CやC++を変換云々とも書かれている。まだ開発初期段階らしいのですが、V1.0の公開が今年の12月を予定しているそうなので、かじっておくのもありなのかなと思い試してみました。

インストール

インストールは以下の手順でできました(警告が出ましたが、とりあえず動きました)

$ git clone https://github.com/vlang/v
$ cd v
$ make
後は.bashrcexport PATH=$PATH:$HOME/vと書いておく。これで、$ vとすれば、対話シェルが起動します。また.vファイルを作成し、$ v -o ~~ ~~.vとか$ v run ~~.vとする。
まずは対話シェルでお試しでも良いかと思います。

$ v
V 0.1.19 9c9e629
Use Ctrl-C or `exit` to exit

>>> println('Hello, world!!')
Hello, world!!
>>> x := 123
>>> x
123
:=は、変数宣言と初期化を同時に行うものですが、Goと同じと言いたいが、実はデフォルトでイミュータブルとなっているので、例えば以下のようなことをするとGoでは大丈夫だけれど、Vではエラーとなる。

>>> x := 123
>>> x = 456
ERROR!!
これはRustではおなじみなので、私的には違和感はないです。したがって、Rust同様ミュータブルな変数は明示的にするmut必要があるようです。

>>> mut x := 123
>>> x = 456
>>> x
456
基本的に右辺の値から型推論されるようですが、型変換もしくは型を強制することもできるようです。

>>> x := int(123)
>>> x
123
楽だなと思ったのはリストに要素を追加する際の記述法です。

>>> mut l := [1, 2, 3]
>>> l << 4
>>> l
[1, 2, 3, 4]
構造体のあたりで、pub mut mut:というのが出てきて、ちょっと面倒さを感じましたが、それは人それぞれ感じ方が違いますので。何とも言えませんし、単に慣れの問題かもしれません。
今後どうなるのか分かりませんが、結構注目されているようですので、気になる方は要チェックかもしれません。私はRustとLispで手一杯、頭一杯……

  追記

インストール時の警告は正しいのだろう。やはりまだ色々と問題はありそうです。訳の分からない場所に訳の分からないファイルが作成されていたり、コードがうまく評価できなかったりがありました。しばらく様子を見る感じになりそうです。