feature image

2020年5月7日 | ブログ記事

V言語を入れよう【新歓ブログリレー2020 60日目】

新歓ブログリレー2020 60日目です

2020年5月にv言語 ヴァージョン0.2がリリースされる(予定)なので、その流れに乗り遅れないようにするために広めようと思います。

V言語ってなんだ

V言語は2019年に公開された非常にモダンなプログラミング言語です。

「高い安全性」と「速さ」の両立を設計思想にしているようです。

「速さ」はただ単純なプログラムの実行速度だけでなく、コンパイルもインストールも非常に高速でストレスフリーです。(Cを予めインストールしないといけないのでインストールが速いというのは半分真で半分偽のような気もしますが…)

また文法もGoに似ており、割ととっつきやすいと思います。

また、ヴァージョン0.3でC/C++からVへの変換機能の実装予定とありめが話せません。

残念ながら、AtCoderはV言語には対応していないようです。(今のところ)

V言語をインストール

V言語のインストールにはCコンパイラのインストールが必須であり、まずそこから行う必要があります。

windowsの場合は、mingw-w64またはVisual Studio等を入れてからのインストールになります。macやLinuxも同様にcコンパイラを入れます。

詳細はwindowsにCでコンパイラ , macやLinux を参照。

Cコンパイラを入れてからようやくV install battleがスタートするので(Cコンパイラが入っていないと)割と面倒なインストール作業です。

詳細はすべて ここ に書いてありますが一応。

また、Dockerが入っているならDocker上でも動かすことができるようです。

git clone https://github.com/vlang/v
cd v
docker build -t vlang .
docker run --rm -it vlang:latest
v

macにインストール

git clone https://github.com/vlang/v
cd v
make

を行った後、

sudo ./v symlink

シンボリックリンクを貼る作業を行うと終わりです。

windowsにインストール

大体macと同じですが…

git clone https://github.com/vlang/v
cd v
make.bat

makeでも動くようです。そして、vの入れたところ(例: C¥:Users¥{{ユーザー名}}¥v)をシステム環境変数を追加して、pathを通してあげると環境構築完了です。

gitコマンドが使えない場合はGitを入れる必要があります.

V言語を動かそう

import os

fn main(){
	program := os.input('')
	memorysize := 65536
	mut arr := []byte{ len: memorysize, default: 0 }
	mut pointer := 0
	mut i := 0
	mut bra := 0
	for i < program.len {
		if program[i] == `+` {
			if 0 <= pointer && pointer < memorysize{
				arr[pointer] += 1
			}else{
				return
			}
			i += 1
		}else if program[i] ==  `-` {
			if 0 <= pointer && pointer < memorysize{
				arr[pointer] -= 1
			}else{
				return
			}
			i += 1
		}else if program[i] ==  `<` {
			pointer -= 1
			i = i + 1
		}else if program[i] ==  `>` {
			pointer += 1
			i += 1
		}else if program[i] ==  `,` {
			inp := int(os.input('')[0])
			arr[pointer] = inp
			i += 1
		}else if program[i] ==  `.` {
			print(byte(arr[pointer]))
			i += 1
		}else if program[i] == `[` {
			if arr[pointer] == 0{
				bra = 1
				for bra > 0{
					i += 1
					if i < program.len && program[i] == `[`{
						bra += 1
					}else if i < program.len && program[i] == `]`{
						bra -= 1
					}else if i>=program.len {
						return
					}
				}
			}
			else{
				i += 1
			}
		}else if program[i] ==  `]` {
			if arr[pointer] != 0{
				bra = 1
				for bra > 0{
					i -= 1
					if i >= 0 && program[i] == `[`{
						bra -= 1
					}else if i >= 0 && program[i] == `]`{
						bra += 1
					}else if i < 0 {
						return
					}
				}
			}
			else{
				i += 1
			}
		}else{
			i += 1
		}
	}
}

brainf***のインタプリタをサクッと書いたので動かしてみましょう。

oisu-と表示するbfのプログラムは+[------->++<]>+.------.++++++++++.++.-[++>---<]>-.なので、v run ファイル名.vで実行させてプログラム入力すると…

動いた!やった!

V言語アップデート

v upするだけです。 
また、開発中でホットな言語なだけあって、v upを回すと結構バージョンが上がります。

最後に

バージョン0.2が出る前に インストールして圧倒的成長!!

明日の記事は@mazrean です楽しみ〜

Kejun icon
この記事を書いた人
Kejun

福岡県民です。

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

ERC20トークンを用いた宝探しゲーム(真)の提案【アドベントカレンダー2018 10日目】 feature image
2018年11月3日
ERC20トークンを用いた宝探しゲーム(真)の提案【アドベントカレンダー2018 10日目】
Azon icon Azon
2021年5月19日
CPCTF2021を実現させたスコアサーバー
xxpoxx icon xxpoxx
2023年4月27日
Vulkanのデバイスドライバを自作してみた
kegra icon kegra
2024年4月14日
Spotifyのクライアントを自作しよう
d_etteiu8383 icon d_etteiu8383
2021年12月8日
C++ with JUCEでステレオパンを作ってみた【AdC2021 26日目】
liquid1224 icon liquid1224
2020年5月15日
【新歓ゲーム制作特集 第2弾】Inverse製作秘話
Saltn icon Saltn
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記