ケネス・レイン・トンプソン (Kenneth Lane Thompson、1943年 2月4日 - )はコンピュータサイエンティスト のパイオニアでアメリカ人。ハッカー仲間からはケン・トンプソン (Ken Thompson) と呼ばれている[ 1] 。長年ベル研究所 に勤め、オリジナルのUnix を開発した。またC言語 の前身であるB言語 を開発し、Plan 9 の初期の開発者の1人だった。2006年からGoogle で勤務しており、Go を共同開発した。
他の主な業績として、正規表現 、テキストエディタQED とed 、UTF-8 コードの定義に加え、チェスの終盤定跡データベースやチェスマシンBelleの開発などコンピュータチェス への貢献がある。1983年に彼の長年の同僚であるデニス・リッチー と共にチューリング賞 を受賞した。
青少年時代
アメリカ合衆国 のルイジアナ州 ニューオーリンズ で生まれる。15人の有名プログラマのインタビューをまとめた Coders at Work で、インタビュアーの Peter Seibel から「どうやってプログラムを学んだのですか?」と質問され、「私はいつも論理に魅了されていて、小学生のころ既に二進法などの算数問題を解いていた。それは単に私が魅了されていたからだ」と答えた。
Unix が最初に動作したDEC PDP-7 。
カリフォルニア大学バークレー校 で電子工学 および計算機科学 の学士号 (1965) と修士号 (1966) を取得。修士課程の指導教官はエルウィン・バーレカンプ [ 3] 。
職歴と研究
大学卒業後の1966年にAT&Tのベル研究所 へ就職[ 4] 。1960年代当時、ベル研ではトンプソンとデニス・リッチー がMultics システムの計画に参加していた。トンプソンはMulticsの開発中にプログラミング言語のBonを開発した[ 5] [ 6] 。またスペース・トラベル というビデオゲームも開発した。その後ベル研はMulticsから撤退[ 7] 。ゲームを遊び続けるため、トンプソンは古いPDP-7 を発掘してスペース・トラベルを作り直した[ 8] 。このときトンプソンが開発したツールがUnix になった。PDP-7 を使い、トンプソンとリッチーが主導するベル研のチームは、ラッド・カナディと共に、階層型ファイルシステム 、プロセス 、デバイスファイル の概念を発明し、コマンドライン 、プロセス間通信を容易にするパイプ 、複数の小さなユーティリティプログラムを開発した。 1970年にブライアン・カーニハン の提案で、MulticsからのダジャレであるUnixという名前になった[ 9] 。初期のUnixが完成すると、トンプソンはシステム開発向けの言語が必要だと考えるようになり、B言語 を開発し、それを元にしてリッチーがC言語 を開発した[ 10] 。
1960年代に正規表現 を開発。CTSS 上で動作するテキストエディタのQED を開発し、文字列の検索に正規表現を使うことができた。QEDと、後に開発したUnixの標準エディタedは正規表現の普及に大きく貢献した。以降に開発されたほぼ全ての正規表現プログラムはトンプソンの表記法がベースとなっている。以前は理論言語学 者など限られた間での専門的な記法であった正規表現(日本ではそういった専門分野では正則表現と訳すことがある)は、コンピュータのユーザに身近な頻用されるものとなった。またマッチングを高速化するため、正規表現を非決定性有限オートマトン に変換する「トンプソンの構築アルゴリズム」を発明した[ 11] 。
1970年代
SIMH PDP-11 シミュレータで動作しているUnixバージョン6。"/usr/ken"がまだ存在している。
トンプソンとリッチーは1970年代の間ずっとUnixを共同で開発していた。2人はResearch Unix の研究チームで精力的に活動しており、ダグラス・マキルロイは「ほとんど全てのコードにリッチーとトンプソンの名前が残されていると考えて間違いない」と後に書いている。トンプソンは2011年のインタビューで、Unixの初期バージョンは自分が開発したものであり、後にリッチーが応援を始め、開発を手伝ったと話している[ 12] 。
最初のバージョン3くらいまではUNIXを1人で作りました。デニスがエバンジェリストになりました。それからC言語の元になった高級言語で書き直しました。彼は主に言語とI/Oシステムを担当し、私はOSのそれ以外の部分を全部担当しました。PDP-11用でしたが、これは偶然にも大学で広く普及したコンピュータでした。
トンプソンはUnixの開発にC言語を使うことで言語の熟成に貢献した。C言語はOSを書き直す最中で育ち、OSを書くのに最適な言語になったと後にトンプソンは語った[ 12] 。
1975年にトンプソンはベル研を休職 し、母校のカリフォルニア大学 バークレー校 に登校し、Unixバージョン6 をPDP-11/70 にインストールする作業を手伝った。バークレー校のUnixは後にバークレーソフトウェアディストリビューション (BSD)として知られる独自のOSとしてメンテナンスされるようになった[ 13] 。
1976年の初めにトンプソンはカリフォルニア大学バークレー校電気工学部コンピューターサイエンス学科でバークレー・パスカル の初期バージョンを開発した(同年後半にビル・ジョイ 、チャールズ・ヘイリー、ファカルティアドバイザーのスーザン・グラハムが大幅な改良を加えた)。
1971年にUnixでchessという名前のチェスのプログラムを開発[ 14] 。後にジョセフ・コンドンと共に専用のハードウェアアクセラレーターを搭載したBelleを開発し、コンピュータチェス の世界チャンピオンとなった[ 15] 。また4、5、6駒の終盤の局面全てで、完全な定跡パターンを列挙するプログラムを作成した。これによりプログラムは、一度終盤の定跡に到達すれば、以降は完璧なゲームを進めることができた。終盤の定跡に詳しいチェスの専門家であるジョン・ロイクロフトが後に協力し、終盤定跡データベースをCD-ROM 化して配布した。2001年にICGA Journal はケン・トンプソンのコンピューターチェスへの様々な貢献を表彰した[ 14] 。
1980年代
ベル研のPlan 9 。テキストエディタのacme とシェルのrc が動作している。
1983年にトンプソンとリッチーは、「汎用的なオペレーティングシステム理論の開発、特にUNIXオペレーティングシステムの実装に対して」チューリング賞 を共同受賞した。授賞式でのスピーチで話した「Reflections on Trusting Trust(信用を信頼することについての考察)」は、現在はトンプソンハックやTrusting Trust攻撃として知られており、これ自体がセキュリティに関する重要な研究成果と認められている[ 16] 。
トンプソンとリッチーは1980年代を通じてResearch Unixのアップデートを続け、バージョン8、バージョン9、バージョン10でBSDコードベースを採用した。1980年代中頃に、Unixの設計思想を受け継ぎながらも全面的に作り変えられた後継OSであるPlan 9 の開発がベル研で始まった。mk やrc など、後のResearch Unixに組み込まれた一部のプログラムも、Plan 9で開発された。
トンプソンはビャーネ・ストロヴストルップ が開発したC++ の初期バージョンを試験的に使ったが、バージョンアップの度に互換性が失われたため使用を断念した。2009年のインタビューでトンプソンはC ++を批判し、「色々なことが中途半端で、それは多くのことを半分うまくやっており、排他的なアイデアのゴミの山だ」と話した。
1990年代
1992年にロブ・パイク と共同で文字コードのUTF-8 を開発[ 18] 。UTF-8はインターネット で広く普及し、2019年には全Webページの90%以上を占めている[ 19] 。
1990年代にポータブルなバーチャルマシン をベースにした研究用オペレーティングシステムであるInferno の開発を開始。トンプソンとリッチーはベル研の他の研究者と共同でInfernoのコラボレーションを続けた[ 20] 。
2000年代
2000年後半にベル研を退職。彼は2006年までEntrisphere, Inc.でフェロー として働き、その後Google で名誉エンジニアとして所属。最近の業績にはプログラミング言語Go の共同設計などがある。自分を含むGoの開発者たちについて次のように述べている[ 12] 。
私たち3人(トンプソン、ロブ・パイク 、ロバート・グリシーマー)は純粋な研究として開発を始めました。3人が集まり、C++が嫌いだということで意気投合しました(笑)。(…Goに話を戻すと)、3人とも言語の全ての機能について説明が求められるという考えでスタートしましたので、いかなる理由があっても言語にゴミを入れませんでした。
2009年のインタビューによると、トンプソンは現在Linux ベースのオペレーティングシステムを使用している。
受賞歴
1980年 - 全米技術アカデミー フェロー[ 22]
1983年 - チューリング賞 。リッチーと共同受賞。「汎用オペレーティングシステム理論の発展への貢献と、特にUNIXオペレーティングシステムの実装に対して」。この時の受賞記念講演で述べたのが "Reflections on Trusting Trust"[ 23] 、後に Thompson hack と呼ばれるようになる、loginプログラムにバックドア を仕組むようなコンパイラを作るようコンパイラのバイナリを仕組み、その痕跡をコンパイラのソースからは消す、という驚異的な技巧の解説で、しかも実際にいくつかのシステムに仕込まれていたとする衝撃的なもの[ 注釈 1] であった。この講演だけで独立したコンピュータセキュリティ に対する重要な指摘(仮にコンパイラの全ソースをチェックしても、それだけでは安全ではないかもしれない)とされている[ 注釈 2] 。また、講演の本題に入る前に、自分が書いたプログラムの話をする枕として「私はプログラマです。フォーム1040(米国の税金の書類、en:IRS tax forms#1040 )に私の職業としてそう書いています。」(I am a programmer. On my 1040 form, that is what I put down as my occupation.)と話している。
1990年 - IEEE ハミングメダル 。リッチーと共同受賞。「UNIXオペレーティングシステムとCプログラミング言語の開発に対して」[ 24] 。
1997年 - コンピュータ歴史博物館フェロー
1999年 - 98年度のアメリカ国家技術賞 をリッチーと共同受賞。「情報技術の発展に多大な影響を与えたUNIXオペレーティングシステムとC言語の発明に対して。また、情報化時代におけるアメリカのリーダーシップを強固なものにした産業全体の成長をもたらした」(原文[ 25] は For their invention of UNIX® operating system and the C programming language, which together have led to enormous growth of an entire industry, thereby enhancing American leadership in the Information Age. であり、どこにも「情報技術の」という表現に対応する部分は無いが)[ 26] [ 27] 。
1999年 - IEEE Tsutomu Kanai Award 。「過去数十年に渡って分散システムの重要な基盤となったUNIXオペレーティングの開発に果たした役割に対して」[ 28] 。
2011年 - 日本国際賞 。リッチーと共同受賞。「UNIXオペレーティングシステム開発における貢献に対して」[ 29] [ 30] 。
2019年 - 全米発明家殿堂 。リッチーと共同で選出。
プライベート
ケン・トンプソンは既婚者で息子が1人いる[ 31] [ 14] 。
脚注
注釈
^ ジャーゴンファイル ( http://catb.org/jargon/html/B/back-door.html )では、トンプソンはベル研の外部には、その仕掛けのあるコンパイラが配布されたことは一切無い(never distributed)と言っていると書いた後、編者(エリック・レイモンド )は独立した2人の情報提供者から不審なログインに関する示唆を得ているとも書いており、その他の状況も併せ実際には外部にも出ていたものとみる論もある(『Unix考古学』を参照)。
^ 直接の主題ではないが、最後に警鐘として、講演した内容が示すように、原理的に、コンピュータのセキュリティには根源的な所に「信用を信用する」しかないという危うさがあるのだから、(こんにちで言うスクリプトキディ に相当するような)セキュリティを脅かしている子供たちを、「天才ハッカー少年」などとマスコミがそやすことは、将来の禍いの元である、といったことも述べている。これは技術的な本筋とはあまり関係ないのだが、映画『ウォー・ゲーム 』の公開などでコンピュータの一般への爆発的普及とセキュリティについて関心が高まっていた時期であったため、学会誌上でリチャード・ストールマン らと議論になった。
出典
^ “ken ”. The Jargon File (version 4.4.7). 2012年8月19日 閲覧。
^ “Thesis Students ”. Elwyn Berlekamp's Home Page . University of California, Berkeley Department of Mathematics. 2021年10月21日時点のオリジナル よりアーカイブ。2021年12月31日 閲覧。
^ “Ken Thompson: developed UNIX at Bell Labs ”. 2016年10月31日 閲覧。
^ Thompson (1969年). “Bon User's Manual ”. Multics History Project . MIT Computer Science & Artificial Intelligence Lab. p. 1. 2021年10月21日時点のオリジナル よりアーカイブ。18 March 2021 閲覧。
^ Ritchie. “The Development of the C Language ”. Bell Labs . 2016年10月31日 閲覧。
^ J. Stanley Warford (2009). Computer Systems . Jones & Bartlett Publishers. p. 460. ISBN 978-1-4496-6043-7 . https://books.google.com/books?id=PERY_m5yyl4C&pg=PA460
^ Ritchie (2001年). “Space Travel: Exploring the solar system and the PDP-7 ”. Bell Labs . 2015年12月26日時点のオリジナル よりアーカイブ。2016年2月4日 閲覧。
^ Ritchie. “The Evolution of the Unix Time-sharing System ”. 2021年10月21日時点のオリジナル よりアーカイブ。2016年10月31日 閲覧。
^ Dennis M. Ritchie. “The Development of the C Language ”. Bell Labs/Lucent Technologies. 2016年10月31日 閲覧。
^ Cox. “Regular Expression Matching Can Be Simple And Fast ”. 2021年10月21日時点のオリジナル よりアーカイブ。2016年10月30日 閲覧。
^ a b c “Dr. Dobb's: Interview with Ken Thompson ” (2011年5月18日). 2021年10月21日時点のオリジナル よりアーカイブ。2014年11月10日 閲覧。
^ Salus, Peter H. (2005). “Chapter 7. BSD and the CSRG” . The Daemon, the Gnu and the Penguin . Groklaw . http://www.groklaw.net/article.php?story=20050505095249230
^ a b c Dennis Ritchie (June 2001). “Ken, Unix and Games” . ICGA Journal 24 (2). https://www.bell-labs.com/usr/dmr/www/ken-games.html March 5, 2020 閲覧。 .
^ “Joe Condon (obituary)”. Physics Today . (2013). doi :10.1063/PT.4.1752 .
^ Thompson, Ken (1984). “Reflections on trusting trust”. Communications of the ACM 27 (8): 761–763. doi :10.1145/358198.358210 .
^ Pike (April 30, 2003). “UTF-8 history ”. 2021年10月21日時点のオリジナル よりアーカイブ。2021年12月31日 閲覧。
^ “Usage Statistics and Market Share of UTF-8 for Websites, June 2019 ”. w3techs.com . 2021年10月21日時点のオリジナル よりアーカイブ。2019年6月9日 閲覧。
^ Khamlichi. “Ken Thompson UNIX systems father ”. Unixmen. 2021年10月21日時点のオリジナル よりアーカイブ。2016年10月31日 閲覧。
^ “Dr. Ken Thompson ”. National Academy of Engineering. 2012年8月19日 閲覧。
^ Thompson, Ken. “Reflections on Trusting Trust ”. 2012年8月19日 閲覧。
^ “IEEE Richard W. Hamming Medal Recipients ”. IEEE . 2011年5月29日 閲覧。
^ https://www.uspto.gov/learning-and-resources/ip-programs-and-awards/national-medal-technology-and-innovation/recipients/1998
^ “Ritchie and Thompson Get National Medal of Technology ”. Bell Labs (December 8, 1998). 2012年8月19日 閲覧。
^ “Ritchie and Thompson Receive National Medal of Technology from President Clinton ”. Bell Labs (April 27, 1999). 2012年8月19日 閲覧。
^ “Ken Thompson Receives Kanai Award for Impact of UNIX System ”. Bell Labs (March 25, 1999). 2012年8月19日 閲覧。
^ “2011年(第27回)日本国際賞受賞者決まる ”. 国際科学技術財団. 2011年1月25日 閲覧。
^ Evangelista, Benny (January 25, 2011). “Ken Thompson, Dennis Ritchie win Japan Prize” . The San Francisco Chronicle . http://www.sfgate.com/cgi-bin/article.cgi?f=/c/a/2011/01/24/BUTI1HDJSA.DTL#ixzz1C5LtXdf3
^ “Ken Thompson: A Brief Introduction ”. The Linux Information Project (August 24, 2007). March 5, 2020 閲覧。
関連項目
外部リンク