Ist der Satz „Das Rad niemals neu erfinden“ für Studenten geeignet?

115

Ich stoße ständig auf diesen Ausdruck "erfinde das Rad nicht neu" oder "erfinde das Rad nie neu", wenn ich Fragen zu SO stelle. Sie weisen Sie an, einige Frameworks oder vorhandene Pakete zu verwenden. Ich weiß, woher diese Einstellung kommt, da es unklug ist, Zeit mit etwas zu verschwenden, das andere bereits gelöst haben. Oder ist es das so?

Als Student stelle ich fest, dass ich durch die Verwendung von Code, den andere zur Lösung meines Problems geschrieben haben, nicht so viel lernen kann, wie ich möchte, und dass ich weniger Einsicht erhalte. Und manchmal denke ich, dass diese Formulierung hauptsächlich für Programmierer gedacht ist, die mit Terminen konfrontiert sind, und nicht für Studenten wie mich.

Ist es so schlimm, das Rad neu zu erfinden? Vielleicht denke ich es falsch? Vielleicht kann ich es vermeiden, das Rad neu zu erfinden und gleichzeitig viel zu lernen?

Gnijuohz
quelle
51
Sie werden nicht viel davon profitieren, wenn Sie in ein Fitnessstudio gehen, wenn andere Leute die Gewichte für Sie heben (es sei denn, Sie lernen, eine Krippe zu sein).
Charles E. Grant
82
Es ist in Ordnung, das Rad neu zu erfinden, wenn Sie Räder bauen wollen. Wenn Sie Häuser bauen, ist es eine gute Idee anzunehmen, dass die Radbauer besser wissen, was sie tun als Sie.
zzzzBov
22
Sie müssen zumindest versuchen, ein Rad zu machen! Ansonsten wissen Sie nicht, warum Sie ein vorgefertigtes verwenden sollten.
59
Es ist niemals angebracht, ein Absolutes anzugeben. :)
ein Lebenslauf
2
Es kann in Ordnung sein, Räder neu zu erfinden, wenn Sie extrem optimierten Code erstellen. Standardbibliotheken sind sehr nützlich, aber es ist oft möglich, etwas zu erstellen, das weniger allgemein, aber schneller ist.
Leo

Antworten:

126

Ich denke, Sie machen einen guten Punkt. Die meisten Programmierer auf dieser Website arbeiten wahrscheinlich als Profis, deren Ziel es ist, qualitativ hochwertige Software so schnell wie möglich zu erstellen. Die Neuerfindung des Rades scheitert an diesem Ziel in zweierlei Hinsicht.

  1. Das Neuschreiben von vorhandenem Code ist eine Verschwendung von Aufwand, der für die einzelnen Teile Ihres Systems verwendet werden kann, und führt dazu, dass das Projekt länger dauert als erforderlich.
  2. Die erste Version eines Codes weist mit größerer Wahrscheinlichkeit Fehler / unvorhergesehene Probleme auf. Die meisten Bibliotheken und wiederverwendbaren Komponenten wurden mehrfach getestet und gepatcht. Wenn Sie einen Hashing-Algorithmus neu erfinden oder versuchen, Ihr eigenes RDBMS zu erstellen (es sei denn, das ist das, was das Projekt ist), werden Sie häufig minderwertige Ergebnisse erzielen.

Das heißt, in einem akademischen Umfeld ist das Ziel zu lernen , keine Software mit kleinem Budget zu liefern. Ein Rad neu zu erfinden, um zu verstehen, wie die Speichen oder die Achse funktionieren, ist ein guter Weg, um dieses Ziel zu erreichen. Aus diesem Grund enthalten viele Programmierlehrpläne eine Klasse zum Erstellen von Compilern, wenn nur sehr wenige arbeitende Programmierer Grund dazu haben, dies zu tun.

