Google Colaboratory+Nimで基本文法について勉強する(文字列と数値)

Google Colaboratory+Nimで基本文法(文字列と数値)について勉強します.

Google Colaboratory(以下Google Colab)は、Google社が無料で提供している機械学習の教育や研究用の開発環境です。開発環境はJupyter Notebookに似たインターフェースを持ち、Pythonの主要なライブラリがプリインストールされています。
引用元:Google Colabの使い方 (opens new window)

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

# nim4colabのインストール

Google Colab で nimコマンドを使用するためのライブラリであるnim4colabをインストールします.

%load_ext nim4colab により%を付けてNimのコマンドを使えます.

!pip install git+https://github.com/demotomohiro/nim4colab.git
%load_ext nim4colab

# nimpyのインストール

PythonからNimを呼び出すためのNimのライブラリ、nimpyをインストールします.

Nim初心者が始めるNimとnimpy (opens new window)

nimpyをインストールすることで、後述の fib.nim内で使っているnimpyをコンパイル、ライブラリとして使用することができます.

nimbleはNimのライブラリをインストールするためのコマンドです.

%nimble install nimpy -y

# Nimの基本文法

ここでは、「空ファイルの作成」に必要なNimの基本構文を記載します。

# 文字列

文字列とは「"」で囲まれた文字です。

文字列とは「"」で囲まれた文字です。 文字列は「"」で囲んでいないと、コードが動かなくなります。

# nim

# Google Colabでnimを使用するためのおまじない
%%nimc
# echo 'Hello, World'
echo "Hello, World"
echo "Hello, World"&"Hello, World" # &は文字列連結演算子
echo "Hello, World \nHello, World"

# echo '''Hello, World, Hello, World'''

# 実行結果
# Hello, World
# Hello, World
# Hello, World

# nim(関数定義)

# Google Colabでnimを使用するためのおまじない
%%nimc
# 返り値:result
proc HelloWorld(str1: string): string =
    var text = str1 # &は文字列連結演算子
    result = "Hello World"

# 返り値:return
proc HelloWorld2(str1: string): string =
    var text = "Hello World" & str1 # &は文字列連結演算子
    return text

# 返り値:関数名
proc HelloWorld3(str1: string): string =
    var text = "Hello World\n" & str1 # &は文字列連結演算子
    text

# 初期設定
var echo_str:string

# 返り値:result
echo_str = HelloWorld("mass")
echo echo_str
# 返り値:return
echo_str = HelloWorld2("mass")
echo echo_str
# 返り値:関数名
echo_str = HelloWorld3("mass")
echo echo_str

# 実行結果
# Hello World
# Hello Worldmass
# Hello World
# mass

# 閑話休題:数値から文字列へ

%%nimc
var i = 5
var a = $i # 文字列へ変換
echo "5以下:"&a # 文字列の結合
# echo "5以下:"&$i # エラー発生
echo "5以下:" & $i # OK
echo "5以下:"&($i) # OK

# nimpy

proc HelloWorld(入力変数: 入力の型): 出力の型 {.exportpy.} =
入力値 Nimの型名
なし void
文字列 string
整数 int
リスト seq[string]
# セル内のをsample.nimとして書き出し
%%writefile sample.nim
import nimpy

# proc 定義
# 返り値:result
proc HelloWorld(str1: string): string {.exportpy.} =
    var text = "Hello World\n" & str1 # &は文字列連結演算子
    result = text

# 返り値:return
proc HelloWorld2(str1: string): string {.exportpy.} =
    var text = "Hello World\n" & str1 # &は文字列連結演算子
    return text

# 返り値:関数名
proc HelloWorld3(str1: string): string {.exportpy.} =
    var text = "Hello World\n" & str1 # &は文字列連結演算子
    text

# Writing sample.nim

コンパイル

# 関数をコンパイル
%nim c --tlsEmulation:off --app:lib --out:sample.so sample.nim
# output sample.so
!ls

nimpy実行

# 作成・コンパイルしたsampleファイルをインポート
import time
import sample as sm # Nimでコンパイル

