it-swarm-eu.dev

Ist C ++ als Muttersprache geeignet?

Ein lokales College unterrichtet C++ für College-Studenten im ersten Jahr (16 Jahre) ohne vorherige Programmiererfahrung.

Ist C++ als erste Programmiersprache geeignet?

26
Ed James

Nachdrücklich Nein .

Für jedes Ziel, das Sie für Schüler vor Augen haben, wäre eine andere Sprache oder Folge von Sprachen schneller und besser. Beispiele.

"Die Schüler müssen Konzepte auf niedriger Ebene verstehen."

"Low-Level" -Codierung besteht nicht darin, Objekte von new abzurufen, sie an delete zurückzugeben und gelegentlich einen Zeiger zu haben, der auf eine Stelle zeigt, die nicht angezeigt werden sollte. Funktionen, Klassen und Vorlagen sind nicht auf niedriger Ebene. RAII, 12 Verwendungsmöglichkeiten für const, std::ostream::operator<<, protected und new sind keine Konzepte auf niedriger Ebene. Diese Dinge haben Auswirkungen auf niedriger Ebene, und Sie überspringen diese für Monate oder bis zu einer zukünftigen Klasse und unterrichten stattdessen Berge von C++ - Semantik.

Ich empfehle Assembler mit einer guten Umgebung und Lehrmaterial wie MIPS oder MMIX. Wenn Sie es eilig haben, bringen Sie C mit Umwegen bei, um zumindest die Assembler-Ausgabe zu betrachten. Dies gibt Ihnen alles, was C++ auf niedriger Ebene zu bieten hat, und noch einige mehr.

"Die Schüler müssen die Objektorientierung verstehen."

Die in C++ integrierte Objektorientierung ist für das Unterrichten von OO Konzepten oder fast jedem anderen übergeordneten Konzept) viel zu kompliziert. Eine schöne, lange Liste finden Sie unter Die C++ - FAQ Sie müssen entweder all das Zeug treffen, was bei neuen Programmierern sehr, sehr lange dauern wird, oder Sie müssen viel davon überspringen und die neuen Programmierer im Dunkeln lassen - effektiv nicht C++ wirklich kennen!

Ich empfehle, zuerst eine einfachere Hochsprache mit Objekten (Python, Ruby, Squeak, Common LISP, Racket) zu lernen, wenn Sie überhaupt C++ unterrichten müssen. Lernen Sie darüber hinaus Polymorphismus als ein Konzept, das von OO] getrennt ist, indem Sie eine funktionale Sprache besuchen.

"Die Schüler müssen Vorlagen und Metaprogrammierung von Vorlagen verstehen."

Niemand fragt das wirklich, aber ich wünschte, sie würden es tun. C++ hat nette Vorlagen und STL ist cool, aber sie sollten nicht hoch genug sein, um zuerst C++ zu unterrichten. Das Einlernen des OCaml- oder Haskell-Systems und das anschließende Nachrüsten dieser Konzepte ist möglicherweise ohnehin schneller.

"Die Schüler müssen lernen, Probleme zu lösen."

Ja, Sie bekommen dies in jeder Sprache und Sie bekommen mehr, wenn es in fast jeder anderen Sprache als C++ ist, weil es viel weniger Gepäck gibt. Unter Die C++ - FAQ finden Sie eine Liste aller Dinge, die die Schüler lernen werden, anstatt Fähigkeiten zur Problemlösung.

"Alle oben genannten Punkte, und wir müssen nur eine Sprache verwenden." oder "Arbeitgeber wollen es." oder "Wir brauchen eine Sprache im C-Stil." oder ...

Unterrichten Sie mehr als eine Sprache.

Die Idee, dass Sie Zeit oder Energie sparen, indem Sie nur eine Sprache lehren oder lernen, ist geradezu lächerlich. Es basiert auf der Idee, dass das Erlernen einer bestimmten Sprache genau X Mannmonate dauert ( TIPP! TIPP! ), wobei X eine einzelne Zahl oder eine Zahl pro Sprache ist. Dies ist fast identisch mit der Idee, dass Sie Zeit und Geld sparen können, indem Sie all diese "Anforderungen" überspringen und den Müll "testen".

