Neulich stellte mir mein Vater eine Frage, die ich nie von ihm erwartet hätte.
"Wie kann ich C ++ lernen?"
Mein Vater wird dieses Jahr 56 Jahre alt und Computer sind für ihn ein weit entferntes Konzept. Er weiß nicht sehr gut, wie man ein Telefon benutzt, außer Nummern anzurufen (keine Kurzwahl oder Kontakte); obwohl er angefangen hat, Computer ein wenig besser zu lernen - bis zu dem Punkt, dass er weiß, wie man das Internet öffnet (unter Windows) und sich umschaut (und mehrere Bewerbungen erfolgreich vollständig online abgeschlossen hat, von denen ihm auch Stellen angeboten wurden ). Trotzdem sind diese Erfahrungen zu eng, um wirklich viel zu bedeuten.
Obwohl er möglicherweise nicht über den Hintergrund verfügt, kann mein Vater lesen. Und ich meine Lesen als Fähigkeit, nicht nur als Fähigkeit. Er hat wenig bis gar keine College-Ausbildung (finanzielle Probleme, Familie usw.) und hatte das Glück, die High School zu beenden, brachte sich aber dennoch selbst bei, Elektromeister zu werden, und ist dies seit fast 30 Jahren. Er tat dasselbe mit Gitarre, lernte sehr professionell zu spielen und wurde für seine Fähigkeiten gelobt. In der High School nahm er ein Buch zum Gewichtheben in die Hand - und war zu dieser Zeit die einzige Person in seiner High School, die sich nach nationalen Maßstäben offiziell als "Athlet" qualifizierte.
In allen Fällen brauchte er nur etwas zum Lesen. Etwas, um ihn zu unterrichten. Er nimmt Informationen auf wie ein Schwamm.
Ich habe keinen Zweifel an der Motivation oder Fähigkeit meines Vaters, dies zu tun, daher ist mein allgemeines Ziel einfach:
Bringen Sie meinen Vater in die Welt der Computer und bringen Sie ihn auf den Weg zum Programmieren.
Ich bin fest davon überzeugt, dass sein Antrieb und seine Lesefähigkeit ihn auf Trab halten werden, sobald ich ihn durch die Grundlagen gebracht habe.
Also frage ich euch alle: Wo soll ich mit all dem anfangen? Und was sind die besten Ressourcen da draußen? Soll ich ihn dazu bringen, Linux anstelle von Windows zu starten? Ist C ++ eine schlechte Idee?
Denken Sie daran, dass er (IMO) zuerst Computer lernen und dann das erste Verständnis (die "Hallo Welt" -Erfahrung) der Programmierung erlangen muss.
Um des Geldes willen und vorzugsweise möchte ich kostenlose Online-Ressourcen, die er lesen kann, aber auf jeden Fall sind alle guten Vorschläge in gedruckter Form oder online bezahlt willkommen (die ich möglicherweise später prüfen könnte, um sie zu kaufen).
Außerdem beabsichtige ich, ihn mit C ++ (kein Python, Java usw.) zu starten, da ich es am besten kenne und ihm auf dem Weg mit Code helfen kann. (Ich habe momentan nur minimale Kenntnisse in anderen Sprachen).
Bearbeiten: Ich bekomme viele hartnäckige Vorschläge zur Verwendung von Python. Der einzige Grund, warum ich C ++ machen wollte, ist, dass ich es weiß und dort sein kann, wenn mein Vater Hilfe braucht. Meine allererste Erfahrung mit Programmierung war Java. Ich habe Java gelernt und bin gut darin geworden. Ich bin offen für andere Vorschläge, aber bitte geben Sie eine effektive Anwendung Ihrer Vorschläge.
EDIT # 2: Ich verstehe, dass mein Ansatz / Denken / Wissen hier fehlen könnte. Ich bin ein CS-Major im zweiten Studienjahr. Wenn Sie mit nichts in meinem Beitrag einverstanden sind, sagen Sie mir, warum - geben Sie mir Ideen, Informationen - deshalb frage ich zuerst. Mein allgemeines Ziel auf bestimmte erreichbare Ziele eingrenzen.
Antworten:
Selbst wenn Sie C ++ persönlich gut kennen, ist es eine schreckliche, schreckliche Muttersprache für Anfänger, und ich kann es nicht genug empfehlen, um ihn so weit wie möglich davon fernzuhalten, wenn er erfolgreich lernen möchte, Code zu schreiben. Beim Programmieren geht es nicht um eine Sprache, sondern darum , abstrakte Anforderungen in formaler Logik auszudrücken. C ++ macht es schwierig, sich darauf zu konzentrieren, da Sie ständig über sprachspezifische Probleme stolpern.
Wenn er lernen möchte, Ideen in formaler Logik auszudrücken, entscheiden Sie sich für etwas, das dies einfach macht. Meine Wahl wäre Pascal (für die Entwicklung auf Anwendungsebene) oder Python (für die Arbeit auf Skriptebene), da beide intuitiv und einfach zu erlernen sind. Sobald er tatsächlich die Prinzipien des Schreibens von Code kennt, kann er ihn aufgreifen, wenn er sich wirklich speziell für C ++ interessiert.
Starten Sie ihn aus dem gleichen Grund nicht unter Linux statt unter Windows, da er sich dann auf zwei Probleme konzentrieren muss: Linux lernen und gleichzeitig Codierung lernen! Halten Sie die Ablenkungen auf ein Minimum.
Was die eigentlichen Programmierressourcen betrifft, ist es einfach genug, Tutorials online zu finden, aber ich habe festgestellt, dass der beste Weg, das Programmieren zu lernen, das Programmieren ist. Suchen Sie etwas, das Sie tun möchten, und finden Sie dann heraus, wie es geht.
Vor einigen Jahren sah ich ein Spiel und dachte: "Ich könnte das tun und ich könnte es besser machen." Also habe ich Delphi angefeuert und angefangen, die Prinzipien herauszufinden. Ich lerne immer noch neue Sachen aus diesem persönlichen Projekt und bin dabei ein wirklich guter Programmierer geworden! Also versuchen Sie das; Fragen Sie Ihren Vater, was er gerne tun würde, wenn er programmieren könnte - und stellen Sie sicher, dass dies möglich und von relativ geringem Umfang ist, da er noch keine Erfahrung hat - und setzen Sie sich dann zu ihm und beginnen Sie mit ihm herauszufinden, wie es geht es.
Und wenn er Fragen hat, besorgen Sie ihm ein StackOverflow-Konto. :) :)
quelle
Ich denke Interesse Ihr Vater ist in C ++ ist auf jeden Fall ordentlich , aber es wäre meine Wahl für eine erste Programmiersprache nicht sein - es sei denn , er hat sehr spezifische Anforderung , dass er in Treffen interessiert. (Selbst dann ist das Erlernen von C ++ nach dem Erlernen einer anderen, einfacheren Sprache möglicherweise noch viel einfacher.)
Es gibt eine Handvoll Dinge, die für die Programmierung wichtig sind:
In vielerlei Hinsicht ist die Syntax und Semantik bestimmter Sprachen fast am Ende der für die Programmierung erforderlichen Fähigkeiten. Wenn Sie in der Nähe von Recht sind, werden Ihnen die meisten Compiler sagen, welchen Fehler Sie gemacht haben - obwohl es Erfahrung erfordert, um zu dekodieren, was speziell Compiler sagen.
Daher würde ich vorschlagen, dass Ihr Vater auf Anhieb eine weitaus einfachere Programmiersprache in Angriff nimmt: Ruby, Python, C, C #, Haskell usw. (Haskell ist definitiv schwierig für Leute, die nur imperative Sprachen programmiert haben, aber ich ' Ich bin gespannt, ob Anfänger das gleiche Gefühl haben, aus dem Wasser zu fischen.)
Das Festhalten an einer einfacheren Sprache bedeutet, dass Ihr Vater früher mehr Erfolg hat und es einfacher ist, "zu spielen". Die interaktive REPL-Schleife vieler Sprachen ist ein ausgezeichneter Ort zum Lernen.
Sobald Ihr Vater mit Funktionen, Klassen, Objekten und Methoden vertraut ist, werden sich die Details und Nuancen von C ++ nicht mehr so überwältigend anfühlen. Selbst mit C zu beginnen wäre einfacher: Es ist nicht verzeihend , aber es gibt weniger verwirrende Funktionen, über die man sich Sorgen machen muss.
Sie sind neugierig auf Linux vs Windows; Ich bin mir nicht sicher, ob die Unterscheidung wichtig ist. Wenn er bereits mit der einen oder anderen Umgebung vertraut ist, ist das Wechseln nur eine weitere Hürde. Wenn er beides nicht weiß, würde ich Linux vorschlagen, aber hauptsächlich, weil die Installation guter Tools lächerlich einfach ist: Funktioniert
apt-get install <foo>
auf den meisten Distributionen, und die Distributionen, die nicht unterstützt werden,apt
bieten oft etwas Ähnliches. Eine Minute später wird Ihr ordentliches neues Paket installiert, oft schneller als ich es brauche, um eine zuverlässige Downloadquelle für vorkompilierte Windows-Binärdateien zu finden, die nicht nach Trojanern stinkt.quelle