今までどのくらいプログラミング言語を触ってきたか(3秒で挫折したものものも含む) Ver.2

2010/06/14現在のステータス。
id:eel3:20090512:1242088957 から1年と1ヶ月を経て、こうなっている。

よく使っている

AWK (gawk)
単純なテキストレコードの処理にはAWKで十分。自作ツール実装での使用頻度は減りつつあるが、依然としてワンライナーでは重宝している。自作ツールで使う場合も、全てAWKで書くのではなくてシェルスクリプトやmakeと組み合わせてワンライナーすることが多くなった。
C++
時々お仕事で使う。最近はツール自作時にbetter Cとして使うこともある。というかSTLを含むC++の標準ライブラリって、Cの標準ライブラリと比べると涙が出るほど充実していると思う*1。低水準の処理を行いつつ便利な機能で実装時間を短縮できる点は便利。だけど機能多すぎ/複雑すぎな所は何とかならないものか。
C言語
お仕事での主力言語。シンプルで且つ低水準の世界が垣間見れる所が大好き。だけど最近の他の言語と比較すると、シンプルすぎて安全機構が欠けていたり標準の便利機能が少なかったりするので、入門用の言語としては薦められないと思う。
DOSバッチファイル
プログラミング言語に含まれるかどうか不明だけど、含めてしまう*2。ちょっとした自動化や、複数ツールを組み合わせて使う時のラッパーとしてよく使う。
JScript on WSH
他人が使うテキスト処理ツールの実装に使って以来、時々触っている。最近はHTAと組み合わせて簡易なGUIツール実装にも使用*3。自分の中では「Windows上で他人も使えるツールを書くためのLL」という扱い。一番のメリットは「JavaScriptECMAScript)でフィルタを書ける」というか、普通にOS上で動作するツールを書ける所だと思う。無名関数もクロージャも大好き。
Ruby
AWKに代わって自作ツール実装での使用頻度が増えている。テキスト処理でも重宝するけど、バイナリデータへの変換が絡んでくるとAWKよりもRubyを使った方が効果的だと思う。最近はirbワンライナーで電卓代わりに使うスタイルが習慣化してきて、ますます手放せない。やはりto_s(16)やto_s(2)で基数変換して表示できる所が大好き。
VBScript on WSH
最近、仕事の関係で触っている。というかWebで入手可能なWSHのサンプルの大半がVBScriptで書かれていたり、ADSI関連のコレクションをJScriptで舐めれなかったりするので、半ば必要に駆られて使用中。文法というか言語仕様的なものの詳細なドキュメントが見つからないのだが、どこかに無いだろうか? 基本的にはJScriptと同様に、「Windows上で他人も使えるツールを書くためのLL」だと思う。
XSLT
プログラミング言語に含まれるかどうか不明だけど、DSL扱いで。昔、力任せに書いたレガシーコード(XMLからXHTMLに変換)を現在も使用中。
make (Makefile)
プログラミング言語に含まれるかどうか不明だけど、DSL扱いで。よく使うけど、大抵は先人の遺産をコピペしてガシガシ書き換えているだけで、中身はあまり理解できていない気がする。
sed
プログラミング言語に含まれるかどうか不明だけど、DSL扱いで*4。テキスト処理用。シェルスクリプトやmakeやawkと組み合わせて使う。
シェルスクリプト (/bin/sh)
プログラミング言語に含まれるかどうか不明だけど、含めてしまう。基本的な用途はバッチファイルと同じ。

あまり使っていない

