言語屋の心遣いを踏みにじるとは・・・言葉もない。 大体、C言語が高級言語として設計不良が多すぎるのを、C++言語で普通の高級言語スタイルを完備したわけで、C言語スタイルは必要なときだけ使えばいい痕跡器官(退化器官)の扱いをするべきなのだが・・・分かっていない様子。 クラスライブラリ vs テンプレートライブラリ、の辺りも初心者には結局、どっち使えばいいの?になりがちだし。(ふつうのアプリケーション開発であればクラスライブラリを使用し、システムレイヤ、ミドルウェアレイヤの開発であればテンプレートライブラリを使うのが適している。そうは言っても、動く(働く)プログラムを作ることに意義があるのだから、あまり気にしなくてもいいとは思う。テンプレートライブラリは低コストでも、使い勝手はクラスライブラリには及ばないわけだし。)
これは・・・入門書・・・なのか? (スコア: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)
2についての回答
(まあ、初心者にありがちな疑問だよね。)
C++言語を初めて学ぶ言語と仮定すると、std::cout, std::cin は、C言語の printf, scanf の書式文字の怪 %f %lf ,ポインタの怪 i &i を避けることができる利点がある。
cout, cin の基本的使い方は << と >> であり、直観的で変則がない点は、初めて学ぶ人に対して、C言語よりも優しく適していると言える。
演算子、変数、基本構文(制御文等)、関数(値渡しと参照渡し)、Vector、クラスと進めてから、暗黒のC言語編に突入し、配列、ポインタ、関数(ポインタ渡し)と学習コース設計ができる利点がある。
言語屋の苦心と労作、老婆心がにじみ出ているわけだ。
ただ、WEBのプログラミング入門とかでは、C++の入門であるのにも関わらず、
「お前はもうC言語を身につけたか?」
「え? 何それ」
「今のお前にはC++言語をやる資格はない」
まさかの進研ゼミ https://www.youtube.com/watch?v=cG0ixCQzsJU [youtube.com]
言語屋の心遣いを踏みにじるとは・・・言葉もない。
大体、C言語が高級言語として設計不良が多すぎるのを、C++言語で普通の高級言語スタイルを完備したわけで、C言語スタイルは必要なときだけ使えばいい痕跡器官(退化器官)の扱いをするべきなのだが・・・分かっていない様子。
クラスライブラリ vs テンプレートライブラリ、の辺りも初心者には結局、どっち使えばいいの?になりがちだし。(ふつうのアプリケーション開発であればクラスライブラリを使用し、システムレイヤ、ミドルウェアレイヤの開発であればテンプレートライブラリを使うのが適している。そうは言っても、動く(働く)プログラムを作ることに意義があるのだから、あまり気にしなくてもいいとは思う。テンプレートライブラリは低コストでも、使い勝手はクラスライブラリには及ばないわけだし。)
3についての回答
ふつうに使ってみれば分かるように、再コンパイル、再ビルド時間が劇的に短縮されるわけで、使わない方がどうかしている。
実行ファイルのサイズはビルドオプションかなんかの都合だと思いますが・・・?
.pch で検索してみてくださいよ。
まあ、 .pch を作る方法はコンパイラ依存になるから、他の入門書は避けていると思います。環境を指定した入門書や解説書では、このテクニックは紹介されることが多いと思います。(ほんとに実用的だし、だけど、環境が違うと、「動かない!?」っと学習者が脱落するし、参考コードでも、問い合わせが来るし、という理由で活用されないのです。)
4についての回答
合っているけど、意味が通じない。super string、support付きstring、とでも呼んで + += == != などの演算子が活用できる文字列になります。と説明した方が初心者向けでは。原書の「便利」というのは、どうかと思う。
後、 to_string stoi が見当たらないのはなんなんだと・・・。これは、もう、C++入門というよりもC++解体新書になっていると思います。
まあ、労作であることに違いないこと、学習コース設計の失敗例として参考にしたいと思います。先人の失敗に学ぶことは大事です。このとき先人をいたずらに批判してはいけない。大体、プログラミング関係でまともな入門書はないと言い切れるほどに、知識の共有というのは難しい。GoogleとWikipediaが無かった時代は今以上にプログラムは労作であったはずだ。とはいっても、今も労作であることに違いはないが。
長文、一部、乱筆失礼しました。
Re: (スコア:0)
Re:これは・・・入門書・・・なのか? (スコア:2)
激しく同意。C++の入門書に「C++の作法では文字列を表示するときは標準出力に文字列を挿入(もしくはリダイレクト)するのです」なんてずっと書いてあって、ずっと頓珍漢なことだと思ってる。
ほんとこれって演算子の多重定義のデモンストレーションで、プログラミング言語の書式にUnixシェルの書式を持ち込む価値が無い(入門書ではこの書式のほうが分かりやすいとか意味付けてるけど分かりやすいわけ無いじゃん!)。
これって(おそらく)iostreamに演算子の多重定義が書かれてるからだと思うけど、この例はC++の初期学習において害はあっても利は無いと思う。