このタイトルは微妙に偽っていると思う。
いわゆる入門向けプログラミング言語のキーワードに「簡単さ」が挙げられることが多いと思っているのだけど、「本当に多いのか」とか「『簡単さ』を挙げることが適切か」とかはこの文章には関係ないのでスルーしておくとして。
一言に「簡単さ」といっても色々あるのだろうけど、ここは一つ、思い切って「処理系の導入が簡単」という点に絞って、独断と偏見でプログラミング言語を5つ選んでみた。面倒なので「入門向け」という肩書きの有無はサックリ無視して。
つまりこのエントリは「入門向け == 処理系の導入が簡単」という無茶苦茶乱暴な前提を元に書いている*1。
えっとですね、「Yahoo!知恵袋」とか見てると「コンパイラを探してるけど、どんなものがあるの?」とか「コンパイラをインストールできない」とか「インストールしたけど動かない」とか、そんな質問が定期的に出てくる訳ですよ*2。コードを書く以前に、環境構築で躓いている人がいる訳ですよ。「入門向け」を強調するのなら、処理系導入のことも考慮しないとマズイのかもしれないと思わなくもない訳で。
と、長々と書いたけど、このエントリを書いた理由とはほとんど関係ない。本当の理由は「何となく面白そうだから」という、完全に趣味の産物だ。
事前に一つだけ注意。私は、プログラミング入門しようと考える人の大半は、
- Windowsを使っている。XPかVista。
- ブラウザはInternet Explorer。Windowsにデフォルトで入っているから。
- Microsoft WordないしExcelがインストール済み。
だという偏見を持っていて、以下の内容にはそんな感じのバイアスがかかっている*3。
という訳でベスト5はこれ。
強いぞMicrosoft。一部、プログラミング言語という括りとしては微妙なものもあるけど、気にしてはいけない。
私の偏見が実情に合っているなら、どれも処理系のインストールすら不要だ。Windowsにデフォルトで入ってるから*4、当たり前といえば当たり前だけど。
ツッコミどころ満載だけどさっくり無視して、以下解説。
- JScript on Internet Explorer
- 私としては堂々の第1位に選びたい組み合わせ。何だかんだでIEはデフォルトでWindowsに入っている*5。JavaScriptという括りでなら、学習資料も豊富だと思う。
- JScript/VBScript on WSH
- これもWindowsでデフォルトで使える。今回選んだ中では一番LLっぽい組み合わせで、Perl/Python/Ruby程じゃないけどフィルターが書ける。ワンライナーできないのが少し残念。将来的にはWindows PowerShellに移行するんだろうけど、現状ではWindows上で他のマシンでも動かすかもしれないツールをLLなノリで書くならWSHになりそう。情報の豊富さでVBScriptを選ぶもよし、「JavaScriptが使いたいんだ」とJScriptを選んであえて茨の道を進むもよし*6、もう活殺自在ですがなダンナってなものだ。難点といえば、学習資料の類が少ない所だと思う。
- バッチファイル
- プログラミング言語というカテゴリに入れるのが適切かどうか不明だけと*7、バッチファイルもWindowsでデフォルトで使える。しかも最近のLLなスクリプト言語みたいに対話型環境*8も用意されていて、これもWindowsで標準でサポートされているのだ! どうだ! ……まあそれはともかく、バッチファイルってWindowsのバージョンが上がるごとに新機能が追加されてきているので、下位互換性を考えなければ昔のバッチファイルよりは幾分マシなコードを書けると思う。でも相変わらず関数は無い*9し、制御構文とかも色々と制限があるので、超小規模なツールを書く場合にしか向いてないと思う。
- Excel VBA
- Microsoft OfficeにはデフォルトでVBAの開発環境も含まれているはず。少なくともOffice 2000ならVisual Basic Editorが付いてくるのだけど、もっと新しいバージョンだとどうなんだろう? あとWordのVBAってExcelよりマイナーな気がするけど、何でだろう。ちなみにAccessはインストールされてないマシンも多いので除外。
*1:というか乱暴すぎだ。
*3:誰か、プログラミング入門者の平均的なPC環境とかって調査してないだろうか? 情報求む。
*4:Officeはデフォルトでは入ってないはずなんだけど、未だにプリインストール済みのPCって多いよね。
*6:というかMozillaのJavaScript リファレンス - JavaScript | MDNを見ながらJScriptで書いてたりするんだけど。まあCOMオブジェクトとかが絡んでこない分には基本的には似たようなものだと思う。
*7:でもHTMLをプログラミング言語に含めてしまう行為よりはマシだと固く信じている。
*8:何のことはない、単なるコマンドプロンプト。言い方ひとつで印象が随分変わる代表例かも。
*9:関数化の代わりにバッチファイルを分けて書くことでも対応できるけど、動作が遅くなる気がする。