アカウント名:
パスワード:
PDFで保存して読んでいますが気になった点
1.「$ 」という時点から、これLinux環境を中心にして書いてますね。市販PCの殆どがWindowsなのに?「g++ -o 」よりも、「Visual Express」や「CodeBlocks」のほうがまだ簡単。
2.わざわざ難しい関数を使う意味がわからない:「std::cout」printf(), puts()があるのに、なぜstdを使うのでしょう?
3. >#include "all.h"他の入門書は必要なライブラリだけをインクルードして書くように書かれています。こういった全部インクルードするのは実行ファイルのサイズを大きくするだけでなく、無駄が多いのでやめておいたほうがいいのでは。
4. 入門書なら簡単でいいので説明をもっと詳しく。>⽂字列には末尾に s が付くものと付かないものがあるここで、「sはstring(英語)の頭文字である。」の一言があれば初心者は助かるのでは。
・・・っていう箇所がたくさんありますね。
VC対応は、いったん全部捨てるみたいに言ってました。これまでのC++の入門書ときたら、VSの取得から始まって、延々本の半分を…みたいなのばっかりじゃないかと。今後、「Windowsで実習する」「オンラインで実習する」っていうAppendix ができてくるでしょう。
iostream であれば、型を学ぶ前に、何でも突っ込めば出力できるからではないかと。あと、iostream を使う実習だからでしょう。各個のヘッダを自分で選んでincludeするとか、フットプリントを意識して積極的にCのライブラリを使うとかは、初級じゃないと判断したんでしょう。
# 自分的には、例外関係がもっと読みたいです。
VCは未だに方言がひどすぎて、ソフト書いてる側としてはあんまし対応したくないという感じが…(´・ω・`)# gccとclangが殆ど書き換えないでも(文法チェックの厳密さとか最適化のやり方考えなければ)ほぼ問題無しに互換性があるのに、なんでこんな事…というのがVCには多すぎる。
Windowsでgccを使うのも珍しくなくなったし、Clang/C2もあるし、cmakeもある。gcc/clang系列でいったん学んで、必要ならVCに来るってのもありかもしれませんね。
# C++ではありませんが、TinyCCが今面白い。
VC対応しないならこういう字下げはやめてくれ (空白も多すぎ)
if ( this != &r && size() != r.size() ) { // コピー処理 }
いちいちそれはどうかなというツッコミですね…
1. Linux環境が前提ほとんどの人はC++を触らないので、Linuxを利用するということで問題ないでしょう。それに、Windows10はLinux環境を使えますし。
2. printfのほうが易しいどちらでも初心者にはあまり違わないし入力文字数もそこまで変わらないので、後々まで使える柔軟性のあるものを最初から使う方が理にかなっています。
3. all.hでのインクルード実行ファイルが少しぐらい大きくなろうが多少の無駄があろうが、初心者には問題ではありません。最初は余計なことを考えず、壁を減らしたほうがつまづきにくい。
4.説明を増やすstringだけなら同意です。でも全体的に説明が増えると文章量が多くなり、初心者は投げ出したくなるものです。あと説明を増やせば脱稿も遅くなります。100%の完成度より、まず出してくれたほうがいいです。
> 3. all.hでのインクルード> 実行ファイルが少しぐらい大きくなろうが多少の無駄があろうが、初心者には問題では> ありません。最初は余計なことを考えず、壁を減らしたほうがつまづきにくい。
雑に感じられるというか、ズルしているように感じられるとか、どのような言葉を選んでよいかはわかりませんが、ちょっとイヤな感じはします。潔癖症ではありません。自分の好みとしては入門書であればサンプルを見ているだけでヘッダと関数の対応みたいなものはなんとなくわかるようにしてほしいです。
ヘッダの末尾にusing namespace std::literals ;
とあるのも頂けない。
main()の中にusing namespace std; と書いても迫害される時代たというのに(正当だが)
std 名前空間が広すぎるんだろうな。
プログラミングの経験はあるがC++は知らない読者を対象にしたC++を学ぶための本
なので文字列リテラル直後のsがstringの頭文字であることは説明不要でしょう。むしろ「100F」や「100L」と同じ意図であるなどと書くほうが親切かも。全体的に「プログラミングの経験はあるがC++は知らない読者を対象にしたC++を学ぶための本」と「C++における知識のブートストラップ」の両立に苦心しているのが行間から読み取れる…C++をやったことがない人が知らないこととプログラミングをやったことがある人が知ってることの切り分けって難しいし。//勝手に読み取ってるなんて言わないでください。ブログで著者も弱音を吐いていたことです。
> 3. >#include "all.h"> 他の入門書は必要なライブラリだけをインクルードして書くように書かれています。> こういった全部インクルードするのは実行ファイルのサイズを大きくするだけでなく、無駄が多いのでやめておいたほうがいいのでは。
まっとうなコンパイラであれば、全部インクルードだろうが、最小インクルードだろうがバイナリサイズは変わりません。実際、g++8.3.1で iostream だけの場合と、all.h の場合で比較すると、出力結果の実行形式は同サイズです。(もちろんstrip後)
プリコンパイルヘッダの説明の前段の話なので、プリコンパイルヘッダの使用が前提です。プリコンパイルヘッダは1つしかインクルードできません。最小公倍数の全部入りヘッダを使うのが定石です。
あなたがなにを指して「無駄が多い」と言っているのかわかりません。インクルード数を最小化してしまってプリコンパイルヘッダを使わず、1ファイルごとにヘッダをコンパイルする方が「無駄が多い」です。
>1.「$ 」という時点から、これLinux環境を中心にして書いてますね。>市販PCの殆どがWindowsなのに?>「g++ -o 」よりも、「Visual Express」や「CodeBlocks」のほうがまだ簡単。
いや、ふつう、「GPLv3でライセンス」で GNU/Linux 界の人、「自由ソフトウェア主義者」がメインターゲットって分からないの?この本の著者は、不自由なソフトウェア(Windows)に貢献するのではなく、自由なソフトウェアに貢献することを目的とする人なんですが、そこのところちゃんと理解できています?商売じゃなくて理念に基づく運動なんですよ。言い換えるなら、消費者
Linuxをちゃんと扱える人なら、C++の入門書なんて要らないとおもうんです
そして後段のとおり、MSが積極的にオープンソースに参戦してきてるので、「面白くなってきてる」とは思いますねw
MSの戦略もなかなか時流を読んでいるというか、「ソフトウェアを売る」のではなく「ソフトウェアを売る場を売る(ストア)」に、金脈を移すあたり、鼻がいいなと思いますね。
2についての回答(まあ、初心者にありがちな疑問だよね。)
C++言語を初めて学ぶ言語と仮定すると、std::cout, std::cin は、C言語の printf, scanf の書式文字の怪 %f %lf ,ポインタの怪 i &i を避けることができる利点がある。cout, cin の基本的使い方は << と >> であり、直観的で変則がない点は、初めて学ぶ人に対して、C言語よりも優しく適していると言える。演算子、変数、基本構文(制御文等)、関数(値渡しと参照渡し)、Vector、クラスと進めてから、暗黒のC言語編に突入し、配列、ポインタ、関数(ポインタ渡し)と学習コース設計ができる利点がある。言語屋の苦心と労作、老婆心がにじみ出ているわけだ。
た
激しく同意。C++の入門書に「C++の作法では文字列を表示するときは標準出力に文字列を挿入(もしくはリダイレクト)するのです」なんてずっと書いてあって、ずっと頓珍漢なことだと思ってる。
ほんとこれって演算子の多重定義のデモンストレーションで、プログラミング言語の書式にUnixシェルの書式を持ち込む価値が無い(入門書ではこの書式のほうが分かりやすいとか意味付けてるけど分かりやすいわけ無いじゃん!)。
これって(おそらく)iostreamに演算子の多重定義が書かれてるからだと思うけど、この例はC++の初期学習において害はあっても利は無いと思う。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
これは・・・入門書・・・なのか? (スコア:0)
PDFで保存して読んでいますが気になった点
1.「$ 」という時点から、これLinux環境を中心にして書いてますね。
市販PCの殆どがWindowsなのに?
「g++ -o 」よりも、「Visual Express」や「CodeBlocks」のほうがまだ簡単。
2.わざわざ難しい関数を使う意味がわからない:「std::cout」
printf(), puts()があるのに、なぜstdを使うのでしょう?
3. >#include "all.h"
他の入門書は必要なライブラリだけをインクルードして書くように書かれています。
こういった全部インクルードするのは実行ファイルのサイズを大きくするだけでなく、無駄が多いのでやめておいたほうがいいのでは。
4. 入門書なら簡単でいいので説明をもっと詳しく。
>⽂字列には末尾に s が付くものと付かないものがある
ここで、「sはstring(英語)の頭文字である。」の一言があれば初心者は助かるのでは。
・・・っていう箇所がたくさんありますね。
Re: (スコア:0)
VC対応は、いったん全部捨てるみたいに言ってました。
これまでのC++の入門書ときたら、VSの取得から始まって、延々本の半分を…みたいなのばっかりじゃないかと。
今後、「Windowsで実習する」「オンラインで実習する」っていうAppendix ができてくるでしょう。
iostream であれば、型を学ぶ前に、何でも突っ込めば出力できるからではないかと。
あと、iostream を使う実習だからでしょう。各個のヘッダを自分で選んでincludeするとか、
フットプリントを意識して積極的にCのライブラリを使うとかは、初級じゃないと判断したんでしょう。
# 自分的には、例外関係がもっと読みたいです。
Re: (スコア:2)
VCは未だに方言がひどすぎて、ソフト書いてる側としてはあんまし対応したくないという感じが…(´・ω・`)
# gccとclangが殆ど書き換えないでも(文法チェックの厳密さとか最適化のやり方考えなければ)ほぼ問題無しに互換性があるのに、なんでこんな事…というのがVCには多すぎる。
Re: (スコア:0)
Windowsでgccを使うのも珍しくなくなったし、Clang/C2もあるし、cmakeもある。
gcc/clang系列でいったん学んで、必要ならVCに来るってのもありかもしれませんね。
# C++ではありませんが、TinyCCが今面白い。
Re: (スコア:0)
VC対応しないならこういう字下げはやめてくれ (空白も多すぎ)
if ( this != &r && size() != r.size() )
{
// コピー処理
}
Re: (スコア:0)
いちいちそれはどうかなというツッコミですね…
1. Linux環境が前提
ほとんどの人はC++を触らないので、Linuxを利用するということで問題ないでしょう。
それに、Windows10はLinux環境を使えますし。
2. printfのほうが易しい
どちらでも初心者にはあまり違わないし入力文字数もそこまで変わらないので、後々まで使える柔軟性のあるものを最初から使う方が理にかなっています。
3. all.hでのインクルード
実行ファイルが少しぐらい大きくなろうが多少の無駄があろうが、初心者には問題ではありません。最初は余計なことを考えず、壁を減らしたほうがつまづきにくい。
4.説明を増やす
stringだけなら同意です。でも全体的に説明が増えると文章量が多くなり、初心者は投げ出したくなるものです。
あと説明を増やせば脱稿も遅くなります。100%の完成度より、まず出してくれたほうがいいです。
std 名前空間が広すぎるんだろうな。 (スコア:0)
> 3. all.hでのインクルード
> 実行ファイルが少しぐらい大きくなろうが多少の無駄があろうが、初心者には問題では
> ありません。最初は余計なことを考えず、壁を減らしたほうがつまづきにくい。
雑に感じられるというか、ズルしているように感じられるとか、
どのような言葉を選んでよいかはわかりませんが、ちょっとイヤな感じはします。
潔癖症ではありません。
自分の好みとしては入門書であればサンプルを見ているだけでヘッダと関数の対応みた
いなものはなんとなくわかるようにしてほしいです。
ヘッダの末尾に
using namespace std::literals ;
とあるのも頂けない。
main()の中にusing namespace std; と書いても迫害される時代たというのに(正当だが)
std 名前空間が広すぎるんだろうな。
Re: (スコア:0)
プログラミングの経験はあるがC++は知らない読者を対象にしたC++を学ぶための本
なので文字列リテラル直後のsがstringの頭文字であることは説明不要でしょう。
むしろ「100F」や「100L」と同じ意図であるなどと書くほうが親切かも。
全体的に「プログラミングの経験はあるがC++は知らない読者を対象にしたC++を学ぶための本」と「C++における知識のブートストラップ」の両立に苦心しているのが行間から読み取れる…
C++をやったことがない人が知らないこととプログラミングをやったことがある人が知ってることの切り分けって難しいし。
//勝手に読み取ってるなんて言わないでください。ブログで著者も弱音を吐いていたことです。
Re: (スコア:0)
> 3. >#include "all.h"
> 他の入門書は必要なライブラリだけをインクルードして書くように書かれています。
> こういった全部インクルードするのは実行ファイルのサイズを大きくするだけでなく、無駄が多いのでやめておいたほうがいいのでは。
まっとうなコンパイラであれば、全部インクルードだろうが、最小インクルードだろうがバイナリサイズは変わりません。
実際、g++8.3.1で iostream だけの場合と、all.h の場合で比較すると、出力結果の実行形式は同サイズです。
(もちろんstrip後)
プリコンパイルヘッダの説明の前段の話なので、プリコンパイルヘッダの使用が前提です。
プリコンパイルヘッダは1つしかインクルードできません。最小公倍数の全部入りヘッダを使うのが定石です。
あなたがなにを指して「無駄が多い」と言っているのかわかりません。
インクルード数を最小化してしまってプリコンパイルヘッダを使わず、1ファイルごとにヘッダをコンパイルする方が「無駄が多い」です。
Re: (スコア:0)
>1.「$ 」という時点から、これLinux環境を中心にして書いてますね。
>市販PCの殆どがWindowsなのに?
>「g++ -o 」よりも、「Visual Express」や「CodeBlocks」のほうがまだ簡単。
いや、ふつう、「GPLv3でライセンス」で GNU/Linux 界の人、「自由ソフトウェア主義者」がメインターゲットって分からないの?
この本の著者は、不自由なソフトウェア(Windows)に貢献するのではなく、自由なソフトウェアに貢献することを目的とする人なんですが、そこのところちゃんと理解できています?
商売じゃなくて理念に基づく運動なんですよ。言い換えるなら、消費者
Re: (スコア:0)
Linuxをちゃんと扱える人なら、C++の入門書なんて要らないとおもうんです
そして後段のとおり、MSが積極的にオープンソースに参戦してきてるので、「面白くなってきてる」とは思いますねw
Re: (スコア:0)
MSの戦略もなかなか時流を読んでいるというか、「ソフトウェアを売る」のではなく「ソフトウェアを売る場を売る(ストア)」に、金脈を移すあたり、鼻がいいなと思いますね。
Re: (スコア:0)
2についての回答
(まあ、初心者にありがちな疑問だよね。)
C++言語を初めて学ぶ言語と仮定すると、std::cout, std::cin は、C言語の printf, scanf の書式文字の怪 %f %lf ,ポインタの怪 i &i を避けることができる利点がある。
cout, cin の基本的使い方は << と >> であり、直観的で変則がない点は、初めて学ぶ人に対して、C言語よりも優しく適していると言える。
演算子、変数、基本構文(制御文等)、関数(値渡しと参照渡し)、Vector、クラスと進めてから、暗黒のC言語編に突入し、配列、ポインタ、関数(ポインタ渡し)と学習コース設計ができる利点がある。
言語屋の苦心と労作、老婆心がにじみ出ているわけだ。
た
Re: (スコア:0)
Re:これは・・・入門書・・・なのか? (スコア:2)
激しく同意。C++の入門書に「C++の作法では文字列を表示するときは標準出力に文字列を挿入(もしくはリダイレクト)するのです」なんてずっと書いてあって、ずっと頓珍漢なことだと思ってる。
ほんとこれって演算子の多重定義のデモンストレーションで、プログラミング言語の書式にUnixシェルの書式を持ち込む価値が無い(入門書ではこの書式のほうが分かりやすいとか意味付けてるけど分かりやすいわけ無いじゃん!)。
これって(おそらく)iostreamに演算子の多重定義が書かれてるからだと思うけど、この例はC++の初期学習において害はあっても利は無いと思う。