コンピュータアルゴリズムを提唱したのは誰?
ミツオカも難易度の高いプログラムを開発できるようになったか!
いざ作ろうとしたら頭の中でごちゃごちゃになって…
一度やると決めたら探求心が尽きないクヌース
ドナルド・アーヴィン・クヌースは1938年、アメリカウィスコンシン州ミルウォーキーに生まれました。
父は印刷会社を営むかたわら、高校で簿記の講師もしていました。
そんな家庭に生まれたクヌースは何事も調べることが好きな少年でした。
そしてある日、製菓会社の単語を見つけるコンテストに参加します。
2週間学校を休み、地下室に籠り辞書をめくり続け、「Ziegler's Giant Bar」からできる単語を見つけていきます。
その単語数は4500、会社が想定していた2000の単語をはるかに超え優勝しました。
ケース工科大学に進学
大学はオハイオ州のケース工科大学に進み物理学を専攻しました。
大学では、初めてのコンピュータであるIBM 650に触れます。
コンピュータのマニュアルを熟読したクヌースは、自分でもプログラミングができると確信し、マニュアルを超えるプログラムを書こうと決意します。
それからはプログラミングを熱心に勉強して、大学のバスケチームを支援するための選手の能力に基づいたプログラムを書くまでになりました。
このことは新聞やニュースにも取り上げられ、クヌースのプログラミングへの探求は尽きず、1958年には技術専門紙を立ち上げました。
また物理学から数学へと専攻を変え、学士号と修士号も同時に取得するという、大学創立以来の偉業も成し遂げます。
この時代に早くも取り入れていたとは、先見の明がすごすぎですね
このような考え方は革新的で、クヌースの先取りする力とそれを実現化する頭脳力は大したものだな
The Art of Computer Programming
1963年カルフォルニア大学で博士号を取得すると、助教授として勤務するようにもなりました。
クヌースのコンピュータに関する興味は尽きず、特にコンパイラについては知れば知るほどその先へと導かれるのでした。
そんなクヌースに出版社からコンパイラについての執筆依頼がありました。
クヌースはこれまでに出版されていたコンピュータ論文や出版本について不十分であると感じていたので、良い機会と感じ引き受けることにしました。
また、コンピュータにおけるアルゴリズムの必要性を日頃から感じていました。
そのため、アルゴリズムの歴史や背景などを詳しく書いた「今までにないコンピュータの本」として執筆を進めました。
「The Art of Computer Programming」発刊
1968年「The Art of Computer Programming」が完成。
答えにたどり着くまでの手段である「アルゴリズム」を「プログラミングに取り込むことは重要である」と、多くの人に気づかせた一冊となりました。
アルゴリズムによって、「速く処理できるか」「簡単に作れるか」「正しく実行できるか」などの要素を考え、操作しやすい優れたプログラムを作ることができます。
アルゴリズムは今やプログラミングする上で欠かせないものとなったのです。
文芸的プログラミング
クヌースが執筆した「The Art of Computer Programming」は入りきらない内容が多すぎて第2巻、第3巻…と続いていきますが、それと並行して新しい組版処理システムの開発も進めていきます。
「The Art of Computer Programming」は数式を表記することも多いのですが、出来上がった本の数式の表示がクヌースの満足のいくものではなかったのです。
そこで自分が納得できる本にしようと組版処理システムを作ることにしたのでした。
TEXの設計
クヌースはまず過去から現在までの組版の技術を調査することから始めていきます。
そしてその調査をもとにプログラミングに取り掛かり、システムを完成させるため1年間の長期休暇も取り、開発に没頭しました。
こうして1978年に組版処理システム「TEX」を完成。
「TEX」はWindowsやMAC、どちらでも使用でき、文字の大きさや種類などの制御指令を埋め込むマークアップ方式の文書処理システムにしました。
合字の表示も可能にしたMETAFONT
また「TEX」の開発とともに、クヌースはそれに付随してフォント作成用のプログラム「METAFONT」を開発します。
「METAFONT」は文字の形を描けるプログラムであり、それを組版用のファイルとして保存し、それを元に他のフォントを生成できるようにしました。
キーボードにない文字や文字を合わせた合字も作成ができ、「TEX」での複雑な化学式や物理式の表示も可能となったのです。
「TEX」は数式を扱う科学者やエンジニアなどには読みやすくわかりやすいと好評で、オープンソースにしたこともあり、約3ヶ月間で1000人のユーザーを集めました!
あの複雑な数式の表記は確かに専用のシステムがあると助かりますよね
文芸的プログラミング「」
クヌースは「TEX」を実装される仕組みとして「WEB」を用いました。
「WEB」は、「プログラミングは、芸術であり、文学である」と文芸的プログラミングを提唱するクヌースのプログラミングの理想とするものでした。
一般的なプログラミングではソースコード中にコメントが書かれますが、「WEB」では単なるコメントとせず、ソースの概要が項目ごとにわかりやすく書かれています。
そして「weave」のプログラムを使用すると、レイアウトされたドキュメントとなる「TEX」となります。
また「tangle」のプログラムを使用すると、コンパイルできる「Pascal」のソースコードを生成します。
「WEB」は修正する箇所がわかりやすく、プログラム作成者以外でも修正しやすいメリットがありましたが、WEBのソースコードを書くのはかなり手間がかかり、普及することはありませんでした。
しかし文芸的プログラミングは、その後のプログラムの書き方について一石を投じるものとなりました。
終わりなき研究と執筆
クヌースの賞金小切手
クヌースは完成した「TEX」にはまだ満足できず、徹底的にバグを見つけ修正していき、1989年に完成したバージョン3はようやくクヌースの納得いくものでした。
そこでクヌースは冗談を交えて、自分の出版物や「TEX」でバグを見つけたら賞金を出すことを発表します。
賞金は2.56ドル。
賞金小切手が見つけた人に贈られます。
バグを見つけるのは難しく、見つけた人は「コンピュータ界の最高の栄誉」だとして、贈られた賞金小切手の写真をネットにアップして自慢するのでした。
これは2008年まで続きました。
尽きぬ探究心
「The Art of Computer Programming」はアルゴリズム分析を用いたプログラミング技法は、計算機科学の新たな道しるべとなり、クヌースは1974年にチューリング賞を受賞します。
クヌースは「The Art of Computer Programming」を1973年に第3巻を出版した後、第4巻は分冊の形で少しずつ出版しています。
今後第7巻まで執筆する予定であり、クヌースは手を休めることはできません。
1993年スタンフォード大学の教授を辞めてからも、クヌースはプログラミングを続け、パソコンに向かう毎日です。
大好きなオルガンを時々奏でながら。
あきらめたらそこで試合終了ですよ…?
わからないことは師匠に聞きますから、今後ともよろしくお願いします
具体的にはどんなものを作っておるのだ?