インタビュー中に、CとC ++の違いを知っているかどうかを尋ねられました。
私はなぜそのような質問が求められているのだろうと思っていましたか?
インタビュー中に、CとC ++の違いを知っているかどうかを尋ねられました。
私はなぜそのような質問が求められているのだろうと思っていましたか?
回答:
一部の人々は、まったくコードを書くことができないプログラミングの求職者が非常に多いことを観察しています。したがって、はい、「明白な」質問をすることは完全に理にかなっています。
それらの全体の束があります。C文字列を教えるバカな講師がいる人new
やdelete
、「C ++」を学んでいるが時代遅れのチュートリアルや悪い本を持っている人は無限にいますが、実際には2人はかなり近いと思っています。
もちろん、あなたが雇用主である場合、彼らが同じまたは類似していると言うことは大きな警告灯です。
また、Cを学習する前にC ++を学習した人(私など)の一部もいます。
違いは知っていると思いますが、あなたがCクラスではなくC ++クラスしか持っていない学生である場合、C互換ではないC ++の部分は明らかではありません。
私が学んだより明らかな違いのいくつか(完全なリストではない)()構造体データ型には元々関数を含めることができず、プライベートメンバーを持つことができません。つまり、抽象データ型の有効性ルールを適用することは非常に困難ですCで()クラスはCでサポートされていません()アンパサンド演算子を使用した参照渡しはC ++に固有です()Cはストリームまたはテンプレートをサポートしていません(*)mallocおよびfreeはCでのみ使用され、 C ++
残念ながら、私はそれがますます一般的になっていると思います。
専門学校を卒業したばかりの若いプログラマー(またはスキルを習得した場所)は、C、C ++、Lisp、OCamlなどの古い言語を単に習得しないと思います。「c#プログラマー」または「javaプログラマー」など。そして、仕事を見つけたとき、他の言語を学ぶことに挑戦しません。
もちろんそうするものもありますが、私が一緒に仕事をした人からは、若いプログラマーがこのパターンに従う傾向が一般的です。
免責事項:私は教育について話しているので、当然、教育で強調されていることについて国ごとに違いがある可能性があります。
おそらく文字通りではなく、C ++とCが同一であると考えているという点ではなく、C ++のさまざまな機能を真に理解し、使用できるという点でそうです。
主な原因は、履歴書/履歴書に言語/ツールをリストするバイナリの性質です。基本的に、標準は、言語でコンパイルして実行するために「Hello World」を取得した場合、履歴書/履歴書にリストすることは問題ないようです。
たまたま、Cバージョンの「Hello、World!」また、C ++でコンパイルおよび実行されます。したがって、他の情報がない場合、履歴書に「C ++」と表示されるのは、この人が「Hello、World!」を取得するのに十分なCを知っているということだけです。実行し、ほとんどのCプログラムがC ++でコンパイルされることを知っています。
それを考えると、インタビューでそれを少し調べる必要があります。「はい/いいえ」「違いを知っていますか?」要するに、それは明らかに「正しい」答えを持っているからです。私はおそらく候補者に、彼女がより好んだ言語、理由、そして彼女が選ばなかった言語に利点があるかどうかを尋ねるでしょう。
回答
はい、その共通。私自身、同僚、またはサードパーティのライブラリコードのいずれかで、この状況を見てきました。
たとえば、私自身は、他のプログラミング言語またはプログラミングフレームワークで動作する場合があり、「pure c」または「c ++」ライブラリのいずれかにリンクまたは更新する必要があります。
「Pure C」コードを変更する問題がありました。そして、「c ++」である「新規」および「削除」メモリ割り当て関数を使用します。残りのコードはオブジェクト指向ではありませんでした
コンパイラはC ++でした。その後、別のコンパイラーを訴え、エラーを発見しました。
ボーナス
口頭で、または筆記テストで、またはWebオンラインテストで誰かが尋ねた場合:
「CとC ++の違いを知っていますか」
そして、「はい」または「いいえ」と答えます。
彼らは本当に意味する:
「CとC ++の違いを知っていますか。教えてください。」
だから、あなたは答えなければなりません:
「はい。違いはC ++のオブジェクト指向です。ただし、後方互換性のためにC ++プログラム内でPure Cを使用することもできます。」
時々、彼らは「あなたが私に言ってください」とあなたに尋ねず、彼らはあなたが知らないと仮定します。単に「はい」または「いいえ」と答えないでください。
編集
前向きとして、この答えは違いがないことを宣言することを意味するものではなく、違いを知っていると公言するものではなく、CまたはC ++の「Hello World」よりも知っていることにも注意してください。多くの人が基本的な違いを知っており(たとえば+
、名前に文字が含まれている)、違いのすべてまたはほとんどを知っている人はほとんどいないことを指摘して、参照用語を組み立てて質問への回答です。
それは、あなたが「プログラマー」によって意味するものと、あなたが「差異」によって意味するものに依存します。
私は「プログラマー」であり(自分自身を開発者と呼んでいますが)、CとC ++の本当の違いを伝えるのに苦労します。押されたら、おそらくC ++は名前空間と継承を持つCのスーパーセットだと思います。メモリを扱うさまざまな方法。既存のプログラムにいくつかのバグを修正したり、変更を加えたりすることは十分に知っていますが、CまたはC ++での単純なユーティリティ以上のものを書くことは想像できません。私は十分に理解していますが、私はそれらの言語のいずれかを「知っている」と自分自身を描くことはありません。
私は、JavaとFORTRAN、またはJavascriptとPascalの違いさえ教えない他の「プログラマー」(開発者)を知っています。彼らは何をするのが得意で、手続き型の言語はしません。
それから、毎日使用する単一の言語をほとんど知らない平凡なプログラマが何百万人もいます。
「差異」という用語は曖昧です。上記のいくつかの違いとして私が見たものを指摘しましたが、それらが決定的で完全ではないことを知っています。すべての違いを知っている人はほとんどいません。オブジェクト指向について(私が持っているように)あいまいな答えを出すことができる人はもっと多くなります。
プログラマがCとC ++の違いを知らないのは一般的ですか?
20年前?はい。
今日?そんなにない。
これは、プログラミングの状況が大きく変化したためです。今日のプログラムの多くはWebベースです。デスクトップ用に作成されたプログラムでさえ、CまたはC ++よりも高レベルの言語で作成される場合があります。そのため、OSコードを記述するプログラマーでない限り、2つの言語のどちらについてもあまり知らないかもしれません。
インタビュアーは、プログラミングの基礎についてどれだけ知っているかを測るために、インタビューでこの質問をするかもしれません。CとC ++の違いを知っていれば、オブジェクト指向プログラミングとは何か、おそらくライブラリとコンパイラを理解し、メモリ関数、参照、ポインタを理解しているでしょう。...今日のプログラミング言語に影響を与えた多くのこと。私はC ++をあまり使いません(そして私はどの言語でも優れたプログラマーだとは本当に言えません;知恵は時間とともに来るでしょう)が、C ++での経験は間違いなく私をより良いプログラマーにしたと言えます。