こんにちはmkです。今回はNimっていう言語を触っていきますfastapiを触ると言ったな、あれは嘘だ
Nimとは
Pythonライクな静的言語です
C系やJSにトランスコンパイル出来るなかなかの変態言語
詳しくはググってくれ()
インストール
Ubuntu, Debian系
sudo apt install nim
Fedora, Serene系
sudo dnf install nim
Arch, Alter系
sudo pacman -S nim
Hello, World!
まずは定番
比較対象としてPython版も書きます
Python版
#!/usr/bin/python3
print("Hello, World!")
Nim版
echo "Hello, World!"
コンパイル
nim c hello_world.nim
実行
./hello_world
またはコンパイル&実行
nim c -r hello_world.nim
1行で終わるHello, World!
Python2.xを彷彿とさせる書き方ですね
FizzBuzz
これまた定番
Fizz Buzzって何? って人向けの解説↓
プレイヤーは円状に座る。最初のプレイヤーは「1」と数字を発言する。次のプレイヤーは直前のプレイヤーの次の数字に1を足した数字を発言していく。ただし、3の倍数の場合は「Fizz」(Bizz Buzzの場合は「Bizz」)、5の倍数の場合は「Buzz」、3の倍数かつ5の倍数の場合(すなわち15の倍数の場合)は「Fizz Buzz」(Bizz Buzzの場合は「Bizz Buzz」)を数の代わりに発言しなければならない。発言を間違えた者や、ためらった者は脱落となる
Wikipedia
Python版
#!/usr/bin/python3
for number in range(1, 101):
if number % 15 == 0:
print("FizzBuzz")
elif number % 3 == 0:
print("Fizz")
elif number % 5 == 0:
print("Buzz")
else:
print(number)
今回は1~100までの数字でFizz Buzzをします
Nim版
for number in 1..100:
if (number mod 15) == 0:
echo "FizzBuzz"
elif (number mod 3) == 0:
echo "Fizz"
elif (number mod 5) == 0:
echo "Buzz"
else:
echo number
ところどころ違うけどほぼほぼPythonですね
三角比
なんかいいネタ思いつかなかったので適当です
出力の整形とかもしています
Python版
#!/usr/bin/python3
from math import sin, cos, tan, radians
for number in range(361):
rad = radians(number)
if number % 90 == 0 and number % 360 != 0:
print(f"{number: >3} sin: {sin(rad): >4.1f} cos: {cos(rad): >4.1f} tan: N/A")
else:
print(f"{number: >3} sin: {sin(rad): >4.1f} cos: {cos(rad): >4.1f} tan: {tan(rad): >5.1f}")
Nim版
import math
import strutils
import strformat
for number in 0..360:
var rad = degToRad(number.toFloat())
if (number mod 90) == 0 and (number mod 360) != 0:
echo &"{number: >3} sin: {sin(rad): >4.1f} cos: {cos(rad): >4.1f} tan: N/A"
else:
echo &"{number: >3} sin: {sin(rad): >4.1f} cos: {cos(rad): >4.1f} tan: {tan(rad): >5.1f}"
PythonistaのためのC言語ですね
formatもPythonの書き方で使えます
速度比較
Hello, World! | Fizz Buzz | 三角比 | |
Pythonでの実行時間 | real 0m0.014s user 0m0.007s sys 0m0.007s |
real 0m0.015s user 0m0.016s sys 0m0.000s |
real 0m0.025s user 0m0.015s sys 0m0.010s |
Nimでの実行時間 | real 0m0.002s user 0m0.001s sys 0m0.000s |
real 0m0.002s user 0m0.001s sys 0m0.000s |
real 0m0.010s user 0m0.010s sys 0m0.000s |
結構差がありますね・・・
終わりに
Nimってこんな感じに書けるんだよ っていうPythonistaへの布教記事です
もっと知りたいって人は公式で比較しているのでそちらを見て下さい
おまけ
最近トウカイテイオーを逃げ育成しています
先行より安定しているのが謎()
モブロックが怖い・・・
ライスシャワーの育成も始めました
難易度が思ったより高かったです
おすすめは逃げ育成ですかね
スタミナにガン振りしないと天皇賞(春)がキツイ・・・
The post Nimを触ってみる話 first appeared on FascodeNetwork Blog.