Bei mehreren Syntaxen lähmen Sie die Schüler gefährlich, wenn Sie ihnen beibringen, die C-Syntax in jeder Sprache zu erwarten, indem Sie sie wild gegen andere Sprachen voreingenommen machen.

Fast jeder Pfad ist schneller und besser als mit C++ zu beginnen. Das Erlernen einer einfachen Hochsprache und dann von C++ wäre schneller. Assembler und dann C++ zu lernen wäre schneller. Alles andere als C++ bringt die Schüler schneller dorthin und sie wissen viel mehr zum Booten. Unterrichten Sie C++ nur nicht zuerst.

61
Jesse Millikan

Nein, C++ ist selbst für erfahrene C++ - Entwickler eine schwierige Sprache. Selbst für die einfachsten Algorithmen müssen Sie viele der sprachlichen Feinheiten erklären. Betrachten Sie ein Hello World-Beispiel:

#include <iostream>

int main()
{
  std::cout << "Hello World!" << std::endl;
}

Was ist das #include Befehl? Was ist std::cout. Warum zum ::? Was ist <<? Ohhh, es ist ein überladener Operator! Was ist ein überlasteter Bediener? Sooo, für ints verschiebt es sich etwas, aber für was auch immer std::cout ist, es gibt Sachen an die Konsole aus. Oh, std::cout ist ein Stream, und Streams haben ihre << und >> Operator überladen.

Sehen wir uns das gleiche Beispiel in Python an:

print("Hello World!")

Das war's, lass uns ein paar Algorithmen codieren.

54
Marco Mustapic

Es ist wahrscheinlich keine gute Muttersprache: komplexe Syntax, viele Regeln, alte Sprache, fehleranfällige Speicherverwaltung. Besser, Sie bringen Ihren Schülern etwas mehr bei OO wie Smalltalk oder etwas Schöneres, mit dem Sie programmieren können, wie Python oder etwas Funktionales wie Haskell.

Sie können C++ später im Leben lernen (wenn sie nichts dagegen tun können), nachdem sie bessere Sprachen gelernt haben.

21
Andres F.

Kurze Antwort: Ja!

Ich würde sagen, dass jede Sprache ein geeigneter Anfang ist, aber insbesondere C++ (oder gleichwertig). Heutzutage sind C # und Java sind die wichtigsten verwendeten Sprachen und Programmiersprachen. Mit diesen Sprachen lernen Sie schnell, sich auf die API und IDEs zu stützen, aber mit C++ haben Sie die Möglichkeit, das Programmieren von Grund auf zu lernen, einschließlich der Leistung Optimierung usw.

Es ist nie eine schlechte Idee, die Grundlagen des Programmierens, Schleifens und Sortierens zu erlernen, bevor Sie sich blind auf eine in .Sort () integrierte Sprache verlassen.

18
Mantisen

Eigentlich glaube ich, dass es aus einem sehr praktischen Grund wahrscheinlich eine gute Wahl als Muttersprache ist: Nach dem Erlernen von C++ scheint jede andere Sprache, der Sie begegnen, ein Kinderspiel zu sein.

14
ennuikiller

Ich habe mir C++ beigebracht, als ich 15-16 war.

Es ist besser, die Magie anderen zu überlassen und das Innenleben der Dinge selbst zu lernen.


Kurz gesagt, wenn Sie die C++ - Syntax und -Semantik für Einsteiger nicht herausfinden können, sind Sie nicht so gut in Computern. Es ist nicht so schwer. Es gibt keinen guten Grund, "C mit Klassen" zu vermeiden.

Wenn Sie erwarten, dass die Schüler anfangen, an der Metaprogrammierung von Vorlagen zu arbeiten, polymorphe Aufrufe abzuleiten und mehrere Vererbungshierarchien zu entwirren, ist dies für eine Einstiegsklasse für jede Art von Sprache, die Sie verwenden, lächerlich.

