Ist es wichtig, Algorithmen zu lernen, um ein echter Programmierer zu sein? [geschlossen]

21

Ich bin ein PHP-Programmierer und bis jetzt brauchte ich keine Algorithmen zu lernen ...

Jetzt lerne ich Python (eine echte Programmiersprache), weil ich matplotlib verwenden muss. Ist es sinnvoll, zuerst ein Buch mit einem Python-Algorithmus zu lesen und dann Matplotlib und Numpy zu lernen, oder sollte ich zu Matplotlib und Numpy springen?

Freundliche Grüße,

André
quelle
2
Wenn Sie keine Algorithmen lernen und verstehen, was für eine bestimmte Aufgabe am besten geeignet ist, erhalten Sie Antworten wie die folgenden: stackoverflow.com/questions/5498865
kdgregory
1
Sie haben wahrscheinlich bereits einige Algorithmen implementiert, ohne deren Namen oder die dahinter stehende Theorie zu kennen. Es ist schwer zu glauben, dass irgendjemand eine nützliche Programmierung durchführen kann, ohne einige Algorithmen zu implementieren .
tdammers
2
Algorithmus ist nur ein allgemeiner Sinn dafür, wie man die Dinge auf optimale Weise macht . Bei der Programmierung müssen Sie die minimalen Ressourcen verwenden und die Leistung sicherstellen, daher verwenden Sie diese ständig. Übrigens, was bedeutet das für Python (eine echte Programmiersprache) ??? PHP ist so gut wie alles andere. Es ist nur eher eine Web-Skriptsprache und wohlgemerkt die beste, die es seit langem gibt.
Pankaj Upadhyay

Antworten:

35

Absolut. Wie können Sie sonst verstehen, wie ein Programm das macht, was es macht, ohne Algorithmen zu kennen?

Es ist wichtig, die Entwicklung von Algorithmen zu verstehen, damit Sie effizienter programmieren und bessere Programme schreiben können. Zu Beginn sollten Sie zumindest die Grundlagen von Konzepten wie Kontrollfluss (möglicherweise über Statusautomaten, aber das ist nicht immer erforderlich) und Big O-Notation kennen und wissen, wie sich dies auf die Leistung auswirken kann.

Andrew Arnold
quelle
Ich stimme zwar zu, aber wie viel sollte man wissen, wenn man ein Intro an einem örtlichen Community College zum zweiten Mal an Donald Knuth weitergibt?
Job
Gute alte Big Ohno-Notation ...
1
Ich bin damit einverstanden, wie wichtig es ist, die Komplexität von Algorithmen zu kennen ("Big-O-Notation"). Ich bin jedoch absolut anderer Meinung als die "absolute" Antwort auf die Frage "Es ist unerlässlich, Algorithmen zu lernen, um ein echter Programmierer zu sein". In der Tat ist es viel nützlicher, Python gut zu lernen, als zu wissen, wie man eine Liste sortiert (da Python Listen für Sie sortiert) oder wie Python mit Wörterbüchern umgeht (welche Python-Programmierer mussten jemals einen Hash-Mechanismus implementieren?) usw. erlernte Algorithmen, weil sie die Sprache sind, haben sie nicht sofort geliefert; Die moderne Ära ist anders.
Eric O Lebigot
17

Die Antwort lautet ja und nein. Sie müssen nicht genau wissen, wie verschiedene Algorithmen funktionieren oder welche Theorie dahinter steckt - das ist die Aufgabe der Informatiker -, aber Sie müssen die Grundlagen kennen, z. B. welche Algorithmen zur Lösung einer bestimmten Aufgabe zur Verfügung stehen und welches ist am besten für eine gegebene Situation.

In Ihrem Fall können Sie einfach mit der Nutzung der von Ihnen erwähnten Bibliotheken beginnen - sie wurden von jemandem erstellt, um anderen das Leben zu erleichtern. Sie müssen sicherlich nicht die Algorithmen kennen, mit denen es erstellt wurde, nur um es zu verwenden.

casablanca
quelle
2
+1 für solch einen "modernen" Kommentar. Lern- und Lehralgorithmen sollten Menschen vorbehalten sein, die sie wirklich umsetzen müssen.
Eric O Lebigot
6

