C ++の優れた知識[終了]


8

私は最近、「C ++に関する優れた知識」が要件の1つであるソフトウェア会社の求人ページを見ました。

今、私はこれがC ++の専門知識として何となく意味することを知っていますが、専門知識はどこに正確に適合するのでしょうか。特定のドメインの内外を把握している、言語での8年間のプログラミング(たとえば、)の知識と経験ですか。または、1つ以上のドメインへのよりブラッシュアップされた表面的なアプローチであり、同時に言語全体のより詳細な理解ですか?

たとえば、システムドライバーとゲームエンジンを同時に作成する専門家になることはできません。では、この優れた知識や専門知識はどこに当てはまるのでしょうか?


5
「たとえば、システムドライバーとゲームエンジンを同時に書くことは期待できません。」何故なの?
Pubby

1
まあ、私は何も期待していません。
Edward Strange

6
それはあなたが彼らのインタビューサイクルと彼らがあなたに与えるC ++の質問を通過することができることを意味します。それは雇用主、人々、または説明の間で同じ意味を持ちません、そして言語を使うのに費やされた時間はその人の理解や専門知識のレベルに関係しません本の章。それ以上何も学ぶことはありません)。
-wkl

1
システムドライバーとゲームエンジンの両方を書いたので、@ Pubbyをここで支持する必要があります=)
Patrick Hughes

私のバージョンはここ/そこにあり、あなたのバージョンはそこにあるので、エクセレントは曖昧な言葉です。「優れた知識」とは、2時間未満で重要なプログラムをコーディングできることを意味します(多分、ポモドーロのような目覚まし時計プログラムで、設定と音が付いています)。
アデル

回答:


17

彼らが「優れた知識」と言った場合、現在普遍的にサポートされている最新のC ++ 11標準の機能を含め、言語のすべての機能を正しく識別して使用できるはずです(残念ながら、ここではVisual Studioが最も低い共通の特徴です) )。C ++に精通している人は、独自の型特性または式テンプレートを作成できます。独自のコンテナ、アルゴリズム、アロケータを構築できます。彼らは、継承をいつ使用するか、いつテンプレートを使用するか、どちらを使用しないかを知っています。彼らは、RAIIを使用して、クリーンアップが必要なすべての状態を管理する方法を知っています。

また、残念ながらまだ言語の一部であるため、Cスタイルのガベージとのやり取りにも対応できます。


2
特に、私が耳にしている専門家がmember()イニシャライザリストで何をしているのかわからない場合、あなたは多くを期待しているようです。:P
エドワード・ストレンジ

1
残念ながら、この回答とCrazy Eddieの両方に同意します。
Klaim、

+1完全に同意できる説明のように見えます。「専門家」でない場合、これは何でしょうか?
独立

2
公正を期すために、これは専門家意味するべきことですが、この特定の会社が意味するものである場合とそうでない場合があります
jk。

@DeadMGいい答えです。追加するのと同じように、言語を完全には理解していない場合があります。30歳で、異なる言語でのプログラミングの経験が20年ある場合、1つの言語ですべてをカバーすることはできません。1つの言語で完全に優秀になるまでにかかる時間は簡単です。あなたは1つの言語の専門家ではないかもしれませんが、問題解決の専門家かもしれません。採用要件を書いた人たちがこれを考えていたとは思いません。
イヴ

8

C ++の「優れた」知識を構成するものについて、広く受け入れられている定義があるとは思いません。

言語、フレームワーク、プラットフォーム、または何を持っているかについての「良い」、「優れた」、「優れた」などの知識を構成するものに対する明確な答えを出すのは難しい傾向があります。多くの場合、本当に役立つ知識と、基本的に多くの雑学を知っている知識の間に明確な線を引くことは特に困難です。

これは、C ++のように数十年前からあり、多くの異なる方法で適用され、その期間にわたってさまざまなスタイルで記述されている場合に特に当てはまります。問題をうまく解決するためにそれを使用することとほとんどまったく関係のない言語について誰か学ぶことができる恐ろしいほどの量があります。オーバーロードの解決や関数テンプレートの部分的な順序付けなど、すべてのルールを知っていることは、コンパイラー(または非常によく似たもの)で作業する人を雇おうとしている場合にのみ役立ちます。私はC ++を最初にかなり広く利用できるようになって以来使用しており、実際のコードで関数テンプレートの部分的な順序をまだ使用していません(または使用したくありません)。

質問に技術的に対応するわけではありませんが、求人広告にそのような要件を含む人には、ある程度のバランスを保つように助言することを急いでいます。問題解決能力や一般的なアルゴリズムなどを犠牲にして、プログラミング言語が過度に強調されることがよくあると思います。プログラミング言語をよく理解することは、ソリューションを適切に表現するのに役立ちますが、通常、ソリューション自体の設計には(せいぜい)最小限の助けになります。うまく表現されていない優れたソリューションは、どれだけうまく表現されていても、事実上常に平凡なソリューションを打ち負かします。


1
1 1雇用者は、別のは、現代のC ++ラDeadMGの答えの完全な知識とよいでしょう「優秀」であることをクラスとCを考慮することができる
JKを。

@jk。「優れた」クラスのCを検討している人は誰でもバカです。
DeadMG

+1前の段落の非常に良い点は、私がこの質問をしたときと同じくらい考えました。
イヴ

2

私は、そのような人がC ++標準、新しく追加された概念、構成、およびキーワードに精通していることを期待します。たとえば、少なくとも右辺値参照とは何か、なぜそれが有用なのかを知っている必要があります。


0

優秀なフットボール選手はどれほど良いですか?それはあなたがどのようなレベルで見ているか、インターナショナル、キッズリーグなどによって異なります。

C ++の優れた知識は、すべてのキーワードと、それらがSTLと一緒に使用されるタイミングを知っている必要があることを意味します。

場合によっては、デザインパターンとブーストが含まれることもありますが、上記のいずれも含まれず、コーディング試験に合格して面接担当者に印象づけることが必要になる場合もあります。

正直なところ、実際の定義はありません。C ++といくつかの周辺ライブラリ(STL、MFC、boostなど)を使用する複雑なマルチスレッドの多層アプリケーションを作成できると思いますか?答えが「はい」の場合は、おそらくエキスパートレベルのポジションを狙っています。

答えが「いいえ」の場合、時間を浪費している可能性があります。


0

優れたC ++プログラマーは、言語が提供する無数の「機能」をいつ使用し、いつ使用しないかを知っています。


なぜあなたが反対票を投じたのかはわかりませんが、それは最も正解です。
zvrba

おそらく機能の周りの皮肉のために。
DeadMG '11 / 11/12

0

「エクセレント」のセマンティクスにこだわるのではなく、面白​​そうに思えて仕事に気がついた場合にのみ応募してください。あなたが十分に「優秀」であるかどうかを雇用主に判断させましょう。

「優秀なプログラマー」はツールの生の力を知っており、目前の問題の実装を決定するいくつかの要因を判断します。それらの要因は、実装の単純さ、拡張性/再利用性、効率です。

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