Es gibt eine sehr schlechte Tendenz, die Feinheiten des Programmierens für Studenten verbergen zu wollen. Das endet nicht gut (vgl. Spolskys Java Schools Essay). Diese Leute landen auf der DailyWTF, wenn sie ihren Kopf nicht gerade bekommen. Abstraktionen lecken und wann (nicht wenn) die Abstraktion Lecks, das ist schlimmer als damit umgehen zu müssen. Ich habe gearbeitet als TA für C++ - Einsteiger. Entweder müssen die Dinge vollständig versteckt sein oder sie müssen ans Licht gebracht werden zu untersuchen. Magie ist der Feind des Lernenden.

Wenn ich eine Startsprache empfehlen müsste, die zu Maschinencode kompiliert wurde, wäre eine Pascal-Variante wahrscheinlich der beste Ansatz. Soweit ich mich erinnere, hat es einen regelmäßigeren und strukturierteren Ansatz als die C-Familie.

10
Paul Nathan

Nein.

Als Unterrichtssprache ist C++ nur unwesentlich besser als C, eine der schlechtesten Unterrichtssprachen überhaupt. Es bringt eine Menge Komplexität mit sich, einige Teile der Sprache sind zutiefst nicht intuitiv und die meiste Zeit lernen Sie mehr über C++ als über das Programmieren im Allgemeinen.

Das heißt nicht, dass C++ (oder C) schlechte Sprachen sind oder es nicht wert sind, gelernt zu werden. nur, dass es bessere Unterrichtssprachen wie Python gibt.

8
John Bode

Ich würde 'nein' sagen - ich hatte den Eifer und den Wunsch, Programmieren zu lernen, und ging sofort mit C++ in mein Intro-Jahr am College. In Verbindung mit einem Lehrer, der C++ unterrichtete, als wäre es eine andere Sprache (Konzepte, die für sie sinnvoll waren, nicht unbedingt Konzepte der Sprache oder der realen Anwendung), und Projekten, die jede Woche sofort auf uns geworfen wurden, stürzte ich ab und brannte mit die Hälfte der Klasse. Als ich sogar verdauen, experimentieren und anwenden konnte, was mir beigebracht wurde, hatte ich Probleme mit den Hausaufgaben des Projekts, die gleichzeitig als Tests dienten. Ich würde argumentieren, dass es mehr ein 200-Level-Kurs als 100 war.

Ich habe wirklich mein Bestes versucht. Ich habe nicht um Sympathie gebeten, ich wusste, dass es eine Herausforderung sein würde, aber der Lehrer würde mir nicht einmal helfen. Ich sagte nur, ich solle das Lehrbuch lesen, so wie ich es getan hatte.

Ich würde argumentieren (und einige würden nicht zustimmen), dass Ruby oder Python) eine viel bessere Sprache ist, um jemanden in die Welt des Programmierens einzubrechen. Sauber, prägnant, lesbar , klarere Syntax.

8
Kevin

Es gibt zwei wesentliche Arten der postsekundären Bildung: die Universität und die Handelsschule. Der Unterschied besteht darin, worauf Sie nach dem Abschluss vorbereitet sein möchten. Im Automobilbereich ist es wichtig, ob Sie Mechaniker oder Maschinenbauingenieur sind.

Abgesehen davon ist C++ eine großartige Muttersprache, wenn Sie Ingenieur werden möchten, und eine miese, wenn Sie das Programmieräquivalent eines Mechanikers sein möchten.

Eine Intro-Klasse in C++ wird viel Zeit damit verbringen, über Datentypen, Definitionen, Deklarationen, Zeiger, Speicherzuweisung usw. zu sprechen. Dies ist eine großartige Grundlage, wenn Sie mehrere Semester damit verbringen möchten, etwas Nützliches zu tun, aber wissen möchten, dass Sie dort die Grundlage haben, um mit jedem Grad an Komplexität fertig zu werden.