Active Basic
VBScripを触りだした影響で、時々思い出しては弄くっている。昔ほんのちょっとだけ触ったことがあったが、すっかり忘れてしまっていた。なので実質的に初めて触っているのと同じ状態。String型をバシバシ使用中 :)
C#
勉強を兼ねてC# 2.0を少し触ってみたのだが、匿名メソッドを使うスタイルでコードを書くのは問題ないが、Javaみたいなオブジェクト指向プログラミングなスタイルでコードが書けない。私の頭の中では「オブジェクト=何らかの内部状態を抱え込んでいる」というイメージなので、サンプルソース程度の短いコードでは、クラスを定義してオブジェクトを生成する意義を見出せない*5。クラスが必須ではないC言語C++に慣れてしまった弊害か?
CASL II
生まれて初めて触れたプログラミング言語その1。何だかんだで、後でCプログラマになってからも低水準での思考ツールとして微妙に役に立っている。
Common Lisp
2009年に勉強しようと思い立ったものの、未だに進んでいない。階乗とかハノイの塔とかiotaとかは書いたけど、目標は「ちょっとしたツールを自作する」ことなので、まだ道は遠い。
Emacs Lisp
.emacsにコピペ」限定で。Common LispSchemeを触った為か、最近何となく内容を追えるようになってきた気がする。でも書けない。
Go
流行に倣ってhello, worldぐらいは書いた。時間ができたら並列処理周りを勉強したいところ。goroutinesか……。
Lua
基本的な部分をFizzBuzzで一通り学んだので、Cのプログラムに組み込む辺りを本格的に勉強して、仕事が楽になるなら応用してみたい。何か適当なお題はないだろうか?
Objective Caml
Common Lispを勉強するはずが、いつの間にか触っていた言語。一応、階乗ぐらいは書いた。時間が取れたらもうちょっとしっかりと勉強したい。
Perl
時々、やむをえない事情で触ることがある。だけど基本的によく分からない。何というか、あの記号の羅列っぽさに中々慣れないというか、自分は余りに自由度が高すぎる言語は苦手だと気づいたというか。
Scheme
GaucheWindowsネイティブ環境用バイナリが実験版でなかったら、Common Lispの代わりに勉強しようとしてたかもしれない言語。一応触ったことがある。階乗とかハノイの塔とかiotaとかを書いた。
Tcl/Tk
Tclでテキスト処理ツールを書いてみたことがあるけど、Tkは触ったことがない。Tclは結構独特な言語だと思う。構文が全てコマンドだったり、値が全て文字列だったり、実はリスト構造で構成されてたり、意外とTCPソケット通信が得意だったり……。それでも慣れれば結構使いやすい言語だと思う。プロトタイピングに向いている気もする。
Windows PowerShell
ワンライナーで弄くってみたものの、全く歯が立たなかった。リベンジ計画中だけど、実はどのPCにも処理系が入っていない。PowerShellを入れたPCは、何故か数日後に再セットアップする羽目になるのだった……単に運が悪いだけ?
flex
プログラミング言語に含まれるかどうか不明だけど、DSL扱いで。最近、字句解析の勉強の一環で触ってみた。一応、今後も触る予定。

これから(また)使うかもしれない

HSP (Hot Soup Processor)
HSPで職業プログラマ的な良いコードを書くと、どんな感じになるか?」というネタを思いついたので処理系を用意したが、そこから進展はない。
Object REXX
思うところがあって処理系とIBM謹製のドキュメントを入手したものの、そこから先の進展は無い。

今は全く使っていない

Java
生まれて初めて触れたプログラミング言語その2。でも、もう忘れてしまった。
SQL
生まれて初めて触れたプログラミング言語その3ぐらいに位置する。MySQLを入れてコンソール用のモニタからSQL手入力で弄って遊んだことがある。
m4
テキスト処理用に触ったけど、Windows上で日本語が問題なく通る処理系が見つからなかったので泣く泣く諦めた。

CSS、HTML、XMLは除外*6

*1:もっともPerlRubyなどのLLな言語と比べると貧弱さは否めないのだけど。

*2:まあ「バッチプログラミング」という言葉があるぐらいだから……。

*3:JScriptで共通モジュールを実装して、HTAWSHの両方で使いまわす。WSHでモジュール化に対応する為に、少なくとも最上位層をWSFで記述することになる。

*4:これでもsedチューリング完全な言語だと証明されているらしい。

*5:staticを付けてクラス変数/定数/メソッドにすればよいかもしれないけど、それって無茶苦茶ダメコードだよなあ。

*6:というか「プログラミング言語」という括りからは外れると思う。