SML# で始める実践 ML プログラミング
エスエムエルシャープデハジメルジッセンエムエルプログラミング
- 著者:
- 大堀 淳 / 上野 雄大(オオホリ アツシ / ウエノ カツヒロ)
- 出版社:
- 共立出版
- 出版日:
- 2021年04月14日頃
- ISBN:
- 9784320124714
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
本書は, 最新鋭の Standard ML 系言語「SML#」を用いて, 実践的な ML プログラミング手法を解説する教科書である。
型を考えて式を組み合わせていく ML プログラミングの基本はもとより, コマンドの作成や分割コンパイルなどのシステム開発を支える機能の使い方から, C 言語との連携, データベースプログラミング, マルチコア CPU 上の並列処理などの高度なシステム開発技術に至るまで, 具体的な例を用いて分かりやすく解説する。
本書で挙げられているプログラムの例やシステム開発事例, さらにそれらを通じて示されるプログラミング技法には, 東北大学電気通信研究所で研究教育に従事し, ML を熟知した著者による, 長年の研究開発を通じて得られた実践 ML プログラミングのノウハウが詰まっている。
プログラミングに興味を持つ幅広い読者に手にとっていただき, ML でのシステム開発の楽しさや快適さを実感してほしい。
技書の森解説
本書は、Standard ML 系の言語 SML# を使って、実践的な ML プログラミングの手法を解説する教科書です。著者は大堀 淳と上野 雄大の 2 名、版元は共立出版で、2021 年 4 月 15 日に発売されました。版元の紹介文によれば、型を考えて式を組み合わせていく ML プログラミングの基本に加えて、コマンドの作成や分割コンパイルなどのシステム開発を支える機能の使い方、C 言語との連携、データベースプログラミング、マルチコア CPU 上の並列処理までを、具体的な例を用いて解説します。紹介文は、本書のプログラム例とシステム開発事例に、東北大学電気通信研究所で研究教育に従事し ML を熟知した著者の、長年の研究開発を通じて得たノウハウが詰まっていると述べ、プログラミングに興味を持つ幅広い読者に向けた本と位置づけています。
全 11 章の構成、開発環境の構築から型と関数の基本へ
本文は全 11 章です。第 1 章「SML# プログラム開発環境の構築」は、ML 言語の特徴と SML# コンパイラーの紹介から始まり、Linux 仮想マシンへの SML# の導入、対話型モードでの起動、分割コンパイルと実行コマンドの作成、make コマンドの活用までを扱います。第 2 章「ML プログラミングのエッセンス」は式の値と変数の型、関数の定義と利用、高階の関数の活用、多相関数、関数のテストコマンドの作成を取り上げます。第 3 章「リストプログラミング演習」はリストデータ型、空リストの場合の例外処理、種々の再帰関数の定義、リスト型基本ライブラリを、第 4 章「データ型の定義と利用」は datatype 宣言による新しい型の定義と、case 文による処理を扱います。第 5 章「モジュールと分割コンパイル」はストラクチャとインターフェイスの定義と SML# の分割コンパイルシステムを、第 6 章「ML 流システム設計・開発技法」は「型でシステムを分析・設計する」「トップダウンで実装する」「手続きと宣言を分けて考える」の 3 節を収めます。
関数を値として受け渡し、式の組み合わせでプログラムを組み立てる 関数型プログラミング の言語の中で、ML 系の言語は静的な型を持ち、型推論によって、変数や関数の型を書かなくてもコンパイラーが型を決めて検査します。いくつかの場合のどれか 1 つの形をとる値を型として定義する仕組みは 代数的データ型 と呼ばれ、値を使う側は パターンマッチ で形ごとに処理を分けます。扱い漏れの形があればコンパイル時に警告として示されるため、型の定義がプログラムの設計の骨組みとして働きます。
C 言語、外部データ、データベース、並列処理との連携
第 7 章「C 言語との連携」は、直接受け渡し可能なデータ型、C 関数のインポート式、分割コンパイルとリンク、ポインターの実行時表現を持つデータのエクスポートとインポート、多相性を持つ C ライブラリとの連携例を扱います。第 8 章「外部データのアクセス」はファイルの入出力、例外処理機構を使ったエラー処理、JSON データの読み込み、コマンドライン引数の処理を取り上げます。第 9 章「データベースとの連携」は、SML# のデータベース統合の概要、SML# がサポートする関係データベース、データベースサーバーの定義と接続に続いて、SML# の SQL 式を SQL 関数式、SQL クエリ式、SQL コマンド式、SQL 関数式の合成の順に説明し、データベースプログラム例で締めます。第 10 章「並列プログラミング」は Pthread によるプログラミングとキューの使用例、レイトレーシングの並列プログラミング例、MassiveThreads による並列プログラミングとそれを用いたレイトレーシングの並列化を扱います。第 11 章「実用システム開発技法」は外部ライブラリの利用、中間表現による手続きの隠蔽、メインルーチンとデータの入出力を示します。第 6 章と第 11 章の末尾には発展課題が、他の 9 章の末尾には練習問題が置かれています。
ML の型の考え方でシステムを書きたい人に向く教科書
第 1 章は Linux 仮想マシン上に SML# を導入する手順から始まり、第 7 章は C 言語のポインターの実行時表現を持つデータを扱うため、Linux のコマンド操作と C 言語の知識が読み進める途中で関わってきます。また、本書は 2021 年 4 月の刊行で、導入の手順と SML# コンパイラーは刊行時点の版を前提にしています。ML の型と関数の考え方を基本から押さえたうえで、C のライブラリ、ファイルや JSON、関係データベース、マルチコアの並列処理と組み合わせたシステムまでを 1 つの言語で書き進めたい人に向く教科書です。
言及した記事 (1 件)
大堀 淳 の他の書籍
関連記事
ゲームが好きならプログラミングの本も読める
ゲームの攻略本を読んだことがあるなら、プログラミングの本も読めます。攻略本とプログラミング本の共通点から、読書のハードルを下げます。
本を読むスピードは気にしなくていい
1 ページ読むのに 10 分かかっても問題ありません。プログラミングの本はゆっくり読むのが正解である理由と、焦らず読み進めるコツを紹介します。
JavaScript / TypeScript 本ガイド - 入門から型で守る実務コードまで
JavaScript と TypeScript を 1 本の学習ルートとして捉えた技術書の選び方。JavaScript の入門書、言語の背骨を通す体系書、TypeScript の型システムを設計の武器にする本、React/Next.js の実践書まで 2026 年 8 月時点の定番で案内します。
関連用語
プログラミング
コンピューターに実行させる手順をプログラミング言語で記述し、動作を作り出す行為
競技プログラミング
与えられた問題を制限時間内に正確 / 高速に解くプログラミング競技
UNIX
多くの OS の源流となった基本ソフト。設計思想は現代の Linux や macOS に受け継がれる
Strangler Fig パターン
レガシーシステムを段階的に新システムへ移行する設計パターン
依存グラフとは - モジュール間の依存関係を可視化する方法
依存グラフはパッケージやモジュール間の依存関係を有向グラフで表現する手法。循環依存の検出 / ビルド順序の決定 / 影響範囲分析での活用法を解説
ログ集約
分散システムの複数サービスから出力されるログを一元的に収集 / 検索 / 分析する仕組み