簡単&お手軽C++入門サイト構築について [雑談]

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

簡単&お手軽C++入門サイト構築について [雑談]

#1

投稿記事 by たかぎ » 9年前

別のトピックで少し話が出たので、改めてトピックを立て直します。

C++を難しくしているのは、Cと共通の部分をCと同じように使う方法から習得しようとするからです。
C++の便利で手軽な機能をフルに使うつもりで覚えるのであれば、そして、Cでやるような低水準なプログラミングに手を出さなければ、軽量言語と変わらないぐらい簡単になります。

この方針で、簡単&お手軽にC++を学ぼうという趣旨の入門サイトを作るというのが今回の趣旨です。
効率の良いプログラムや、信頼性の高いプログラムを目指すのではなく、まずは手軽にC++によるプログラミングを楽しんでもらえるようなものにするつもりです。

できれば何人かで寄ってたかって作りたいと考えています。
興味のある方は手をあげてください。
また、そんな入門サイトは必要ないという意見も歓迎です。

なお、私自身がそれほど時間を割けるわけではありませんので、手をあげられた方で主に執筆してもらいます。
間違いは指摘・訂正しますし、質問には答えますので、今現在の知識・経験・能力は問いません。
ただ、プログラミング自体まったくの未経験だと厳しいと思います。
外国人とか、小学生とか、国語が怪しい人もちょっと厳しいでしょうね。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#2

投稿記事 by softya(ソフト屋) » 9年前

はい、参加させていただきます。
私も色々と忙しいので、他の方の参加をお待ちしています。
知識的にも自己流のC++で会社の仕事で使ったことがありません。自信がないところが多数ありますのでご協力をお願いします。

あと参加すると言いながら、作るサイトの構成イメージが出来ていないのでたかぎさんの説明をぜひお願いします。
STLとかを中心でしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#3

投稿記事 by たかぎ » 9年前

softya(ソフト屋) さんが書きました:あと参加すると言いながら、作るサイトの構成イメージが出来ていないのでたかぎさんの説明をぜひお願いします。
STLとかを中心でしょうか?
ざっと次のような流れを考えています。

--- 構成案ここから ---
最初は文字列操作から入ってはどうかと考えています。
std::stringを使えば簡単にできますので、文字列をいろいろ加工しながらstd::coutで出力させます。

次に、数値と四則演算を解説します。
型に関する説明もここでやるべきでしょうね。

それからコンテナです。とりあえずstd::vectorとstd::mapだけでよいと思います。
対象とする処理系によっては、std::initializer_listを使って、お手軽に初期化する方法を中心に進めてもよいかもしれません。

この段階で、std::for_eachやstd::copyなどのアルゴリズムを扱います。
関数や関数オブジェクトはまだなので、ラムダ式を使って述語を記述させます(次章のほうがよければ、ここで扱うアルゴリズムは、std::findなどの述語がいらないものにする)。
各アルゴリズムの実装方法という形で選択文や繰り返し文の説明をします。
例外処理もここで解説します。

そして、関数の定義方法に入ります。
先行して出てきたラムダ式についても、もう少し詳しく解説します。
オブジェクトの生存期間と有効範囲もここで解説します。

この辺りで構造体の説明に入ります。
ついでに、メンバ関数と関数オブジェクトについて触れます。
名前空間もここで解説します。

関数の多重定義と関数テンプレートを同時に解説します。
そして、構造体のテンプレート化も扱います。

アクセス指定子を解説し、継承を以外のクラスの定義方法を一通り解説します。
new演算子とスマートポインタを解説します(delete演算子はあえて後回しにする)。

さまざまなライブラリ機能について解説します。
参照型についてもここで解説します。
また、Cスタイルのライブラリとのインタフェースに絡めて、ポインタを説明します。

ここまでの段階で割愛してきた細部について補完します。
また、移植性についても言及します。

今後の学習の進め方を示唆します。
--- 構成案ここまで ---

具体性がないと分かりにくいので、特定処理系に絞った説明を行えばよいかと考えています。
他の処理系については、必要に応じて別バージョンを作ればよいので。

あと、Boost C++ Librariesありきで解説してもよいかと考えています。
RubyやPHPの入門サイトでも、RailsやPEARの話が出てくるのであれば、C++の入門サイトでBoostが出てくるのはある意味当然ですから。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#4

投稿記事 by softya(ソフト屋) » 9年前

思ったより大変そうです(汗)
スマートポインタとか、そのレベルまで踏み込んで簡単なんでしょうか?
軽量言語(javscirptなど)よりも難度が上がる気がしますが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#5

投稿記事 by たかぎ » 9年前

softya(ソフト屋) さんが書きました:スマートポインタとか、そのレベルまで踏み込んで簡単なんでしょうか?
簡単です。

コード:

