C ++標準を知っていることはどれほど重要ですか。


11

検索を試みましたが、同様の質問は表示されませんでした(それまたは私の検索用語が正しくありませんでした。もしそうなら、遠慮なく閉じてください)。

私はSOの熱心なユーザーであり、ディスカッションと回答にはC ++標準への参照がたくさんあることに気づきました-そして私は認めざるを得ません。 、問題は、C ++開発者がこのドキュメントを読んだことがなくても、本当に生活のためのコードを書けるかどうかです。コンパイラを書くビジネスに従事していない私たちにとって、それは本当に重要ですか?


標準からの短い引用で回答された質問の持続性は、それを読むことが言語を使用するための前提条件ではないことを証明する十分な証拠になるはずです...(行き詰まったときに方向転換できる場所がある場合)
Shog9

回答:


16

いいえ-あなたはそれなしでうまくうまくいくことができます

ただし、時間をかけて習得すれば、理解が深まります。おそらく、あなたを困らせるこれらの質問からの参照に従い、一度に小さなチャンクを学びます。


8

言語のセマンティクスと標準について議論したい場合は、標準が非常に重要です。(私は完全に軽蔑このことを意味するものではありません。)あなただけの仕事を成し遂げるにしたい場合には、言語(対上の言語)、それはとても少ないです。

標準は、少し慣れれば標準ライブラリへの適切な参照(言語自体についてはそれほどではありません)を作成できますが、そのように使用することをお勧めします。ほとんどの人は他の素材を使ったほうがうまくいくようです。とはいえ、stdlibについて何かを調べる必要があるときは、標準に目を向けます。

ただし、委員会の草案や論文を読むことは、C ++ 0xに遅れないようにするための1つの方法です。実際、現在、ごくわずかな方法の1つにすぎません。

SOや他のフォーラムについては、ポスターが明確かつ確実に利益をもたらすと思われる場合を除いて、標準を引用するのをためらいます。ほとんどの場合、特にC ++を初めて使用するプログラマーの場合、それを引用しても通常はあまり役に立たないようです。


誰かが言語が何をすべきかを知りたい場合、標準は非常に貴重です。彼らがコンパイラが何かをする理由を知りたいなら、それはしばしば非常に役に立ちます。他の質問については、それほどではありません。
David Thornley、2011

1
@DavidThornley:自分で標準を読むことに慣れてから判断するのは難しいですが、ほとんどの人はTC ++ PLなどのテキストの方が、言語が何をすべきかを見つけるために近づきやすいと感じているようです。
Fred Nurk

1
@Fred Nurk:ほとんどすべてが標準よりも親しみやすいです。私はSOなどに関する質問に答えるつもりでしたが、はっきりしていませんでした。人々がcplusplus.comや他のソースを引用しているとき、それは少しの権限を追加します。
David Thornley、2011

@DavidThornley:私はそのようなサイトを引用することはめったにありません(特にcplusplus.comは私の好みのためにあまりにも多くの問題を抱えています)が、SOのほとんどのポスターにとって、それらは標準よりもエラーがあったとしても、より便利に見え、簡単に残念ながら、オンラインで入手できます。
Fred Nurk

@Fred、これは知っておくことは興味深いですが、cplusplusは優れたリファレンスであると常に思っていました(欠点は広告のソースです-これは非常に不適切です!)、今ではsgiリファレンスとの相互参照を忘れないでください。
Nim

6

あなたはそれを参照のために利用できるはずですが、私はその作者以外は誰もがすべてを読んだとは思わないでしょう...もし彼らが読んだとしても(彼らは分野に焦点を合わせたグループで働いているので、私はそれを疑っています)。

あなたがそれを利用できるようにするべき理由は、コードの正しさについての質問が標準を参照することによってしか答えられないことがあることです。


3
ほとんどの場合、それは必要ありません。必要なものは他の本でカバーされています。標準の定義を確認する必要がある言語のコーナーケースに到達した場合、または言語のコーナーを使用したことがない場合に限ります(通常、言語でのコーナーケースの使用に代わるものがあります)。標準はコンパイラ開発者に任せてください。一般の開発者は、他の非公式テキストとうまくやり取りできます。
マーティンヨーク

2

標準がどこにあるかを知り、いつ検索するかを知っていることはおそらくより重要です。

他に何もない場合は、定期的にチェックして、最新バージョンを順守していること、およびコードをドリフトさせていないことを確認してください。


2

大規模なチームでは、標準を少なくともある程度はよく知っている1人(ただし、通常はそれ以上)の人が必要です。そうすることで、特定のコードが標準の要件に準拠しているかどうかなどの引数/質問を解決することができます。

