Upgrade to Pro — share decks privately, control downloads, hide ads and more …

introduce_nim_lang

haiju
March 21, 2016

 introduce_nim_lang

2016/3/20 歌舞伎座.tech#9「異種プログラミング言語格闘勉強会」 での発表資料

haiju

March 21, 2016
Tweet

Other Decks in Programming

Transcript

  1. •  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)
  2. コード例 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))
  3. (ex)Nim製IDE Aporiaのインストール •  インストール前に各種OSのパッケージマネージャで  依存ライブラリ(Gtk, GtkSourceView, PCRE)をインストール  して、以下のコマンドを実行  nimbe install

    aporia  インストール中に英語で、「インストールに必要なディレクトリ  が既にあるけど上書きしますか(Yes), しませんか(No)?と  聞かれるが、Noを選択するとあとでビルド失敗や実行エラー  の原因になるため、必ずYesを選択してビルドする。
  4. [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以外の言語にも対応するのか不明だが、悪くない   かも。
  5. *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回目以降の速度が速くなる。
  6. その他フレームワーク等 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) に載っているものをチェックしておけばだいたい・・・ バージョンが上がるごとにメンテされなくなって、動かなくなるア プリやライブラリが増える