std::shared_ptr<Type> p(new Type);
初期化のときだけ上記のようにしておけば、あとは*演算子や->演算子が使えます。
deleteの必要もありません。この点ではGCを備えた言語と同じぐらい楽になります。
さらに、Disposeを明示的に呼んだり、usingステートメントを使わなければならないC#よりずっと楽です。

逆に、スマートポインタを使わなければ、必ず自分でdeleteしなければなりませんし、うっかりインクリメントやデクリメントしたりして混乱のもとになります。
最初にコンテナの反復子を、次にスマートポインタ、参照を解説した上で、ポインタの説明をすれば、その使いどころがはっきりします。
というか、CやCと同じように実装されたモジュールとのインタフェース以外ではポインタは原則不要です(ポインタの方が望ましい状況はあるにはありますが...)。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#6

投稿記事 by softya(ソフト屋) » 9年前

やはり、ポインタは避けて通れないでしょうか?
難易度を下げるためにスマートポインタとは言え避けたいんですが。

それはそれとして、自分の都合の良い時に少しづつ進めるしか無さそうですので、メンバーが私一人では数年以上かかるかなり気長な作業になると思われます。
かなり規模を抑え目にするって事は意味が無いでしょうか?これだと一冊分の本の規模になりそうで。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#7

投稿記事 by たかぎ » 9年前

softya(ソフト屋) さんが書きました:やはり、ポインタは避けて通れないでしょうか?
難易度を下げるためにスマートポインタとは言え避けたいんですが。
ポインタを避けるとファイルの入出力ができなくなります。
残念なことに、std::fstreamのコンストラクタやopen関数は、std::stringではなくconst char*としてファイル名を受け取りますので。
boost::filestream::fstreamを使えばポインタは回避できますが、かえって話をややこしくしそうです。

スマートポインタは避けてもかまいませんが、動的なオブジェクト生成を捨てることになります(それでもいいといえばいいですが...)。
さすがにnewを知らずにC++を習得した気になられても困りますね。
それに、多くのスクリプト言語でもnewやそれに相当するものが存在します。
ですので、これによって難度が上がるということはないはずです(学習の難度の話であって、執筆の難度の話ではありませんよ)。

オブジェクトを参照するためのポインタの用法についても、比較的最初の段階で可変変数を持ち出しているPHPの入門サイトがあるぐらいですから、それがOKならポインタもOKでしょう。
すでに反復子の話は終わっていることが前提ですので、ポインタといっても反復子の一形態でしかありませんし。
softya(ソフト屋) さんが書きました:それはそれとして、自分の都合の良い時に少しづつ進めるしか無さそうですので、メンバーが私一人では数年以上かかるかなり気長な作業になると思われます。
すぐに着手できるわけでもないので、気長にメンバが集まるのを待ちましょう。
できれば、サイトの環境構築とか、そっちの協力をお願いできれば、最悪私が書き進めます。
softya(ソフト屋) さんが書きました:かなり規模を抑え目にするって事は意味が無いでしょうか?これだと一冊分の本の規模になりそうで。
優先順位の高いものは最初に書くようにしていますので、後ろの項目は時間がかかっても問題ないでしょう。
まあ、もう少し構成については詰めるか、順序通りに書いていかないかで、最低限のプログラミングができるところまではもっていけると思います。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#8

投稿記事 by softya(ソフト屋) » 9年前

たかぎ さんが書きました:ポインタを避けるとファイルの入出力ができなくなります。
残念なことに、std::fstreamのコンストラクタやopen関数は、std::stringではなくconst char*としてファイル名を受け取りますので。
boost::filestream::fstreamを使えばポインタは回避できますが、かえって話をややこしくしそうです。

スマートポインタは避けてもかまいませんが、動的なオブジェクト生成を捨てることになります(それでもいいといえばいいですが...)。
さすがにnewを知らずにC++を習得した気になられても困りますね。
それに、多くのスクリプト言語でもnewやそれに相当するものが存在します。
ですので、これによって難度が上がるということはないはずです(学習の難度の話であって、執筆の難度の話ではありませんよ)。

オブジェクトを参照するためのポインタの用法についても、比較的最初の段階で可変変数を持ち出しているPHPの入門サイトがあるぐらいですから、それがOKならポインタもOKでしょう。
すでに反復子の話は終わっていることが前提ですので、ポインタといっても反復子の一形態でしかありませんし。
そうですね。やはり無理ですよね。
避けすぎて実用度0でも困りますからね。
実際にDXライブラリとかを使えないC++の覚え方はさせないって事で了解しました。
簡単にするってことばかりに頭が奪われていた様です。
たかぎ さんが書きました:すぐに着手できるわけでもないので、気長にメンバが集まるのを待ちましょう。
できれば、サイトの環境構築とか、そっちの協力をお願いできれば、最悪私が書き進めます。
ペースが遅いかも知れませんが、お手伝いはさせていただきます。
たかぎ さんが書きました:優先順位の高いものは最初に書くようにしていますので、後ろの項目は時間がかかっても問題ないでしょう。
まあ、もう少し構成については詰めるか、順序通りに書いていかないかで、最低限のプログラミングができるところまではもっていけると思います。
構成については、こちらでも検討させていただいて後でまたコメントさせていただきます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#9

