Slide 1

Slide 1 text

マイナープログラミング言語 「Nim」の紹介(仮) 2016/03/20 Id:haiju/twi4er:@haiju

Slide 2

Slide 2 text

•  Nim公式 (h4p://nim-lang.org) •  github公式 (h4ps://github.com/nim-lang/Nim) •  Nimble (h4ps://github.com/nim-lang/nimble) •  開発環境構築(HowIStart.org) (h4p://howistart.org/posts/nim/1) •  Nim in AcHon (h4ps://manning.com/books/nim-in-acHon)

Slide 3

Slide 3 text

Nimは 1.クロスプラットフォームで 2.Pythonっぽく書けて 3.静的型付けとGCがあり 4.C,C++,ObjecHve-Cのほか 5.JavaScriptにコンパイルできて(できたりできな  かったりw) 6.そこそこ速い 7.マルチパラダイム言語で 8.モナドやマクロもある。

Slide 4

Slide 4 text

コード例 proc tak(x,y,z:int):int = if x <= y: return z return tak(tak(x-1,yz),tak(y-1,z,x),tak(z-1,x,y)) echo(tak(10,5,0)) proc fib(n:int):int = if n <= 2: return 1 return fib(n-1) + fib(n-2) echo(fib(20))

Slide 5

Slide 5 text

2005年に開発が始まった当初はObject Pascalで書か れていたが、現在はそれ自身で書かれている。 安定版の最新が0.13.0 開発版の最新が0.13.1 2016年夏に「Nim in AcHon」が紙媒体と電子書籍で リリース予定で、現在、一部がオンラインで公開され ている (h4ps://manning.com/books/nim-in-acHon)

Slide 6

Slide 6 text

Nimのコンパイルプロセス

Slide 7

Slide 7 text

コンパイル〜実行まで(Java,Pythonと比較)

Slide 8

Slide 8 text

パッケージマネージャ nimble その仕組みはHaskellのCabalに似ている。 ソースコードを取得してビルドインストールする。 検索: Nimble search packagename インストール: nimble install packagename アンインストール: nimble uninstall packagename

Slide 9

Slide 9 text

(ex)Nim製IDE Aporiaのインストール •  インストール前に各種OSのパッケージマネージャで  依存ライブラリ(Gtk, GtkSourceView, PCRE)をインストール  して、以下のコマンドを実行  nimbe install aporia  インストール中に英語で、「インストールに必要なディレクトリ  が既にあるけど上書きしますか(Yes), しませんか(No)?と  聞かれるが、Noを選択するとあとでビルド失敗や実行エラー  の原因になるため、必ずYesを選択してビルドする。

Slide 10

Slide 10 text

インストールに成功後、ターミナルでaporiaを実行

Slide 11

Slide 11 text

[Nim製IDEのAporiaの特徴] ・Nimの実装環境であると同時に、ビルド+実行環境 ・View - Syntax highlighHngで対応している主なファイル形式  ・plain text  ・Sources: pony,Crystal,Rust,Scala等の比較的新しめ   のコンパイル言語には未対応だが、多くに対応。  ・Markup: markdown, xml他のhtml関係に対応  ・Scripts: JavaScript,Perl,Python,Python3,Ruby等の   スクリプト言語に対応  ・Others: ini,diff,css,JSON,package_config他に対応  ・ScienHfic: R,Octave,Matlab他の科学計算系に対応 •  将来的に新しい言語にも対応するのか、プラグインで   Nim以外の言語にも対応するのか不明だが、悪くない   かも。

Slide 12

Slide 12 text

*Cにコンパイルしてコード生成: nim c test.nim *C++にコンパイル: nim cpp test.nim *ObjecHve-Cにコンパイル: nim objc test.nim Nim最適化なし × 実行時チェックあり (debug) nim compile test.nim Nim最適化あり × 実行時チェックなし (release) nim compile –d:release test.nim Nimは一度、コンパイルを実行すると直下にキャッシュ を生成するため2回目以降の速度が速くなる。

Slide 13

Slide 13 text

その他フレームワーク等 Webフレームワーク: jester: (h4ps://github.com/dom96/jester)  A sinatra-like web framework for Nim  version 0.11.2以上が必要 nawak: (h4ps://github.com/idlewan/nawak) A web micro-framework in Nimrod, heavily inspired by jester, flask and the like. awesome-nim: (h4ps://github.com/VPashkov/awesome-nim) に載っているものをチェックしておけばだいたい・・・ バージョンが上がるごとにメンテされなくなって、動かなくなるア プリやライブラリが増える