Windows上でMLとCのプログラミングを学ぼう

[ トップ | 目次 | 前ページ | 次ページ ]


CとMLは互いに計算に関する考え方の異なるプログラミング言語である.

  • Cは計算機のメモリー構造へのアクセスと変更を基本とし,
  • MLは関数を定義し関数を組み合わせ値の計算をすることを基本とする.

これらは,どちらが基本的とかより優れているといったものではなく,相補的な概念である.Cのプログラムでも多数の関数が利用され,また、MLの実用的なプログラムでもメモリー構造へのアクセスや更新が必用になる場合がある.

さらにこれら二つの言語は,プログラムの典型的な二つの側面を代表している.プログラミング言語は,計算機が実行する計算を記述するための言語である.現在のデジタル計算機は,メモリーの変更を繰り返すことによって計算を行う.Cは,この計算機上で行う計算に忠実なモデルをプログラマに提供する.プログラマは,C言語を通じて,実際に行われるメモリーへの変更を制御することができる.これは,システムプログラミングや最高度の効率が要求されるシステムにとって欠かせない機能である.プログラミング言語はまた,ソフトウエアの記述システムでもある.プログラミング言語は,複雑で大規模なソフトウエアを効率よく開発するための種々の抽象化の概念や構造化の機構を提供する必用がある.MLは,この点で最も進んだ言語の一つである.MLが提供する高階の関数や,型推論,データ型とパターンマッチング,モジュールシステムなどの機能を使えば,複雑なソフトウエアを効率よくしかも信頼性をもって構築することができる.

これら二つの言語を同時に学べば,それぞれの言語の特徴をより良く理解し,それらを通じてプログラミングの基本をより深く理解することができる.さらに,SML#のCとの連携機能を使えば,これらの2つの言語を同時に使って,それらの利点を生かしたプログラミングが可能である.

本チュートリアルでは,Windows上でのプログラミング環境の整備から,SML#とCとが連携する高度なプログラムの作成まで種々の情報を提供していく予定である.(東北大学 電気通信研究所 大堀 淳)

さらに本格的に学ぶには...

Cに関しては多数の書籍が出版されているのでそれら紹介ページなど参照されたい.学習書ではないが、本チュートリアルなどでCの基本を理解したものには、'' 平林雅秀、ANSI C言語辞典、技術評論社''をお勧めする.Standard MLに関しては、「プログラミング言語Standard ML入門(大堀 淳、共立出版、2001年)」やその他本webページのSML言語に関する情報を参照

(最終更新2007年8月5日、「SML#からCの関数を呼ぶ」を追加.)


[ トップ | 目次 | 前ページ | 次ページ ]

Last modified:2007/08/05 09:03:14
Keyword(s):[Standard ML] [C言語] [プログラミング]
References:[ML&Cチュートリアル 目次] [(1)プログラミングツールの整備] [(2) MinGWとMSYSをインストール] [(3)SML#のインストール] [(4)作業用フォルダの作成と環境設定] [(5)[ML] 初めてのMLプログラム] [(6)[C] 初めてのCプログラム] [(7)[C] 関数定義] [(7-1)[C] 繰り返し計算の考え方] [(8)[C] factorial関数の種々の定義] [(9)[ML] 関数定義] [(9-1)[ML] 補足:再帰的関数の考え方] [(19-2)[ML] 演習(再帰的関数)の解答例] [(10)[ML] factorial関数の種々の定義] [(10-1)[ML] 補足:末尾再帰をマスターする] [(11)[ML] 式の組み合わせによるプログラミング] [(12)[C&ML] 演習1:種々の関数を定義する] [(12-1)[C] 演習1解答例] [(12-2)[ML] 演習1解答例] [(13) [C&ML] C関数をMLから呼び出す] [(13-1) [C&ML] C関数を対話型環境でテストする] [(14)[C] 基本データ型と基本演算] [(15)[ML] 基本データ型と基本演算] [(14-1)[ML] int型定数と基本操作] [(14-2) [ML] char型の定数と基本操作] [(14-3)[ML] real型の定数と基本操作] [(14-4)[ML] string型の定数と基本操作] [(14-5)[ML] word型の定数と基本操作] [(14-6)[ML] bool型の基本操作] [(16)[C] 文字列とポインタの扱い] [(16−1)[C] 練習問題:文字列] [[C] 演習問題解答例:文字列] [(17) [C]ポインタと配列] [(18)[ML] リストの扱い] [(18−1)[ML] 演習:リスト] [[ML] 演習の解答例:リストと多相関数] [(19)[ML] 高階関数]