投稿記事 by たかぎ » 9年前

softya(ソフト屋) さんが書きました:そうですね。やはり無理ですよね。
避けすぎて実用度0でも困りますからね。
実際にDXライブラリとかを使えないC++の覚え方はさせないって事で了解しました。
簡単にするってことばかりに頭が奪われていた様です。
DXライブラリは、よくいえばCの知識だけで使えるわけですが、いいかえるとCと同じ低水準なプログラミング知識が要求されますからね。
もっとも、C++からCのライブラリを使いたいという状況はよくあるわけで、DXライブラリ抜きにしても、その辺のことは避けられません。
ひとついえることは、軽量言語からCのライブラリを呼び出すのは非常に難度が高いのですが、C++からなら簡単にできてしまいます。
この辺もC++の利点ですので、トータルすると下手な軽量言語より簡単になる可能性は十分あるのです。

アバター
a5ua
記事: 199
登録日時: 9年前

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#10

投稿記事 by a5ua » 9年前

大変興味があります。

C++らしい入門サイトというのは、確かに少ないと思っていたので、大変よい試みだと思います。
私は、C++は割と得意なので、手伝えることがあったらぜひ参加したいです。

ただ、私は、サイト構築に関しては素人なのですが、
どのような形で、執筆をしていく予定なのでしょうか?
(wiki形式でメンバーが編集していく形になるんでしょうか)

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#11

投稿記事 by たかぎ » 9年前

a5ua さんが書きました:C++らしい入門サイトというのは、確かに少ないと思っていたので、大変よい試みだと思います。
私は、C++は割と得意なので、手伝えることがあったらぜひ参加したいです。
a5uaさん、ありがとうございます。
a5ua さんが書きました:ただ、私は、サイト構築に関しては素人なのですが、
どのような形で、執筆をしていく予定なのでしょうか?
(wiki形式でメンバーが編集していく形になるんでしょうか)
ひとりで執筆するのであれば一番楽なのはテキストファイルですが、複数メンバで作業するにはイマイチですね。
Subversion等で管理しても、日本語の文章の場合はうまくいきそうにありませんし。

やはり、Wikiが一番手っ取り早いでしょうね。
どこかにPukiwikiでもインストールしましょうか?
本当は、ソースコードを書くのが楽で、データベースを使わないWikiがほしいのですが、何がよいかアイデアがある方は教えてください。

taketoshi
記事: 221
登録日時: 9年前
住所: 日本国

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#12

投稿記事 by taketoshi » 9年前

凄く興味があります。

参加する側ではなく、勉強させて頂く側としてです。
CからC++にステップアップしている最中ですが、やはりC++は難解です。
クラスの記述などは慣れましたが、文字列操作なんかはさっぱりです

「cout???printfでいいじゃん?」
「STL?何が出来るのか一覧は??」

といった具合です。
おそらくC++に特化した部分は置き去りにして学習していると思います。
Cを捨ててC++に移行したいなぁと思うのですが、その足がかりにも成っていただけるとうれしいですね。

応援しております。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#13

投稿記事 by たかぎ » 9年前

taketoshi さんが書きました:参加する側ではなく、勉強させて頂く側としてです。
そういわずに是非執筆してください。
他人が書いたものを読むより、自分で理解できるまで勉強してから書く方が絶対勉強になりますから。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#14

投稿記事 by softya(ソフト屋) » 9年前

「@wiki( アット ウィキ )無料 wiki レンタルサービス」
http://atwiki.jp/
を利用してますが広告が入ります。それで問題なければ。

私の開設しているページです。
「8ビットマイコン Japanino(ジャパニーノ) まとめ @wiki 学研 大人の科学マガジン Vol.27 - トップページ」
http://www35.atwiki.jp/japanino/
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#15

投稿記事 by たかぎ » 9年前

softya(ソフト屋) さんが書きました:「@wiki( アット ウィキ )無料 wiki レンタルサービス」
http://atwiki.jp/
を利用してますが広告が入ります。それで問題なければ。
@wikiは知っていましたが、ソースコードはどうですか?

たとえばPukiwikiとかだと、行の先頭に空白文字を入れると等幅フォントにできるのですが、色分けとかもできませんし、いまいちです。
それなりのプラグインを入れればかなりましになるものの、結構面倒です。
WikiNameもうっとうしいですね。