しかし現実的には、これらの答えは判断と経験によって和らげる必要があります。(現在の)標準はexportキーワードであり、それが何をするかを示しています。実際には、ほとんどのコンパイラではそのようには機能しません。同様に、多くのケースでは、あなたには、いくつかの特定のコードとどのような標準は、その、それについて言うかもしれについて不同意三人がある場合、コードはより簡単であることを書き換える必要があるかもしれないという徴候であるが。

同時に、ほとんどのチームは1つのプラットフォームでほとんどの作業を行い、標準(およびそれに少なくともある程度の知識がある人)が、自分のしていることがそのプラットフォームに近すぎないことを確認します。役に立つ。


「それ以上ではない」はおそらく重要です-専門家の間で標準の解釈方法についての議論が必要でない限り<g>
Steve314

2

私は標準を読んだことなく、C ++開発者として合計約4年間パンを稼いでいます。実際、最初の2年間は、Stan LippmanによるC ++ PrimerとMSDNの記事以外はほとんど読んでいません。したがって、それは可能です。実際、C ++コードを作成しているほとんどの人が、Effective C ++などの基本的な作業さえ読んでいないのではないかと恐れています。私自身、後で発見しました。

優れたC ++開発者であるためには、言語の内部ロジック(Scott Meyersが指摘するように、C ++は約4種類の言語です)と一般的なイディオムと落とし穴を理解し、常に詳細を学ぶ準備ができている必要があります。SOでスレッドを読むことは、誰かが本当に深く掘り下げたい場合に、標準の関連する部分を読む価値があるかもしれないコーナーケースについて多くを教えることができます。しかし、それをすべて読むことは、ほとんどの人にとっておそらくめったに必要ではありません。


標準よりもはるかに(コンパイラーを作成していないほとんどのプログラマーにとって)本質的な本があることは良い点です。+1-しかし、「必須」の本はかなりたくさんあります。
Steve314

@ Steve314、確かに-それらをリストし始めても、この特定の質問に答えるのに役立ちません。しかし、私はSOの関連スレッドへのリンクを追加しました。
ペーテルTörök

@Péter-いい感じですが、私の述べられていない点は、「必須」の本のどれも本当に不可欠ではないということでした。ほとんどのC ++プログラマーは、そのリストからいくつかのタイトルを読んでいるはずですが、それらすべてですか?ありそうもない。あなたがそうしたとしても、私はあなたが本当にそのすべての知識を保持できるとは思えません。「Effective C ++」はまだ読んでいないリストに載っているので、私は明らかにそれを本質的ではない本質的な本として数えています。
Steve314

@ Steve314、私はそれらすべてを読まなければならないという意味ではありませんでした-私もそうではありません、そして私が読んだもののいくつかには感銘を受けませんでした:-)これらのいくつかの間にはいくつかの重複もありますので、それは個人的な好みと、開発者が最初に会う可能性、および/または開発者が「必須」とラベル付けする可能性についての質問。重要なことは、従うのに適したいくつかの一般的なイディオムと、避けるのが賢明な一般的な落とし穴があることであり、これらのほとんどについて知っておく必要があり、これらを学ぶための最も苦痛のない方法は、これらの本(の一部)からです。
ペーテルTörök

もちろん、私がそれを読むまで、私それがどれほど重要であるかを本当に知りません。
Steve314

1

「標準を知ること」は程度の問題であり、必ずしも元の文書を暗記することを意味するわけではありません。

標準ドキュメントは信頼できるように設計されています-必ずしもアクセスできるとは限りません。アクセスしやすいワンステップで削除されたソースがたくさんあります。確かに、その中には中国のささやきが少しありますが、それが大きな問題になることはめったにありません-確かにワンステップ削除されたレベルで。

完全な開示-私はこれを言わざるを得ません-私は規格を読んだことがありません。C ++ 0xのドキュメントが完成したら、完全なものになるように努力するつもりです。

もちろんEDITがStroustrupが「The C ++ Programming Language」の新版をリリースした場合、私はそれで再び解決するかもしれません。


1

C ++でプログラミングしたとき、標準ライブラリ関数についての情報を得るために言語標準をよく参照しました。C ++標準ライブラリは非常に大きく、言語標準が最も便利なソースであることがわかりました。


1
すごい?この意味では、cplusplusなどのオンラインリソースは常に不可欠です...
Nim

1

私は以前にこの質問に答えたことがあると誓ったかもしれませんが、それを見つけることができません。基本的に、C ++は、他のプラットフォーム仕様が満たすことができる仕様(POSIX、アーキテクチャのABI仕様、コンパイラなど)に穴を開けること目的としている点で、Javaとは異なります。したがって、StackOverflowなどのサイトで質問に回答する場合、ある仕様が1つのコンパイラで機能するからといって、どこでも機能するわけではないことを示す仕様を提示するのが一般的です。言い換えると、C ++で作業するときに特定の仕様を参照する理由の多くは、言語の特定の使用がどれほど移植可能かを明確にするためです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.