Auf der anderen Seite wird es eine Verschwendung sein, die ganze Zeit mit diesen Konzepten auf niedrigerer Ebene im Voraus zu verbringen, wenn Sie in der Lage sein möchten, etwas Nützliches schneller zu erledigen, aber nichts dagegen haben, wenn die Domäne und die Komplexität begrenzt sind. Es gibt viele Programmierer, die einen großartigen HTML-Formularvalidator schreiben können, aber keine Ahnung haben, wie sie einen Gerätetreiber entwerfen sollen.

7
Karl Bielefeldt

Sicher. Meine erste Sprache war C, aber das war wirklich nur, um unsere Klasse in C++ zu vereinfachen. Es machte Java viel einfacher zu handhaben, sobald ich an der Universität war. C++ hat vielleicht eine etwas steilere Lernkurve, aber wenn es richtig gelehrt wird, sollte es in Ordnung sein.

Nein, C++ ist nicht als Muttersprache geeignet. Wie hier gezeigt, teilen viele professionelle Programmierer diese Meinung, aber dies ist auch eine Meinung, die professionelle Lehrer haben.

Hier ist, was ein Bericht vom Dekan der Carnegie Mellon University über die Verwendung von C++ für einen Einführungskurs in die Programmierung für Studienanfänger zu sagen hat:

Standardsprachen wie C oder C++ sind für diesen Kurs nicht geeignet, da ihre Komplexität und Mängel sowohl informelle als auch mechanisierte Argumentationstechniken behindern.

Die CMU bietet zwei Einführungskurse an, einen zwingenden und einen funktionalen. Für die funktionale Programmierung wurde SML ausgewählt. Ich weiß nicht, was für den Imperativkurs gewählt wurde, aber der Bericht erwähnt die Verwendung einer Teilmenge von C.

4
Joh

Nein auf keinen Fall.

Wenn es nach mir ginge, würde ich die Verwendung in einem akademischen Umfeld fast vollständig verbieten. Nicht aus Gründen, die den bereits gemachten widersprechen, sondern weil zu viele denken, dass C++ (oder seine Variationen) die Antwort auf fast jedes Problem ist, weil Sie es in fast jeder Situation verwenden können. Es ist der Schraubendreher der Programmierung.

Einige Leute verwenden es, um Schrauben festzuziehen, ein absolut vernünftiges Werkzeug für die Arbeit. Andere verwenden es wie eine Prybar, obwohl es oft effektiv ist, nicht wirklich ideal, weil ein Schraubendreher, egal was Ihr Vater Ihnen sagt, kein Prybar ist und aufgrund von Missbrauch katastrophal versagen kann, weil die Zusammensetzung des Schafts nicht absichtlich gebaut wurde für die Art von Kräften, denen ein Prybar begegnen würde. Wieder andere könnten versuchen, es als Stempel oder Meißel zu verwenden, und sie werden fast immer auf Probleme stoßen, weil der Griff des Schraubendrehers nicht für die Art von auffallendem Missbrauch gebaut wurde, dem Stanzen oder Meißel standhalten sollen.

Meiner Meinung nach besteht die Aufgabe eines Programmierers darin, echte Probleme im Allgemeinen in Automatisierung umzusetzen, die ein gewisses Maß an verbesserter Effizienz (Verringerung der Ressourcenbindung für eine Aufgabe), Geschwindigkeit (Verringerung der Zeit für die Ausführung einer Aufgabe) und Vorhersagbarkeit (Erhöhung der Wiederholbarkeit) bietet einer Aufgabe) oder Organisation (Sensibilisierung für die Beziehung zwischen Aufgaben).

Es ist zwar verständlich, dass jeder, der programmiert, über allgemeines Wissen über den Betrieb von Computern auf niedriger Ebene und insbesondere über die Zuweisung von Geräten IO und Speicher verfügen sollte, aber es ist definitiv ungewöhnlich, dieses Wissen wirklich in erheblichem Maße nutzen zu müssen, geschweige denn Nutzen Sie es für die überwiegende Mehrheit der Aufgaben. Der Versuch, dies zu tun, ohne den breiteren Kontext des Problems zu verstehen, birgt ein unnötiges Risiko für eine Anstrengung.

