プログラミング言語について(1)

人工知能技術 機械学習技術 トピックモデル オントロジー技術 デジタルトランスフォーメーション  自然言語処理技術   知識情報処理 

以前、知人に頼まれてプログラミングの初心者にちょっとした講演を行なった。題目はなんでも良いとのことだったので、「コンピューターとプログラミング言語」という主題で、コンピューターとはとか、プログラミングとはとか、基本的な事象をまとめて話してみた。参加者の反応はさておき、これらをまとめることで自分の知識も整理されたのはよかったと思う。今回はそれをベースにいくつか述べてみたい。

そもそも現在のコンピューターは、1.命令の言葉を受け取って記憶、2.命令を順番に実行(アルゴリズムを実施)、3.装置やコンピューターの記憶の状態を変化させる。というチューリングマシンであり、これらの機能の中で重要なのは、2の「命令を順番に実行する(アルゴリズムを実施する)」ことにある。プログラミングは、この「命令を順番に実行する」事をコンピューターに指示する為のインターフェースであると考える事ができる。

ここで話をコンピューターとは?というところに遡らせると、コンピューターとはその語源の「Computare(ラテン語)」から来るように、(情報を数値に変換して)「計算する」ものであると言える。またcomputareは「com(共に)+putate(考える)」にも分解され、これらの語源からは人と共に考える機械(人工知能)としての機能もイメージさせられる。

計算するということは、なんらかの「入力」を入れて、和差積商算を行なって「出力」を出す機能であり、その計算を行う機能ボックスである「関数」を実行するということである。この観点からは、先述のAltJSでのElm,PureScript,ClojureScriptのような関数型言語は、コンピューターの所作に合わせた「計算する」という処理に沿ったインターフェースであるという事が言える。

コンピューターを利用するという立場から考えると、コンピューターの定義は、人の代わりに「(人が)解決したい問題」を解決する為の「手順を一つづつ順番にこなす」機械であると見る事ができる。また、この観点でのプログラミングの定義は、人がコンピューターにやらせたい仕事(手順)を、(コンピューターの頭脳である)CPUが実行できる命令に翻訳することとなる。

上記の視点で考えると、プログラムを作るためにまずやらなければいけないことは、まず自分が何をしたいのか?(何か問題や課題はあるのか?)を考え、それを手順として落としていく事になる。これらの作業は、ITシステムを構築していく上で最初に行われる「要件定義」と呼ばれる活動と等しい。要件としてまとめるべき手順(コンピューターに対する指示)に必要な要件としては、以下のようなものが考えられる。

1.すべき事が漏れなく含まれていること(漏れなく細かく)

2.終着点があること(ゴール(目的ょの明確化)

3.指示書があれば誰でもできること(様々なバリエーションを考慮に入れる)

上記は、人に作業を頼むときをイメージすると、より具体的に考えられると思う。

ここまでに述べたコンピューターとは?に対する参考図書としては、まず初心者向けとしては「コンピュータ、どうやって作ったんですか? はじめて学ぶコンピュータの歴史と仕組み」があり、プログラミングに対しては「世界が変わるプログラム入門」がある。前者は「精霊の箱」や「白と黒の扉」、「自動人形の城」等情報科学を童話のような形で優しく解説した図書を書いている川添愛氏の書いた本で、他の図書と同様に非常に優しく要点を押さえた解説書となっている。後者は、山本貴光氏による図書でこちらもプログミング初心者に向けて、プログラムをすることとは本質的にどんなことか?について書かれてある。

さらに進んだ参考図書としては、コンピューターに関しては「万能コンピュータ:ライプニッツからチューリングへの道すじ」や「改訂版コンピュータの名著・古典100冊」がある。前者は、コンピューター(万能計算機)のコンセプトの理論の推移について、後者はコンピューター技術の代表的な図書を網羅しており、読むことで技術の推移を追いかける事ができる。

次回も引き続きプログラミング言語について述べてみたい。

コメント

  1. […] 前回の話に続き、プログラミング言語について述べてみたい。 […]

  2. […] 次回はプログラミング言語について述べてみたい。 […]

  3. […] に プログラミング言語について(1) – Deus Ex Machina […]

  4. […] 以前プログラミング言語について述べたが、今回はそれらの歴史について述べてみる。 […]

  5. […] 以前述べたプログラミング言語は、形式言語と呼ばれる言語の一種となる。形式言語とは、もとになる記号の集合(アルファベット等)と,生成規則(文法)から,生成することの出来 […]

  6. […] プログラミング言語について(1) コンピューターとプログラミング言語 […]

タイトルとURLをコピーしました