Heim Schlagzeilen Die wichtigste Fähigkeit beim Programmieren ist das Denken

Die wichtigste Fähigkeit beim Programmieren ist das Denken

Nov 06, 2017 pm 05:06 PM
思想 编程 能力

Können Sie verschiedene Codes schreiben, um zu zeigen, dass Sie ein echter Meister sind? Falsch, ein echter Meister verfügt über das wichtigste Programmierdenken und die wichtigste Technologie. Auch wenn alle Technologien, die er jetzt kennt, veraltet sind, kann er neue Technologien immer noch schnell beherrschen und hochwertige Programme schreiben.

Heutige Frameworks und beliebte Sprachen kapseln eine große Anzahl praktischer Datenstrukturen und sogar einige klassische Algorithmen, die uns die Verwendung von .NET zum einfachen Ziehen und Ablegen einer Website trotz Backend-Vorgängen ermöglichen B. Datenbankbindung, Datenverarbeitung und Datenaktualisierung, können etwas eintönig und langweilig sein. Später kam ich mit Linq und thinkPHP (PHPs MVC) in Kontakt, die diese weniger technischen Codes erheblich reduzieren können. Ich finde immer noch, dass es nicht so interessant ist, wie ein kleines Programm oder Spiel selbst zu schreiben.
Ich erinnere mich, dass unser Datenstrukturlehrer einmal sagte: „Algorithmus ist eine Kunst.“ Dann reagierte fast die ganze Klasse mit Verachtung, und ich war damals eines ihrer glorreichen Mitglieder. Daher habe ich sehr wenig über Datenstrukturen gelernt und es sehr bereut.
Das Algorithmenbuch erwähnt Minesweeper, ein klassisches Spiel wie Minesweeper. Einer der Kernalgorithmen besteht darin, zu berechnen, wie viele Minen sich um jedes Gitter befinden.
Ich denke, dass Leute, die seit zwei Jahren programmieren, schnell an einen solchen Algorithmus denken werden: Verwenden Sie ein zweidimensionales Array, um die Informationen jedes Gitters zu speichern (natürlich wurden die Minen sofort zugewiesen) und durchlaufen Sie dann das Array und zählen, wenn eine Mine durchquert wird. Die Anzahl der Minen in den acht umgebenden Richtungen wird im aktuell durchquerten Array-Element gespeichert. Natürlich kann der statistische Prozess als Funktionsaufruf geschrieben werden. Dies ist der einfachste Algorithmus, den man sich vorstellen kann.
Später dachte ich, das wäre etwas verschwenderisch, weil viele Gitter ohne Minen in acht Richtungen nach Minen abgesucht werden mussten. Ich begann darüber nachzudenken, was ich zählen wollte, war die Anzahl der Minen um jedes Gitter herum. Was bestimmt dann die Anzahl der Minen? Natürlich sind es Minen, also habe ich über den zweiten Algorithmus nachgedacht, der das zweidimensionale Array durchläuft, aber nur, wenn eine Mine durchquert wird Acht Richtungen rund um die Mine sind +1, was die Anzahl der Statistiken stark reduziert. Dies sollte als umgekehrtes Denken betrachtet werden.
Wenn Tongli ein Schachprogramm erstellt, stößt er auf den „allgemeinen“ Algorithmus, um festzustellen, ob sich sein General oder Marschall in einer Situation befindet, in der er im nächsten Schritt gefangen genommen wird (die Schachterminologie wird als General bezeichnet). Der sehr einfache Algorithmus besteht natürlich darin, die aktuell vorhandenen und angreifenden Schachfiguren des Gegners zu durchqueren, um zu sehen, ob es im nächsten Schritt möglich ist, seinen General zu töten. Wir können es aber auch andersherum betrachten. Da wir beurteilen, ob sich der General im Zustand der Tötung befindet, beginnen wir direkt bei ihm und beurteilen, ob es einen Gegner, „Bauern“, „Auto“ oder „Kanone“ gibt " innerhalb seines geradlinigen Bereichs und beurteilen Sie dann die Umgebung um uns herum. Glauben Sie, dass es auf der anderen Seite des japanischen Gitters ein „Pferd" gibt? Stellen Sie sich das Problem umgekehrt vor.

Das Gefühl des Programmierens

