その昔、行番号のない言語が異質でした。どうやって実行順序決めてるんだろう、と思った。
ある時期、Pascalが異質でした。ブロックを作るのにbegin
〜end
なんて。英単語が溢れている。
長い間、Perlが異質でした。数値を入れたつもりなのに文字列と連結できたり、しばらく法則性が掴めませんでした。
今では。使う言語は行番号のないものばかりですし、数年前はPascalばかり使っている時期がありました。Perlも、文脈によって値の解釈が決まるとわかってからは自然に扱えるようになりました。
そんな中で、異質に感じてしまうようになってしまった言語が。それがC言語。上記のように明確な異質感を説明できるわけではないのですが、しいて言うと「おまえ、高級言語じゃないだろ」という感じでしょうか。普段、C++やRuby、最近ではHaskellなどに触れているせいでしょうか、Cでは作りたいソフトウェアの直接的な表現ができない感覚があります。アセンブリ言語と同じカテゴリに入れたくなる気分。
普段仕事でC++を使っているのも、Cから異質な感じを受ける原因かも知れません。C++らしくないコードを見るたびに、異質な感じを受けるわけですが、それがえてしてCっぽいコードだったりするわけで(「オブジェクト使えっ!…とか言いたくなるコードです)。あらためてCとC++は違う言語なんだなと思うわけです。