Ich habe heute einen Tag der offenen Tür der CS-Abteilung der Universität besucht und uns auf der Labortour zusammengesetzt, um mit ein paar Projekten von Studenten im letzten Jahr zu spielen. Eines war besonders gut - eine Art FPS-Asteroiden-Spiel. Ich beschloss, einen Blick in das src
Verzeichnis zu werfen, um festzustellen, dass es in C ++ erstellt wurde (die meisten anderen Projekte waren Java 3D-Apps).
Ich habe noch kein C gemacht, aber ich habe vorher einen C-Code durchgesehen. Von dem, was ich im CPP-Code in diesem Spiel gesehen habe, sah es nicht sehr anders aus.
Ich bin daran interessiert, entweder C oder C ++ zu lernen, werde aber wahrscheinlich später das andere lernen. Gibt es einen Vorteil für mich, wenn ich voreinander lerne und wenn ja, welchen?
Antworten:
Es ist nicht erforderlich, C zu lernen, bevor Sie C ++ lernen.
Sie sind verschiedene Sprachen . Es ist ein weit verbreitetes Missverständnis, dass C ++ in irgendeiner Weise von C abhängig ist und keine vollständig spezifizierte Sprache für sich.
Nur weil C ++ viel von der gleichen Syntax und der gleichen Semantik hat, heißt das nicht, dass Sie zuerst C lernen müssen.
Wenn Sie C ++ lernen, werden Sie schließlich den größten Teil von C lernen, mit einigen Unterschieden zwischen den Sprachen, die Sie im Laufe der Zeit lernen werden. Tatsächlich ist es sehr schwierig, richtiges C ++ zu schreiben, da fortgeschrittene C ++ - Programmierer dazu neigen, C / C ++ zu schreiben. Dies gilt unabhängig davon, ob Sie mit C begonnen haben oder mit C ++ begonnen haben.
Wenn Sie C zuerst kennen, ist dies ein gutes Plus für das Erlernen von C ++. Sie beginnen damit, einen Teil der Sprache zu kennen. Wenn Sie C nicht zuerst kennen, macht es keinen Sinn, sich auf eine andere Sprache zu konzentrieren. Es gibt viele gute Bücher und Tutorials, die Sie davon abhalten, nichts zu wissen, und alles abdecken, was Sie von C lernen würden, was auch für C ++ gilt.
Weitere Gründe finden Sie in dieser Antwort .
quelle
Ich liebe diese Frage - es ist wie die Frage "Was soll ich zuerst lernen, Snowboarden oder Skifahren"? Ich denke, es kommt darauf an, ob du snowboarden oder Ski fahren willst. Wenn Sie beides tun möchten, müssen Sie beides lernen.
In beiden Sportarten rutschen Sie mit Geräten, die ausreichend ähnlich sind, um diese Frage zu provozieren, auf Schnee einen Hügel hinunter. Sie sind jedoch auch so unterschiedlich, dass das Lernen des einen beim anderen nicht viel hilft. Gleiches gilt für C und C ++. Während sie Sprachen zu sein scheinen, die in der Syntax hinreichend ähnlich sind, unterscheidet sich die Denkweise, die Sie zum Schreiben von OO-Code benötigen, von prozeduralem Code, sodass Sie so ziemlich von vorne beginnen müssen, unabhängig davon, welche Sprache Sie als zweites lernen.
quelle
Ich habe zuerst C gelernt und einen Kurs in Datenstrukturen mit C belegt, bevor ich C ++ gelernt habe. Das hat bei mir gut funktioniert. Ein Datenstrukturkurs in C gab mir ein solides Verständnis für Zeiger und Speicherverwaltung. Es machte auch die Vorteile des objektorientierten Paradigmas deutlich, nachdem ich gelernt hatte, was es war.
Auf der anderen Seite habe ich durch das erste Erlernen von C einige Gewohnheiten entwickelt, die mich anfangs dazu veranlassten, schlechten C ++ - Code zu schreiben, z. B. die übermäßige Verwendung von Zeigern (wenn C ++ - Referenzen dies tun würden) und des Präprozessors.
C ++ ist wirklich eine sehr komplexe Sprache mit vielen Funktionen. Es ist jedoch nicht wirklich eine Obermenge von C. Vielmehr gibt es eine Teilmenge von C ++, die aus den grundlegenden prozeduralen Programmierkonstrukten (Schleifen, Wenns und Funktionen) besteht und C sehr ähnlich ist. In Ihrem Fall würde ich damit beginnen und mich dann zu fortgeschritteneren Konzepten hocharbeiten wie Klassen und Vorlagen.
Das Wichtigste, IMHO, ist es, frühzeitig verschiedenen Programmierparadigmen wie prozedural, objektorientiert, funktional und logisch ausgesetzt zu sein, bevor Ihr Gehirn in eine Sichtweise auf die Welt einfriert. Im Übrigen würde ich Ihnen auch dringend empfehlen, eine funktionale Programmiersprache wie Scheme zu lernen. Es würde Ihren Horizont wirklich erweitern.
quelle
Wenn Sie sich entscheiden, beide zu lernen (und wie andere bereits erwähnt haben, besteht keine explizite Notwendigkeit, beide zu lernen), lernen Sie zuerst C. Der Wechsel von C nach C ++ fühlt sich wie ein natürlicher Fortschritt an. In die andere Richtung zu gehen, fühlt sich an, als würde man absichtlich eine Hand hinter dem Rücken binden. :-)
quelle
Ich denke, du solltest zuerst C lernen, weil ich zuerst C gelernt habe. C gab mir einen guten Einblick in die Syntax und Fallstricke mit Dingen wie Zeigern, die alle in C ++ fließen.
Ich denke, C ++ macht es einfach, all diese Fallstricke zusammenzufassen (benötigen Sie ein Array, das nicht überläuft, wenn Sie den Operator [] und einen zwielichtigen Index verwenden? Sicher, erstellen Sie eine Array-Klasse, die Grenzüberprüfungen durchführt), aber Sie müssen wissen, was Sie sind und werden von ihnen gebissen, bevor Sie verstehen, warum Dinge auf bestimmte Weise getan werden.
Wenn alles gesagt und getan ist, ist die Art und Weise, wie C ++ normalerweise gelehrt wird, "C ++ ist C mit Objekten, hier ist das C-Zeug und hier ist, wie all dieses OO-Zeug funktioniert", so dass Sie wahrscheinlich vor jedem echten C ++ grundlegendes C lernen werden, wenn Sie folge sowieso den meisten Texten.
quelle
Ich werde der Mehrheit hier nicht zustimmen. Ich denke, Sie sollten C lernen, bevor Sie C ++ lernen. Es ist definitiv nicht notwendig, aber ich denke, es macht das Erlernen von C ++ viel einfacher. C ist das Herzstück von C ++. Alles, was Sie über C lernen, ist auf C ++ anwendbar, aber C ist viel kleiner und einfacher zu lernen.
Nehmen Sie K & R und lesen Sie das durch. Es ist kurz und vermittelt Ihnen einen ausreichenden Sinn für die Sprache. Sobald Sie die Grundlagen von Zeigern und Funktionsaufrufen kennen, können Sie etwas einfacher zu C ++ übergehen.
quelle
static
Vorlagen (und den lächerlich einschüchternden Vorlagenfehlern, die Compiler ausgeben) usw.Während des Lernens von C ++ lernen Sie auch den größten Teil von C. Aber denken Sie daran, dass viel C ++ - Code nicht gültig ist. C. C ++ wurde so konzipiert, dass es mit C-Code kompatibel ist. Ich würde also sagen, lernen Sie zuerst C ++. Brian hat diesbezüglich eine großartige Antwort geschrieben .
quelle
Wenn Sie C lernen, müssen Sie zum Zeitpunkt des Schreibens Ihres Codes über einige Themen wie explizite und implizite Speicherverwaltung oder Speichergrößen grundlegender Datentypen nachdenken.
Sobald Sie einen Punkt erreicht haben, an dem Sie sich mit den Funktionen und Fehlfunktionen von C vertraut fühlen , werden Sie wahrscheinlich weniger Probleme haben, in C ++ zu lernen und zu schreiben.
Es ist durchaus möglich, dass der C ++ - Code, den Sie gesehen haben, nicht viel anders aussah als Standard C, aber das kann durchaus daran liegen, dass er nicht objektorientiert war und keine Ausnahmen, Objektorientierung, Vorlagen oder andere erweiterte Funktionen verwendete.
quelle
Nein.
Es ist im Allgemeinen nützlicher, C ++ zu lernen, da es näher an den modernsten OO-basierten Sprachen wie Eiffel oder C # liegt.
Wenn Sie C ++ lernen möchten, lernen Sie zunächst modernes Standard-C ++. Lass die Mallocs beiseite.
Aber Steve Rowe hat Recht ...
quelle
Wie die Antworten auf viele andere Fragen im Leben kommt es darauf an. Dies hängt von Ihren Programmierinteressen und -zielen ab. Wenn Sie Desktop-Anwendungen programmieren möchten, möglicherweise mit einer grafischen Benutzeroberfläche, ist C ++ (und OOP) wahrscheinlich der bessere Weg. Wenn Sie an Hardwareprogrammierung auf einem anderen als einem x86-Chipsatz interessiert sind, ist C häufig die bessere Wahl, normalerweise aufgrund seiner Geschwindigkeit. Wenn Sie einen neuen Media Player erstellen oder eine Geschäftsanwendung schreiben möchten, würde ich C ++ wählen. Wenn Sie wissenschaftliche Simulationen von Galaxienkollisionen oder Fluiddynamiken durchführen möchten, sehen Sie sich die Kraft von C an.
quelle
restrict
C außer dem Spezifizierer kein anderes leistungsbezogenes syntaktisches / semantisches Konstrukt hat als C ++, warum genau sollte C ++ - Code mit seiner reichhaltigeren Syntax und z. B. Metaprogrammierung langsameren Code liefern? Kennen Sie sogar Ausdrucksvorlagen?restrict
die jedoch Alle wichtigen C ++ - Compiler bieten eine Erweiterung an. Und glauben Sie wirklich, dass es bei gleichem Code bei gleichem Compiler einen Leistungsunterschied zwischen C ++ und C geben wird? [...]Ich denke, C zuerst zu lernen ist eine gute Idee.
Es gibt einen Grund, warum Comp-Sci-Kurse immer noch C verwenden.
Meiner Meinung nach besteht die Verpflichtung, OOP zu verlangen, darin, jegliches "Gedränge" des Gegenstands zu vermeiden.
Ich denke, dass prozedurale Programmierung der natürlichste Weg ist, zuerst Programmieren zu lernen. Ich denke, das ist wahr, denn am Ende des Tages ist es das, was Sie haben: Codezeilen, die nacheinander ausgeführt werden.
Viele heutige Texte verfolgen einen "Objekte zuerst" -Ansatz und beginnen, über Autos und Schaltvorgänge zu sprechen, bevor sie Arrays einführen.
quelle
Nachdem ich beobachtet habe, dass Menschen, die zuerst Java gelernt haben, mit den Konzepten der Zeiger und der Speicherverwaltung in C ++ zu kämpfen haben, würde ich sagen, dass das Erlernen von C zuerst eine gute Idee ist, um diese beiden Konzepte zu verstehen, die von den Komplexitäten anderer C ++ isoliert sind Eigenschaften.
quelle
Meine zwei Cent:
Ich schlage vor, zuerst C zu lernen, weil:
quelle
Ich denke, C ist eine wirklich schöne Programmiersprache, es ist kompakt und etwas leicht zu lernen. Wenn Sie jedoch nur C ++ lernen möchten, beginnen Sie mit C ++. aber ich schlage vor, dass Sie beide lernen. und wenn du das machen willst; Ich denke, es ist besser, mit c zu beginnen. wie gesagt: es ist klein und etwas leicht zu lernen. könnte ein guter Schritt zu einer komplexeren Programmiersprache wie c ++ sein. (da c Ihnen einige Grundlagen bietet)
Viel Glück.
quelle