In der Reihenfolge der Wichtigkeit, wenn dies möglich ist und nicht möglich ist, welche sind die wichtigsten Grundlagen für das Wissen, wie man programmiert. Algorithmen, Iteration, Rekursion usw.?
Beachten Sie, dass dort, wo ich usw. stelle, meine Frage liegt. Ich habe kürzlich einen Internet-Post gelesen, in dem 9 von 10 Programmierern nicht nach Luft schnappen können !
http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html
Ich möchte ein tiefes Wissen darüber haben, was ich beim Programmieren eigentlich zu erreichen versuche, und ein umfassendes Verständnis der grundlegenden Werkzeuge, die mir zur Verfügung stehen. Grundsätzlich möchte ich mit allen Farben des Windes malen können.
Antworten:
Diese Liste ist ein Anfang ... Sie stellen eine große Frage!
Ich habe hier eine andere Frage in ähnlicher Weise (mit ähnlichem Inhalt) beantwortet:
Tipps, Richtlinien, wichtige Hinweise zum Rendern von professionellem Code?
quelle
Unter der Überschrift " etc. " steht etwas, das leicht 50% oder mehr Ihrer Zeit in Anspruch nehmen kann.
Erfahren Sie, wie Sie Fehler beheben.
Dies bedeutet das Erlernen der wissenschaftlichen Methode . Ich meine es wirklich zu lernen. Und dann mit brutaler Selbstaufrichtigkeit anwenden . Erfahren Sie, wie Sie genau sagen, was Sie wissen, ist wahr, was Sie wissen, ist nicht wahr, und die Dinge, die Sie nicht wissen. Jedes Mal , wenn Sie schlampig ein Element in der falschen Kategorie zuweisen, haben Sie gerade Ihr Leben gemacht viel härter.
Lerne "Ich denke" statt "Ich weiß" zu sagen. Sie können nur dann "Ich weiß" sagen, wenn Sie "denken", dass etwas wahr (oder falsch) ist, und dann beweisen Sie es!
Viele Bugs sind trivial, aber sie können schwer zu erkennen sein, weil Sie wissen, wie der Code lauten soll ... es sei denn, es ist nicht so. Finde einen Freund, dem du es erklären kannst. Bitten Sie sie, ein "erfahrener Idiot" zu sein: Jemand, der Ihren Code nicht kennt, aber von dem Sie wissen, dass Sie BS nicht vorbeischießen können. Seien Sie nicht überrascht, wenn Sie mitten in einer Beschreibung plötzlich innehalten und sagen: "Und so können Sie ... sehen ... sehen, dass ... sh * t. Danke."
Nicht-triviale Bugs erfordern ein Arsenal an Techniken. Wolf Fence in Alaska ist ein Klassiker, der die meisten Fehler, die nicht mit Timing zu tun haben, schnell aufdecken kann. Irgendwo in Alaska gibt es einen Wolf. baue einen Zaun, der den Staat halbiert. Auf welcher Seite ist der Wolf? Schneiden Sie diese Seite in zwei Hälften. Aufschäumen, ausspülen, wiederholen. Durch 20-maliges Ausführen an ausgewählten Stellen im Code wird der Bereich, in dem der Fehler (Wolf) auftreten kann, auf 1/1048576 verringert. Töte diesen Wolf.
Tipp: Suchen Sie nach Handwellen - physisch , mental oder auf andere Weise. Sobald Sie (oder Ihr Kollege) einen Teil des Codes zucken / ablenken / auf ein Mindestmaß reduzieren, werden Sie total tollwütig . Weil der Bereich, in dem Sie gerade den Fehler kennen, nicht sein kann, obwohl Sie Stunden / Tage damit verbracht haben, nach dem D * MN-Ding zu suchen und es immer noch nicht finden können ... das ist der Ort mit der höchsten Wahrscheinlichkeit für den Fehler. Niemand bekommt ein "Tschüss" , niemand (einschließlich der Maschine, des Betriebssystems, des Compilers oder Ihnen ) bekommt irgendeine Art von "gebührendem Respekt". Es gibt einen Bug. Zeitraum. Ende des Satzes. Jetzt geh und töte das d * mn Ding.
Ich kenne keine Schule, die das Debuggen als eigenes Fach unterrichtet. IMNSHO, dies ist vielleicht der eklatanteste Beweis dafür, dass sie (Universitäten / Professoren) Sie nicht lehren, Programmierer zu sein, sondern Sie lehren, ... wie sie zu sein? Hart? Vielleicht. Wahr? Entscheide dich. Jetzt beweise es.
quelle
Ich fürchte, dies ist eine ziemlich große Frage, die jeder schlüssig oder verbindlich beantworten kann, vor allem, wenn Sie eine priorisierte Liste wünschen. Es gibt viele Programmierer, die an sehr unterschiedlichen Dingen arbeiten. Sicher, die Grundlagen bleiben gleich, aber was Sie brauchen, um in Ihrem Gedächtnis aktiv zu bleiben, kann sehr unterschiedlich sein, und in der Tat gibt es viele Aufgaben, bei denen Sie schön bleiben können High-Level ohne tiefer zu gehen.
Es scheint jedoch, dass Sie sich ernsthaft Gedanken darüber machen, wie Sie ein besserer Entwickler und nicht nur ein Alleskönner werden können. Ich finde das bewundernswert, und ich kann einige der Dinge mitteilen, die mir geholfen haben, das Programmieren zu lernen.
Fast die gesamte Programmierung läuft auf Algorithmen und Datenstrukturen hinaus. Sie sind wiederum Beispiele für die größere Frage: Wie modellieren wir Dinge und Prozesse aus der realen Welt in eine Darstellung, die ein Computer verstehen kann? Wenn Sie gerade erst anfangen, kann es hilfreich sein, eine höhere Programmiersprache (wie Java, Python usw.) zu verwenden, um sich mit der Implementierung von Datenstrukturen und Algorithmen vertraut zu machen.
Ab einem bestimmten Punkt, wenn Sie mit Datenstrukturen und Algorithmen herumgespielt haben, bekommen Sie vielleicht die nagende Frage: "Aber wie können wir dem Computer sagen, was zu tun ist, bis der Computer es tatsächlich tut?" Dann können Sie untersuchen, wie ein Computer tatsächlich berechnet - wie Arbeitsspeicher und CPU zusammenarbeiten, um Anweisungen auszuführen, wie Betriebssysteme die Hardware abstrahieren, damit Sie ein Programm schreiben können, das beispielsweise eine Datei öffnet, ohne auf einer bestimmten niedrigen Ebene zu codieren Festplattenschnittstelle.
Dies ist wahrscheinlich ein guter Ausgangspunkt - wie Algorithmen und Datenstrukturen Probleme aus der realen Welt modellieren und wie ein Computer tatsächlich Berechnungen durchführt. Letztere zu kennen, ist sehr nützlich, um untergeordnete Sprachen wie C zu beherrschen, die weitaus weniger Rauch und Spiegel als OO und Skriptsprachen verwenden :)
quelle
YAGNI : "Implementiere Dinge immer, wenn du sie wirklich brauchst, niemals, wenn du nur voraussiehst, dass du sie brauchst."
Nach meiner Erfahrung ist es üblich, dass "Programmierer" viele Fälle in der Zukunft vorhersehen und versuchen, den Code zu "verbessern", indem sie Codes hinzufügen, um sie vorwegzunehmen! In den meisten Fällen wird der Code, den sie hinzugefügt haben, nur aufgebläht und der Code wird komplexer.
quelle
Das Wichtigste, was Sie als Programmierer wissen müssen, ist, dass das Schreiben von Code ein Kinderspiel ist, und eine fachmännische Einstellung gegenüber dem, wofür Sie bezahlt werden, bringt Sie weiter als esoterisches Lernen.
Lerne, in die Zone zu kommen. Damit meine ich den mentalen Zustand, in dem Sie sich nur auf Ihre Aufgabe konzentrieren und anfangen können, eine Menge Dinge in Ihrem Kopf zu behalten und wie sie auf einmal zusammenwirken. Sobald Sie die Gewohnheit haben, nach Belieben in die Zone zu gelangen, müssen Sie sich um den Rest kümmern. Bis Sie Code wie eine Art Code auspressen können, ist der Rest praktisch nutzlos.
BEARBEITEN:
Wenn Sie das nicht glauben und mich herabgestimmt haben, glaube ich, dass Sie nicht wissen, ob Sie die Entschlossenheit haben, dies 20 Jahre lang zu tun. Ich weiß, dass ich das tue, weil ich das akzeptiere. ;)
quelle
Eine kürzlich gestellte Frage, die in irgendeiner Weise mit dieser Frage zusammenhängt, und Answer hatten einen Link zu This blog , in dem dasselbe Problem aus einem anderen Blickwinkel erörtert wird.
Das wahrscheinlich wichtigste Konzept für jeden Entwickler ist "Demut". Wenn Sie einmal akzeptieren, dass Sie nicht alles wissen, können Sie nach Lösungen suchen. Die meisten Leute, die Blogs über Programmierung schreiben, befinden sich im oberen Perzentil, und das Problem ist, dass viele ihre narzisstischen Tendenzen noch nicht unter Kontrolle haben. Deshalb bloggen sie ignorieren dort schimpft
Der verlinkte Blog ist eigentlich nichts weiter als ein Witzbold - In jeder Branche wird beklagt, dass Absolventen in jüngster Zeit unbrauchbar sind, dass es Jahre dauert, bis sie nützlich und produktiv sind. Vielleicht ist das Problem, dass diese selbsternannten Guru tatsächlich zu viel erwarten und vergessen haben, dass sie FizzBuzz nicht hätten lösen können. Nicht jeder kann in den Top-10-Perzentilen sein, die Hälfte der Programmierer ist per definitionem unterdurchschnittlich ......
quelle