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
2021年12月8日
C++ with JUCEでステレオパンを作ってみた【AdC2021 26日目】
liquid1224 icon liquid1224
2020年5月15日
【新歓ゲーム制作特集 第2弾】Inverse製作秘話
Saltn icon Saltn
2019年4月22日
アセンブリを読んでみよう【新歓ブログリレー2019 45日目】
eiya icon eiya
2018年12月12日
多重スリーブの世界と,各種進捗報告。
Silviase icon Silviase
記事一覧 タグ一覧 Google アナリティクスについて