最近、3つの言語(Ruby, Perl, JavaScript)を並列で使っているので、文法が頭の中で混ざり合って、Perlを使っているのにうっかりRuby的な書き方をしたり、Rubyの文字列処理で間違えてJavaScriptの関数名を指定してしまったりして、インタプリタさんにけっこう怒られている。
そこで、言語を変えた時にうっかりしたり悩んだりすることを適当に並べてみた。
・セミコロンを忘れる
文末にセミコロンを打たない言語(RubyとかVBScriptとか)を使ってから打つ言語(CとかJavaとか)を書くと、面白いほどセミコロンを付け忘れてエラーの海に溺れます。何度使用言語を変えても毎回やってしまう。
・$がしっくりこない
PerlとかPHPのような変数の前に$を付ける言語にスイッチした時に、しばらく馴染めない感覚がする。2週間も書いていれば逆に$がない方が不自然に見えるようになる。
・「else if」の書き方を忘れる
「if」と「else」の書き方はだいたい覚えているのですが、「else if」の書き方はさっぱり覚えられません。「else if」だったり「elif」だったり「elsif」だったり、いろいろあり過ぎです。そろえておくれ。
・文字列処理の関数の名前を忘れる
substringとか、indexofとか、replaceみたいな当たり前の関数の名前を忘れる。言語ごとに微妙に違ったりするところが厄介。適当な名前でtry and errorしてみて、たいていうまく動かずググることになる。
・配列の扱い方が分からなくなる
配列の初期化の仕方で一瞬悩んだりする。連想配列の初期化はもっと悩む。「=>」で区切ったり、「:」で区切ったり。
・括弧を付ける場所がわからなくなる
関数に引数を渡して実行する時に、引数を括弧で囲む必要がある言語と無い言語、それからどちらでもOKな言語がある。自分が使っている言語はどういうルールだったかしばし悩む。
・どの開発環境が良いかで悩む
エディタ最強説の人は関係ないかもしれないが、いろいろな開発環境を試している人間は言語が変わるたびに面倒な調査をすることになる。自分が目を離していた隙にデファクトスタンダードが変わってないかとか、使っていたソフトが寿命を迎えていないかとか。良い選択肢が見つからないと、調べた情報を放棄してエディタに還ることになる。
・処理速度の勘が狂う
多少重い処理をさせる時に、この処理なら実行時間はこの程度だろうということを頭の中で考えるのだが、言語を切り替えると意外とその通りにいかないことが多い。特にVBScriptやJavaScript、ActionScriptあたりを使った時は「まぁ、大丈夫だろう」と思って処理を実行してみると一向にレスポンスが返ってこなかったりしてびっくりする。
・値渡しされてるのか参照渡しされてるのか悩む
関数に渡したオブジェクトがどう渡されてるのかで悩む。どっちかというと参照が主流だけど値もけっこういる。PHPとかはバージョンで違ったりする。全部真面目に勉強するのはけっこう面倒。
・関数なのかメソッドなのか分からない
私は何も意識しないと「メソッド」と呼んでしまうJavaグラマーですが、時々、関数と呼んだ方が良いのではないかと悩む。クラス変数とかメンバ変数の呼び方はもっと悩む。