Es ist absurd, dass eine erste Programmiersprache C/C++ oder nahe Varianten sein sollte, da die Klasse von Problemen, die C und seine Ableitungen lösen, für einen willkürlich großen Prozentsatz der aktuellen und zukünftigen Probleme sicherlich nicht geeignet ist (außer wenn man sie retten muss) ein früheres Programm mit Schraubendreher) und ist in der Tat eher ein winziger Satz kommender Probleme. Die meisten Programmierer werden trotz der zunehmenden Verbreitung kleiner mobiler, miteinander verbundener Geräte niemals in die Nähe der Entwicklung von Kernfunktionen des Betriebssystems oder direkter Geräteschnittstellen kommen. Die meisten werden so arbeiten und leben wie wir. Korrigieren und Auslaufen von Code, der älter als zwei Generationen ist, Implementieren auf Technologien, die bereits das Alter anzeigen, oder Arbeiten am Rande der Technologie in der Killer-App (x + 1).

Für eine erste Sprache würde ich mir Lego NXT ansehen, eine leichte, aber sehr funktionsreiche Variante von LabView. Während Lego NXT in kommerziellen Unternehmen nicht weit verbreitet ist, wird es die grundlegende Natur dessen zeigen, was es heißt, auf "sensorreiche" Weise zu programmieren. Ich könnte es mit einer etwas plattformneutralen Skriptsprache wie Javascript oder TCL/TK kombinieren. Beides hätte relativ geringe Auswirkungen auf das, was Sie entdecken müssen, um sehr grundlegende, aber effektive Aufgaben zu erledigen, mit einer hohen Rendite in Bezug auf die Rückkopplungsschleife und die Flexibilität, unterschiedliche Grade an Problemkomplexität einzuführen und zu lösen. Darüber hinaus bietet es den Schülern eine gute Gelegenheit, das Potenzial für eine Überschreitung des Angebots in der Dosenumgebung zu erkunden: eine Möglichkeit, an dunklen, feuchten Orten auf niedriger Ebene des Geräts IO und der benutzerdefinierten Umgebung zu arbeiten Fahrer mit geringem Overhead.

Nachdem sie gelernt haben, die Vierzylinder-Automatik zu fahren, steigen sie in den großen manuellen Hotrod v8 ein, wenn sie wirklich interessiert und motiviert sind. Wenn Joel die Rockstar-Programmierer unter keinem Stein unter seinen Füßen finden kann, muss er möglicherweise weiter woanders suchen oder überdenken, warum er möglicherweise mehr als ein paar Schraubendreher in seinem Werkzeugkasten benötigt.

2
JustinC

Sicher. Es gibt andere Sprachen, die für Erstsemester möglicherweise leichter zu verstehen sind. Es gibt jedoch Möglichkeiten, wie ein Lehrer Konzepte langsam in C++ einführen kann.

2
jzd

Auf jeden Fall kann C++ die allererste Sprache sein. Aber es geht darum, wie gut es gelehrt wird.

Jeder sagt, die Muttersprache sollte sehr leicht zu verstehen sein. Aber mein Punkt ist, dass die meisten Leute anfangen, im Grundstudium zu programmieren. Sie können also etwas lehren, das sie verstehen können. Und mit C++ können Sie von einer niedrigeren zu einer höheren Programmierebene wechseln.

2
Gulshan

Als ich am College war, war C++ die Grundsprache, die während des ersten Studienjahres unterrichtet wurde. Die Theorie war, dass es einige komplexe Programmierkonzepte enthielt. Wenn Sie es also beherrschen könnten, könnten Sie andere Sprachen lernen. Es diente mir als gute Grundlage.

Trotzdem war ich in meinem letzten Jahr Mitglied eines Komitees, um zu entscheiden, ob die Kernsprache auf Java umgestellt werden soll oder nicht. Nach einem Gespräch mit mehreren prominenten Arbeitgebern und einigen Alumni der Abteilung wurde festgestellt, dass ein Wechsel zu Java das beste Interesse der Studenten war. Die Arbeitgeber, mit denen wir gesprochen haben, wollten, dass die Leute Erfahrung in einem Bereich haben Sprache, die sie verwendet haben, um sie einzustellen. Ich glaube, jetzt, 10 Jahre später, verwenden sie immer noch Java als ihre Kernsprache.