JohnFx
quelle
37
Ich stimme der Idee zu, zu verstehen, wie die Dinge funktionieren, obwohl ich mir auch wünsche, dass die Programmierschulen einige Zeit in ihrem Lehrplan benötigen, um zu lernen, wie man Bibliotheken von Drittanbietern verwendet und warum Sie dies tun sollten. Ich finde ständig professionelle Programmierer und Entwickler, die das nicht können und am Ende das Rad neu erfinden.
Spoike
3
Toller Punkt über Compiler
Chani
1
Ich denke, es ist wichtiger zu lernen , das Rad nicht neu zu erfinden. Es gibt viele Dinge, die Sie tun können, ohne etwas zu erstellen, das bereits erstellt wurde.
Thomas Bonini
@Krelp Während man Student ist, sind die Konzepte der wichtigste Teil. Viele Professoren verwenden Codebeispiele, um eine Brückentheorie und -anwendung zu ermöglichen. Das sind die Arten von Programmen, die die Bibliothek neu erfinden werden, aber sie sollen sicherstellen, dass die Schüler das Material verstehen.
Jetti
2
Als Student müssen Sie das Rad neu erfinden, um zu sehen, warum es so schnell wie es geht. Als Profi müssen Sie jedoch handelsübliche Räder verwenden, damit Sie so schnell wie möglich fahren können. Leider ist SO in erster Linie eine Seite für Profis, nicht für Studenten (haben sie [Hausaufgaben] nicht für eine Weile
gesperrt
19

Die Antwort hängt stark vom Kontext ab. Wenn Sie mehr über Datenstrukturen erfahren möchten, indem Sie versuchen, eine Hash-Tabelle zu implementieren, ist "das Rad neu zu erfinden" das Beste, was Sie tun können. Wenn Sie lernen, wie man Compiler schreibt und eine Symboltabelle benötigt, ist es reine Zeitverschwendung, eine eigene Hash-Map zu implementieren, anstatt eine aus der Standardbibliothek wiederzuverwenden.

dasblinkenlight
quelle
17

Als Student, würde ich erwarten , dass Sie Ihre Programmierung Ausbildung beginnen , indem zunächst ein Kopieren Rad oder zwei mit zu beginnen, dann zu modifizieren Lernrad zu sehen , wie sie funktionieren, und alle Einschränkungen zu verstehen. Später können Sie sogar ein brandneues Rad erstellen, um zu sehen, ob Sie das Design verbessern können, oder um Ihrem Kursleiter zu zeigen, wie Sie die Konzepte verstehen.

Als berufstätiger Fachmann würde ich jedoch erwarten, dass Sie gelernt haben, welches Rad zur Lösung eines bestimmten Problems zu verwenden ist und wann es möglicherweise angebracht ist, ein vorhandenes Rad zu modifizieren , wenn es Ihr Problem nur teilweise löst. Wenn Sie nirgendwo ein Rad finden können, haben Sie vielleicht eine Marktlücke identifiziert oder sind nicht weit genug gekommen, und Sie müssten genug Erfahrung haben, um zu wissen, wann es angebracht wäre, ein brandneues Rad für Sie zu entwickeln besitzen.

Die Frage, wann es angebracht ist, eine Lösung neu zu erfinden, ist komplex, und es erfordert Zeit und Erfahrung, um zu lernen, wann es besser sein könnte, eine brandneue Version von etwas zu erstellen, das bereits zuvor getan wurde. Wenn Sie nur für kurze Zeit entwickelt haben, ist es besser, einfach eine vorhandene Lösung zu verwenden und Ihre Mentoren zu bitten, Optionen vorzuschlagen. Wenn Sie enge Termine und große Unsicherheiten in einem Projekt haben, kann die Verwendung vorhandener Daten eine enorme Zeitersparnis bedeuten und ist immer Ihre erste Wahl. Sie können später jederzeit andere Lösungen verwenden, wenn dies angemessen ist, auch wenn dies bedeutet, dass Sie irgendwann zurückkehren, um Ihr Rad neu zu erfinden .

S.Robins
quelle
12

Als Lehrer oder Programmierer kämpfe ich ständig mit der anderen Seite des Problems: Wann fordere ich die Schüler auf, das Rad neu zu erfinden?

Nehmen Sie die folgenden einfachen Situationen: Wir untersuchen den Sortieralgorithmus, und ich setze Aufgaben, um ein Programm zu schreiben, das einige Daten sortiert. oder arbeiten an Datumsfunktionen, und ich bitte um einen Kalender.

Für beide stehen unzählige vorgefertigte Bibliotheken und Funktionen zur Verfügung. Aber ich möchte, dass die Schüler sie meiden und eine eigene Version eines Sortieralgorithmus oder eines Kalenders entwickeln.

Nehmen wir nun die andere: Ich habe eine Aufgabe festgelegt, um eine einfache Anwendung zum Beispiel zum Planen von Terminen zu schreiben. Dies erfordert wahrscheinlich eine Sortierung, einen Kalender und vieles mehr. Dieses Mal gilt "erfinde das Rad nicht neu": Ich möchte nicht, dass Schüler mit gelösten Problemen kämpfen, sondern stattdessen vorhandene Funktionen zusammenstellen, um ein Ergebnis zu erzielen.

Meine Schwierigkeit besteht darin, Sie zu bitten, das Vorhandene neu zu erschaffen, was Sie zum Lernen bringt, und den Vorteil von ausgetretenen Problemen mit bekannten Schwierigkeiten zu haben, die ich verwenden kann, um Sie zum Üben des Handwerks zu bewegen, und wie viel ich setzen sollte Sie in einer realen Umgebung, in der Räder nicht neu erfunden werden?

Um Ihre Frage direkter zu beantworten, zwei Vorschläge:

  • Wenn ein Lehrer Ihnen sagt, dass Sie das Rad nicht neu erfinden sollen, sagen sie dies wahrscheinlich, weil sie ihr Problem so entworfen haben. Vielleicht möchten sie, dass Sie eine Bibliothek ausprobieren, sich mit der Implementierung eines Algorithmus durch eine andere Person abmühen, anstatt selbst einen zu schreiben - auch das Lernen ist wichtig, aber die Neuerstellung geht daneben.
  • Wenn Sie zu viele Übungen zum Zusammenstellen von Bibliotheksaufrufen haben, anstatt Algorithmen zu entwickeln, könnten Sie mit Ihren Lehrern die Frage nach dem Gleichgewicht zwischen diesen Aktivitäten aufwerfen - heben Sie hervor, dass Sie nie aufgefordert wurden, eigene Algorithmen zu schreiben, z. B. Sortieren und Zusammenführen. Die Kommunikation wird niemals schief gehen.
boisvert
quelle
6

Übung Ich bezweifle, dass die ersten 1000 Codezeilen, die jemand schreibt, sehr einzigartig sind.

Erweitern Sie Ihr Toolset Die Verwendung eines Frameworks hat mehr Vorteile, wenn Sie verstehen, was es tut (fast bis zu dem Punkt, an dem Sie es selbst tun können.), Sodass Sie wissen, wie Sie es anwenden.

Die "Räder" verstehen Die Verwendung eines schlecht gebauten und abgenutzten Rades oder eines Rades, das nicht passt, ist keine Entschuldigung dafür, blind an dieser Faustregel festzuhalten. Möglicherweise fehlt Ihnen die Zeit, die Finanzierung und das Fachwissen, und Sie können die Reise beenden.

Es gibt nur wenige Absolute .

JeffO
quelle
1
+ Vor allem für den letzten Punkt.
Mike Dunlavey
Die ersten 1000 Codezeilen, die jemand schreibt, sind in Bezug auf kreative Fehler in der Regel sehr einzigartig.
Leftaroundabout
@leftaroundabout - Ich denke, ich sollte diese Anweisung auf Codezeilen beschränken, die kompiliert werden können.
JeffO
3

Studenten haben kein Geldbudget, um Aufträge abzuschließen, aber es gibt Termine, die berücksichtigt werden müssen.

Als jemand, der bis vor kurzem Student war, denke ich, dass das Ausmaß der Neuerfindung der Räder davon abhängt, für welche Klasse Sie den Auftrag ausführen. Sie möchten keine eigene Socket-Bibliothek für eine Webentwicklungs- und Design-Klasse schreiben (wenn Sie dies tun und die Aufgabe rechtzeitig erledigen können , was tun Sie, um eine Klasse so einfach zu gestalten?), Aber Sie werden vermisst Sehr viel, wenn es eine Aufgabe für eine Netzwerkklasse war. Natürlich berücksichtigen Professoren diese Dinge normalerweise, wenn sie Aufgaben erstellen, sodass Sie meistens Arbeiten ausführen, die mit der Klasse zusammenhängen. Manchmal ist es jedoch auch wichtig zu wissen, was Sie nicht selbst schreiben sollten .

Das heißt, wenn Sie die Schule verlassen, ist es schwierig, die Zeit zu finden, um Dinge zu bauen, die bereits existieren. Ergreifen Sie jede Gelegenheit, wenn Sie können, während Sie noch in der Schule sind.

Wenn Sie das Brush-Off "Bibliothek X / Framework Y verwenden" für SO erhalten, stellen Sie Ihrer Frage das Präfix "Ich schreibe X selbst, um mehr darüber zu erfahren".

Jay
quelle
Stellen Sie Ihrer Frage "Ich schreibe X alleine, um mehr darüber zu erfahren". Diese. +1.
Boisvert
2

Wenn Sie keine festgelegte Frist für Ihr Projekt haben, ist es besser, das Rad neu zu erfinden. Wenn Sie keinen Job haben oder nur Programmieren lernen und kein Geld verdienen möchten, was bringt es, wenn Sie Verknüpfungen verwenden, die Sie nicht zu einem besseren Programmierer machen und die Ihr Projekt lediglich beschleunigen? Obwohl dies zutrifft, ist es auf jeden Fall eine gute Fähigkeit, mit Bibliotheken, Frameworks und dem Code anderer Leute umzugehen.

Billjk
quelle
Dies ist die Idee hinter dem Konzept von Code Katas, Code immer wieder neu zu schreiben, um ihn zu verbessern und daraus zu lernen. Ich würde sagen, dass es sogar bei der Arbeit noch besser ist, Ihren Code wiederholt umzuschreiben, und dass es noch besser ist, viele Muster zu implementieren, wenn Sie müssen.
Bill K
2

Im wirklichen Leben wird das Rad immer wieder neu erfunden. Wenn wir nach den Gründen suchen, finden wir möglicherweise Erkenntnisse darüber, wann wir das Rad in der Programmierung neu erfinden müssen.

Seit der sumerischen Zeit hat sich vieles geändert:

  • Das Material für den Bau von Rädern: aus Stein, Holz, Metall, Carbon, ...
  • die Größe von Objekten, die Räder benötigen - in der Größe von Nanometern für medizinische Instrumente und Rädern zum Verdienen von Braunkohle, 100 m groß
  • die Produktionsumgebung - handgemacht oder Industrieproduktion
  • die Präzision der Räder, die benötigt werden
  • Die richtige Situation am Steuer. Es könnte ein perfektes Rad für Ihren Job geben, aber es könnte patentiert sein.
  • Das Glänzen und Polieren Ihres Rades. Ein Cadillac könnte ein anderes Rad verdienen als ein VW Golf.
  • Das optimale Rad für einen Kinderwagen hängt von vielen Parametern ab: Größe und Gewicht des Kinderwagens (plus Babys), klimatische Bedingungen, Rohstoffpreise für Öl oder Naturkautschuk, Maschinen zum Bau von Rädern und Handwerker, die für die Produktion zur Verfügung stehen. Kurz gesagt: Weltwirtschaft.

Wie überträgt sich das auf die Software-Welt? Gut,

  • Möglicherweise gibt es einen Webserver, der jedoch leider in PHP geschrieben ist. Sie möchten es lieber in einer Sprache haben, die Sie fließend sprechen
  • Ein Sortieralgorithmus ist möglicherweise für 10 Elemente überdimensioniert, skaliert jedoch nicht auf 1T Elemente
  • Möglicherweise benötigen Sie eine Lösung, die selbst vom zweiten Programm generiert wird
  • Präzision ist im Software-Land häufig eine digitale Frage. Wenn ein Algorithmus eine Liste sortiert, wird sie sortiert - nicht meistens sortiert. Neben der Leistung können jedoch auch die Codegröße, die Speichernutzung oder andere Einschränkungen auftreten
  • Patente brauchen wohl keine weitere Erklärung.
  • Das Erscheinungsbild ist ein ständiger Grund, etwas neu zu erfinden - denken Sie an dropDownList (ComboBox).
  • Die weltweite Wirtschaftslage kann Ihr Software-Rad beeinflussen: Wird es ein Cloud-Rad, ein Open Source-Rad, ein Browser-Rad oder ein App-Rad sein?
  • Und natürlich der bekannteste Grund, ein eigenes Rad zu bauen: Sie lernen es gerne.
Benutzer unbekannt
quelle
2

Ich bin ein frisch gebildeter Student. In der Schule "lernten" wir asp.net und C #, während der zweijährigen Ausbildung haben wir nie versucht, ein eigenes E-Mail-System, Anmeldesystem oder CMS zu erstellen. Alles wurde einfach per Drag & Drop in die Entwurfsansicht verschoben .

Wir haben 102 Studenten gestartet, 23 haben abgeschlossen. 4 Leute haben eine Arbeit. Der Grund ?: Diese 4 Leute (einschließlich ich) wussten, wie man programmiert, bevor wir mit der Ausbildung begannen.

Der Rest der Leute ist verloren. Weil wir das Rad nie neu erfunden haben. Wir haben nie erfahren, wie der Code tatsächlich funktioniert. Es ist ziemlich einfach, ein vollständiges Anmeldesystem mit Benutzerverwaltung zu erstellen - aber die Studenten aus meiner Ausbildung wissen nicht, wie sie das machen sollen. Weil sie nicht wissen, wie ein Anmeldesystem tatsächlich funktioniert.

Ich bin traurig, dass irgendwann tatsächlich 2 Jahre vergeudet wurden, ohne etwas zu lernen. - Ich wünsche mir, dass Lehrer auf der ganzen Welt sagen: Ja, wir wissen, dass es Frameworks gibt, in denen der Code existiert. Sie können sie im wirklichen Leben verwenden. Aber in dieser Ausbildung lernen Sie, wie man programmiert.

Viele Programmierausbildungen sind sehr kurz, daher müssen die Ausbildungen in dieser Zeit viele Dinge abdecken. Ich denke, es wäre besser, die Liste der Dinge zu halbieren und mehr Zeit für das Programmieren aufzuwenden. Menschen können eine neue Art von Rad erfinden, wenn sie wissen, wie man ein normales Rad baut. Die Leute sind nicht dumm, wenn sie ein wenig wissen, aber man kann einen Mann, der nichts über Autos weiß, nicht bitten, ein Auto zu bauen. Aber einen Mann zu fragen, der weiß, wie man ein Fahrrad baut, wäre viel einfacher mit dem Auto tatsächlich bauen.

Zerpex
quelle
1

Es hängt wirklich davon ab, was Sie tun. Wenn Sie versuchen, Räder zu verstehen, ist es eine gute Idee, sie selbst neu zu erfinden. Wenn Sie jedoch versuchen, Autos zu verstehen, ist es im Allgemeinen verschwenderisch und ablenkend, das Rad oder die Verbrennungsmotoren neu zu erfinden.

Wenn Sie beispielsweise wissen möchten, wie ein Volltextsuchindex funktioniert, sollten Sie versuchen, einen eigenen Index zu erstellen. Wenn Sie versuchen, eine Anwendung für die Dokumentenverwaltung zu erstellen, ist es besser, eine vorhandene Bibliothek wiederzuverwenden, da der größte Teil Ihrer Arbeit darin besteht, die Anwendungsarchitektur und die Benutzererfahrung gleichzeitig zu verbessern.

back2dos
quelle
1

Ja, es ist angebracht, den Schülern zu sagen, dass sie das Rad nicht neu erfinden sollen. Es muss jedoch klar sein, was es für einen Schüler bedeutet: Schreiben Sie, was für die Aufgabe von Belang ist. Es bedeutet nicht, dass eine Bubblesort-Anweisung erstellt, aus Wikipedia kopiert oder array.sort oder Äquivalente verwendet werden sollen, sofern Ihr Framework oder Ihre Sprache dies vorsieht. Aber nachdem Sie sich mit den verschiedenen Sortieralgorithmen befasst haben, Ihre eigene Bubblesort- und Quicksort-Funktion geschrieben haben, müssen Sie sie nicht für jede neue Aufgabe neu schreiben. Verwenden Sie entweder die eingebaute Sortierung oder das, was Sie geschrieben haben, und wiederholen Sie nicht die alte Aufgabe .

Das Rad neu zu erfinden bedeutet, keine Zeit zu verschwenden, was für Studenten genauso gilt wie für Profis - der Unterschied liegt in den Zielen. Die Schüler sollten lernen, also ist etwas, das ihr Verständnis nicht fördert, eine Zeitverschwendung. Nachdem Sie ein Bubblesort geschrieben haben, wissen Sie, was es tut, und warum Sie es nicht auf einem großen Set anwenden möchten. und es immer wieder neu zu schreiben, ist Zeitverschwendung. Sie werden beim 25. Umschreiben nichts Neues lernen.

Für Studenten bedeutet dies nicht, dass Sie nicht schreiben, was andere geschrieben haben. Es bedeutet, dass Sie nicht wiederholen, was Sie bereits beherrschen. Diese Zeit könnte besser für das verwendet werden, was Sie nicht beherrschen.

jmoreno
quelle
Es sei denn, das 25. Umschreiben ist eine Übung für eine Programmiersprache, die Sie gerade erst lernen.
Leftaroundabout
1

Es wurden viele Gedanken und Anstrengungen unternommen, um ein Rad zu schaffen. Der Rat ist, "das Rad nicht neu zu erfinden", aber Sie können fortfahren und das Rad rückentwickeln und verstehen, warum bestimmte Dinge so gemacht werden, wie sie gemacht werden. Danach können Sie versuchen, das Rad auf Ihre eigene Weise zu implementieren, was zu einem der drei logischen Enden führen kann.

  1. Sie verstehen entweder, warum die Dinge so sind, wie sie sind.
  2. Sie können es optimieren und verbessern
  3. Sie könnten es vermasseln und lernen, wie man das Ding nicht macht.

Für mich sollte der Schüler das Rad nicht neu erfinden, sondern versuchen, es rückgängig zu machen und die Auswirkungen zu verstehen.

Ramesh
quelle
1

Ich würde sagen, dass es davon abhängt, ob Sie das Rad neu erfinden, um zu sehen, wie es funktioniert, oder ob Sie das Rad neu erfinden, um eine andere Aufgabe zu erfüllen. Natürlich gibt es Räder, die jeder Schüler mindestens einmal selbst umsetzen muss. Sie müssen wissen, wie einige elementare Datenstrukturen und Algorithmen funktionieren, um zu verstehen, wie sie sich auf die Leistung Ihres Codes auswirken oder welche unter verschiedenen Umständen verwendet werden sollen.

Stapel, Haufen, verknüpfte Listen, Bäume usw. sind auf jeden Fall die Investition in die Zeit wert, die für die einmalige Implementierung erforderlich ist. dann immer nach Gebrauch diejenigen, die durch das Framework zur Verfügung gestellt werden. Jeder, der ein jQuery-Plugin verwendet, sollte mindestens eines schreiben, aber Sie müssen nicht jeden anderen Typ eines Plugins schreiben, den Sie jemals verwenden werden. Ich würde sagen, es ist hilfreich, aber nicht notwendig, einen kleinen Prozess-Scheduler oder ein Mini-OS zu schreiben, damit Sie verstehen, was unter der Haube eines Computers vor sich geht. Sie müssen jedoch verstehen, wie Prozesse, Threads usw. funktionieren.

Sobald Sie über gute Kenntnisse verfügen, kann es auch wichtig (und unterhaltsam) sein, neue Strukturen / Algorithmen zu implementieren, um ein Gefühl für sie zu bekommen. Sofern es nicht Ihre Aufgabe ist oder Sie wirklich gut darin sind, würde ich weiterhin die vorhandenen in Ihrem Code verwenden.

Tvanfosson
quelle
1

Die Antwort hängt davon ab, ob Sie lernen oder erstellen möchten .

Wenn Lernen das Ziel ist, kann "das Rad neu erfinden" Ihnen einen besseren Einblick und ein besseres Verständnis geben als die Verwendung der vorhandenen Räder (Bibliotheksfunktionen).

Wenn es jedoch darum geht, ein kompliziertes Produkt zu erstellen, kann die Neuerfindung des Rads eine zeitaufwändige Übung sein, die bei der Erstellung des Produkts nur wenig hilft.

Wenn das Seelenziel jedoch Lernen ist, das mit genügend Zeit und Ausdauer ausgestattet ist, ist "das Rad neu erfinden" die beste Option, da es dabei hilft, jedes einzelne Merkmal anzupassen.

CoolEulerProject
quelle
1

Nun, das hat zwei Aspekte.

Erstens, wenn Sie versuchen zu lernen, kann es nützlich sein, einige Dinge von Grund auf neu zu machen oder Schnittstellen niedrigerer Ebenen als nötig zu verwenden. Es muss jedoch noch ermittelt werden, was Sie gerade lernen: Wenn Sie das HTTP-Protokoll kennenlernen möchten, müssen Sie die Socket-Programmierung nicht selbst durchführen. Erfinden Sie nur die Dinge neu, von denen Sie lernen , und tun Sie dies nur, um sie wirklich zu erforschen und zu verstehen.

Aber - eine der wichtigsten Fähigkeiten eines professionellen Programmierers ist die Auswahl, das Erlernen und die Verwendung bereits vorhandener Software. Dies ist etwas, das Sie auch lernen müssen. Ein großer Teil der Fragen zu SO scheint von Personen zu kommen, die keine Dokumentation lesen können.

Schließlich beruht die Programmierung auf einer wesentlichen theoretischen Grundlage. Sie müssen beide praktischen Übungen zusammen mit dem Lesen anwenden, um die Theorie zu lernen.

Marcin
quelle
Genau. Aus diesem Grund werden
ständig
0

Ich habe die gleiche Situation konfrontiert. Das liegt an der unterschiedlichen Wahrnehmung in Industrie und Wissenschaft.

Wenn Sie das Rad nicht "neu erfinden", können Sie in der Schule absolut nichts lernen oder verstehen, wie etwas funktioniert.

Während in einer Branche das Ziel ist, ein Produkt in kürzester Zeit und mit geringem Aufwand herauszubringen.

Persönlich gehe ich gerne in den Kaninchenbau und verabscheue die Industriephilosophie, aber so werden Geschäfte gemacht und man kann sich nicht beschweren.

John
quelle
0

Das Hacker Jargon Lexikon hat einen sehr guten Kommentar zur Neuerfindung des Rades :

Entwerfen oder Implementieren eines Tools, das einem vorhandenen oder einem Teil davon entspricht, mit der Folge, dass dies albern oder Zeitverschwendung ist. Dies ist oft eine berechtigte Kritik. Auf der anderen Seite verwenden Autos keine Holzrollen, und einige Arten von Rädern müssen viele Male neu erfunden werden, bevor Sie sie richtig machen. Auf der dritten Seite tendieren Menschen, die das Rad neu erfinden, dazu, das moralische Äquivalent eines Trapezes mit versetzter Achse zu finden.

Es kann also sinnvoll sein, das Rad neu zu erfinden, aber achten Sie darauf, dass Sie sich vorher oder nachher die Lösungen anderer ansehen.

Hans-Peter Störr
quelle
0

Antwort A: Das Rad neu erfinden. Es vertieft Ihr Verständnis von Datenstrukturen und Algorithmen und erhöht die Wahrscheinlichkeit, dass Sie gute Sachen schreiben. Ich bin sicher, als Guido van Rossum mit Python anfing, wurde ihm gesagt, er solle das Rad nicht neu erfinden. Es gab bereits viele Sprachen. Warum Google schreiben, wenn es schon Yahoo! Wie wäre es mit Klirren? Lerne alles. Sei ein Riese. Lassen Sie sich nicht von den kleinen Leuten einschränken. Antwort B: Wenn ein Lehrer Ihnen sagt, was zu tun ist, geben Sie ihm, was er will, oder nur ein bisschen mehr, auch wenn es albern erscheint. Wenn du AUCH verrückt werden willst, mache eine erstaunliche Lösung und gib ihm einen Link dazu. Erfüllen Sie jedoch zunächst die gestellten Anforderungen, damit er zufrieden ist.

phorgan1
quelle
-1

Wenn Sie Student sind und daher keine festgelegte Frist für Ihr Projekt haben, ist es besser, "das Rad neu zu erfinden". Wenn Sie jetzt nur programmieren, um zu lernen, wie man programmiert, und nicht, um Geld zu verdienen, warum sollten Sie Verknüpfungen verwenden, die Ihnen beim Lernen nicht helfen? Warum nicht auf die harte Tour? Aber wenn Sie ein arbeitender Programmierer werden, werden die Leute skeptisch sein, wenn Sie nicht wissen, wie man Frameworks oder Bibliotheken verwendet ...

Billjk
quelle
10
Ich weiß nicht, welche Schule Sie besucht haben, aber wo ich hingegangen bin, waren die Fristen für den Einsatz an der Tagesordnung.
ein CVn
-2

Mach, was die Aufgabe / Frage / Prüfung von dir verlangt.

Vor Jahren war ich TA für einen C-Programmierkurs. Eine Prüfungsfrage lautete: 'Programm zum Kopieren einer Datei schreiben'. Mehrere Schüler stellten dieselbe Art von Frage: Können sie einen Prozess erzeugen und den OS-Befehl cp ausführen?

Wir fragten sie zurück: "Kopiert Ihr Programm die Datei?"

Die Prüfungsfrage forderte sie auf, Code zu schreiben, um eine Datei zu kopieren. Wenn die Antwort keinen C-Code hatte, der die Datei kopierte (z. B. Eingabe öffnen, Ausgabe öffnen, eine Schleife zum Lesen / Schreiben von Bytes, Eingabe schließen, Ausgabe schließen), wurde die Datei nicht kopiert.

Wenn der Lehrer sagt, dass Sie ein Framework oder eine Bibliothek verwenden sollen (z. B. eine Grafikklasse fordert Sie möglicherweise auf, eine 3D-Bibliothek zu verwenden), verwenden Sie das, was Sie verwenden sollen. Erfinden Sie nicht Ihre eigenen oder verwenden Sie eine andere. Alles andere erschwert es dem Lehrer, Ihre Arbeit zu benoten.

In einem Vorstellungsgespräch helfen Ihnen Kenntnisse über gängige Frameworks bei der Beantwortung von Fragen. Erstellen Sie Ihre eigenen Projekte, um zu lernen. Viel Glück beim Lernen.

jqa
quelle
Ja, aber wenn sie cpihr Programm erzeugen würden, würden sie die Datei tatsächlich kopieren.
Marcin