プログラマがCとC ++の違いを知らないのは一般的ですか?[閉まっている]


16

インタビュー中に、CとC ++の違いを知っているかどうかを尋ねられました。

私はなぜそのような質問が求められているのだろうと思っていましたか?


11
ここ数週間でC ++でタグ付けされたCの質問の数を考えると、それは非常に重要な質問だと思います。
ロボットを手に入れる

13
「C / C ++」が表示される頻度から判断すると、非常に一般的だと思います。
user16764

6
何に答えましたか?
ディマ

8
プログラミングの仕事に応募する人は、まったく何も知らないのが一般的です。しかし、私はその人をプログラマーとは呼びません。
バルテック

6
@Tjaart-あなたは、バイトが8ビットではないシステムがあることを理解していますか?
ラムハウンド

回答:


25

質問が「CとC ++の違いを知っていますか?」「はい」で応答することを許可されましたが、混乱を見ることができましたが、実際に「CとC ++の違いは何ですか?」そして、より自由な答えが期待されていた、彼らが言うように、私はそれを合法的な「調査の場」と見ることができます。

たとえば、Cでコーディングしたことがあり、C ++でコーディングしたことがない場合、曖昧な「C ++はオブジェクト指向コーディングをサポートしていますか?」を超えて答えることはほとんどできません。


40

一部の人々は、まったくコードを書くことができないプログラミングの求職者が非常に多いことを観察しています。したがって、はい、「明白な」質問をすることは完全に理にかなっています。


7
これはほとんど私の答えになるでしょう。プログラミングのポジションについて人々にインタビューしたので、明白な質問をすることで、非常に簡単にかなりの数の候補者を切り分けることができると思います。
ティアナ

あなたのための100万人の賛成票。私は多くのインタビュイーが答えることができないように初心者レベルの質問に驚いています。
HLGEM

1
繰り返しになりますが、私は25年以上プログラミングを行ってきましたが、これ以上答えられない初心者レベルの質問がいくつかあります(定義を求めると悪化します)。私はこの答えにリンクされている記事を見て、「うーん、ちょっと考えさせてください」のようでしたが、仕事ではかなり複雑なシステムの実装に取り​​組んでおり、一般的にソリューションを考え出すのにそれほど苦労しません。これらの小さな質問のいくつかは、多層システムよりも私を怖がらせ、そのようながらくたをいくつかのマルチスレッド機能を投入します...奇妙な、私は知っています。
MetalMikester

1
確かに。別のP.SEスレッドで説明したように、インタビューのために、ばかげて明白な質問(「JSで変数をどのように宣言しますか?」、「Javaでの1 intのバイト数」、「ポインターとは何ですか?」など...)。最初のエラーは気にしません(リラックスして会話でインタビューを始めてもストレスが要因です)が、通常、まともな質問に到達する前に3回ストライキを得ることができれば、行くことなくハングアップすることは完全に許容できると思いますさらにまたはそれらを追い出します。愚かな質問をするのにかかる5分は、時間を節約する価値があります。
ヘイレム

3
実際、私はこれらの最初の質問をする前に謝罪さえます。なぜなら、熟練した応募者が彼らに変なことを望まないように、または彼らを真剣に受け止めて、彼らがここに属さないと感じるとは思わないからです。
ヘイレム

8

それらの全体の束があります。C文字列を教えるバカな講師がいる人newdelete、「C ++」を学んでいるが時代遅れのチュートリアルや悪い本を持っている人は無限にいますが、実際には2人はかなり近いと思っています。

もちろん、あなたが雇用主である場合、彼らが同じまたは類似していると言うことは大きな警告灯です。


2
これは非常に良い点をもたらします。Cを教えるがC ++コンパイラを使用することは受け入れられ、おそらく一般的です。これはもちろん、CとC ++の大きな違いを学ばない学生による混乱につながります。私は同じリビジョン間の大きな違いについてのみ話している。
ラムハウンド

4
@Ramhound:それはまったく受け入れられません。それが一般的であるという事実は直交しています。
DeadMG

1
悲しい事実は、CとC ++がほとんど普遍的にひどく教えられているということです。SOに移動してCタグとC ++タグを調べてみると、同じ誤解、間違った解釈、同じ悪い習慣が何度も繰り返されていることがわかります。これらは、同じ間違いをランダムに犯す人ではありません。彼らはこれらの間違いをする方法を教えられました。「私の教授は言った...」は、ほとんど普遍的に私にとって危険です。
ジョンボード

5

また、Cを学習する前にC ++を学習した人(私など)の一部もいます。

違いは知っていると思いますが、あなたがCクラスではなくC ++クラスしか持っていない学生である場合、C互換ではないC ++の部分は明らかではありません。

