Backtrack My "Education" [geschlossen]


13

Vor einiger Zeit habe ich beschlossen, mit dem Programmieren zu beginnen. Ich bin wirklich einfach in eine Sprache (Perl) gesprungen und von dort aus weitergegangen. Was ich bedauere ist, dass ich gerade reingesprungen bin:

Ich habe die Grundlagen nicht gelernt (wenn Sie sie als Grundlagen bezeichnen würden).

Ich habe nichts über Informatik gelernt.

Ich glaube, dieses Problem hält mich von meinem wahren Potenzial ab. Wo soll ich "neu starten"? Gibt es Bücher, Artikel usw., die ich lesen sollte? Gibt es Themen, die ein erfahrener Programmierer kennen sollte? Was raten Sie?


Ihre Frage ist mir nicht klar. Als Sie sich entschieden, mit dem Programmieren zu beginnen, wollten Sie einen neuen Job bekommen oder nur einige Verwaltungsaufgaben in Ihrer Arbeit erledigen oder einfach nur zum Spaß? Ich muss verstehen, woher Sie kommen, um zu helfen, warum Sie es bedauern, auf diese Weise gestartet zu sein, und was das Problem mit sich bringt, Sie zurückzuhalten? Ich mag es nicht, Vermutungen anzustellen.

@JamesDrinkard: Es war nur um zu lernen! Ich mache das nicht für meinen Lebensunterhalt.
Dynamische

Was ist dein Hintergrund? Wissen Sie etwas über Wissenschaft? Mathematik? Ingenieurwesen? Holzbearbeitung? :-) Für welche Art von Programmierung interessieren Sie sich? Ohne diese Details ist es schwierig, eine nützliche Antwort zu geben. Bereue es auch nicht einzuspringen - das ist großartig!
Guy Sirton

@ GuySirton: Ich bin ein Schüler der Mittelschule. Ich habe wirklich keinen Grund zu programmieren, ich mache es einfach!
Dynamische

Antworten:


21

Ich würde das machen:

Weg A: Die semi-typische Methode

  1. Lernen Sie eine Sprache mit einer stärker regulierten Syntax wie Java, C # oder Python. Perl ist ein unglaublich nützliches Tool, aber es ist auch sehr, sehr frei in Bezug auf die Art und Weise, wie Sie Dinge tun können. Die anderen Sprachen, die ich aufgelistet habe, sind sehr viel weniger.

  2. Holen Sie sich ein Buch über Datenstrukturen in dieser Sprache.

  3. Holen Sie sich ein Buch über Algorithmen in dieser Sprache.

  4. Holen Sie sich Code vollständig und effektiv Java / C # / Was auch immer Pythons Version ist.

Pfad B: Joel Spolskys Pfad der Erleuchtung (oder Tod, treffen Sie Ihre Wahl)

  1. Holen Sie sich das Buch "Code"

  2. Holen Sie sich "The C Programming Language" von K & R

  3. Holen Sie sich die Struktur und Interpretation der Computerprogrammierung

Was die Methode anbelangt, wird Sie Methode 1 in einer regulierteren Art und Weise in die Programmierung einweisen. Informatikkonzepte bis zu einem gewissen Grad (noch keine Komplexitätstheorie, vertrauen Sie mir) und bieten Ihnen eine Sprache, die besser für die Arbeit in Projekten mit anderen Menschen und für die Erstellung größerer Anwendungen geeignet ist.

Methode 2 ist härter, es handelt sich vielmehr um einen fundamentalen Ansatz, bei dem "Code" die Grundlagen erklärt, K ​​& R das Material auf Maschinenebene einführt und die SICP die Konzepte auf höherer Ebene einführt. Es ist ein viel härterer, aber fokussierterer Weg.

Nehmen Sie sich in jedem Fall Zeit. Rom wurde nicht an einem Tag erbaut und auch Programmierkenntnisse sind nicht vorhanden, selbst wenn Sie ein Genie darin sind. Peter Norvigs Programmierung in 10 Jahren ist der übliche Aufsatz, auf den ich die Leute hinweise.

Nachtrag:

Soweit verfügbares kostenloses Material: Python the Hard Way (siehe unten) ist ein guter Anfang. Wie man so denkt, als wäre ein Informatiker eine vernünftige Fortsetzung.

Es gibt eine Reihe von Ressourcen zu Algorithmen, und ehrlich gesagt könnten Sie wahrscheinlich die Schritte 3 und 4 ohne Probleme wechseln. Denken Sie daran, hier beginnt die Mathematik wirklich aufzutauchen. Haben Sie also keine Angst, in dieser Phase um Hilfe zu bitten. Dies scheint eine vernünftige kostenlose Anleitung zu sein .