Ja, damit Sie verstehen, wie Sie einen Ansatz auf einen anderen anwenden. Sie möchten das Rad auch nicht "neu erfinden", da es bereits viele Algorithmen gibt, die funktionieren. Wenn Sie nicht wissen, dass sie da draußen sind, verschwenden Sie Zeit damit, eine potenziell schwächere Lösung zu erfinden, und verstehen nicht einmal, warum sie schwächer ist.

jmq
quelle
3

Algorithmen für einen Programmierer sind für einen Schmied ein Hammer. Sicherlich können Sie ohne auskommen und Alternativen nutzen, um die Arbeit zu erledigen, aber wenn Sie es richtig machen und es gut machen wollen, ist es wichtig.

Das Gute an Algorithmen ist, dass sie unabhängig von der Programmiersprache sind. Lernen Sie die Theorie einmal und Sie können sie in jeder Sprache implementieren. Hier ist eine gute Website, auf der ich angefangen habe zu lernen: www.ambesty.com Sie verwenden Java, aber es wird mit Beispielcode geliefert, von dem Sie lernen können. Sie bieten einfache ADT- und Sortieralgorithmen für komplexere Algorithmen wie Datenkomprimierungsalgorithmen. Sehr interessant zu lesen. Viel Glück

ailan
quelle
1

Abhängig von Ihrer PHP-Erfahrung können Sie die grundlegenden Programmierkonzepte von einer Sprache in eine andere anpassen . Dies wäre der effizienteste Weg, um Ihre Zeit zu verbringen.

Lesen Sie, was Sie tun müssen, um Matplotlib , Numpy und Python zu integrieren . Und wenn Sie nicht weiterkommen, tauchen Sie tiefer. Ich empfehle diese Bestellung weil

  • es ist weniger zeitaufwendig
  • Sie werden wahrscheinlich nicht jeden Algorithmus anwenden, über den Sie lesen
JK
quelle
1

Wenn Sie (nur) Geschäftsanwendungen entwickeln, lernen Sie nur die Grundlagen wie Listen, Warteschlangen, Sortierung, Zeichenfolgensuche usw. kennen, damit Sie die Terminologie und die Auswirkungen auf die Leistung sowie das Messen usw. kennen. Eine bessere Nutzung Ihrer Zeit wäre, sich auf neue Technologie, OO-Muster, effektives Datenbankdesign und App zu konzentrieren. Entwicklungsmethoden und so weiter!

Keine Chance
quelle
1

Ok - ich weiß, das ist nicht genau das, was Sie gemeint haben, aber Sie wissen bereits (wie man) Algorithmen. Abhängig von Ihrer Definition können Sie jedes Programm als Beispiel für einen Algorithmus verwenden.

Fürchte dich also nicht. Es ist nützlich, die grundlegenden Algorithmen zu kennen, es ist nützlicher, die grundlegenden Datenstrukturen zu kennen, aber es ist noch besser, die Entwurfs- "Muster" zu kennen. Schließlich werden die grundlegenden Algorithmen und Datenstrukturen in Ihrem gewählten Framework implementiert, aber die Muster werden höchstwahrscheinlich nicht ...

Carsten
quelle
0

Lernen Sie zuerst Python, und wenn Sie Lust dazu haben, können Sie Algorithmen studieren. Da Algorithmen nicht pythonspezifisch sind, sind sie allgemein alle Sprachen.

eggie5
quelle
0

Bevor ich an der Universität anfing, glaubte ich, ein ziemlich anständiger Programmierer zu sein, und ich hatte ein paar Jahre Berufserfahrung. Aber nachdem ich an der Universität etwas über Algorithmen und Datenstrukturen gelernt habe, denke ich, es ist Wissen, das man haben muss! Es ist wichtig für alles, was Sie tun. Auch wenn Sie dieses Wissen möglicherweise nicht jeden Tag direkt einsetzen, bleibt es Ihnen immer ein Begriff und macht Sie zu einem besseren Programmierer.

Sie lernen viel über Leistung und obwohl Leistung normalerweise nicht die Nummer eins ist, hindern Sie Algorithmen daran, einige dumme Dinge mit wirklich schlechter Leistung zu tun. Auch wenn Leistung nicht die Nummer eins ist, gibt es keinen Grund, dieses Wissen nicht zu nutzen, um die richtigen Entscheidungen zu treffen.

Niklas H
quelle