Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
18
Help us understand the problem. What is going on with this article?
@momeemt

Nim 学習ロードマップ

はじめに

メリークリスマス!
こんにちは。高校2年の樅山です。
今回は、プログラミング言語 Nim の学習ロードマップを紹介します。

この記事は、

の24日目に参加しています。

Nimをはじめよう

あなたはプログラミング言語である Nim を知っていますか?
2008年に Andreas Rumpf 氏によって開発されたプログラミング言語です。
昨年、2019年に正式にリリースされたNimは、2020年も順調にアップデートを重ね、ver.1.4.2になりました。

インデントブロックを採用しており、見た目は Python によく似ています。

しかし、Nimは静的型付けのコンパイラ言語です。
多くのコンパイラ言語は、アセンブリを介して実行可能ファイルを生成しますが、NimはC/C++JavaScriptObjective-Cにトランスパイルし、各々の言語から実行します。
特に、C/C++を介して実行する場合、Pythonをはじめとしたインタプリタ言語とは比較にならないほどの速度で処理を行うことができます。

さらに、既存の言語の資産を容易に活用できます
C/C++、JavaScript、Objective-Cの資産を活用する、つまりそれらの言語で書かれたライブラリなどをNimで利用することができます。逆も然り。
サードパーティ製のライブラリを利用することで、JavaPythonとも連携可能です。

また、Nimは多くの主要なプラットフォームで動作させることができます。
公式でサポートされているだけでも、Unix、Windows、AndroidiOSNintendo Switchに対してクロスコンパイル可能で、DLLの作成や組み込み向けの最適化も行えます。
ポインタを直接操作したり、アセンブリを埋め込むことができるなど、低レイヤーにも利用できるでしょう。

Nimの文法は、実際にはコンパイラ言語であるのには裏腹にスクリプト言語のような印象を受けるかもしれません。

FizzBuzz
iterator fizzbuzz(n: int): string =
  for i in 1..n:
    if i mod 15 == 0:
      yield "fizzbuzz"
    elif i mod 3 == 0:
      yield "fizz"
    elif i mod 5 == 0:
      yield "buzz"
    else:
      yield $i

for i in fizzbuzz(20):
  echo i

Nimの文法は高い表現力を持っています。
例えば、強力なメタプログラミングを有します。多くのプログラミング言語では、ソースコードの生成についてはサポートされますが、ソースコードを分析し、変更することまでをサポートした言語は多くはありません。

Nimに入門する

多くのユーザーによって、Nimに簡単に入門できる土壌が整ってきています。

Nimの紹介記事

Nimの書籍

もともとはdom96氏による Nim in Action (洋書) しかありませんでしたが。日本語の書籍も出ています。

Nim 学習ロードマップ

1. Nimのインストール

Windowsの場合

ダウンロードページから、Windows用のexeインストーラを手に入れることができます。

バイナリディレクトリとNimのディレクトリにパスを通し、CコンパイラをインストールしなければNimを使うことはできませんが、それはインストーラがこれらを行うかどうか聞いてくれるので、チェックしてまとめてインストールしてください。

また、NimはPCREとOpenSSLに依存しているので、ダウンロードページからDLLをダウンロードし、nim.exe と同じ階層に配置してからインストーラを起動してください。

Unixの場合

Nim言語には、choosenimという環境管理ツールがありますので、それをインストールします。

Unix
curl https://nim-lang.org/choosenim/init.sh -sSf | sh

その他の環境の場合

Nim XD Book1 第2章: Nimのインストールをご覧ください。

2. コーディング環境

様々なエディタにNimの拡張機能が存在しますので、それらをインストールすればシンタックスハイライトなどの恩恵を受けることができます。

また、公式でもどのエディタがコーディング環境をサポートしているかが提示されているので、自分が使っているエディタでNimが書きやすいかどうかを確認すると良いでしょう。

3. 基本文法を学ぶ

などが特に役に立ちます。

学習の上で有用な記事・書籍

ここでは、Nim言語を学習する上で有用な記事・書籍についてご紹介します。
信頼度やバージョンに適合しているかどうかは Nim Official が最も高く、ユーザーに書かれた記事・書籍(本書を含め)は信頼性に欠けることがあることに注意してください。

英語

Nim言語は日本では知名度が高い言語とは言えないので、基本的には英語で書かれた文書を元に学習することがほとんどです。
当然、オフィシャルも英語で執筆されています。

Nim Official

書籍

他言語との比較

ユーザーが書いたチュートリアル

ブログ

その他

日本語

日本でも一定層にはとても人気があるため、記事も少なくありません。しかし、互換性が既に切られたバージョンの情報などが混在しており、できるならば一次ソースを参照した方が確実です。

書籍

  • Nim実践入門
    • MuseIT社による執筆時点で唯一の日本語のNim言語の解説書です。Jesterを用いたRESTAPIサーバーの開発やチーム開発など、実践的な面からNimを利用したい方におすすめの一冊です。

記事

Qiita記事

メジャーリリース(1.0.0)以降にQiitaに投稿された、Nimの記事です。

2018年〜ver1.0リリース前のQiita記事

2018年〜2019年9月22日までに投稿された、有用なNimの記事です。当時、ver.0.18.0 - ver.0.20.2 であり、互換性が切られている機能を含む記事がある可能性があります。
ただし、その後も更新されている記事もあります。

2017年におけるQiita記事

2017年にQiitaに投稿された、有用なNimの記事です。
当時、ver.0.16.0 - ver.0.17.2 であり、互換性が切られている機能を含む記事がある可能性があります。
ただし、その後も更新されている記事もあります。

2016年におけるQiita記事

2016年にQiitaに投稿された、有用なNimの記事です。
当時、ver.0.13.0 - ver.0.15.2 であり、互換性が切られている機能を含む記事がある可能性があります。
ただし、その後も更新されている記事もあります。

終わりに

もう少し詳しく書く予定でしたが、時間が足りなくなってしまったのでいったん投稿し、後から付け加えます。
最近ではNimを学べる環境は以前よりも遥かに整っていると思うので、これを機会にNimをはじめてみてはいかがでしょうか!

18
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
momeemt
こんにちは。高校3年生の樅山です。 Nimの記事を書いています。 標準ライブラリの解説をするのが好きです。
nim-in-japan
Nim言語の日本コミュニティです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
18
Help us understand the problem. What is going on with this article?