2009年03月28日
川俣晶の縁側ソフトウェア技術雑記 total 9709 count

C#を病的に嫌う者が出現する理由を示す「Pascal踏み絵」仮説

Written By: 川俣 晶連絡先

 とある原稿を書いている際に突然思いついた仮説です。

背景 §

 C#は、ストレス無く使用できる者と、嫌悪する者の落差が極めて大きいように感じられる。これは理屈の問題ではないように感じられる。まるで、生理的な気持ち悪さに起因するかのように、受け入れられる者と受け入れられない者の間に境界線が存在するようである。

考察 §

 C#は「Cの構文で書くDelphi」とも呼ばれる。

 DelphiのルーツはPascalである。

 従って、Pascal的な発想やネーミングに慣れた者は、C#の世界に入って行きやすい。

 一方で、C的な発想やネーミングに慣れた者は、C#の世界と互換性を持たないため、容易には入って行くことができない。

 しかし、表面的にCと構文が似ているために、「容易に入っていけるはずである」という錯覚を誘発しやすい。また、C++やJavaのような、他のCと似た言語には容易に入って行けたのだから、C#も同じはずであるという錯覚を誘発しやすい。

Pascal的とは何か (一例) §

  • 同値比較の演算子で文字列が同じであると判定するのは普通のことである
  • 出力を印象づけるキーワードはWriteであり、改行を含む場合はWriteLnである
  • 変数宣言はvarで始める

C的とは何か (一例) §

  • 同値比較の演算子で文字列が同じであると判定できないのは普通のことである
  • 出力を印象づけるキーワードはputやprintであり、改行を含む場合は\nを入れる
  • 変数宣言は型名で始める

「Pascal踏み絵」仮説 §

 Pascalとそれの影響を受けていると思われる言語(Delphi, Modula-2, QuickBasic, Visual Basic, JavaScript)に親しんだ経験があれば、C#はストレス無く受容できる。

 C言語またはそれに似た言語(C++, Java)に「のみ」慣れ親しんだプログラマは、C#をそのままでは受容できないが、受容できない理由を理解できない可能性が高い(※)。従って、理屈では割り切れない生理的な嫌悪感を発生させる可能性が生じる。

※ 自分が知る世界の範囲内で確定した常識は、異なる常識が支配する世界を知らない限り、揺るがない暗黙の前提として疑いを挟まずに使用される可能性が高い。

つまり §

 C, C++, Javaあたりを知り尽くし、Visual BasicやJavaScriptはダメなパチモン言語と蔑んで真面目に見ようともしない……といったタイプはこの罠にストレートに落ちてしまい、C#に理解不能の嫌悪感を感じる可能性がある……という仮説です。

 逆に言えば、アセンブラからC言語へ進む過渡期に、一時的にTurbo Pascalプログラマをやっていた私は、実はその時代にC#を素直に受容できる資質を醸造していた、というわけです。

長所 §

 この仮説の長所は、「CやC++も囓ったことのある割と物知りを自負するJavaプログラマ」が、全く理屈も筋も通らない嫌悪感をC#に向けるメカニズムを説明できる点にあります。

 もう1つ、varで変数を宣言して==で文字列の一致を判定できるJavaScriptが、なぜ長い間差別的に蔑まれてきたのか、という理由も説明できます。これもまた、C風の構文で書くPascal由来の言語と考えられ、位置づけがC#と同じになります。

短所 §

 この仮説が正しいとすれば、C#に対する差別やバッシングを止めることは、理屈では出来ないことになります。

重要な補足 §

 単なる仮説だから、信じてはいかんぞ。