Tweet
プログラミングNim
1,980円 (1,800円+税)
Nimは、静的型付け・コンパイル言語でありながら、インデントブロック形式や動的型付け言語風味の文法を採用した、様々な言語にトランスパイルできる新しいシステムプログラミング言語です。本書はこのNimに関する日本初の解説書です。
関連サイト
本書の関連ページが用意されています。
内容紹介
Nimは、静的型付け・コンパイル言語でありながら、インデントブロック形式や動的型付け言語風味の文法を採用した、様々な言語にトランスパイルできる新しいシステムプログラミング言語です。本書はこのNimに関する日本初の解説書です。Nimはシンプルで、柔軟なNimプログラミングを体験できるほか、特にメタプログラミングの柔軟性は特筆すべき点です。抽象構文木を直接操作でき、ドメイン固有言語の開発も容易く、様々なシステムへのNimの導入の可能性が広がります。日本でのユーザー数も着実に増えつつあるNimに触れてみましょう!
書誌情報
- 著者: 浅田 睦葉
- 発行日: 2021-08-13 (紙書籍版発行日: 2021-08-13)
- 最終更新日: 2021-08-13
- バージョン: 1.0.0
- ページ数: 282ページ(PDF版換算)
- 対応フォーマット: PDF, EPUB
- 出版社: インプレス NextPublishing
対象読者
Python,トランスパイル,言語,メタプログラミング,技術書典,同人誌に興味がある人
著者について
浅田 睦葉
2003年生まれの高校生。2018年・中学3年生でシステムプログラミング言語であるNimに出会ってから、ライブラリ開発や日本語解説記事の執筆、日本語コミュニティであるNim in Japanにおける活動、DiscordにおけるNimコミュニティ運営・Lighting Talk開催など、Nimの普及活動を続ける。2020年にはSecHack365に、2021年には未踏ジュニア、セキュリティ・キャンプなどに採択され、Nimによるマルチメディア開発やOS開発など、積極的に情報科学に関する活動を行っている。
目次
前書き
第1章 Nimをはじめよう
- 1.1 本書について
- 1.2 インストール
- 1.3 コンパイラ
- 1.4 Nimble
- 1.5 歴史
- 1.6 開発状況
第2章 基本文法
- 2.1 変数
- 2.2 データ型
- 2.3 制御構文
- 2.4 プロシージャ
- 2.5 イテレータ
- 2.6 モジュール
- 2.7 メタプログラミング
第3章 オブジェクト指向プログラミング
- 3.1 オブジェクトの定義
- 3.2 継承を行う
- 3.3 例外処理をする
第4章 パッケージ開発
- 4.1 パッケージの作成
- 4.2 パッケージの基本構造
- 4.3 依存パッケージをインストールする
- 4.4 実装
第5章 型
- 5.1 型クラス
- 5.2 浮動小数点型クラス
- 5.3 文字列型クラス
- 5.4 構造化型クラス
- 5.5 参照型クラス
- 5.6 ジェネリック型クラス
- 5.7 distinct型
- 5.8 auto型
- 5.9 型情報を得る
- 5.10 実行時型情報
第6章 プラグマ
- 6.1 プラグマを定義する
- 6.2 コンパイル時メッセージ
- 6.3 noSideEffect
- 6.4 compileTime
- 6.5 プログラムをストップさせる
- 6.6 構造体へのプラグマ
- 6.7 シャローコピー
- 6.8 列挙型の識別子強制
- 6.9 最適化
- 6.10 asmNoStackFrame
- 6.11 グローバル
- 6.12 警告抑制
- 6.13 実装固有のプラグマ
第7章 メタプログラミング
- 7.1 メタプログラミングとは
- 7.2 Nimのメタプログラミング
- 7.3 ドメイン固有言語
- 7.4 テンプレートとは
- 7.5 遅延評価
- 7.6 衛生性
- 7.7 章末問題
- 7.8 解答
- 7.9 マクロ
- 7.10 マクロを定義する
- 7.11 静的パラメータ
- 7.12 力を正しく利用する
- 7.13 プラグマ
- 7.14 文構造を分析する
- 7.15 抽象構文木
- 7.16 FizzBuzzを実装する
- 7.17 parseStmt
- 7.18 forマクロ
- 7.19 case ofマクロ
- 7.20 多重マクロ
- 7.21 Ast Pattern Matching
第8章 数値
- 8.1 数値リテラル
- 8.2 整数と浮動小数点数
- 8.3 算術演算
- 8.4 整数と浮動小数点数間の演算
- 8.5 乱数
- 8.6 Mersenne Twister
- 8.7 加算アルゴリズム
第9章 数学
- 9.1 有理数
- 9.2 複素数を扱う
- 9.3 統計分析
第10章 文字列
- 10.1 stringとcharとUnicode
- 10.2 cstring
- 10.3 文字列操作
- 10.4 パース
- 10.5 文字列の編集距離
- 10.6 文字列フォーマット
- 10.7 エンコード
- 10.8 ロープ
- 10.9 punycode
第11章 マルチスレッドプログラミング
- 11.1 threads
- 11.2 channels
第12章 ビット操作
- 12.1 基本的なビット演算
- 12.2 bitops
第13章 集合
- 13.1 HashSetを使う
- 13.2 OrderedSetを使う
- 13.3 SomeSetを使う
第14章 アルゴリズム
- 14.1 順列生成
- 14.2 逆順
- 14.3 ソート
- 14.4 探索
- 14.5 配列を埋める
- 14.6 分配法則
- 14.7 回転
第15章 動的配列処理
- 15.1 動的配列に変換する
- 15.2 多次元動的配列を作る
- 15.3 要素数を数える
- 15.4 要素のインデックスを得る
- 15.5 動的配列を結合する
- 15.6 配列の要素を繰り返す
- 15.7 ある要素を繰り返して配列を作る
- 15.8 重複を取り除く
- 15.9 ふたつの配列をまとめる
- 15.10 タプル配列を分解する
- 15.11 配列を分割する
- 15.12 要素を削除する
- 15.13 配列を挿入する
- 15.14 全ての要素に操作を行う
- 15.15 すべての要素に操作を行った配列を得る
- 15.16 条件を満たす要素のみの配列を得る
- 15.17 条件を満たさない要素を削除する
- 15.18 全ての要素が条件を満たすかどうかを得る
- 15.19 少なくともひとつの要素が条件を満たすかどうかを得る
- 15.20 リテラルに直接操作を適用する
- 15.21 畳み込み
第16章 外部関数インターフェイス
- 16.1 importc
- 16.2 C
- 16.3 プログラムを書く
- 16.4 C++
- 16.5 JavaScript
付録A コンパイラ
- A.1 コマンド
付録B INim
- B.1 インストール
- B.2 使ってみる
- B.3 オプション