ページ 11

プログラミングについて、また、龍神録について

Posted: 2013年6月07日(金) 22:39
by mi_l
今日、通学先でプログラミングに長けている先生(教授)にC++の質問をしたところ、「ベターC」とかいう単語が出てきました・・・

気になって調べたのですが、そこには、「C++コンパイラを使ってCとまったく同じように書くことができる」や「Cの知識しかなくても少しの説明で書ける」とか書いていました・・

しかし、調べはしましたがいまいちどういうものなのか実感がわきません・・・


ここで質問なのですが、(皆様個人の考えで大丈夫です(お願いします))

1、ベターCとC++の決定的な違い、

2、双方の将来性

3、どちらの学習を推奨するか

4、ベターCでつくられた代表的なもの


また、ベターCは「C++からオブジェクト指向を除いたもの」とも書かれていました・・・

そこで、竜神録のソースコードはベターCなのかC++なのかどちらなのでしょうか?

C++のオープンソースはちょこっと(ページ下部に)載ってますし、ですがC++の学習で「typedef」の構造体はありましたし・・・

いったいどちらなのでしょうか?

クラスを使ってない = C++じゃない!というわけではないのだと私は思っているのですが・・・そこの境界線もわかりません。

基礎的なことなのだと思いますが知らないで恥をかくよりいいので・・・
ご教授お願いします。

Re: プログラミングについて、また、龍神録について

Posted: 2013年6月07日(金) 22:51
by びぎなぁ
C++のコンパイラーでは

コード:

for(int i = 0;i<10;i++){//この中括弧内でiが生成される
  //処理
}//ループの終了と共にiは消滅する
 
という記述はコンパイルが通りますが、
厳密なCのコンパイラー(ANSI-Cとか?)では上の記述は通らないみたいです。

こういう類のことを言っているのではないかなと、初心者の僕は考えます

Re: プログラミングについて、また、龍神録について

Posted: 2013年6月07日(金) 23:03
by softya(ソフト屋)
ベターCは、私の印象だと難しいC++の機能であるクラス、テンプレートを自分で書かないって形ですが、便利なクラスは使います。
つまり、stringクラスやらvectorクラスなどは使ってしまうって書き方です。
そういう意味では、龍神録(オープンソースC++版を除く)は、C言語の文法の範囲で書かれています。
一部C99的な記述が見受けられますが、C++じゃなくても書けます(VC++のC言語はC89なので書けません)。

1、ベターCとC++の決定的な違い、
上記に書いた通りです。
C言語の知識にプラスα程度の知識で使える機能までしか使わないと言うことです。
明確な定義が有るわけではなく、そういう人がいるって事から付いた名前だと思います。
名ばかりのクラスと言う例も沢山あると思います。つまり、クラスを使っていても構造化プログラミングにすぎないと言うパターンです。

2、双方の将来性
ベターCがメインに踊り出ることは無いと思います。
と言うより実在しているが、日陰者だという感じです。

3、どちらの学習を推奨するか
学習の途中経過としては構わないと思いますし、アマチュアが制作で使う分には問題ありません。
ただ、C++を学習したとはとても言えませえん。

4、ベターCでつくられた代表的なもの
無いと思います。
実在はしてしまっていると思いますが、大きな声では言えません。

Re: プログラミングについて、また、龍神録について

Posted: 2013年6月07日(金) 23:17
by mi_l
竜神録のプロジェクトをみると、C++版のほうが圧倒的にC++ファイル数が多いですよね・・・


たとえば、竜神録に似たようなシューティングゲーム(簡単に言えば竜神録の劣化版)をまた、次は自分の力だけで作ろうとした際に、C++でものすごいファイル数で書くのか、紹介されているソフト屋さんの言う通りであろうC言語的な文法でC++よりはファイル数が少ないやりかたで書いた方がいいのか・・・

どちらを推奨しますか?

Re: プログラミングについて、また、龍神録について

Posted: 2013年6月07日(金) 23:29
by びぎなぁ
mi_lさんが目指すところによると思いますよ?

下にあるような3Dアクションゲームのようなものを作ろうと思うなら、コードの管理が楽なC++のほうがいいと思われます。
グループ製作のようなことをする場合、オブジェクト指向のカプセル化や継承などは大いに役に立つと思います。

逆に、一人で細々と作る程度なら、別にC言語のみでも大丈夫でしょう。
自分で、グローバル変数や構造体、列挙、ヘッダーファイルなどの管理さえできれば。
ただしコード量が多くなればなるほど、スパゲッティーコードになる可能性が高いです。

結論:開発規模による。

Re: プログラミングについて、また、龍神録について

Posted: 2013年6月07日(金) 23:30
by ISLe
C言語しか知らないひとがC++の文法のおいしいところだけ使って書くコードのことをベターCと呼びます。
どの程度を使うかとか明確な定義はありません。

C++からオブジェクト指向を除いたもの、というよりは、構造化やオブジェクト指向の理解が十分でない者が書いたコードに対して、皮肉を込めて使われる場合が多いかと思います。
要するにベターCなコードというのはレベルの低いコードということですから、あれはベターCなどと言ったら角が立つのでふつうは言いません。

Re: プログラミングについて、また、龍神録について

Posted: 2013年6月07日(金) 23:36
by softya(ソフト屋)
完全なC++の場合、コードは増えると思います。
ただ、ちゃんとC++として書けているなら各cpp間の結合度は低いので増えても苦になりません。

あとファイル数とC++かC言語であるかは関係ないです。構造化プログラミングをちゃんとすればするほどファイルは増えますよ。
傾向的にはC++の方が冗長な書き方になるので増えるとは思いますが。

龍神録の場合、分かりやすさ優先でわざとグローバル変数多用で作られています。
なので、比較対象としてもC++版と比べるのは間違っています。

Re: プログラミングについて、また、龍神録について

Posted: 2013年6月07日(金) 23:38
by mi_l
皆様教えてくださりありがとうございます。