続き C++は複雑かっていう話

続き、とは言っても直接は関係無いんだけど。
C++使いにC++の利点を聞くと、テンプレートの話をする、っていうのが、「C++は複雑だ」っていうイメージを強調しすぎてるんじゃないか。と。いう話。


鋳薔薇スレで、「ガレッガはもともとああいうふうに楽しむものではなかった」っていう話があった。

64 :ゲームセンター名無し :05/01/11 23:08:13 ID:???

ガレッガで自爆しないといけない(義務感)、でも自爆が釣合うほどうまく稼げない(苛立ち)、といった点がマイナスなら、
それを省いて遊べばいいんだよな。
最初のうちは5面までいければいいや、というつもりでプレイするなら、
ガレッガは割と人を選ばないゲームにも思える。
4〜5面まで安定して行けるようになって、5〜6面で安定して全滅して…というあたりから
稼ぎと自爆の情報を知れば、実行もしやすい。
自爆を知る前に4〜6面に安定して行けるようになり、そこでランクシステムを知るのが
たぶん楽しむ上ではベターなんだろうな。当時リアルタイムでやってた人はそうだろうし。
いまどきはメディアで語れる知識だけ先に広まってしまうから、そういった遊び方は不可能だが。 

シューティングわからない人に簡単に説明しておくと、バトルガレッガというのは、「自機が弾を撃ったり、敵を倒したりするとランクが上がる(難しくなる)。自機がやられるとランクが下がる(簡単になる)」というシステムに非常に意味があって、その都合上、時には、敵を倒さないで進んだり、また、状況によっては、自爆したりしないといけないとかで、ある意味「究極のマゾゲー」というゲーム。
これだけ聞くと、「そんなのどうかしてる」と思うのだけど、リアルタイムでやってた人達からしたら、「最初は普通に撃って、墜として楽しめるゲーム→けど5,6面から先に進めない→じゃあ、ランク調整が必要なんじゃないか。」という流れになってて、それは普通に受け入れられた、という話。


でも、今、シューターに、ガレッガの話を聞くと、その段階をすっとばして、一番とがった部分である、「自爆システム」の部分がまず説明される。
ガレッガの魅力は、「弾を撃って敵を墜とすとこ」ではあるんだけど、「それだったら普通のシューティングでは?」と、なってしまうので、一番とがった部分だけが強調されてしまう。
結果として、ガレッガ=究極のマゾゲー。という感じになる。


ここまで、長い前フリ。同じようなことがC++にもあるよね、と。
C++の魅力は「Cみたいに書けて、オブジェクト指向なプログラムが書ける」ではあるんだけど、「それだったらJavaと同じでは?」と、なってしまうので、「テンプレートを駆使してなんでもできるところ」と、説明してしまう。
そうすると、C++初学者がいきなりテンプレートから勉強しはじめる…というようなことにはならないかもしれないけど、「テンプレートでメタプログラミングができないとC++は使えない」というようなイメージを植え付けてしまう。で、その結果として、「C++は複雑で使えない」となってしまう。
実際に、段階を踏んで学んでいけば、テンプレートが便利で使いやすい物である、と理解するのはそんなに難しいことではないんだけど。



まあそんな感じ。
で、ベテランの説明は基本的なところを飛ばしているので危険だよなぁ。と、いう話は、どの世界でもあると思うんだけど、特に、プログラミングというのは、技術の中に思想や哲学を若干含められるので、その危険性が他よりも大きいような。


うまくまとまらん。

  • C++は複雑ではあるけど、複雑さが強調されすぎてる感じがある。実際、JavaC#もあんまり変わらんと思うのだけど。
  • あと、プログラミングの場合は特に、ベテランのいうことはあまり聞かないほうがいい。