Während eines Interviews wurde ich gefragt, ob ich den Unterschied zwischen C und C ++ kenne.
Ich fragte mich, warum diese Frage gestellt wurde?
Während eines Interviews wurde ich gefragt, ob ich den Unterschied zwischen C und C ++ kenne.
Ich fragte mich, warum diese Frage gestellt wurde?
Antworten:
Wenn die Frage lautete: "Kennen Sie den Unterschied zwischen C und C ++?" und Sie durften nur mit "Ja" antworten, dann konnte ich Ihre Verwirrung sehen, aber wenn sie tatsächlich fragten "Was sind die Unterschiede zwischen C und C ++?" und eine offenere Antwort wurde erwartet, ich kann es als legitimen "Weg der Untersuchung" sehen, wie sie sagen.
Wenn ich zum Beispiel nur jemals in C und niemals in C ++ codiert hätte, wäre ich kaum in der Lage, vage zu antworten: "C ++ unterstützt objektorientiertes Codieren?".
Einige Leute haben beobachtet, dass es eine große Anzahl von Programmier-Bewerbern gibt, die überhaupt keinen Code schreiben können . Also, ja, "offensichtliche" Fragen zu stellen, ist absolut sinnvoll.
Es gibt eine ganze Reihe von ihnen. Es gibt unendlich viele Leute, die idiotische Dozenten haben, die C-Strings und new
und unterrichten delete
, oder veraltete Tutorials oder schlechte Bücher, die "C ++" lernen, aber tatsächlich C, die denken, die beiden stehen sich ziemlich nahe.
Wenn Sie ein Arbeitgeber sind, ist es natürlich ein großes Warnlicht, zu sagen, dass sie gleich oder sogar ähnlich sind.
Es gibt auch einen kleinen Prozentsatz von Menschen (wie ich), die C ++ gelernt haben, bevor sie C. gelernt haben.
Ich bin sicher, Sie kennen die Unterschiede, aber wenn Sie ein Student sind, der nur eine C ++ - Klasse und keine C-Klasse hatte, werden die Teile von C ++, die nicht C-kompatibel sind, nicht offensichtlich sein.
Einige der offensichtlicheren Unterschiede, die ich kennengelernt habe (keine vollständige Liste) ( ) Strukturdatentypen konnten ursprünglich keine Funktionen enthalten und können keine privaten Mitglieder haben, was bedeutet, dass es sehr schwierig ist, die Gültigkeitsregeln eines abstrakten Datentyps durchzusetzen in C. ( ) Klassen werden in C ( ) nicht unterstützt. Die Übergabe von Verweisen mit dem Und-Zeichen-Operator ist C ++ spezifisch. ( ) C unterstützt keine Streams oder Templates. (*) malloc und free sind nur für die Verwendung in C und nicht in vorgesehen C ++
Leider denke ich, dass es immer häufiger wird.
Ich denke, dass junge Programmierer, die gerade ihre technische Ausbildung abgeschlossen haben (oder aus denen sie ihre Fähigkeiten lernen), einfach keine älteren Sprachen wie C, C ++, Lisp, OCaml usw. lernen. Sie kommen einfach als "c # -Programmierer" oder "Java-Programmierer" heraus "usw. Und wenn sie eine Arbeit finden, fordern sie sich nicht heraus, andere Sprachen zu lernen.
Natürlich gibt es einige, die dies tun, aber von denen, mit denen ich gearbeitet habe, gibt es eine allgemeine Tendenz für die jüngeren Programmierer, diesem Muster zu folgen.
Haftungsausschluss: Da ich über Bildung spreche, kann es natürlich von Land zu Land Unterschiede darüber geben, was in der Bildung betont wird.
Wahrscheinlich nicht wörtlich, denn sie denken, C ++ und C sind ein und dasselbe, aber in Bezug auf das Verständnis und die Fähigkeit, die verschiedenen Funktionen von C ++ zu nutzen, ja.
Die Hauptursache ist der binäre Charakter der Auflistung von Sprachen / Tools in Ihrem Lebenslauf. Im Wesentlichen scheint der Standard zu sein, dass wenn Sie "Hello World" zum Kompilieren und Ausführen in einer Sprache haben, es in Ordnung ist, es in Ihrem Lebenslauf / Lebenslauf aufzulisten.
Die C-Version von "Hello, World!" Kompiliert und läuft auch in C ++. Wenn ich keine anderen Informationen habe, ist alles, was ich sehe, wenn ich "C ++" in einem Lebenslauf sehe, dass diese Person genug C kennt, um "Hallo, Welt!" Laufen und weiß, dass die meisten C-Programme in C ++ kompiliert werden.
In Anbetracht dessen muss ich das im Interview ein wenig untersuchen. Ich würde das wahrscheinlich nicht tun, indem ich "Ja / Nein" frage. "Kennen Sie den Unterschied?" Frage, kurz gesagt, weil es eine offensichtliche "richtige" Antwort hat. Ich würde die Kandidatin wahrscheinlich fragen, welche Sprache sie besser mochte, warum und ob es irgendwelche Vorteile für die gab, die sie nicht ausgewählt hatte.
Antworten
Ja, es ist üblich. Ich habe diese Situation entweder selbst, Kollegen oder Bibliothekscode von Drittanbietern gesehen.
Ich selbst arbeite zum Beispiel manchmal mit anderen Programmiersprachen oder Programmierframeworks und muss entweder eine Verknüpfung zu "reinen C" - oder "C ++" - Bibliotheken herstellen oder diese aktualisieren.
Ich hatte gerade das Problem, einen "Pure C" -Code zu modifizieren. Und mit "new" & "delete" Speicherzuweisungsfunktionen, die "c ++" sind. Der Rest des Codes war nicht objektorientiert
Der Compiler war C ++. Später verklagte ich einen anderen Compiler und entdeckte den Fehler.
Bonus
Wenn jemand mündlich oder in einem schriftlichen Test oder Web-Online-Test fragt:
"Kennen Sie den Unterschied zwischen C oder C ++?"
Und Sie antworten mit "Ja" oder "Nein".
Sie meinen wirklich:
"Kennen Sie den Unterschied zwischen C oder C ++, wenn Sie es tun, sagen Sie es mir bitte?"
Also musst du antworten:
"Ja. Der Unterschied ist, dass C ++ objektorientiert ist, obwohl Sie Pure C in einem C ++ - Programm aus Gründen der Abwärtskompatibilität verwenden können."
Manchmal werden sie dich nicht fragen, ob du es mir sagst, und sie gehen davon aus, dass du es nicht weißt. Antworten Sie nicht einfach mit "Ja" oder "Nein".
Bearbeiten
Beachten Sie vorweg, dass diese Antwort nicht dazu gedacht ist, zu erklären, dass es keine Unterschiede gibt, oder dass ich erkläre, die Unterschiede zu kennen, oder sogar, dass ich "Hello World" in C oder C ++ kenne. Es ist eine Antwort auf die Frage, indem es die Bedingungen festlegt und darauf hinweist, dass viele Menschen die grundlegenden Unterschiede kennen (z. B. hat man einige +
Zeichen im Namen) und nur sehr wenige Menschen alle oder sogar die meisten Unterschiede kennen.
Es kommt darauf an, was Sie mit "Programmierer" und was mit "Unterschied" meinen.
Ich bin ein "Programmierer" (obwohl ich mich selbst als Entwickler bezeichne) und habe Mühe, echte Unterschiede zwischen C und C ++ zu erkennen. Wenn gedrückt, würde ich wahrscheinlich sagen, dass C ++ eine Obermenge von C ist, die Namespaces und Vererbung hat; verschiedene Arten des Umgangs mit dem Gedächtnis. Ich weiß genug, um einige Fehler zu beheben oder Änderungen an Ihrem bestehenden Programm vorzunehmen, aber ich kann mir nicht vorstellen, mehr als ein einfaches Dienstprogramm in C oder C ++ zu schreiben. Ich weiß genug, um durchzukommen, aber ich male mich nicht als "Kenner" einer dieser Sprachen.
Ich kenne andere 'Programmierer' (auch Entwickler), die Ihnen nicht einmal den Unterschied zwischen Java und FORTRAN oder Javascript und Pascal erklären würden. Sie sind gut in dem, was sie tun, und sie beherrschen keine prozeduralen Sprachen.
Dann gibt es Millionen mittelmäßiger Programmierer, die kaum die Sprache kennen, mit der sie jeden Tag arbeiten.
Der Begriff "Unterschied" ist ambitioniert. Ich habe darauf hingewiesen, was ich oben als einige Unterschiede sehe, aber ich weiß, dass sie nicht endgültig und vollständig sind. Sehr wenige Leute werden jeden Unterschied kennen - viel mehr Leute werden in der Lage sein, vage Antworten (wie ich) zur Objektorientierung zu geben.
Ist es üblich, dass ein Programmierer den Unterschied zwischen C und C ++ nicht kennt?
Vor zwanzig Jahren? Ja.
Heute? Nicht so viel.
Der Grund dafür ist, dass sich die Programmierlandschaft stark verändert hat. Viele der heutigen Programme sind webbasiert. Sogar für Desktops geschriebene Programme können in einer höheren Sprache als C oder C ++ geschrieben sein. Sofern Sie kein Programmierer sind, der OS-Code schreibt, wissen Sie möglicherweise nicht viel über eine der beiden Sprachen.
Ein Interviewer kann diese Frage in einem Interview stellen, um zu beurteilen, wie viel Sie über Programmiergrundlagen wissen. Wenn Sie den Unterschied zwischen C und C ++ kennen, dann wissen Sie wahrscheinlich, was objektorientierte Programmierung ist, Sie verstehen wahrscheinlich Bibliotheken und Compiler, Sie verstehen Speicherfunktionen, Referenzen, Zeiger ... viele Dinge, die die heutigen Programmiersprachen beeinflusst haben . Ich benutze C ++ nicht viel (und ich kann nicht wirklich sagen, dass ich in jeder Sprache ein ausgezeichneter Programmierer bin; die Weisheit wird mit der Zeit kommen), aber ich kann sagen, dass meine Erfahrung mit C ++ mich definitiv zu einem besseren Programmierer gemacht hat.