Es gibt wirklich kein zusammenhängendes freies Äquivalent zu Code Complete, obwohl Code wie ein Pythonista ziemlich solide zu sein scheint. Das Wichtigste ist, dass Sie sich darauf konzentrieren, Ihren Code lesbar zu machen, sobald Sie die Grundlagen verstanden haben. Es ist nicht "notwendig", wie es der Fall ist, wenn Ihre gesamte Codesyntax korrekt ist, aber es macht das Leben viel einfacher, wenn Sie über kleine Programme hinausgehen oder über einen längeren Zeitraum an etwas arbeiten.

Sie werden feststellen, dass ich mich hauptsächlich auf Python konzentriert habe, weil es am einfachsten ist, gut geschriebene freie Inhalte zu finden. Ich denke, Javas Tutorials von Oracle sind in Ordnung, aber sie sind ein wenig trocken und nicht besonders für Anfänger geeignet. C # befindet sich in einer ähnlichen Situation, obwohl beide nicht dokumentiert sind.

Auch dein erster CS-Witz: Du willst deine Ausbildung "umgestalten", nicht den Backtrack.


Danke! Hätten Sie zufällig kostenlose Online-Bücher zum Lesen? Davon abgesehen ist dies eine erstaunliche Antwort!
Dynamischer

5
+ 1 für Struktur und Interpretation der Computerprogrammierung (SICP) finden Sie hier online: mitpress.mit.edu/sicp
NWS

Wenn ich Perl kenne, wird Python mir viel Mühe geben, mich daran zu gewöhnen?
Dynamische

1
Nach Perl werden die meisten Sprachen ein steiniger Übergang sein. Python ist ziemlich einfach, da es im Wesentlichen nur eine Möglichkeit gibt, etwas zu tun, anstatt 50 Möglichkeiten, etwas zu tun, wie es in Perl der Fall ist. Der große Trick für Python besteht darin, zu bestimmen, welche Version der Sprache verwendet werden soll: 2.7 oder 3.x. Ich würde jedes Tutorial verwenden, das Sie auswählen, und von dort aus fortfahren. Sobald Sie es besser können, können Sie sich an die anderen anpassen, wenn Projekte anstehen.
Welt Ingenieur

1
@ kevincline: Nachdem ich einige der Python-Übungen gemacht habe, bereite ich mir große Sorgen. IMHO, einige der Dinge, die in Perl extrem einfach sind, sind in Python schwierig (äh).
Dynamische


1

Nun, ich habe aus demselben Grund angefangen, aus dem ich einige Kenntnisse auf der Hardwareseite hatte, und war fasziniert von der Programmierung. Ich mag neue Dinge lernen.

Ich begann mit DOS-Batch-Dateien, dann mit QuickBasic, dann mit Visual Basic, VBA, MASM und mit Access für die Datenbankarbeit, bevor ich meinen ersten Job bekam. Für mich war das der beste Weg, einfach anzufangen und dann von dort aus zu bauen.

Ich würde sagen, entscheide, was dir am besten am Programmieren gefällt, und gehe auf diese Weise, wie Skripten, Webentwicklung, Windows-Programmierung usw. Wenn du es nicht weißt, dann beginne mit einigen Sprachen, um zu sehen, was dir gefällt. Sie werden allerdings Zeit brauchen. Es dauert ungefähr 5 Jahre, um mit einer Sprache wie Java oder vielleicht C ++, IMHO, richtig gut zu werden.

Als eine Sprache zum Erlernen der Webentwicklung ist JavaScript definitiv beliebt, PHP und Python, aber das ist IMHO. Es wird davon ausgegangen, dass Sie HTML / CSS kennen oder lernen werden. Ich habe Javascript wirklich unterschätzt, obwohl ich es seit 2001 verwende. Ich habe dasselbe mit CSS gemacht und fand es nicht wichtig. Auch hier habe ich meine Meinung geändert.

Wenn ich versuche, einen Trend zu ermitteln, gehe ich zu http://www.indeed.com und klicke auf den Link Trends oben links auf der Seite. Dann gebe ich Keywords wie PHP und Python ein und sehe, welche für aktuelle Stellenangebote im Internet ausgeschrieben werden.

Dies ist jedoch aus beruflicher Sicht und basiert auf dem, was mir den größten Wert für die Kunden (Arbeitgeber) bringt. Nicht nur aus Lernperspektive.


Wenn ich sagen würde, ich möchte eine Sprache lernen, die mir bei der Webentwicklung hilft, aber immer noch viel mehr kann, was würden Sie empfehlen?
Dynamische

-1

Erfahren Sie mehr über Algorithmen in ihrer einfachsten Form, vergessen Sie die Sprachen für eine Weile. Sortieren von Vektoren, Wörtern usw. Freepascal ist eine schöne Sprache, um mit diesen Dingen zu beginnen. Ich liebe Perl, aber mit all seinen Abkürzungen und coolen Dingen werden Sie oft den Algorithmus des Programms vernachlässigen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.