Gibt es eine Möglichkeit, dass jemand, der alle wichtigen Aspekte von C ++ gelernt hat und die Grundlagen der Sprache sehr gut kennt, andere Sprachen (wie Python, Perl, Java) schneller und einfacher lernt?
Gibt es eine Möglichkeit, dass jemand, der alle wichtigen Aspekte von C ++ gelernt hat und die Grundlagen der Sprache sehr gut kennt, andere Sprachen (wie Python, Perl, Java) schneller und einfacher lernt?
Antworten:
Fundierte Kenntnisse in jeder Programmiersprache helfen Ihnen wahrscheinlich dabei, andere Sprachen schneller zu erlernen. Das liegt zum Teil daran, dass Programmieren eine Art zu denken ist, mehr als Syntax zu lernen. Die meisten Programmierpraktiken gelten für die meisten anderen Programmiersprachen. Deshalb sagen die Leute, dass Sie die zweite Programmiersprache immer schneller lernen als die erste.
C ++ ist eine Sprache, die eine viel größere Kontrolle als andere Sprachen ermöglicht. Dies kann sowohl gut als auch schlecht sein. Zum Beispiel ist eine echte Waffe besser als eine Luftwaffe, wenn Sie in den Wald gehen (weil Sie damit tatsächlich etwas abschießen können), aber es ist auch gefährlicher für Sie und Ihre Umgebung. C ++ verfügt über Konzepte wie die Speicherverwaltung, über die Sie sich in den meisten anderen Sprachen keine Gedanken machen müssen. Ein sicheres Verständnis dieser Konzepte ist jedoch alles andere als sinnlos, selbst wenn mit Sprachen für die automatische Speicherverwaltung gearbeitet wird. Sie können auch bitweise Operationen ausführen und mit einer Sprache wie C ++ viel tiefer zum 'Metall' gehen. Selbst ein grundlegendes Verständnis in diesen Bereichen kann Ihnen als Programmierer in jeder Sprache sehr helfen.
Ich persönlich habe Java fast 3 Jahre lang zuerst gelernt, bevor ich C ++ gelernt habe, und ich sollte sagen, dass ich es irgendwie bereue (Uni-Kurs ...). Dies machte das Lernen von C ++ (ich lerne immer noch - weit entfernt von 'tiefem' Wissen: D) nicht so einfach, wie ich es gerne hätte. Wenn ich es umgekehrt gemacht hätte, würde ich sagen, dass es für mich viel einfacher gewesen wäre. Besonders wenn Sie wissen, WARUM etwas auf eine bestimmte Art und Weise getan wird, und sich nicht nur auf die automatische Magie der Sprache verlassen können. Wenn ich eine Meinung abgeben darf, würde ich vorschlagen: C (für grundlegende und universelle Programmierparadigmen) -> C ++ (für das grundlegende Verständnis von OOP zusammen mit der Speicherverwaltung) -> Dann können Sie mit a in jede 'echte' OOP-Sprache wechseln Gute Grundlage, oder Sie können mit fortgeschritteneren Themen in C ++ fortfahren, je nachdem, was Sie tun.
OR
undAND
Unglücklicherweise nicht. Dies ist tatsächlich ein großes Problem beim Unterrichten von C ++ in Programmierklassen, insbesondere in Anfängerklassen: Sie können Programmierprinzipien lernen oder die C ++ - Sprache lernen, aber die C ++ - Sprache weist zu viele Fallstricke und dumme kleine Fallstricke auf, um beide effektiv zu lernen der Umfang einer Ein-Semester-Klasse!
Es gibt viele Dinge, die in C ++ ausprobiert wurden und schließlich durch bloße Trägheit in der Sprache idiomatisch wurden, die so ziemlich jede andere Sprache seitdem betrachtet und abgelehnt hat, weil es sich als großer Fehler herausstellte. Die wichtigsten sind die Vorlagen von C ++ und das Objektmodell von C ++ (Objekte als Werttypen sind niemals eine gute Sache, da sie die Liskov-Substitution und tausend OOP selbst unterbrechen.)
Wenn Sie also zuerst ein tiefes Wissen über C ++ haben und dann andere Programmiersprachen lernen möchten, wird es eine Menge schädlicher und kontraproduktiver Probleme geben, die Sie verlernen müssen, um in anderen Programmiersprachen effektiv zu sein.
Wenn Sie C ++ gut kennen, können Sie leichter andere Sprachen lernen, die C ++ ähneln. Das wäre aber langweilig. Warum möchten Sie zwei Sprachen kennenlernen, die gleich sind? Das kauft dir nichts. (Beachten Sie, dass dies nicht spezifisch für C ++ ist. Es gilt für jede Sprache. Vergleichen Sie mit natürlichen Sprachen: Wenn Sie Italienisch lernen, wird es nicht einfacher, andere Sprachen zu lernen. Es wird einfacher, Spanisch, Französisch oder Portugiesisch zu lernen und drei zu lernen von diesen wird es einfacher sein, die vierte zu lernen, aber selbst das Erlernen aller romanischen Sprachen wird Ihnen kein bisschen helfen, Finnisch, Chinesisch, Hindi, Hebräisch, Arabisch, Paschtu, Griechisch usw. zu lernen .)
Programmiersprachen implementieren Paradigmen. Peter van Roy hat ein Poster der 34 wichtigsten Programmierparadigmen gesammelt .
Paradigmen wiederum bestehen aus Konzepten. Dieses Poster listet ungefähr 18 Konzepte auf.
Alle Paradigmen (oder zumindest die im Poster) bestehen aus diesen Konzepten. Alle Sprachen implementieren ein oder mehrere Paradigmen, die aus diesen Konzepten bestehen. Wenn Sie diese Konzepte lernen, lernen Sie (in gewissem Sinne) jede Programmiersprache gleichzeitig.
Es gibt natürlich noch viele sprachspezifische Macken (Syntax unter ihnen). Außerdem ignoriert dieses Poster die Eingabe vollständig, und es gibt natürlich einen signifikanten Unterschied zwischen einem System vom Typ F <: ω- Typ, einem System vom Typ Scala oder einem System vom Typ Typ mit dynamischer Ente, geschweige denn einem System vom abhängigen Typ à la Idris, Agda, Coq, Guru oder ATS.
Ich würde sagen, dass eine gründliche Kenntnis einer Programmiersprache dazu beiträgt, andere zu lernen, zumindest andere Sprachen in derselben Familie. Zum Beispiel hilft C ++ - Wissen bei LISP oder Haskell nicht viel, bei objektorientierten prozeduralen Sprachen jedoch. Mein Ansatz war es, zu versuchen, eine Sprache aus jeder der verschiedenen Familien (prozedural, funktional, objektorientiert usw.) von Sprachen gut zu lernen, damit dieses Wissen auf andere Sprachen in dieser Familie übertragen werden kann. Auf der anderen Seite hilft ein tiefes Wissen über APL bei nichts anderem ...
Ich werde hier eine andere Interpretation nehmen.
C ++ ist eine gute Sprache zum Erlernen von Speicher- und Datenstrukturen, da Sie dazu gezwungen sind, über Konzepte wie Objektbesitz und Lebensdauer sorgfältig nachzudenken. Das Erlernen von Speicher- und Datenstrukturen ist einer der wesentlichen Bestandteile eines jeden Lehrplans für Softwareentwicklung.
Aber Sie müssen etwas über Datenstrukturen lernen. Wenn Sie nur "C ++ lernen", werden Sie nicht wirklich viel gewinnen, und es kann kurzfristig den Prozess des Lernens anderer Sprachen verlangsamen.
Als ich am College war, war Data Structures ein Pflichtkurs für Anfänger, der nach CS1 (von dem mindestens die Hälfte der Klasse abgelegt hatte) belegt wurde. Es war schwer. Das Format des Kurses lautete im Grunde genommen "Hier ist eine Datenstruktur, die Sie noch nie gesehen haben [z. B. ein linker Haufen ]. Implementieren Sie sie in einer Woche in C ++ und stellen Sie sicher, dass Ihre Ausgabe genau mit unserer erwarteten Ausgabe übereinstimmt, Byte für Byte, also wir kann es automatisch bewerten. " Nächste Woche erhalten Sie dann eine neue Datenstruktur und eine neue Zuordnung. In diesem einen Kurs habe ich wahrscheinlich mehr gelernt als in allen anderen Kursen zusammen.
Das ist die Art von Lernen, die Sie machen müssen, damit C ++ wertvoll ist.
Jede Sprache, die Sie lernen, erleichtert das Erlernen der nächsten Sprache, insbesondere innerhalb desselben Paradigmas. Sie leihen sich stark voneinander aus, und nach einer Weile kommt man an einen Punkt, an dem eine neue Sprache mit nur wenigen Wendungen wie eine Sammlung von Funktionen aus anderen Sprachen aussieht.
Ich denke nicht, dass C ++ in dieser Hinsicht besser oder schlechter ist als jede andere Sprache. Es ist eine der ausführlicheren Sprachen, die ich kenne, und macht einige Dinge schwierig, die in den meisten anderen Sprachen einfach sind, aber nicht unbedingt dazu führen, dass die nächste Sprache leichter zu lernen ist . Es ist im Allgemeinen der nächste Sprache fühlen einfachen Gebrauch , though. Es besteht ein Unterschied.
Nein. Eine gründliche Kenntnis von C oder der Teilmenge von C ++, die "im Grunde C" ist, hilft beim Erlernen anderer Sprachen, zumindest wenn man sich vorstellt, was ihre Implementierungen tun müssen. Grundlegende Kenntnisse in C ++ sind dagegen meist Informationen, die beim Erlernen anderer Sprachen verwirrend oder irrelevant sind. Wenn Sie die Objektorientierung von C ++ auf mehr als einer Oberflächenebene lernen, z. B. wenn Sie zu Perl / Python / Ruby wechseln, verbringen Sie mehr Zeit damit, das, was Sie wissen, nicht zu lernen, als es zu verwenden, da Objekte in diesen Sprachen in implementiert sind ein ganz anderer Wegals in C ++. Dasselbe gilt mehr oder weniger für die meisten anderen Sprachen und für andere Sprachfunktionen (z. B. sind C ++ - Vorlagen und Haskell-Polymorphismus im Grunde die gleiche Funktion mit wiederum völlig unterschiedlichen Implementierungen). Tiefes Wissen über C ++ wird also meistens C ++ - spezifisch sein.