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
2020年5月15日
【新歓ゲーム制作特集 第2弾】Inverse製作秘話
Saltn icon Saltn
2019年4月22日
アセンブリを読んでみよう【新歓ブログリレー2019 45日目】
eiya icon eiya
2018年12月12日
多重スリーブの世界と,各種進捗報告。
Silviase icon Silviase
2017年11月17日
そばやのワク☆ワク流体シミュレーション~MPS編~
sobaya007 icon sobaya007
2020年5月19日
【新歓ゲーム制作特集 第6弾】個人でゲームを作る話
Facish icon Facish
記事一覧 タグ一覧 Google アナリティクスについて