In ähnlicher Weise haben wir versucht, ein paar College-Absolventen mit wirklich guten C++ - Kenntnissen einzustellen. Wir konnten keine finden.

1
SchwartzE

Ich würde Ja sagen. Aber jede Sprache kann wirklich eine Muttersprache sein. Ich denke, C++ ist gut, denn obwohl es komplex und manchmal schwierig ist, zeigt es Ihnen, was Sie wirklich tun können (weniger Einschränkungen). Außerdem verfügt es über ein objektorientiertes Design, mit dem Sie sich auf andere Sprachen vorbereiten können.

C++ war meine Muttersprache und ich bin froh, dass es so war. Ich habe schon früh über OOP nachgedacht und bin dafür dankbar. Aber am Ende kommt es wirklich darauf an, was Sie tun möchten. Die Sprache ist nicht so wichtig, denn wenn Sie mit einer Sprache gut umgehen können, werden Sie wahrscheinlich keine Probleme haben, eine andere zu lernen. Was möchten Sie tun? Spiele machen? Programm für Handys? Jeder wird Werkzeuge und Sprachen haben, die besser dafür geeignet sind.

1
user16281

C++ ist eine Expertensprache, keine Anfängersprache ... würde zuerst C sagen, nicht Java oder C # oder Python ... warum? Weil C Ihnen beibringt, sich um Ihr Gedächtnis und einige zu kümmern knifflige Konzepte wie Zeiger, die von allen Sprachen "verborgen" werden und dennoch überall vorhanden sind. Ich habe so viele junge Entwickler gesehen, die nicht einmal verstehen, warum Speicher manchmal freigegeben werden sollte, und glauben, dass der Garbage Collector kein kleiner Zwerg ist, der reinigt Alle Codierungs-Craps: Sie instanziieren, sie instanziieren und boomen, es explodiert, selbst wenn sie XXXXGb RAM haben ... Aber sie verstehen nicht, warum der Garbage Collector nicht einfach alles auf magische Weise reinigt! Und ich habe gesehen, wie diese Art von Entwicklern codiert C++ (und noch verrückter in Corba) und es war ein Gemetzel !!!!!!!!!! Also würde ich raten, das Codieren in C zu lernen und dann zu Python/Java/C # zu gehen, um die Objektkonzepte und den gesamten Zucker zu erfahren Wenn Sie das alles verstehen, gehen Sie zu C++ und spüren die Kraft von C++, entdecken aber auch alle seine Gefahren und warum es sollte von niemandem benutzt werden;)

1
mandubian

Einige Punkte, an denen Anfänger in C++ leicht Fehler machen, sind:

aufgaben machen, bei denen Sie testen wollten = vs ==

Vermisst;

Lesbarkeit von geschweiften Klammern im Vergleich zu beispielsweise Pascal Anfang-Ende

Und dann gibt es alle Include-Dateien, Makros, Speicherverwaltung usw. zu verwirren.

Daher würde ich sagen, dass C++ zunächst nicht die beste Sprache ist - es besteht jedoch kein Zweifel daran, dass es sehr nützlich sein kann, wenn Sie es gelernt haben.

Ich würde - wie andere auch vorgeschlagen haben - C #, Java oder vielleicht sogar VB - - und ein gutes IDE mit Syntax) verwenden Markieren, Debugger usw., um die Fehlerbehebung zu vereinfachen.

1
Rune Andersen

NEIN. Es gibt so viele Dinge, die C++ hat, dass es für einen Neuling schwierig ist, sie zu verstehen. Kommen Sie nicht in den Irrtum "Alle Programmiersprachen sind gleich".

Beginnen Sie mit Basic oder Pascal (ignorieren Sie das Zeug "Sie sind veraltet") und später mit C/C++/Java/C #/Perl. Oder wenn Sie eine Chance haben, zuerst mit Logo & Karel und dann mit Basic oder Pascal.