Das Wichtigste beim Programmieren ist eine Art Gedanke. Die wahre Freude beim Programmieren besteht darin, einen Algorithmus zu entwerfen, der ein Programm lebendig macht Algorithmen sind ihre Seele. Natürlich ist die Erstellung eines brauchbaren Programms eine glückliche Sache. Wenn Sie sich unzufrieden fühlen oder das Programmieren langweilig ist, liegt das daran, dass Sie einige sogenannte Technologien, sogenannte Methoden und Muster, üben, anstatt für sie zu programmieren Der Programmierung halber.
Programmieren ist untrennbar mit Technologie verbunden, genauso wie Kampfsporttraining untrennbar mit Bewegungen verbunden ist.
Hochrangige Kampfkünstler sagen oft, dass das höchste Kung-Fu-Niveau dann erreicht wird, wenn man keine Bewegungen im Kopf hat. Und diese Art von Bewegungslosigkeit bedeutet nicht, dass Sie nichts tun können, sondern dass Sie die Stärken von Hunderten von Denkschulen gesammelt haben und nach der Integration von Tausenden von Bewegungen Ihre Gedanken, Bewegungen und Ihr Körper höchst einheitlich sind. und Sie können sie nach Belieben verwenden. Es ist nicht möglich, diesen Zustand zu erreichen, indem man alle Bewegungen lernt. Nur wenn man wirklich weiß, wie man über den inneren Zusammenhang zwischen den Bewegungen nachdenkt und sie langsam in die eigenen Gedanken integriert, kann man dies erreichen.


Einige alte Programmierer lehren uns oft, dass das Tabu beim Programmieren zu viel, aber nicht genug ist.
Mehr Wissen bedeutet nicht, dass Sie ein Meister sind, und weniger Wissen bedeutet nicht, dass Sie ein Neuling sind. Beim Programmieren liegt der Schwerpunkt auf dem Denken, und dieses Denken bestimmt, wie tief Sie in diese Technologie eintauchen.
Was ist Denken? Es ist die Idee, Probleme zu lösen, die Fähigkeit zur Planung, die Fähigkeit zur Analyse und die Fähigkeit, die Ideen zur Lösung von Problemen schnell zu organisieren. Es kann ein Algorithmus, ein Muster oder ein Framework sein.
Diese Ideen erfordern mehrjährige oder mehrjährige Erfahrung.