広告はOKだと思います。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#16

投稿記事 by softya(ソフト屋) » 9年前

試しに書いてみました。
http://www35.atwiki.jp/japanino/pages/36.html
タブ8なのは変えれるかもう少し調べてみます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#17

投稿記事 by たかぎ » 9年前

softya(ソフト屋) さんが書きました:試しに書いてみました。
http://www35.atwiki.jp/japanino/pages/36.html
タブ8なのは変えれるかもう少し調べてみます。
確認ありがとうございます。
タブ8はともかく、この色はさすがに我慢できませんね。
色の設定は自由にできますよね(CSSで)?

Suikaba
記事: 194
登録日時: 9年前

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#18

投稿記事 by Suikaba » 9年前

おお!!大変興味深いですね。
いつもC++を勉強している入門者です。
とはいってもC++大好きですけどね。。。
がんばってください!応援してますw

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#19

投稿記事 by softya(ソフト屋) » 9年前

たかぎ さんが書きました:
softya(ソフト屋) さんが書きました:試しに書いてみました。
http://www35.atwiki.jp/japanino/pages/36.html
タブ8なのは変えれるかもう少し調べてみます。
確認ありがとうございます。
タブ8はともかく、この色はさすがに我慢できませんね。
色の設定は自由にできますよね(CSSで)?
この色はデフォの物の内の1つなので変更できます。
cssも編集可能です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#20

投稿記事 by たかぎ » 9年前

タブ幅は変更できそうにないですね。
そもそも、HTMLでタブを使うこと自体が間違いなので、半角スペースを入れることで対応したほうがよさそうです。

アバター
tk-xleader
記事: 153
登録日時: 9年前
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#21

投稿記事 by tk-xleader » 9年前

割り込んで申し訳ありませんが、ラムダ式やstd::initializer_listを使うということは、C++0xを前提とするということでしょうか?
C++0xは、おそらく今年中あるいは来年あたりには新規格として正式に確定するのでしょうけれども、まだ正式に規格になったわけではありませんし、正式に規格になったとしても、しばらくの間は処理系の対応度がまちまちになるのではないでしょうか?
0xで新たに採用された文法に関しては、それを解説するかどうかのガイドライン(たとえば3つ以上の処理系でコンパイルが通る。など)を定めておく必要があると僕は思います。

計画そのものに関しては賛成の立場です。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#22

投稿記事 by たかぎ » 9年前

tkmakwins15 さんが書きました:割り込んで申し訳ありませんが、ラムダ式やstd::initializer_listを使うということは、C++0xを前提とするということでしょうか?
はい、そうです。
確かにまだ正式に標準規格になったわけではありませんが、Visual C++ 2010やGCC 4.xではある程度実装が進んでいます。
対象とする処理系を固定することで、問題なく利用できるものと考えています。
C++0xなしでもよいのですが、それだけ面倒な部分が残りますので、今回の趣旨に反してしまいます。

なお、移植性は最後のあたりで少し触れる予定ですが、今回はそれほど重視しません。
というか、移植性のあるコードを書くのは、C++0x云々以前に、かなり難度が高いですからね。

アバター
tk-xleader
記事: 153
登録日時: 9年前
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#23

投稿記事 by tk-xleader » 9年前

>たかぎさん

すばやい回答ありがとうございます。確かに移植性というのは難しい問題でありできれば避けたいものですね。
執筆には参加できそうならば参加したいと思います。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#24

投稿記事 by たかぎ » 9年前

話を簡単にするために、特定の処理系に絞った解説を行おうと考えています。
そこで、処理系を何にするか、ご意見ください。
といっても、候補としてあがるのは、次の4つぐらいです。

1. Visual C++ 2010
2. Borland C++ Compiler
3. MinGW
4. Cygwin

それぞれのメリットとデメリットをあげていきます。

1. Visual C++ 2010
メリット
 ・強力なIDEがある。特にデバッガがよい。
 ・DXライブラリを使える。
デメリット
 ・UNIX由来の多くのライブラリが使えないか、使いにくい。
 ・サイズが大きく、手軽さに欠ける。
 ・「_s付きの関数を使え」など、理不尽な警告が初心者を惑わす。
 ・バージョンアップによって旧バージョンが入手不可または困難になり、サイトの情報が陳腐化する。
 ・IDEを使うことを前提とした場合、本質ではない部分の解説に多大な労力を払う必要がある。

2. Borland C++ Compiler
メリット
 ・エラーメッセージがわかりやすい。
 ・DXライブラリを使える。
 ・サイズが小さく、手軽に使える。
デメリット
 ・標準準拠度が低い
 ・C++0xおよびTR1のサポートなし。
 ・ライブラリのバグが多い
 ・UNIX由来の多くのライブラリが使えないか、使いにくい。
 ・ベンダーの意向によっては、いつ入手できなくなるかわからない。