私が学んだより明らかな違いのいくつか(完全なリストではない)()構造体データ型には元々関数を含めることができず、プライベートメンバーを持つことができません。つまり、抽象データ型の有効性ルールを適用することは非常に困難ですCで()クラスはCでサポートされていません()アンパサンド演算子を使用した参照渡しはC ++に固有です()Cはストリームまたはテンプレートをサポートしていません(*)mallocおよびfreeはCでのみ使用され、 C ++


2
これは重要な洞察だと思います...昔は、Cコンパイラを使用していて、次にC ++が登場したので、違いを学びました。C / C ++コンパイラがあり、C ++を明示的に教えられている場合、「オブジェクト指向のもの」を超えてCとは何か、C ++とは何かを知ることはほとんど不可能です。また、C / C ++が最も一般的か怒りで学ぶ言語(?)
アルビグラン

1
「C ++に変換された」Cプログラマーは非常に悪いC ++プログラマーであることが多いため、この割合がそれほど小さくないことを非常に期待しています
sbi

1

残念ながら、私はそれがますます一般的になっていると思います。

専門学校を卒業したばかりの若いプログラマー(またはスキルを習得した場所)は、C、C ++、Lisp、OCamlなどの古い言語を単に習得しないと思います。「c#プログラマー」または「javaプログラマー」など。そして、仕事を見つけたとき、他の言語を学ぶことに挑戦しません。

もちろんそうするものもありますが、私が一緒に仕事をした人からは、若いプログラマーがこのパターンに従う傾向が一般的です。

免責事項:私は教育について話しているので、当然、教育で強調されていることについて国ごとに違いがある可能性があります。


どんな大学について話しているのですか?「アルケイン」言語?私は...ローマの大学でMIPSのために組み立て学ばなければならなかった
ВиталийОлегович

一般的に、私が出会った「若い」プログラマーは工学の学位を取得しています。考えてみると、私と一緒に働くほとんどすべてのプログラマーは、自分自身を含めて工学の学位を持っています。
ピート

1
CとC ++はまだ学校で教えられています。問題は、ほとんどの場合、同じコンパイラを使用して両方を教えることです。つまり、彼らは実際に2つの言語の違いを学習することはありません。
ラムハウンド

@Pete「C#プログラマー」として出てきた場合、「別の言語」としてCやC ++を学ぶことは想像できません。きっとRuby、Haskell、Javascript、Pythonが欲しいです。Cファミリー言語は十分に近いため、1つを知っているだけで十分です。
カークブロードハースト

0

おそらく文字通りではなく、C ++とCが同一であると考えているという点ではなく、C ++のさまざまな機能を真に理解し、使用できるという点でそうです。

主な原因は、履歴書/履歴書に言語/ツールをリストするバイナリの性質です。基本的に、標準は、言語でコンパイルして実行するために「Hello World」を取得した場合、履歴書/履歴書にリストすることは問題ないようです。

たまたま、Cバージョンの「Hello、World!」また、C ++でコンパイルおよび実行されます。したがって、他の情報がない場合、履歴書に「C ++」と表示されるのは、この人が「Hello、World!」を取得するのに十分なCを知っているということだけです。実行し、ほとんどのCプログラムがC ++でコンパイルされることを知っています。

それを考えると、インタビューでそれを少し調べる必要があります。「はい/いいえ」「違いを知っていますか?」要するに、それは明らかに「正しい」答えを持っているからです。私はおそらく候補者に、彼女がより好んだ言語、理由、そして彼女が選ばなかった言語に利点があるかどうかを尋ねるでしょう。


0

回答

はい、その共通。私自身、同僚、またはサードパーティのライブラリコードのいずれかで、この状況を見てきました。

たとえば、私自身は、他のプログラミング言語またはプログラミングフレームワークで動作する場合があり、「pure c」または「c ++」ライブラリのいずれかにリンクまたは更新する必要があります。

「Pure C」コードを変更する問題がありました。そして、「c ++」である「新規」および「削除」メモリ割り当て関数を使用します。残りのコードはオブジェクト指向ではありませんでした

コンパイラはC ++でした。その後、別のコンパイラーを訴え、エラーを発見しました。

ボーナス

口頭で、または筆記テストで、またはWebオンラインテストで誰かが尋ねた場合:

「CとC ++の違いを知っていますか」

そして、「はい」または「いいえ」と答えます。

彼らは本当に意味する:

「CとC ++の違いを知っていますか。教えてください。」

だから、あなたは答えなければなりません:

「はい。違いはC ++のオブジェクト指向です。ただし、後方互換性のためにC ++プログラム内でPure Cを使用することもできます。」

時々、彼らは「あなたが私に言ってください」とあなたに尋ねず、彼らはあなたが知らないと仮定します。単に「はい」または「いいえ」と答えないでください。