Objektorientiertes Denken ist mittlerweile beliebt. Lassen Sie mich kurz auf das oberflächliche Verständnis dieser Idee seit .NET eingehen. Von der großen Anzahl von Funktionsbibliotheken in C bis hin zu der großen Anzahl von Klassenbibliotheken (oder Paketen in Java). ) Jetzt scheint es zu geben, dass man objektorientiert wird, sobald man lernt. Diese Aussage ist etwas weit hergeholt. Egal, ob Sie Java oder C++ lernen, das Wichtigste ist, C++ und Java zu verwenden, um über Probleme nachzudenken objektorientiert, um über Probleme nachzudenken und Objekte als Grundelemente für den Umgang mit Problemen zu verwenden.
Als ich das letzte Mal zu einem Vorstellungsgespräch ging, bat mich der Interviewer, über objektorientierte Vererbung, Polymorphismus und Kapselungsfunktionen zu sprechen.
Ich erzählte ihm von einem einfachen Panzerkampfprogramm, das ich geschrieben hatte und das diese drei Merkmale analysiert.
Vererbung: Dieses Konzept ist sehr einfach zu verstehen. Die Unterklasse erbt alle gemeinsamen Mitglieder der übergeordneten Klasse, z. B. die Basisklasse eines Panzers, die grundlegende Panzereigenschaften und -methoden wie Größe, Gesundheit, Bewegung usw. implementiert. Kollisionsbestimmung usw., die in Zukunft besprochen werden, um einen einzigartigen Tank zu entwerfen, z. B. einen Phantomtank (Red Alert), müssen Sie nur die übergeordnete Klasse erben und eine Phantommethode hinzufügen, um das Problem zu lösen. Die Vorteile der Vererbung liegen ebenfalls auf der Hand. Die meisten für Tanks üblichen Eigenschaften und Methoden werden in die Basisklasse geschrieben. Wenn Sie in Zukunft neue Tanktypen entwerfen möchten, müssen Sie diese nur erben, wodurch der größte Teil des Codes entfällt. Daher ist die Vererbung die einfachste und praktischste Methode.
Polymorphismus: Kann im engeren Sinne als Überladung der Methoden der übergeordneten Klasse verstanden werden, sodass dieselbe Methode über unterschiedliche Parameterlisten verfügt. Ich denke, Polymorphismus ist die Essenz der Objektorientierung. In dieser Klasse gibt es eine Methode, die einen Parameter erfordert Natürlich müssen Sie die Methode move() aufrufen, um diese Methode zu überladen, z. B.: someFun (tank mObj) {….}; }; Es sieht so aus, als hätte ich den Typ des mObj-Parameters geändert, aber sonst wurde nichts geändert. Aber es hat das Problem gelöst. Wenn die Implementierung dieser abnormalen Methode 10.000 Zeilen umfasst, umfasst eine Überladung 20.000 Zeilen. Sollte die Flugzeugklasse in Zukunft auch über eine Move-Methode verfügen, muss diese erneut neu geladen werden. Es ist viel einfacher, Vererbung + Schnittstelle zu verwenden. Sie müssen lediglich eine Schnittstelle namens ImoveObj schreiben und darin eine Bewegungsmethode definieren. Diese Schnittstelle wird von Panzer-, Bullet- und Flugzeugklassen geerbt. Schreiben Sie die Methode als someFun (ImoveObj mObj) {. ….}; später Egal wie viele Klassen hinzugefügt werden, die als mObj-Parameter dienen können, Sie müssen nur die ImoveObj-Schnittstelle erben. (Diejenigen, die das Factory-Muster verwendet haben, sind der Meinung, dass dies zu häufig vorkommt. Tatsächlich ist dies auch das Grundverständnis von Polymorphismus.)
Kapselung: Um eine Klasse zu verwenden, müssen Sie nur wissen, wie sie funktioniert Verwenden Sie die Methoden dieser Klasse. Es ist nicht erforderlich, die spezifische Implementierung dieser Methode zu kennen. Die Schnittstelle ist die Designspezifikation des Entwicklers, und der Entwickler implementiert die Dinge in der Schnittstelle. Schnittstellen sind auch Benutzeranweisungen, die den Benutzern einer Klasse mitteilen, welche Methoden diese Klasse implementiert. Solange sie sie verwenden können, müssen sie deren Implementierung nicht verstehen.
Obwohl dies einfache Grundlagen sind, wird es nicht so schwierig sein, Injektion, Inversion, Mapping usw. zu studieren, wenn Sie diese Dinge erst einmal vollständig verstanden haben.
Neben objektorientiert gibt es auch schnittstellenorientiert, aspektorientiert (Aspekt) usw. Egal welche Ideen zum Programmieren verwendet werden, der Kern ist der Algorithmus. Er ist so klein wie eine Funktion und untrennbar miteinander verbunden aus dem Algorithmus.
Das Wichtigste beim Programmieren ist das Denken, die Technologie bestimmt die Fähigkeiten und das Denken bestimmt die Tiefe der Fähigkeiten.


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Entfernen Sie doppelte Werte mithilfe regulärer Ausdrücke aus dem PHP-Array Entfernen Sie doppelte Werte mithilfe regulärer Ausdrücke aus dem PHP-Array Apr 26, 2024 pm 04:33 PM

So entfernen Sie doppelte Werte mithilfe regulärer Ausdrücke aus einem PHP-Array: Verwenden Sie den regulären Ausdruck /(.*)(.+)/i, um Duplikate abzugleichen und zu ersetzen. Durchlaufen Sie die Array-Elemente und prüfen Sie mit preg_match, ob Übereinstimmungen vorliegen. Wenn es eine Übereinstimmung gibt, überspringen Sie den Wert; andernfalls fügen Sie ihn einem neuen Array ohne doppelte Werte hinzu.

Wozu dient das Programmieren und welchen Nutzen hat es, es zu lernen? Wozu dient das Programmieren und welchen Nutzen hat es, es zu lernen? Apr 28, 2024 pm 01:34 PM

1. Mithilfe der Programmierung können verschiedene Software- und Anwendungsprogramme entwickelt werden, darunter Websites, mobile Anwendungen, Spiele und Datenanalysetools. Seine Anwendungsbereiche sind sehr breit gefächert und decken nahezu alle Branchen ab, darunter wissenschaftliche Forschung, Gesundheitswesen, Finanzen, Bildung, Unterhaltung usw. 2. Das Erlernen des Programmierens kann uns helfen, unsere Fähigkeiten zur Problemlösung und unser logisches Denkvermögen zu verbessern. Beim Programmieren müssen wir Probleme analysieren und verstehen, Lösungen finden und diese in Code übersetzen. Diese Denkweise kann unsere analytischen und abstrakten Fähigkeiten fördern und unsere Fähigkeit verbessern, praktische Probleme zu lösen.