3. MinGW
メリット
 ・C++0xの対応状況がよい。
 ・サイズが小さく、手軽に使える。
 ・UNIX由来のライブラリを比較的使いやすい。
 ・将来にわたって安定的に入手できる。
 ・LinuxやMac OSXでも、解説の主要部分はほぼそのまま使える。
 ・DXライブラリを使える。
デメリット
 ・DXライブラリが使えない、あるいは使いにくい。
 ・エラーメッセージが英語。日本語化できるが、かえってわかりにくい。
 ・printf/scanf系関数がまともに動かない(今回は不要?)。

4. Cygwin
メリット
 ・C++0xの対応状況がよい。
 ・UNIX由来のライブラリが使える。
 ・LinuxやMac OSXでも、解説の主要部分はほぼそのまま使える。
デメリット
 ・DXライブラリが使えない。
 ・サイズが大きく、手軽さに欠ける。
 ・エラーメッセージが英語。日本語化できるが、かえってわかりにくい。
 ・バージョンアップによって旧バージョンが入手不可または困難になり、サイトの情報が陳腐化する。
 ・ワイド文字まわりのライブラリがサポートされない。

このように一長一短があります。
私自身はDXライブラリには未練はないのですが、多くの人には必要なようですし、迷うところです。
最後に編集したユーザー たかぎ on 2011年4月26日(火) 17:22 [ 編集 2 回目 ]

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#25

投稿記事 by softya(ソフト屋) » 9年前

いつの間にかGNUC++版のDXライブラリがお目見えしてました。
http://homepage2.nifty.com/natupaji/DxLib/dxdload.html
調べた上で後ほどレポートします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#26

投稿記事 by たかぎ » 9年前

softya(ソフト屋) さんが書きました:いつの間にかGNUC++版のDXライブラリがお目見えしてました。
http://homepage2.nifty.com/natupaji/DxLib/dxdload.html
調べた上で後ほどレポートします。
本当だ...
まだ、つい最近の話なんですね。
先ほどのメリット・デメリットを編集しておきます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#27

投稿記事 by softya(ソフト屋) » 9年前