# 開始時間
start = time.time()
# nimpyを実行
print(sm.HelloWorld('mass'))
print(sm.HelloWorld2('mass'))
print(sm.HelloWorld3('mass'))
# 終了時間
elapsed_time = time.time() - start
# 実行時間
print ("elapsed_time:{0}".format(elapsed_time) + "[sec]")

# 出力結果
# 1134903170
# elapsed_time:36[sec]

# 数値

「"」で囲まず数字を打ち込むと、それは「数値」として扱われます。

「+」、「-」等を使うことで四則演算ができるようになります。

Nimでは「×」、「÷」は「*」、「/」で記述します。

ただし、「"」「'」で囲むと、数字は文字列と扱われます。

そして、文字列の数字は四則演算されません。

# nim

# Google Colabでnimを使用するためのおまじない
%%nimc
echo 42 
echo 42 + 21 # 足し算
echo 42 - 21 # 引き算
echo 42 * 2 # かけ算
echo 42 / 21 # 割り算
echo "42 + 21" # 文字列

# 実行結果
# 42
# 63
# 21
# 84
# 2.0
# 42 + 21

# nim(関数定義)

# Google Colabでnimを使用するためのおまじない
%%nimc
# 返り値:result
proc integer00() =
    echo 42     
    echo 42 + 21 # 足し算
    echo 42 - 21 # 引き算
    echo 42 * 2 # かけ算
    echo 42 / 21 # 割り算
    echo "42 + 21" # 文字列

integer00()

# nimpy

# セル内のをsample.nimとして書き出し
%%writefile sample1.nim
import nimpy

proc HelloWorld00(str1: string): string {.exportpy.} =
    var text = "Hello World\n" & str1 # &は文字列連結演算子
    result = text

proc hello( ): void {.exportpy.} = 
    echo "HELLO NIMPY!!!"

proc integer00(): void {.exportpy.} =
    echo 42     
    echo 42 + 21 # 足し算
    echo 42 - 21 # 引き算
    echo 42 * 2 # かけ算
    echo 42 / 21 # 割り算
    echo "42 + 21" # 文字列

# Writing sample.nim

コンパイル

# 関数をコンパイル
%nim c --tlsEmulation:off --app:lib --out:sample1.so sample1.nim
# output sample.so
!ls

nimpy実行

# 作成・コンパイルしたsampleファイルをインポート
import time
import importlib
import sample1 as sm1 # Nimでコンパイル
# importlib.reload(sm1)

# 開始時間
start = time.time()
# 数値を実行
print(sm1.HelloWorld00('mass'))
print(sm1.hello())
print(sm1.integer00())
# 終了時間
elapsed_time = time.time() - start
# 実行時間
print ("elapsed_time:{0}".format(elapsed_time) + "[sec]")

# 出力結果
# Hello World
# mass
# None
# None
# elapsed_time:0.0020661354064941406[sec]

# まとめ

Google Colaboratory+Nimで基本文法(文字列と数値)について勉強しました.

# 参考サイト

Nimの特徴や使い方をわかりやすく解説! (opens new window)

Nim初心者が始めるNimとnimpy (opens new window)

Speeding up Python code with Nim (opens new window)

Nimを組み込んでPythonを高速化してみた (opens new window)

至高の言語、Nimを始めるエンジニアへ (opens new window)

Nim Compiler User Guide (opens new window)

スレッドローカルストレージ (opens new window)

Nim 関数 (opens new window)

PythonistaのためのNim入門 (opens new window)

nim内包表記 (opens new window)

Nimの便利な標準ライブラリ sugar (opens new window)

Nim初心者が始めるNimとnimpy (opens new window)

Nimでゼロ埋め (opens new window)

Nim 変数、定数の宣言方法(var, let, const) (opens new window)

Nimを知ってほしい2022 (opens new window)

nim いろいろなコメントの方法 (opens new window)

【Nim】個人的逆引きリファレンス (opens new window)

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

HTML/CSSでFlaskに使うフロントエンドのデザインを作成する03

HTML/CSSでFlaskに使うフロントエンドのデザインを作成する03

簡単なボタンの作成を実施します.

Python + ESPnetで日本語の音声合成(TTS)を実装する

Python + ESPnetで日本語の音声合成(TTS)を実装する

Python + ESPnetで日本語の音声合成(TTS)を実施します.