2
まあ、私はその答えが完全に正しいとは思わない。正しい答えは、C ++がオブジェクト指向コードを強力にサポートしていることです。必要ありません。(そもそもこの混乱の原因です。)
ロボット

また、「C ++プログラム内でPure Cを使用できます」とは、「C ++はCのスーパーセットです。つまり、Cの有効なプログラムはすべて有効なC ++プログラムです」(間違っている)ことを意味します。または、「C ++プログラムをCライブラリにリンクできる」ことを意味する場合もあります(ただし、ほとんどの言語は何らかの方法でCライブラリにリンクできます。)実際のインタビューでは、はるかに正確である必要があります。
ニキエ

-2

編集

前向きとして、この答えは違いがないことを宣言することを意味するものではなく、違いを知っていると公言するものではなく、CまたはC ++の「Hello World」よりも知っていることにも注意してください。多くの人が基本的な違いを知っており(たとえば+、名前に文字が含まれている)、違いのすべてまたはほとんどを知っている人はほとんどいないことを指摘して、参照用語を組み立てて質問への回答です。


それは、あなたが「プログラマー」によって意味するものと、あなたが「差異」によって意味するものに依存します。

私は「プログラマー」であり(自分自身を開発者と呼んでいますが)、CとC ++の本当の違いを伝えるのに苦労します。押されたら、おそらくC ++は名前空間と継承を持つCのスーパーセットだと思います。メモリを扱うさまざまな方法。既存のプログラムにいくつかのバグを修正したり、変更を加えたりすることは十分に知っていますが、CまたはC ++での単純なユーティリティ以上のものを書くことは想像できません。私は十分に理解していますが、私はそれらの言語のいずれかを「知っている」と自分自身を描くことはありません。

私は、JavaとFORTRAN、またはJavascriptとPascalの違いさえ教えない他の「プログラマー」(開発者)を知っています。彼らは何をするのが得意で、手続き型の言語はしません。

それから、毎日使用する単一の言語をほとんど知らない平凡なプログラマが何百万人もいます。

「差異」という用語は曖昧です。上記のいくつかの違いとして私が見たものを指摘しましたが、それらが決定的で完全ではないことを知っています。すべての違いを知っている人はほとんどいません。オブジェクト指向について(私が持っているように)あいまいな答えを出すことができる人はもっと多くなります。


5
「CとC ++の本当の違いを伝えるのに苦労します。」あなたは確かにC ++プログラマーではありません。お願いします?
sbi

2
CとC ++は非常に異なる言語であり、非常に異なる方法でコーディングされています。あなたは明らかにそれらを知らないだけです。
DeadMG

@sbi 「私は自分自身をこれらの言語のいずれかを「知っている」とは思いません。」あなた自身でそれを決めることができます。
カークブロードハースト

downvotesに関するフィードバックはありますか?両者の違いがわからないからでしょうか?それが質問への回答から私を失格させるとは思わないでしょう。
カークブロードハースト

1
@KirkBroadhurst:私はあなたの答えのどの部分をダウン投票するのが嫌いであるかを示したと思います、そしてそのコメントはその後あなたがダウン投票されたときの5倍の頻度でアップ投票されました。ただし、CとC ++は表面的な構文上の類似点のみを共有しており、それ以外は非常に異なる言語であるため、ここでは「差」という用語で十分です。資格に関して:ここで答えるのに資格は必要ないと思いますが、答えがこのように露骨に間違っている場合、資格とは無関係に落とされます。
sbi

-3

プログラマがCとC ++の違いを知らないのは一般的ですか?

20年前?はい。

今日?そんなにない。

これは、プログラミングの状況が大きく変化したためです。今日のプログラムの多くはWebベースです。デスクトップ用に作成されたプログラムでさえ、CまたはC ++よりも高レベルの言語で作成される場合があります。そのため、OSコードを記述するプログラマーでない限り、2つの言語のどちらについてもあまり知らないかもしれません。

インタビュアーは、プログラミングの基礎についてどれだけ知っているかを測るために、インタビューでこの質問をするかもしれません。CとC ++の違いを知っていれば、オブジェクト指向プログラミングとは何か、おそらくライブラリとコンパイラを理解し、メモリ関数、参照、ポインタを理解しているでしょう。...今日のプログラミング言語に影響を与えた多くのこと。私はC ++をあまり使いません(そして私はどの言語でも優れたプログラマーだとは本当に言えません;知恵は時間とともに来るでしょう)が、C ++での経験は間違いなく私をより良いプログラマーにしたと言えます。


8
他の方法で言っていただろう。5〜10年前よりも混乱している人が増えています。
ヘイレム

@Haylem振り返ってみると、私は逆に言うつもりだったと思う。
lunchmeat317
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.