LISPの開発
IBMのジョン・バッカスが開発したプログラミング言語FORTRANのマニュアルが56年10月に公開されると、マッカーシーはロチェスタに同じ言語でリスト処理と再帰処理を実現することを提案した。マッカーシーはIBMとコンサルタント契約を結び、D.ゲラーンターとカール・ガーベリックとともに、FORTRANの拡張に取り組むことになった。
マッカーシーは57年にスローン財団のフェローに選ばれて9月から1年間MITで研究することになり、ミンスキーもMIT数学科で教職に就くことになった。かれらはMIT計算センターを活用して人工知能の研究を始め、58年春にMIT電子研究所(RLE)所長のジェローム・ワイスナーに人工知能の研究グループを創設を提案した。ワイスナーは58年9月からマッカーシーを通信科学の準教授としてRLEで雇うことに同意した。
マッカーシーは58年の夏にIBMポーキプシー研究所に滞在し、FORTRANでリスト処理を可能にしたFLPL(Fortran List Processing Language)の改良に取り組んだが、再帰処理を実現するには関数型の言語を開発せざる得ないと考えるに至った。かれは関数をリストにして、括弧の中で組み合わせを可能にするため、6X (x + y)を(times 6(plus x y ))とする表記法を採用した。
マッカーシーは58年9月に、ワイスナーから割り当てられた6人の大学院生と新言語の開発を開始した。かれは、プリンストン大学の数学者アロンゾ・チャーチのラムダ(λ)変換を糸口にして、58年10月に他の関数をシミュレートしたり関数の集合を定義できるapplyを考案した。さらに大学院生のスティーブ・ラッセルは、汎用関数evalの実現可能性を示した。マッカーシーはロチェスタの助言を得て、ラムダ変換を応用したラベルを使えば関数をデータとして扱えることを確かめ、任意の関数と引数を選んで実行できるevalが誕生した。
新言語は、プログラムが関数と手続きを自分のリストとして定義でき、新たな関数や手続きをつくりプログラムの1部として実行できる。ただ、この処理環境でメモリ内容を意識したプログラミングはエラーを招きやすく、メモリも短時間で使い尽くされてしまう。マッカーシーは、プログラムが使用するメモリに印をつけ、変数が更新された時に古い変数の使用域の印と記憶内容を消去し空きメモリに戻す仕組みを考案し、「ガーベッジ・コレクション」と名づけた。マッカーシーは59年4月に米コンピュータ学会(ACM)で、evalとガーベッジ・コレクションを発表し、evalが万能チューリングマシンの役割を果たすことを示した。
マッカーシーは、1960年1月にパリで開催された代数言語ALGOLの国際委員会で、再帰処理をALGOLにも導入するように提案し、4月に開催されたACMの会議でLISPの詳細を「記号表現の再帰関数と機械計算」にまとめ発表した。大学院生たちはリスト処理により論理的な推論を相次いで実行できる新言語をリスト・プロセッサを意味するLISPと呼んた。
マッカーシーはLISPを開発すると、ミンスキーの学生時代の恩師J.C.R.リックライダーと知り合い、人工知能やコンピュータを論じる仲になった。リックライダーは聴覚神経の研究で博士号を得、戦時中はハーバード大学音響心理学研究所で勤務した。リックライダーは51年から56年までMITリンカーン研究所で空軍の防空システムSAGEプロジェクトを経て、57年に音響コンサルティング企業BBNの音響心理学研究所長に就任した。リックライダーは59年秋にDECの最初のミニコンピュータPDP-1の1号機のユーザとなり、対話型コンピューティングを経験して60年3月にラジオ技術者協会の技術誌に「人とコンピュータの共生」という論文を発表した。
情報ユーティリティ構想
LISPはインタプリタ型のプログラミング言語だが、マッカーシーのグループがキーボードとディスプレイでコンピュータと対話しながら作業できる時間はごく限られていた。MIT計算センターのIBM 704はバッチ処理マシンで、パンチカードで持ち込んだ計算結果を通常24時間後に受け取る。計算センターの2階にはRLEが管理しているTX-0という対話型コンピュータがあり、1週間に25人から40人が予約した順番に1回あたり約1時間使用できた。TX-0はMITリンカーン研究所で開発された最初のトランジスタ・コンピュータで、当時としてはCRTディスプレイを備えた唯一の対話型マシンだった。
マッカーシーは、IBMポーキプシー研究所で開発されていたIBM 709のCPUが、割り込みを利用してデータの入出力をI/Oプロセッサに肩代わりさせる能力を備えていることに関心を持った。IBM 709には3台のI/Oプロセッサを接続でき、各I/Oプロセッサには磁気テープ装置、パンチカード機、プリンタなどの複数の周辺機器を接続できる。対話型のプログラミングではバッチ処理のように大量のデータ転送を扱うことはなく、処理能力が高いコンピュータで割り込みを利用すれば、多数のディスプレイ端末で1台のCPUを共有できる可能性がある。このようなコンピュータの利用法は、IBMの研究者ロバート・ベマーがタイムシェアリング・システムの名で57年に提案していたが、実用化されていたわけではなかった。
マッカーシーはIBM 709がMITに寄贈されることを知り、59年1月1日に計算センター長のフィリップ・モースにMITとしてタイムシェアリング・システムを開発することを促すメモを渡した。タイムシェアリング・システムでは、1台のコンピュータを複数の端末で同時に使っても、プログラマはあたかも自分だけが占有しているかのようにプログラムを記述したりデバッグを行うことができる。マッカーシーはこの方法によりコンピュータの利用効率が5倍は向上し、「将来の全てのコンピュータの使い方が大きく発展する契機になる」と進言した。
マッカーシーはモースとIBMに、IBM 709がMITに導入された後でIBM 704をタイムシェアリング・システムに改造することを提案し、米科学財団(NFS)にその費用を助成するよう申請した。かれはまた、IBMがボーイングの要望で開発していたIBM 704向けの割り込み制御システムの存在を知り、同じ装置をMITにも提供するように要請した。
かれは61年1月にRLEにタイムシェアリング・システムの研究プロジェクトを発足するように提案し、電話のように誰もが利用しただけ料金を支払うコンピューティングの未来像を提示した。このビジョンは、MITの創立100周年を記念する8回の連続講義のテーマに採用され、マッカーシーはコンピューティングが電力や水道のように公共性をもつユーティリティ事業になると予言した。