P.D. Einige Universitäten und Kollegen haben eine Klasse zum Verwenden und Vergleichen von Programmiersprachen, und es kommt vor, dass ich diese Klasse unterrichtet habe ;-)

1
umlcat

Ich habe mit C++ in der Mittelschule angefangen. Ich habe eine Kopie dieses Buches abgeholt: C++ How to Program von Deitel und Deitel . Dieses Buch ist ziemlich gut.

Ehrlich gesagt gibt es hier keine richtige oder falsche Antwort. Ich persönlich fand, dass C++ greifbar war. Ich habe es bis zu OOP) gelernt (ich bin über "dies" gestolpert, was ich jetzt nicht verstehe, wie ich das nicht bekommen konnte, aber was auch immer). Probieren Sie es aus, nicht Lassen Sie sich entmutigen. Wenn Sie nicht weiterkommen, schauen Sie sich andere Sprachen an und lernen Sie immer wieder neue. Die Idee ist, dass Sie, wenn Sie dasselbe Konzept in 2-3 verschiedenen Formen sehen, diese besser verstehen. Wie ich bereits sagte, das Konzept des "Dies" "Zeiger verwirrte mich, aber als ich dasselbe in Python (stattdessen self genannt) sah, machte es für mich sofort Sinn, weil ich es in C++ verstanden hatte. Lernen Sie Java, wenn Sie so viele Colleges unterrichten können. Lernen Sie python oder Ruby, da es die Sprache des Tages ist und Sie mehr Nischen erkunden können)/neue Sachen wie Clojure (und all die anderen Lisps), Haskell, Scala ...

0
nkassis

Wenn "geeignet" für "möglich" steht, ja. Wenn für "gut", definitiv nein.

Es ist möglich, C++ zu mögen oder sogar zu lieben, aber dafür lernst du besser mehrere Sprachen und arbeitest einige Jahrzehnte mit faulen Codebasen, um Erfahrungen mit dem "Erstellen von nicht trivialer Software, die tatsächlich funktioniert" zu sammeln - dann hat C++ Charme.

Nicht am Anfang, wenn Sie jungfräulich sind, mit kleinen, einfachen (aber angeblich interessanten und lustigen) Problemen herumspielen.

Ich würde mit Python beginnen, gefolgt von SICP (Schema) oder ähnlichem. Vielleicht umgekehrt oder verschachtelt. Mit denen können Sie einfach das Problem lösen. Anstatt gegen das System zu kämpfen, gehen Sie in tiefem Schlamm und lernen Sie alle Arten von unlogischen Macken und ihre historischen Gründe.

Später, wenn Sie bereits Ihren Weg aus einer Papiertüte programmieren können, wechseln Sie zu Bare Metal: Lernen Sie Montagemethoden und verschiedene Architekturen sowie vielleicht Knuths Mix. Ich meine nicht, Opcodes auswendig zu lernen oder viel reales zu tun, nur um Speicher, Register, die ALU, Caches, Interrupts zu verstehen und auf Leseebene zu gelangen.

Mit dieser Grundlage können Sie dann anderen Sprachen, einschließlich C++, ausgesetzt werden. Vielleicht eine gute Idee, dazwischen etwas "Geschichte und Entwicklung der Sprachen" hinzuzufügen.

0
Balog Pal

Sie können eine beliebige Sprache auswählen, um die Grundlagen der Programmierung zu erlernen. Ich habe Sachen in C/C++ gelernt. Aber 7 Jahre später werden die Tools/Sprachen in meiner Schule geändert und sie bevorzugen Java/C #. Die Sprachen sind nur Werkzeuge. Was Sie brauchen, um besser zu werden, sind die Grundlagen. z.B. in MIT Leute lernen die Grundlagen des Algorithmus mit Python. zB Java kann für die Webprogrammierung gut sein. C/C++ ist jedoch gut für Dienste und Hochleistungsanwendungen. Es hängt also von Ihren Situationen ab.

0
sarat