「コンピュータの天才 9つのC言語を操る」
とある映画の日本語字幕で、
コンピュータの天才
9つのC言語を操る
というものがあるらしい(画像はググってください)。原文はnine conputer languagesらしいので、翻訳者がC言語のことをコンピュータ言語の略だと勘違いしたのだと思われるけど、C言語を知っている人から見ればなかなかに味わい深いフレーズである。
ところで過去には、Perl、Python、PHPの3つの言語がまとめてP言語と呼ばれることがあった。であれば、頭文字がCから始まる言語のことをC言語と呼ぶことも、もしかして可能なのではないだろうか?
9つのC言語を操る
そういうわけで自分の過去のブログ記事を漁って確認したところ、「1行でもプログラムを書いて動かしたことがある」言語で、Cから始まるものがかろうじて9個あることが分かった。やったー。これで筆者も9つのC言語を操る男の仲間入りである。
- C
- C++
- C#
- Common Lisp
- Clojure
- CoffeeScript
- Crystal
- ChucK
- Chef
CrystalはRubyに似た文法を持つ気鋭の静的型言語、ChucKは音楽関係の言語、Chefは料理のレシピみたいにプログラムを書くEsoteric Languageである(自著で紹介するためにHello Worldを書いた)。
その他のC言語
さすがにChef言語のプログラムを書いたことがある人は多くないと思うので、自分も9つのC言語を操ってみたい!という人向けに、どのような言語があるか探してみた。
Wikipediaのプログラミング言語一覧を見ると、最も利用者数が多そうなのはCOBOLである。商用メインフレームで使われる言語というイメージだが、GnuCOBOLという処理系があり、macならbrew install gnu-cobol
でインストールできる。
あとはcshだろうか?macならbrew install tcsh
で入る。
プログラミング言語を探す際は99 Bottles Of Beerというサイトも参考になる。例えばCoqは定理証明の世界で有名な言語だが上の一覧にはない。
Concurrent CleanはHaskellのような非正格な(つまり、遅延評価がデフォルトな)言語である。
Curryは関数型と論理型を合わせた言語らしい。
Catは関数型とスタック言語(Forth, Factorとかの)を組み合わせたConcatenative Languageというジャンルの言語で、公式ページの猫が印象的だったのだけど、現在はarchive.orgでしか見られなくなっているようだ。
CLUはRubyの設計に影響を与えた言語の一つで、イテレータなどを参考にしたらしい。そのあたりの話はRubyist Magazineの記事でまつもとさん自身が書かれている。
Camlはたぶん、OCamlの前身だと思われる。OCamlはObjective-Camlの略称なので、オブジェクト機能が入る前はCamlという名前だったのだろう。その頃のソースコードが入手できるかは知らない。
C--はHaskell処理系のGHCが中間表現として使っている言語である。
あとは、CASL, ColdFusion, Curlあたりは名前を聞いたことがあるけど、ほとんど分からない。
まとめ
以上を踏まえて、比較的手軽そうな(?)9個の選び方を考えてみた。最後の一つはお好みで。参考になれば幸いである。
- C
- C++
- C#
- Common Lisp
- Clojure
- CoffeeScript
- Crystal
- csh
- COBOL/Coq/Clean/Curry