Ich habe eine Frage, die meiner Meinung nach am besten hier beantwortet werden kann.
Ich bin ziemlich gut darin C++
, gut, wie ich mich mit der Sprache wohl fühle, ich habe Accelerated C++
fast alle Übungen gelesen und getan.
Ich habe jedoch ein großes Problem. Muss ich lernen C
? Ich habe noch nie C
in meinem Leben getan . Ich habe gerade angefangen, C++
als ich mit dem Programmieren angefangen habe. Wahrscheinlich war ich immer daran interessiert zu wissen, warum jeder die Sprache so komplex nennt. Jetzt weiß ich die Antwort auf diese Frage;)
Ich bin besonders daran interessiert zu wissen, ob ich überleben kann, ohne C
in der heutigen Welt Bescheid zu wissen . Zum Beispiel, wenn ich ein Interview in einem Unternehmen gebe, wenn ich ihnen sage, dass ich es nicht weiß C
- werden sie es als OK ansehen? Die beiden Sprachen, in denen ich gut bin, sind Python und C ++. Ich frage dies, weil ich gehört habe, dass Unternehmen in Interviews Datenstrukturen abfragen. Also, wenn sie mich bitten, es zu implementieren, und wenn ich es in C ++ mache, ist es akzeptabel?
Und Leute, die sagen 'Wie können Sie C nicht kennen, wenn Sie C ++', antworten Sie bitte nicht :) Keine Beleidigung, aber ich verstehe nicht, warum das Erlernen von C Voraussetzung ist.
Antworten:
Wenn Sie C ++ kennen, würde ich C nicht nur deswegen lernen. Sie sollten es nicht zu schwierig finden, zu lernen, ob und wann Sie es brauchen.
Ich würde weitaus lieber jemanden treffen, der behauptet, C ++ zu kennen, aber nicht C, als jemanden, der behauptet, C / C ++ zu kennen.
quelle
Eine mehrteilige Antwort. Nur meine Meinungen.
Nach meiner Erfahrung (25 Jahre nach Abschluss des Studiums) wird C ++ auf absehbare Zeit für interessante Systeme von entscheidender Bedeutung sein, auch wenn es immer seltener vorkommt. Daran halte ich als Hauptfachgebiet fest. Die Arbeit ist hart, interessant und wichtig.
C ++ - Programmierer sind im Allgemeinen gerade deshalb wertvoll, weil sie nicht mit verwalteten Sprachen aufgewachsen sind und daher eher verstehen, was unter der Decke vor sich geht. Der Übergang von C ++ zu C # / Java ist einfacher als umgekehrt, da der Balken für die Eingabe höher ist.
Meiner Ansicht nach ist es also nicht unbedingt erforderlich, C zu verstehen, um kompetent in C ++ zu programmieren, und ein Verständnis dafür zu entwickeln, warum C ++ im Kontext von C existiert - seine Einschränkungen und Stärken und wie diese in C ++ angegangen werden oder nicht von unschätzbarem Wert für Sie im Laufe der Zeit.
Viel Glück.
quelle
Hier ist, was Bjarne zu sagen hat:
quelle
Nur meine persönliche Meinung: Wenn Sie C ++ kennen, können Sie in C schreiben. Einige Erfahrungen wären nett, aber dies ist kein Problem. Das Gegenteil ist nicht richtig: C-Kenntnisse erlauben es nicht, ohne zusätzliches Lernen in C ++ zu schreiben. Ich habe C nie gelernt und benutze es, wenn es nötig ist, ohne Probleme.
quelle
Okay, das Wichtigste zuerst - nein, C zu kennen ist keine Voraussetzung, um C ++ zu lernen. In der Tat kann es eine Behinderung sein.
Zweitens ist dies völlig situativ. Ob Sie C kennen müssen oder nicht, hängt ganz davon ab, ob der Job es erfordert. Wenn Sie ein Typ für eingebettete Systeme sein möchten, hilft es, C zu lernen. Andernfalls benötigen die meisten Jobs dies nicht. Wenn ein Job C benötigt, sollte es so sagen. Wenn es nicht so aussagt, braucht es es wahrscheinlich nicht. Bei den Datenstrukturen kommt es wiederum auf das Unternehmen an. Normalerweise sagt ein Unternehmen: "Wir programmieren in diesen Sprachen, schreiben uns diese Datenstruktur. Verwenden Sie die Sprache Ihrer Wahl aus der obigen Liste." Wenn sie dich bitten, es in C zu schreiben, sagst du einfach: "Ich kenne C nicht - in meinem Lebenslauf steht nicht, dass ich C kenne, dieser Job ist nicht für mich."
quelle
Fragen Sie, ob sie C benötigen (und ob sie bereit sind, es zu lernen oder nicht).
Ich würde es erwarten, wenn sie Sie interviewen / einstellen, um in C ++ zu arbeiten.
Wenn es sich um eine "Datenstruktur" -Frage handelt, können Sie sie fragen, ob Sie die Verwendung von STL-Containern demonstrieren sollen oder ob Sie die Datenstrukturen (weil es sich um ein Interview handelt) von Grund auf neu implementieren sollen.
quelle
C ist fast eine richtige Teilmenge von C ++. Wenn Sie C nicht kennen, kennen Sie keine große und wichtige Teilmenge von C ++. Haben Sie haben auf diese Teilmenge lernen? Nein. C ++ ist eine lächerlich große Sprache und die meisten Leute wählen eine Teilmenge und programmieren damit. Es ist nicht erforderlich, dass Sie die Teilmenge C kennen. Insbesondere ist es nicht so wichtig, die C-Standardbibliothek zu kennen. Ich würde jedoch ein sehr misstrauisches Auge auf jeden werfen, der Kern-C-Konzepte wie Zeiger, Arrays und Bit-Twiddling nicht versteht.
quelle
Nein, das musst du nicht. Zeitraum.
Aber das Erlernen einer neuen Programmiersprache ist auf lange Sicht von Vorteil. Noch vorteilhafter ist es, Sprachen zu lernen, die auf unterschiedlichen Programmierparadigmen basieren. Ob es sich um eine OOP-Sprache (Smalltalk oder C ++), eine dynamische Sprache (Lisp, Clojure, Python), eine funktionale Sprache (Lisp, Haskell, Erlang), eine gleichzeitige Sprache (Erlang, Go, Algol 68, Smalltalk) oder eine andere Sprache (Fortran 03, Perl, Forth) anderes neues fangled Paradigma Ihre Fantasie schlägt; Durch das Erlernen verschiedener Sprachen lernen Sie mehrere Denkrichtungen kennen, von denen jede ihre eigenen Stärken und Schwächen hat, um die anstehende Aufgabe zu lösen.
Fortran ist immer noch führend im numerischen Rechnen, COBOL ist immer noch eine tragende Säule bei großen Versicherungsunternehmen, Unix, BSD und Linux basieren immer noch hauptsächlich auf C. Alter Code verliert mit zunehmendem Alter nicht an Wert, weil er nicht unbedingt abnutzt wie mechanische Geräte, die im Laufe der Zeit ersetzt werden müssen. Ältere Sprache kann also im Hinblick auf die Beschäftigungsfähigkeit im Vergleich zum coolen Faktor einer neueren Sprache wertvoll sein.
So wie das Lernen, um in natürlichen (menschlichen) Sprachen mehrsprachig zu werden, zweifellos Ihre Ausdrucksfähigkeit verbessert, bietet dasselbe den gleichen Bonus für Computersprachen.
Ich halte es also für wichtig (im Laufe der Zeit) zu lernen, nicht nur mehrere Sprachen zu beherrschen, sondern auch mehrere Programmierparadigmen zu beherrschen.
Ich mache ein Backup und sage, dass C ++ eine reiche und komplexe Sprache ist. Es wird Jahre dauern, bis man sich mit all seinen reichen (oder hässlichen) Feinheiten auskennt und sich beständig darin auskennt.
Nehmen Sie sich Zeit und lernen Sie weiter, das ist der wichtigste Rat, den ich Ihnen geben kann. Ich möchte Sie dazu ermutigen, Peter Norvigs „ Teach Yourself Programming“ in zehn Jahren zu lesen .
quelle
Eine sehr kurze Antwort auf Ihre Frage lautet: Es hängt stark von Ihren Bedürfnissen ab. Einige Unternehmen verlassen sich hauptsächlich auf C, manchmal als Relikt (wenn C dort schon seit Jahren verwendet wird). Andere Unternehmen haben nichts mit C zu tun. C ist eine niedrigere Programmiersprache als beispielsweise Python oder Java, und für viele Anwendungsprogramme sind möglicherweise keine C-Kenntnisse erforderlich. Im Gegensatz zu OOP-Sprachen erfordert C ein anderes Mindframe Ich meine, dass Programme anders strukturiert und organisiert sind und einige differenziertere Aspekte berücksichtigt werden müssen. Es ist im Allgemeinen von Vorteil, diese Redewendung zu erlernen, und zwar sozusagen nur, um den Verstand zu erweitern. Aber auch hier hängt es von ihren Bedürfnissen ab, ob sich Unternehmen darum kümmern. Einige bieten Ihnen möglicherweise eine Auswahl an Sprachen, einige erfordern Java, andere C ++, andere weiterhin C usw. Können Sie überleben? Ja heute' Die Welt von s hat so viele verschiedene Programmierbereiche, dass Sie C-Code möglicherweise nie verwenden werden. Solltest du C lernen? Ich würde sagen - ja, unabhängig von der späteren Verwendung.
quelle
Einige Leute fühlen sich beim Programmieren in C möglicherweise nicht wohl, wenn sie C ++ kennen.
Es gibt eine "schützende" Struktur um C ++, die dazu beiträgt, nicht nur die Struktur, sondern auch die Algorithmen eines Programms zu steuern. Zum Beispiel die Hilfe der STL-Struktur und -Algorithmen, des offensichtlichen objektorientierten Programmieransatzes, des Con / Destructor, der hinzugefügten abstraktiven Ebene, die aus den Vorlagen stammt ...
Während C - wie gesagt - einfacher ist, zwingt es den Programmierer, selbst eine Struktur und Algorithmen in die Problemmodellierung einzufügen. Dies ist eine intensive Erweiterung der Programmierfreiheit.
Aber es hat Kosten, da einige Leute mehr auferlegte Strukturen benötigen und ein Programm entwickeln, dessen Wartung exponentiell schwieriger ist, wenn es größer wird. Ich sage oft, dass das Problem nicht die Sprache (C) ist, sondern was man damit macht.
Abgesehen davon, dass ich als Personalvermittlerin froh bin, jemanden mit starken C ++ - Kenntnissen zu interviewen, wäre aber umso enthusiastischer, wenn sie genug Sprachautonomie hätte, um ein ganzes C-Projekt zu entwickeln.
Ein gutes C-Programm setzt auch gute Kenntnisse des Entwicklersystems voraus, da die Sprache (normalerweise) ein angemessenes Verständnis der Systemkomponenten erfordert, um ein effizientes Runnable zu erstellen.
quelle
Wenn Sie sich in C ++ wohlfühlen, würde ich mir keine Sorgen um C machen. C ++ hat viele Verbesserungen gegenüber C (die Fähigkeit, RAII mit Konstruktoren / Destruktoren, Baseline-Containern, Streams und Zeichenfolgen zu unterstützen, ist groß).
Ich würde jedoch vorschlagen, die
printf
und diescanf
Reihe von Funktionen zu lernen, damit Sie den Code, der sie verwendet, LESEN können. Sie sind in C ++ sehr beliebt, daher ist es hilfreich zu wissen, wie sie verwendet werden. Ich schlage nicht vor, sie ohne einen bestimmten Grund in Ihrem eigenen Code zu verwenden.quelle
Das einzige Mal, dass Sie C kennen müssen , ist, wenn Sie C-Code erzeugen sollen. Wenn nicht, gibt es kein Problem.
Ich habe C in den letzten 6 Jahren nicht professionell geschrieben; Es gibt viele Anwendungsdomänen, die von anderen Sprachen (zumindest aus Sicht der Produktivität, wenn nicht der Leistung) wie Java oder C # oder Python besser bedient werden. Mit Sicherheit können Sie als Softwareentwickler überleben und sogar gedeihen, ohne jemals C zu berühren.
Wenn Sie C für Ihren eigenen Missbrauch lernen möchten, ist das in Ordnung. Je nachdem, wie Sie C ++ erlernt haben und wie stark Sie auf C ++ - spezifische Funktionen angewiesen sind (Vorlagen, Referenztypen, AWL, Überladung), kann es zu Problemen kommen, wenn Sie feststellen, dass 90% der Tools, die die Programmierung tolerierbar gemacht haben, nicht mehr verfügbar sind. Sachen wie Speicherverwaltung in C sind im Vergleich zu C ++ oder Java sehr arbeitsintensiv und mühsam. Es gibt auch einige Inkompatibilitäten zwischen C und C ++, und mit jeder neuen Sprachversion wird sich diese Lücke vergrößern.
Es gibt immer noch Anwendungsbereiche, in denen C das richtige Werkzeug für den Job ist: klein, schnell, nicht viel Magie unter der Haube und keine Montage. Für die allgemeine Anwendungsentwicklung (insbesondere GUI-gesteuerte Desktop-Anwendungen) stehen jedoch weitaus bessere Tools zur Verfügung.
quelle
Ich denke, wenn Sie mit C ++ vertraut sind, werden Sie auch mit C vertraut sein.
Der Hauptunterschied zwischen beiden ist, dass C ++ sauber ist - objektorientiert - C nicht :)
quelle
Wenn Sie C kennen, erhalten Sie weitere Einblicke in die Speicherverwaltung usw. Es geht darum, wie niedrig Sie werden möchten und ob es Ihnen hilft, die Dinge auf einer niedrigeren Ebene zu verstehen oder nicht. Sie könnten noch einen Schritt weiter gehen und auch Assemblersprache lernen, aber es kommt darauf an, wie viel es Ihnen wert ist.
Es kommt auch darauf an, ob Sie in C programmieren wollen oder nicht. :)
quelle
Ja, ist in Ordnung...
IMHO, da Sie gut sind
C++
, ist es in der Tat genug ...Ich wette, es gibt Branchen, die nach C ++ - Programmierern suchen ... Aber wenn Sie sich erst einmal damit befasst haben, hängt alles von Ihren Projektanforderungen ab. Was auch immer erforderlich ist, Sie müssen es möglicherweise lernen. Es kann Java, .NET oder sogar C sein .. Wenn das Unternehmen bereit ist, Sie zu bezahlen, lernen Sie es einfach ...
Wenn Sie sich in einem früheren Stadium Ihrer Karriere befinden, neigen IME-Interviewer dazu, sich mit Ihrer Einstellung und dem Verständnis der Sprache zu befassen, mit der Sie vertraut sind.
Anstatt aus
C
Gründen des Lernens , lerne C ++ ein bisschen gründlich. Verbessere deine Fähigkeiten. Ich bin sicher, es gibt viel zu lernen. Für mich gibt es immer etwas in C ++ zu lernen. )quelle
Ich denke, das Wichtigste, was Sie in Bezug auf C wissen müssen, sind die Unterschiede zwischen C und C ++. Sie werden wahrscheinlich einige Code sehen , dass einige C - Stil in es an einem gewissen Punkt hat, und Sie sollten nicht verwechselt werden , wenn man die Dinge sehen , wie
malloc
,free
,printf
,fopen
, oderfclose
. Sie sollten auch wissen, wie ähnlich diese sind und wie sie sich von ihren C ++ - Gegenstücken unterscheiden.Sie sollten das auch wissen
<<
und>>
Links- und Rechts-Shift-Operatoren sind, keine Einfügeoperatoren. In C ++, wo Sie Operatoren überladen können, wurden diese überladen, um Stream-Einfügungen und ähnliche Vorgänge auszuführen, aber sie werden weiterhin zum Verschieben von Ganzzahlen verwendet.Stellen Sie sicher, dass Sie alle grundlegenden Funktionen von C ++ verstehen, die nicht in C enthalten sind. Wenn Sie stackoverflow.com ausreichend gelesen haben, werden Sie viele, viele Fragen sehen, die die Unterschiede in den Sprachen und deren Missverständnisse betreffen.
Sie sollten sich auch mit dem C-Präprozessor vertraut machen, der fast mit dem C ++ - Präprozessor (und häufig auch mit dem Programm) identisch ist. Zu wissen, wie man es benutzt, wird Ihnen in C ++ helfen, aber in C stützt es sich auf viel mehr.
Eine große Sache, mit der sich C ++ nur schwer auseinandersetzen lässt, sind Destruktoren. Diese Dinge können überall aufgerufen werden, um Ressourcen freizugeben, aber in C müssen Sie das alles expliziter machen. Dies ist für C ++ - Programmierer leicht zu vergessen.
Was Interviews anbelangt, wenn jemand Sie auffordert, Code für einen allgemeinen Algorithmus in C zu schreiben, und Sie etwas tun wie:
Ich glaube nicht, dass sie entscheiden werden, dass Sie nicht wissen, was Sie tun, weil Sie es nicht getan haben:
Und es sollte ihnen wirklich egal sein, ob Sie verwendet haben, es
cout
sei denn, sie versuchen, Sie zum Präsentieren zu bewegen, und Sie können mit Ein- und Ausgaben umgehen, was C ++ für häufig vorkommende Fälle einfacher macht.Wenn Sie sich in der Lage befinden, für einen Job interviewt zu werden, für den C erforderlich ist, sollten Sie sich vorab über Ihren Mangel an C-Kenntnissen im Klaren sein, der sich nicht mit C ++ überschneidet. Sie werden wahrscheinlich verstehen, dass ein guter Programmierer in der Lage sein sollte, relativ schnell von C ++ auf C umzusteigen.
Abgesehen davon ist C keine so große Sprache. Die Standardbibliothek ist viel kleiner als die von C ++ und es ist keine große Sache, sich mit den häufigsten Stücken vertraut zu machen. Es kann also nicht schaden, sie zu lernen.
quelle