Erstellen Sie browserbasierte Anwendungen mit Golang Erstellen Sie browserbasierte Anwendungen mit Golang Apr 08, 2024 am 09:24 AM

Erstellen Sie browserbasierte Anwendungen mit Golang. Golang kombiniert mit JavaScript, um dynamische Front-End-Erlebnisse zu erstellen. Installieren Sie Golang: Besuchen Sie https://golang.org/doc/install. Richten Sie ein Golang-Projekt ein: Erstellen Sie eine Datei mit dem Namen main.go. Verwendung von GorillaWebToolkit: Fügen Sie GorillaWebToolkit-Code hinzu, um HTTP-Anfragen zu verarbeiten. HTML-Vorlage erstellen: Erstellen Sie index.html im Unterverzeichnis „templates“, bei dem es sich um die Hauptvorlage handelt.

Sammlung von C++-Programmierrätseln: Regen Sie das Denken an und verbessern Sie Ihre Programmierkenntnisse Sammlung von C++-Programmierrätseln: Regen Sie das Denken an und verbessern Sie Ihre Programmierkenntnisse Jun 01, 2024 pm 10:26 PM

C++-Programmierrätsel behandeln Algorithmen- und Datenstrukturkonzepte wie Fibonacci-Folge, Fakultät, Hamming-Distanz, Maximal- und Minimalwerte von Arrays usw. Durch das Lösen dieser Rätsel können Sie Ihre C++-Kenntnisse festigen und das Algorithmusverständnis und die Programmierkenntnisse verbessern.

Problemlösung mit Python: Erschließen Sie leistungsstarke Lösungen als Programmieranfänger Problemlösung mit Python: Erschließen Sie leistungsstarke Lösungen als Programmieranfänger Oct 11, 2024 pm 08:58 PM

Python unterstützt Anfänger bei der Problemlösung. Seine benutzerfreundliche Syntax, umfangreiche Bibliothek und Funktionen wie Variablen, bedingte Anweisungen und Schleifen ermöglichen eine effiziente Codeentwicklung. Von der Datenverwaltung über die Steuerung des Programmablaufs bis hin zur Ausführung wiederkehrender Aufgaben bietet Python

Der Schlüssel zum Programmieren: Die Leistungsfähigkeit von Python für Anfänger freischalten Der Schlüssel zum Programmieren: Die Leistungsfähigkeit von Python für Anfänger freischalten Oct 11, 2024 pm 12:17 PM

Python ist aufgrund seiner einfachen Erlernbarkeit und leistungsstarken Funktionen eine ideale Einführungssprache in die Programmierung für Anfänger. Zu seinen Grundlagen gehören: Variablen: werden zum Speichern von Daten (Zahlen, Zeichenfolgen, Listen usw.) verwendet. Datentyp: Definiert den Datentyp in der Variablen (Ganzzahl, Gleitkomma usw.). Operatoren: werden für mathematische Operationen und Vergleiche verwendet. Kontrollfluss: Kontrollieren Sie den Fluss der Codeausführung (bedingte Anweisungen, Schleifen).

Holen Sie sich Go-Module schnell und einfach mit Go Get Holen Sie sich Go-Module schnell und einfach mit Go Get Apr 07, 2024 pm 09:48 PM

Über GoGet können Sie Go-Module schnell und einfach abrufen. Die Schritte sind wie folgt: Führen Sie im Terminal aus: goget[Modulpfad], wobei Modulpfad der Modulpfad ist. GoGet lädt das Modul und seine Abhängigkeiten automatisch herunter. Der Speicherort der Installation wird durch die Umgebungsvariable GOPATH angegeben.

Verwenden Sie zur Fehlerbehandlung den Fehlerumbruch- und -abwicklungsmechanismus von Golang Verwenden Sie zur Fehlerbehandlung den Fehlerumbruch- und -abwicklungsmechanismus von Golang Apr 25, 2024 am 08:15 AM

Die Fehlerbehandlung in Go umfasst das Ein- und Auspacken von Fehlern. Durch das Umschließen von Fehlern kann ein Fehlertyp mit einem anderen umschlossen werden, wodurch ein umfassenderer Kontext für den Fehler bereitgestellt wird. Erweitern Sie Fehler und durchlaufen Sie die verschachtelte Fehlerkette, um den Fehler auf der niedrigsten Ebene zu finden und das Debuggen zu vereinfachen. Durch die Kombination dieser beiden Techniken können Fehlerbedingungen effektiv behandelt werden, wodurch ein umfassenderer Fehlerkontext und bessere Debugging-Funktionen bereitgestellt werden.