とりあえずDXライブラリをDXライブラリ本家ご推薦のDEV-C++でコンパイルしてみました。
あれ?エラーが(^^;
それとDEV-C++ってgcc3.4系なんですよね。
DEV-C++は導入が楽だけど推薦環境には出来ませんねぇ。

とりあえずエラー原因を探ってみます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#28

投稿記事 by たかぎ » 9年前

softya(ソフト屋) さんが書きました:とりあえずDXライブラリをDXライブラリ本家ご推薦のDEV-C++でコンパイルしてみました。
あれ?エラーが(^^;
それとDEV-C++ってgcc3.4系なんですよね。
DEV-C++は導入が楽だけど推薦環境には出来ませんねぇ。

とりあえずエラー原因を探ってみます。
どんなエラーが出ました?
確か、GCC 3.xと4.xでは、微妙にABIが違った気がします。
それに、最近のMinGWは、--disable-sjlj-exceptionsでビルドされているのですが、以前のものは--enable-sjlj-exceptionsでビルドされています。
その差でもリンクエラーが発生するはずです(unwindなんとかかんとか...というエラーが出ます)。

いずれにせよ、時代を逆行するようなGCC 3.4は話になりませんね。
もし、MinGWを対象処理系に選ぶのであれば、それ用にビルドしたDXライブラリも用意して、本家にフィードバックする必要がありそうです。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#29

投稿記事 by たかぎ » 9年前

こちらでも調べてみました。
結論からいうと、GCC 4.5.2でのビルドに成功しました。
何となく動いているようにも見えます。

エラーの出た個所ですが、DxDirectX.h の 6854行目が次のようになっていたためです。

コード:

D_IMediaSample    *D_CTransInPlaceFilter::Copy(D_IMediaSample *pSource);
これは明らかにDXライブラリの不具合で、おそらくはVC++でもBCCでもエラーチェックが甘かったために顕在化していなかったのではないかと思います。
正しくは、次のようにしなければなりません。

コード:

D_IMediaSample    *Copy(D_IMediaSample *pSource);
あと、エラーにはなりませんが、文字列リテラルを(constのない)TCHAR*の引数に渡そうとして警告が出ているような箇所がありました。
これも、ある意味でDXライブラリの不具合です。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#30

投稿記事 by たかぎ » 9年前

これは推測ですが、Dev-C++に付属しているGCC 3.4では、リンクエラーが発生してうまく動かないような気がします。
DXライブラリ自体、どんなバージョンでコンパイルされたものなのかもよくわかりませんので、MinGWといっしょに使うのであれば、ビルドしなおしたほうがよさそうですね。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#31

投稿記事 by softya(ソフト屋) » 9年前

ありがとうございます。
まだエラー原因を確認してないので、4.5でコンパイル出来るように設定を変えてみます。
これだと、DXライブラリの作者さんもgcc4x系を使われている可能性が高いわけですね。ヘルプでは何も書いてなかったですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#32

投稿記事 by たかぎ » 9年前

softya(ソフト屋) さんが書きました:これだと、DXライブラリの作者さんもgcc4x系を使われている可能性が高いわけですね。ヘルプでは何も書いてなかったですが。
書いていないのは問題ですね。
後ほど、あちらの掲示板に書き込むなどして、作者にバグ報告とビルド環境掲載のリクエストをしておきます。

今回我々が作ろうとしているサイトで対象とする処理系ですが、IDEの解説(ソリューションやプロジェクトの作り方、ビルド・実行方法など)を誰かが書いてくれるのであれば、そして、新しいバージョンが出るたびに追従してくれるのであれば、私はVisual C++ 2010で構わないと考えています。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#33

投稿記事 by softya(ソフト屋) » 9年前

私のところでVisualC++2010Expressがまともに動かないんですよね(^^;
前に原因を調べましたが、原因不明でした。
どんなプログラムでもコンパイルするとVisualC++2010Expressが異常終了してしまいます。
SP1がでたら直るかなと放置したあったので、最新情報を調べ直してみます。
どうしてもダメそうならXPMODEだけでも動くようにしてみます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#34

投稿記事 by たかぎ » 9年前

softya(ソフト屋) さんが書きました:私のところでVisualC++2010Expressがまともに動かないんですよね(^^;
前に原因を調べましたが、原因不明でした。
どんなプログラムでもコンパイルするとVisualC++2010Expressが異常終了してしまいます。
SP1がでたら直るかなと放置したあったので、最新情報を調べ直してみます。
どうしてもダメそうならXPMODEだけでも動くようにしてみます。
そういえば、私も似たような経験があります(詳細は忘れましたが...)。
Visual C++ 2010の印象がすごく悪くなって、しばらく放置していました。

その後、仕事を使わざるを得なくなって、改めて挑戦したのですが、今度は問題なく動いていました(遅いですが...)。
PCも別のものになりましたし、OSもXPからVistaと7になりましたし、エディションもExpressからProfessionalに変わったので、条件が全く違いますが...。

こんな状況だと、Visual C++ 2010は、自己解決できない初心者には推奨できそうにありませんね。
かといって、2008はいつ入手できなくなってもおかしくないので論外です。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#35

投稿記事 by たかぎ » 9年前

DXライブラリの本家の掲示板にバグレポートを書き込んでおきました。
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=2232

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#36

投稿記事 by たかぎ » 9年前

MinGWでDXライブラリのサンプルをコンパイルするためのMakefileを作りましたので、参考までにアップロードしておきます。
添付ファイル
Makefile.zip
(400 バイト) ダウンロード数: 52 回

アバター
lbfuvab
記事: 72
登録日時: 9年前

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#37

投稿記事 by lbfuvab » 9年前

的を外した意見かもしれませんが、
DXライブラリ等が必要になればユーザーは自分で適した処理系に乗り換えると思うので
①C++の準拠度が高い
②入手・導入が簡単である
③対象となるOSが多い
の三点だけに気を配れば良い様な気もします。

#最悪、簡易環境パッケージを作るという手も・・・(gcc&自作フロントエンド&notepad++とか)

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#38

投稿記事 by たかぎ » 9年前

lbfuvab さんが書きました:的を外した意見かもしれませんが、
DXライブラリ等が必要になればユーザーは自分で適した処理系に乗り換えると思うので
①C++の準拠度が高い
②入手・導入が簡単である
③対象となるOSが多い
の三点だけに気を配れば良い様な気もします。
そうなんですけどね。
この方針だと、自動的にGCC(実質的にはMinGW)以外の選択肢はなくなります。
lbfuvab さんが書きました:#最悪、簡易環境パッケージを作るという手も・・・(gcc&自作フロントエンド&notepad++とか)
MinGWの場合には、コンパイラ + MSYS + Boost C++ Librariesをワンセットにしてダウンロードできるようにするつもりです。
エディタは好みもあるので、自分で好きなものを選んでもらえばよいでしょう(主だったものの紹介ぐらいはあってよいと思います)。

しひ

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#39

投稿記事 by しひ » 9年前

学習の指標ができるのは、勉強中の身としてありがたいですね。
浅学者ではありますが、私も何らかの手伝いができればと思います。

ところで、対象を言語の初学者とするか、プログラムの初学者とするかで、
方針が大きく変わるのではと思いますが、今回はどちらを対象としているのでしょうか。
前者であれば、そこまで環境に拘らなくても良いような気がしますし、
後者であれば、単純な言語知識以外(環境構築やデバッグ云々)についても触れなければならない気がします。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#40

投稿記事 by たかぎ » 9年前

しひ さんが書きました:学習の指標ができるのは、勉強中の身としてありがたいですね。
浅学者ではありますが、私も何らかの手伝いができればと思います。
ありがとうございます。ぜひ執筆をお願いします。
しひ さんが書きました:ところで、対象を言語の初学者とするか、プログラムの初学者とするかで、
方針が大きく変わるのではと思いますが、今回はどちらを対象としているのでしょうか。
前者であれば、そこまで環境に拘らなくても良いような気がしますし、
後者であれば、単純な言語知識以外(環境構築やデバッグ云々)についても触れなければならない気がします。
プログラミング自体の初心者にも対応できるようにしたいと思います。
もっとも、他の言語の経験者相手であっても、開発環境の説明はある程度必要だとは考えています。

めるぽん

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#41

投稿記事 by めるぽん » 9年前

>たかぎさん
vector や string から教える良本といえば、C++ を作った本人である Bjarne Stroustrup が書いた Programming ― Principles and Practice Using C++ ( http://www2.research.att.com/~bs/programming.html ) があるので、まだ読んでなくて英語が辛くないのであれば一度通読をオススメします。
C++ の解説に関して何らかのヒントが得られるかもしれません。
Accelerated C++ も vector から教える良い本だというのを聞いたことあるのですが、私は読んだこと無いです。

# PPPUC++ は、日本語への翻訳はもう一通り終わってるのですが、なぜか発売されないのですよね・・・

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#42

投稿記事 by softya(ソフト屋) » 9年前

とりあえずVC++2010ExpressのXP MODEでのコンパイルは可能になりました(重いです)。
Win7 64bit版の方はVC++2010Express自体がコンパイル途中で異常終了するので使い物になりません(原因不明)。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
tk-xleader
記事: 153
登録日時: 9年前
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#43

投稿記事 by tk-xleader » 9年前

今のところVC2010EEで特に不具合は起こってはいませんけれども、重いことこの上ない…

C++0xを前提にするなら、Windows向けにはMinGWが一番いいと思います。IDEもそれなりにいいのがありますし…

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#44

投稿記事 by softya(ソフト屋) » 9年前

私もMinGWの方が良いですね。
VC++2010Expressは重すぎます(XP MODEですけどね)。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#45

投稿記事 by たかぎ » 9年前

めるぽん さんが書きました:>たかぎさん
vector や string から教える良本といえば、C++ を作った本人である Bjarne Stroustrup が書いた Programming ― Principles and Practice Using C++ ( http://www2.research.att.com/~bs/programming.html ) があるので、まだ読んでなくて英語が辛くないのであれば一度通読をオススメします。
C++ の解説に関して何らかのヒントが得られるかもしれません。
Accelerated C++ も vector から教える良い本だというのを聞いたことあるのですが、私は読んだこと無いです。

# PPPUC++ は、日本語への翻訳はもう一通り終わってるのですが、なぜか発売されないのですよね・・・
情報ありがとうございます。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#46

投稿記事 by たかぎ » 9年前

tkmakwins15 さんが書きました:今のところVC2010EEで特に不具合は起こってはいませんけれども、重いことこの上ない…

C++0xを前提にするなら、Windows向けにはMinGWが一番いいと思います。IDEもそれなりにいいのがありますし…
softya(ソフト屋) さんが書きました:私もMinGWの方が良いですね。
VC++2010Expressは重すぎます(XP MODEですけどね)。
やはり、MinGWでしょうね。
IDEは、使いたければ好きなものを使えばよいので、主だったものの紹介程度にとどめて、コマンドラインをベースにすすめてもよいかなと考えています。

MinGWにする場合、MinGW + MSys + Boost C++ Librariesをセットにしてダウンロードできるようにしようかと思います。

ISLe
記事: 2646
登録日時: 9年前
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#47

投稿記事 by ISLe » 9年前

いまのMinGWのデフォルト文字コード(という言い方で良いのでしょうか)はUTF-8になってませんか?
わたしはCygwin版のMinGW64コンパイラを使っているのでオリジナルの方は把握していないのですが、GCC自体がUTF-8に移行したみたいですし。
マルチバイト文字を含むソースファイルをUTF-8で保存しなければならないのが初心者には分かりにくいかもしれないと思いました。

#ウチではWin7(x64)でVC++2010Express(SP1)は快適に動作してます。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#48

投稿記事 by たかぎ » 9年前

ISLe さんが書きました:いまのMinGWのデフォルト文字コード(という言い方で良いのでしょうか)はUTF-8になってませんか?
わたしはCygwin版のMinGW64コンパイラを使っているのでオリジナルの方は把握していないのですが、GCC自体がUTF-8に移行したみたいですし。
Cygwinの場合、bashがUTF-8に移行したのです。
GCCは、バージョン3.4以降、-finput-charsetおよび-fexec-charsetで文字コードを指定するようになっています。
ISLe さんが書きました:マルチバイト文字を含むソースファイルをUTF-8で保存しなければならないのが初心者には分かりにくいかもしれないと思いました。
デフォルトはソース文字集合も実行文字集合(文字集合と文字コードは同じではありませんが、ここでは細かい話は抜きにします)もUTF-8です。
ですので、仮にソースファイルをUTF-8で保存したとしても、-fexec-charset=cp932を指定しなければ、コマンドプロンプトやMSysのbashでは正しく表示されません。
いずれにせよ、日本語を扱う際は文字コードの理解は不可欠です。
これは、いかに簡単&お手軽を目指すとしても、避けて通るべきではありません。
初心者に優しいとされているスクリプト言語でも、エンコーディングの話は普通に出てきます(ウェブで使うのであれば当然です)。
であれば、C++でも、その話を持ち出しても大きな問題はないはずです。
というか、その辺りの理解をさせないまま先に進む方が、むしろ初心者には優しくないのではないかと思います。
ISLe さんが書きました:#ウチではWin7(x64)でVC++2010Express(SP1)は快適に動作してます。
私が現在使っている環境、Windows 7(x64) + Visual C++ 2010 Professional Edition SP1でも、快適かどうかはともかく、大きな支障なく使えてはいます。
ただ、自分の環境でどうかということではなく、万人の環境でどうかを基準に判断する必要があります。
スペックの低いPCを使っている人もいれば、自由にインストールができないような権限しか与えられていない人もいます。
実際問題として、Visual C++ 2010が正常に動作しない状況もあるわけで、それに対して適切なトラブルシューティングができない以上、それに特化するわけにはいきませんね。

ISLe
記事: 2646
登録日時: 9年前
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#49

投稿記事 by ISLe » 9年前

たかぎ さんが書きました:
ISLe さんが書きました:いまのMinGWのデフォルト文字コード(という言い方で良いのでしょうか)はUTF-8になってませんか?
わたしはCygwin版のMinGW64コンパイラを使っているのでオリジナルの方は把握していないのですが、GCC自体がUTF-8に移行したみたいですし。
Cygwinの場合、bashがUTF-8に移行したのです。
GCCは、バージョン3.4以降、-finput-charsetおよび-fexec-charsetで文字コードを指定するようになっています。
ISLe さんが書きました:マルチバイト文字を含むソースファイルをUTF-8で保存しなければならないのが初心者には分かりにくいかもしれないと思いました。
デフォルトはソース文字集合も実行文字集合(文字集合と文字コードは同じではありませんが、ここでは細かい話は抜きにします)もUTF-8です。
ですので、仮にソースファイルをUTF-8で保存したとしても、-fexec-charset=cp932を指定しなければ、コマンドプロンプトやMSysのbashでは正しく表示されません。
確かにMinGW版gccでは-fexec-charset=cp932を指定しないと出力が文字化けしますね。
『森鷗外』を出力しようとするプログラムはコンパイルエラーになりますし。

Cygwin版gccでは-fexec-charset=cp932を指定しなくてもコマンドプロンプトできちんと『森鷗外』が出力されるのを見て勘違いしました。
Cygwin 1.7からコアDLLがUTF-8対応になったので出力はUTF-8ですが、コマンドプロンプトでもちゃんと表示されるのです。
#MinGW版gccも-fexec-charset指定なしで同じくUTF-8で出力しているのになぜ文字化けするのやら。改行コードが違うようですが。

もともとMinGWオンリーで進めるという話をしているところにおかしな横槍を入れてすみませんでした。
gccでひとくくりにはできないのですね。


(追記)
確認したコンパイラはCygwinパッケージにあった以下のものです。
gcc-3 (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
gcc-4 (GCC) 4.3.4 20090804 (release) 1
i686-w64-mingw32-gcc (GCC) 4.5.2

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#50

投稿記事 by たかぎ » 9年前

このトピックも延びてきたので、今日中を目標に、仮設サイトを立てることにします。
準備ができたら、改めて報告します。

# @wikiも検討しましたが、やはり自前のサーバーにPukiwikiをインストールするほうが融通がききそうです。

たかぎ
記事: 328
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: 簡単&お手軽C++入門サイト構築について [雑談]

#51

投稿記事 by たかぎ » 9年前

とりあえずPukiwikiのインストールだけやっておきました。
まだ何の設定もしていません。
http://7d9.org/

閉鎖

“C言語何でも質問掲示板” へ戻る