今までどのくらいプログラミング言語を触ってきたか(3秒で飽きたものも含む)
今までどのくらいプログラミング言語を触ってきたか(3秒で飽きたものも含む)
King of Programming Language - 今までどのくらいプログラミング言語を触ってきたか(3秒で挫折したものものも含む)
何か一部で流行っているみたいなので便乗して。どのくらいのプログラミング言語が使えるかと言われるとちょっと悩むけど、(3秒で飽きたものも含む)なら、とにかく触ったことがあるのをひたすらリストアップすればいいので楽で良いね。おおむね触った順に書いてるけど、特に真ん中辺りは順番があやふや。3秒で飽きたものを含むものの、一応、処理系を最低一度でも動かしてみたことあるのだけにしてある(調べてみただけのは載せてない)。
大学に入る前
大学に入った後
- Perl
- HSP
- Python
- Pnuts
- 結構好きな言語。開発は休止してるっぽいけど、完成度は結構高い。あと、今ではどうかわからないけど、アクティブに開発が続いてたときは、JVM系の動的言語の中では最速の部類だった。
- JIS Full Basic(のセブセット)
- なんで触ったのかよく思い出せない。
- D
- Prolog
- Toyプログラムを書いた程度。
- Brain F**k
- Standard ML(Moscow ML,SML/NJ)
- 大学の主専攻実験で、SchemeモドキをMLで作るという課題があって、MLを学習しながら書いてた気がする。まともに関数型プログラミング言語触ったのはこのときが最初?
- OCaml
- なんとなくToyプログラムを書いて遊んでた。
- Common Lisp(CLisp)
- Lispマクロの勉強のために。
- Scheme(Kawa,SISC,Gauche)
- Haskell(GHC)
- Smalltalk(Squeak)
- C#
- G
- 自動ダウンキャストとか、Onionに入れて失敗だった機能も含めて、なにげに結構参考にした記憶がある。今、G言語でぐぐっても、もはや公式ページが上位にヒットしない(というか、開発続いてるのか怪しい)。
- JVMのバイトコード
- Onionの実装のために学習した。というか、実装しながらJVMのクラスファイルベリファイアの挙動とか学んだ。スタックサイズがあるプログラムカウンタにおいて常に一定であることの保証とか、ベリファイアはかなり色々な仕事やってるんだなーというのを実感した。
- Onion
- まあ、自作の言語ということで。ときどき思い立ってちょっといじってはいるけど、あんまり開発は進んでない。
- AspectJ
- 一時期アスペクト指向にはまってて、結構遊んだ。
- MixJuice
- Whitespace
- 変態言語としてはセマンティクスがあまりにも平凡で落胆した覚えが。
- R
- E
- Eiffel(SmallEiffel)
- ObjectScript
- 動的言語で、それほど特徴的な機能は無いのだけど、functionをinterface型に自動変換するための機能があったのは良かった。
- BeanShell
- Groovy
- 一時期はまってて、まつもとさんの代打でRubyist のための他言語探訪 【第 5 回】 Groovyなんてものを書いたことも。今でもGroovy Markupは素晴らしいと思ってるけど、それ以外の部分は割とどうでもいい。
- Nikes
- 言語というか、k.inabaさんが名前推論という機能?で実験的にJavaを拡張した処理系。名前推論という響きに惹かれて遊んでみて、なんかのメソッド名の場合に名前がコンフリクトして呼び出せないよーとかいうのを報告してみたりとかした覚えが。
- Nice
- Nemerle
- とにかくマクロ機能が非常に強力な言語。かなり好きだったのだけど、開発者がMicrosoftに入ったか何かの理由で(本当かは知らない)、開発がストップしてしまった。残念。
- VB.NET
- Scala
- 今、一番好きな言語。そろそろ研究で書くプログラムは全部Scalaに切り替えようかなと思ってるけど、なかなか踏ん切りがついてなかったりする。
- Fortress
- ときどき思い出したように触ってるけど、まだ静的型チェックがちゃんと実装されてないっぽいのはちょっとがっかり(実行パスによって通らない箇所に型エラー出る式書いても普通に実行できてしまう)。言語仕様的にはかなり好き。具象クラスが継承グラフの末端にしか来れない仕様は思い切りが良いと思う。
- haXe
- なでしこ
- Factor
- ちょっと触ってみただけ。
- Clojure
- ちょっと触ってみただけ。Javaとのインタフェース部分は結構使いやすい。
他にもまだあった気がするけど、とりあえず、比較的すぐに思い出せたのはこんなところ。JVM上で動作する処理系にやけに偏ってたり、最初の言語がJavaだったりするのは、人によっては世代の違いを感じるのではないかなあとか思ったり。Satherなんかは、言語仕様とかはそこそこ調べてみたんだけど、結局一度も処理系動かした事が無い(というか、処理系のビルドが当時の環境でうまくできなくて諦めた記憶がある)。