Erlang
電話交換機の開発から生まれた言語。並行処理と高い耐障害性に強く、大規模なメッセージ処理システムで使われる。
時代背景
Joe Armstrong本人の博士論文によれば、この研究はエリクソン社のコンピュータサイエンス研究所(CSLab)で1981年に始まった。Armstrong自身がこの研究に加わったのは1985年にCSLabに参加してからである。1986年、Armstrongは後にErlangとなる言語の開発に着手したが、当時はまだ名前を持たなかった。この言語は、並行プロセスをPrologに追加する実験として始まったといい、当時はPOTS(Plain Old Telephony Service=一般的な電話サービス)をどうプログラムするかに関心があり、並行プロセスで拡張したPrologの一種が最善の方法に見えていたという。
名前の由来
Joe Armstrong本人の博士論文によれば、1987年に『Erlang』という語が初めて使われた。この名前はおそらくCSLabの所長Bjarne Däckerによって作られたとArmstrong自身が記している。同年末までにErlangのPrologによる実装が用意され、Prologの中置演算子を使って組み込まれる形だったため、まだErlang自身の構文は持っていなかった。1987年末には、Kerstin Ödlingが率いるボルモーラ(Bollmora)のエリクソン技術者グループが、エリクソンMD110構内交換機(PABX)のアーキテクチャ『ACS/Dunder』のプロトタイピングにErlangを採用する最初の大規模な実験を開始した。
仕組み
Joe Armstrong本人の博士論文によれば、1988年にはErlangがテレコムシステムのプログラミングに適していることが明らかになり、CSLabのグループにRobert VirdingとMike Williamsが加わってErlangシステムの改良に取り組んだ。同じ1988年、Armstrongは性能向上のためJAMマシン(Joe's Abstract Machine)を設計した。これはProlog実装で使われるWarren抽象マシン(WAM)を緩やかな土台としており、並行プロセス・メッセージパッシング・失敗検出を加え、バックトラッキングを省いた仕組みだった。JAMマシンの設計は1989年に完成し、最初の実装はPrologで書かれた命令セットエミュレータで、1秒あたり約4回の簡約しか処理できないほど非効率だったが、仮想マシンの検証とErlangコンパイラの評価には十分だったという。
関連項目
- Prolog論理を記述すると処理系が答えを導く、論理型プログラミング言語。手順を書くのでなく事実と規則を書く独特の発想で、人工知能研究や日本の第五世代コンピュータ計画でも注目された。命令型に慣れた頭には新鮮な異世界。