Sollten Neulinge IDE Autocomplete (Intellisense) verwenden? [geschlossen]

35

Ich stoße oft darauf, wenn ich jemandem helfe, der zum ersten Mal mit Programmieren und Lernen vertraut ist. Ich spreche von wirklich neuen Neulingen, lerne immer noch über OOness, konstruiere Objekte, Methodenaufrufe und ähnliches. Normalerweise haben sie die Tastatur und ich biete nur eine Anleitung an.

Auf der einen Seite hilft die Autocomplete-Funktion der IDEs dabei, ihnen das Feedback zu geben, dass sie es richtig machen und dass sie es schnell mögen und sich darauf verlassen können.

Andererseits befürchte ich, dass die frühe Abhängigkeit von der automatischen Vervollständigung der IDE dazu führen könnte, dass sie die Konzepte nicht wirklich verstehen oder funktionieren, wenn sie eines Tages nur mit einem einfachen Editor arbeiten.

Kann jemand mit mehr Erfahrung diesbezüglich bitte seine Meinung teilen? Was ist besser für einen Neuling, Autocomplete oder manuelle Eingabe?

Aktualisieren

Vielen Dank für die Eingabe an alle!

Viele Antworten scheinen sich auf die Hauptanwendung von Autocomplete zu konzentrieren, wie das Vervollständigen von Methoden, das Bereitstellen von Methodensuchen und Dokumentation usw. Aber heutzutage tun IDEs viel mehr wie.

  • Wenn Sie ein Objekt vom Typ List erstellen, wird eine IDE auf der rechten Seite automatisch in die neue ArrayList vervollständigt. Es ist einem Neuling vielleicht nicht sofort klar, warum es keine neue Liste sein kann, aber hey, es funktioniert, also machen sie weiter.
  • Füllen von Methodenparametern basierend auf lokalen Variablen im Kontext.
  • Durchführen von Objektcasts
  • Automatisch 'import' oder 'using' Anweisungen hinzufügen

und vieles mehr. Das sind die Dinge, die ich meine. Denken Sie daran, ich spreche von Leuten, die gerade mit der Programmierung 101 beginnen. Ich habe der IDE zugesehen, wie sie diese Dinge tut, von denen sie keine Ahnung haben, aber sie machen einfach weiter.

Man könnte argumentieren, dass es ihnen hilft, sich auf den Programmfluss zu konzentrieren und den Überblick zu behalten, bevor sie die Nuancen der Sprache vertiefen und verstehen, aber ich bin mir nicht sicher.

Kodierungsbenutzer
quelle
1
Ich denke, dies fällt unter eine allgemeine Vorschrift: Verwenden Sie ein Werkzeug. Sei nicht faul genug, es blind zu benutzen.
Alex Feinman
Ich denke, sie sollten "den Standard- Texteditor" verwenden ... gnu.org/fun/jokes/ed.msg
JoelFan
Ich habe in einem Blog-Beitrag zusammengefasst, was ich hier gelernt habe: codinguser.com/2011/01/abstraction-is-good-magic-is-bad
codinguser

Antworten:

11

Ich denke, die Nutzung der IDE hilft beim Lernprozess. Methoden, Eigenschaften, Parameter, Überladungen und dergleichen sind auffindbar. Durch die überwältigend großen Bibliotheken hilft Intellisense dabei, das JIT-Wissen zu erweitern. In der heutigen Codierungsumgebung ist es unmöglich, alles von vornherein zu lernen, und JIT-Lernen ist oft die einzige praktische Möglichkeit, um schnell produktiv zu werden.

Ich verstehe, dass die Verwendung einer IDE eine Krücke sein kann, wenn Sie sie blind verwenden, aber ich denke, dass die Vorteile die negativen bei weitem überwiegen.

Das Verwenden von Vorlagen, ohne zu verstehen, was für Sie vorkonfiguriert wurde, ist hingegen ein größeres Problem. Ich denke, dass diese als Lernwerkzeug verwendet werden können, wenn sich der Entwickler die Zeit nimmt, den Vorlagencode durchzulesen. Aber die meisten Leute kümmern sich nicht darum. Es könnte jedoch ein großartiges Lernwerkzeug sein.

Mark Freedman
quelle
JIT? Meinen Sie nicht die .NET FCL? =) Ja, da stimme ich zu ... Im Laufe der Jahre hat sich Intellisense für mich als Lernwerkzeug erwiesen. Ich habe damit über Tonnen neuerer Klassen, Methoden und Eigenschaften gelernt.
Gideon
1
Ich meinte JIT-Lernen - nicht JIT-Kompilierung;) Es gibt so viel zu lernen, dass der Versuch, alles von vornherein zu lernen, unrealistisch ist. Solange Sie die Konzepte verstehen, können Sie die Implementierungsspezifikationen "just in time" lernen.
Mark Freedman
75

Das Verstehen der Konzepte und das Auswendiglernen von Dutzenden von Hunderten von blöden Bibliotheksklassen und -methoden sind zwei völlig verschiedene Dinge. Intellisense hilft Ihnen dabei, all das nutzlose Wissen vollständig aus Ihrem Kopf zu verbannen. Je früher Sie es tun, desto besser. Lassen Sie mehr Platz für nützliche Konzepte und verschwenden Sie nicht Ihre begrenzten Ressourcen mit APIs.

Um einen aktualisierten Teil einer Frage zu beantworten: Kleine Syntaxdetails, Dateilayout, Compiler- und Linker-Aufruf sind im Vergleich zu den generischen Programmierkonzepten ebenfalls unwichtig. Wenn sie erst einmal verstanden sind, kann ein Neuling, der es nicht mehr kennt, ein tieferes Verständnis dafür entwickeln, wie das Low-Level-Zeug tatsächlich funktioniert. Es ist besser, dies zu tun, wenn Sie die Grundlagen bereits kennen. Andernfalls werden Sie wahrscheinlich eine Reihe gefährlicher magischer Aberglauben bemerken.

Zum Beispiel kann DrScheme IDE eine hervorragende Erfolgsgeschichte im Programmierunterricht vorweisen, und sein Erfolg beruht hauptsächlich auf seiner Fähigkeit, sich auf das zu konzentrieren, was wirklich wichtig ist.

SK-Logik
quelle
30
+1. Ich hatte damals tatsächlich Interviews, in denen sie mich baten, die Liste der Parameter für eine Win32-API-Funktion zu zitieren. Ich könnte nie verstehen, welche Relevanz dieses Wissen haben könnte.
4
@codinguser: und das ist auch kein problem. Ich kann mich oft nicht einmal an die Syntax einer Sprache erinnern, die ich gerade verwende (auch wenn ich sie selbst entworfen habe). Es gibt viel wichtigere Dinge, an die Sie sich erinnern müssen, als Anweisungen zu importieren oder ein Get- / Setter-Paar zu schreiben. Und IDEs erledigen nützlichere Aufgaben, z. B. das Anzeigen von Typen in QuickInfos.
SK-logic
4
@Josh K, hast du jemals das Wort "Abstraktion" gehört? Wissen Sie, warum es unterschiedliche Abstraktionsebenen gibt? Es ist dumm und kontraproduktiv, auf etwas zu achten, das unter dem Abstraktionsgrad Ihrer aktuellen Problemdomäne liegt. Und diese destruktive Angewohnheit zu Beginn einer Karriere wieder aufzunehmen, ist eine Katastrophe. Es dauerte mehr als zehn Jahre, bis ich mich teilweise erholt hatte.
SK-logic
3
@ Josh K, bestehen Sie darauf, zu verstehen, was bis hinunter zu Syscalls und weiter vor sich geht? In diesem Verständnis liegt kein Mehrwert. Natürlich muss ein guter Programmierer in der Lage sein, auf allen Ebenen einschließlich der Maschinencodes zu arbeiten, aber ein guter Programmierer sollte auch in der Lage sein, sich vollständig von irrelevanten Dingen zu trennen.
SK-logic
3
@ SK-logic: Ich bin damit einverstanden, und Importe und Funktionsaufrufe , die Sie direkt verwenden, sind nichts, von dem Sie abstrahieren können.
Josh K
16

Die Verwendung von Autocomplete ist überhaupt keine schlechte Sache.

Es ist einfach aus Gründen der Geschwindigkeit und für mich ein Zeichen dafür, dass jemand anfängt, die IDE in den Griff zu bekommen und sie gut zu nutzen.

Ich verstehe nicht, wie es ihnen helfen würde, OO zu lernen, wenn sie es NICHT benutzen.

ozz
quelle
1
Ich bin alles für Autocomplete, wenn Sie die Grundlagen beherrschen. Geschwindigkeit ist gut, wenn Sie wissen, was Sie beschleunigen. Aber wenn eine IDE einen Parameter basierend auf einer lokalen Variablen desselben Typs automatisch füllt oder eine Importanweisung hinzufügt, funktioniert dies einfach und einige Neulinge verstehen es nicht wirklich.
Kodierungsbenutzer
Ich habe Ihre Bearbeitung gelesen, aber ich würde gerne denken, dass die Noobs, die wir einstellen, kluge Leute sind, die sich ansehen, was ausgefüllt ist, sie befragen und verstehen. Ob das in der Praxis passiert, ist natürlich eine andere Frage.
ozz
13

Nachdem ich Studenten unterrichtet und unterrichtet habe, die neu in der Programmierung sind, stelle ich fest, dass Autocomplete / Intellisense manchmal mehr Schaden als Nutzen verursacht. Ja, sie können damit ein Programm schreiben. Ja, es kompiliert und läuft und könnte sogar das tun, wozu wir sie aufgefordert haben. Aber sie verstehen nicht, was sie tun.

Wenn sie nicht verstehen, was passiert, wird es weniger Programmieren und mehr eine Lösung zusammen hacken, um Noten zu bekommen. Ich stellte fest, dass das bei Schülern häufig vorkam, als das, was wir von ihnen verlangten, schwieriger wurde. Sie hackten einfach, bis etwas funktionierte. Dies wurde immer dann deutlich, wenn es zur Halbzeit kam und die Schüler aufgefordert wurden, einfache Methoden von Hand zu schreiben ... sie konnten es nicht.

Ja, Autocomplete / Intellisense hilft uns (professionellen Entwicklern) sehr, da es uns beschleunigt. Wir müssen nicht alle verschiedenen Methoden und Parameterlisten auswendig lernen, können aber gleichzeitig eine Vermutung anstellen, welche Parameter eine Methode annehmen wird, da wir die Erfahrung mit der Programmierung haben.

Neulinge nicht. Sie warten darauf, dass ihre IDE eine Liste von Methoden aufruft. Sie scrollen durch diese Liste, bis sie eine gefunden haben, die möglicherweise ihren Anforderungen entspricht. Sie sehen sich die erforderlichen Parameter an und prüfen, ob sie übergeben werden müssen. ..und am Ende haben sie etwas zusammen gehackt, das sie einreichen können.

Und am Ende des Kurses, wenn sie ihren Pass bekamen, verließen sie ihre Programmierklasse mit einem flachen Sieg. Viele würden nie wieder eine CS-Klasse belegen, weil sie nichts verstanden, was sie taten oder warum sie taten es.

Tyanna
quelle
2
Ich werde zynisch sein und sagen, dass es in CS immer solche Studenten gegeben hat. Wenn sie lernen möchten, hilft ihnen Intellisense dabei, Dinge schneller zu erledigen, anstatt Zeit damit zu verbringen, jeden Funktionsnamen in Google oder einem Buch
nachzuschlagen
4
@ Mark, ich stimme zu. Ich schätze, ich habe meine Antwort zu weit gefasst, was bedeutet, dass alle Schüler anwesend sind. Aber ich sage dies, nachdem ich die Anzahl der Schüler, die nicht verstanden haben, in der Entwicklungsumgebung des Kurses eingeführt und IDE mit Autocomplete ausgeführt habe, sowie die Anzahl der Fehler auf der ersten Halbzeit. Die Anzahl der Fragen, die ich erhielt, verringerte sich um ein Vielfaches, aber ich erfuhr, dass es sich bei den b / c-Studenten nicht um Studenten handelte, die ein besseres Verständnis hatten.
Tyanna
students were asked to write simple methods by hand...they couldn't.Es kommt darauf an, was Sie versuchen, ihnen beizubringen. Allgemeine Programmierkonzepte oder sprachspezifische Syntax?
Lebkuchenjunge
9

Das Problem mit IDEs und Entwicklungsumgebungen im Allgemeinen ist weniger die automatische Vervollständigung als die Verwendung von Vorlagenlösungen (file | new | project), bei denen viele "interessante" Dinge bereits für Sie erledigt wurden und in unterschiedlichem Maße verborgen sind .

Für jemanden, der im Großen und Ganzen versteht, was unter der Motorhaube vor sich geht, ist dies hilfreich - aber für jemanden, der lernt, was er braucht, ist es weniger.

Es ist auch die Frage der Zeit, die benötigt wird, um eine schwergewichtige IDE zu starten ...

Ich denke daher, dass die Verwendung von etwas Leichterem und die Möglichkeit, Anwendungen auszuführen, in denen Sie jede Codezeile selbst geschrieben haben, erhebliche Vorteile hat - insbesondere, wenn Sie einen Texteditor und einen Compiler verwenden, um den wichtigen Punkt zu demonstrieren, den Sie nicht benötigen IDE usw. zum Schreiben von Software, aber das bedeutet nicht, dass ich einen Texteditor für lange Zeit verwenden möchte und dass dies Probleme beim Debuggen mit sich bringt - Sie möchten in der Lage sein, Haltepunkte zu setzen, und Sie möchten in der Lage sein, Code in einem Schritt durchzuarbeiten Dadurch wird es einfacher zu verstehen, was los ist.

Natürlich können wir das Problem weiter verwirren, indem wir Dinge wie Python betrachten, in denen Sie eine "Live" -Befehlszeile haben ...

Gute Frage, keine gute Antwort - außer, dass Sie einen Fortschritt machen und mit einem Texteditor und einem Compiler (oder einem Befehlszeileninterpreter) beginnen möchten, um sich auf die Grundlagen von Syntax und Logik zu konzentrieren, bevor Sie zu weiteren Schritten übergehen komplexe Dinge, die mit einer leistungsfähigeren Entwicklungsumgebung einfacher zu erledigen sind.

Murph
quelle
2
Ehrlich gesagt sehe ich die Zeit, die zum Starten der IDE benötigt wird, als vernachlässigbar an. Ich verbringe Dutzende von Stunden damit, meine IDE zu verwenden, nachdem ich sie gestartet habe. Dies spart sicherlich mehr als die zusätzlichen 30-45 Sekunden Zeit, die erforderlich sind, um in dieser Zeitspanne allein mit der Code-Vervollständigung zu beginnen.
EricBoersma
@Eric - in deinem Kontext? Ja, zu 100%. Im Rahmen der Frage also komplette Anfänger? Ich vermute, dass die IDE für kürzere Sitzungen öfter geöffnet und geschlossen wird, und im Allgemeinen ist alles, was im Weg steht, eine Entmutigung.
Murph
In Bezug auf ORMs sollte es Anfängern von Datenbanken nicht gestattet sein, sie zu verwenden, da sie nicht genug über die Datenbankentwicklung wissen, um sie gut zu verwenden. Tolle Tools für Leute, die wissen, was sie tun, Katastrophen für den Neuling.
HLGEM
@HLGEM Ich wollte vorschlagen, dass es ein bisschen komplizierter ist als das ... aber ich glaube nicht, dass ich überhaupt noch dazu befähigt bin, Anfänger und Datenbanken zu kommentieren Neue Sprachen und Frameworks lernen Ich denke, ich kann das IDE-Problem kommentieren - Ich habe bestimmte Erinnerungen daran, dass frühe Probleme mit .NET und Visual Studio zu viel
bewirken.
4

Das Lernen auf die harte Tour bleibt in der Regel bei Ihnen.

Verwenden Sie als Neuling bitte KEINE IDE. Nutze die Kommandozeile, lerne aus deinen Fehlern. Dies würde Ihnen auch helfen, die Compiler- und Linker-Optionen besser zu verstehen.

Wann verwenden Sie IDE? Wenn Sie etwas Großes entwerfen oder an einer großen Codebasis mit vielen Klassen, Methoden und Variablen arbeiten.

Fanatic23
quelle
7
Was bringt es, Compiler- und Linker-Optionen zu verstehen, wenn Sie noch nicht wissen, was ein Compiler ist? Es endet normalerweise in einem Durcheinander. Ich habe mehr als ein Jahrzehnt damit verbracht, mein eigenes Durcheinander zu beseitigen, das durch eine zu tiefe und zu niedrige Belichtung am Anfang entstanden ist (MACRO32, Fortran, DCL ...).
SK-logic
2
Einverstanden. Es ist nicht sinnvoll, Assembler zu lernen, bevor Sie beispielsweise Python oder C # lernen - es frustriert Sie nur mehr. Im Allgemeinen lernt man Konzepte auf hoher Ebene und filtert dann nach Konzepten auf niedrigerer Ebene oder nach anderen pingeligen Dingen.
26.
4

Ich würde als erster sagen, dass IDEs ein Segen für die Produktivität sind, auch wenn ich mich oft über ihre Macken beschwere. Ich lernte jedoch BASIC, C, C ++, Java, Python, Perl, PHP und mehrere andere Sprachen, ohne mehr als einen Texthervorhebungs-Editor und den Compiler / Interpreter für die Sprache. Ich habe tatsächlich Java in Notepad gelernt!

Das Erlernen einer IDE bedeutet "Magie" - die Idee, dass "es funktioniert, egal wie". Abstraktion ist gut; Magie ist schlecht. Ein Programmierer sollte wissen oder herausfinden können, was in einem Projekt vor sich geht. Eine gute IDE ist so konzipiert, dass sie sich um die Buchhaltung kümmert und nicht das Projekt kontrolliert. Bei richtiger Anwendung ist es ein großartiges Werkzeug. Aber welcher Handwerker verwendet zunächst einen CNC-Fräser?

Ich denke, dass die Art und Weise, wie ich gelernt habe (alles eingeben zu müssen und den Compiler gut zu kennen, um ein Projekt zu erstellen), mir unermesslich geholfen hat, als ich endlich anfing, IDEs zu verwenden. Ein Java-Projekt ist beispielsweise kein kleiner Ordner in einem Eclipse-Projekt, sondern eine Sammlung von Klassen in einer Paketstruktur mit einigen XML-Dateien für Pfade, Konfiguration und Bereitstellung. Ich möchte keine große Unternehmensanwendung ohne eine IDE erstellen, aber ich kann kleine erstellen. Das macht es einfacher, die Struktur großer zu verstehen, und wenn ich ein bestimmtes Verhalten im Build haben möchte, weiß ich beispielsweise, wie Javac funktioniert, damit ich die eigentliche Build-Eingabeaufforderung optimieren kann, anstatt zu versuchen, diese magische Kombination zu finden, die nicht funktioniert. In der Build-Konfiguration nicht vorhanden. Ich glaube auch, dass ich die Fehlermeldungen besser verstehe und weiß, wie man sie findet und behebt.

Ich würde nicht unterrichten, eine IDE zu verwenden. Ich denke, dass die ersten Projekte so klein sind, dass die Argumente für das Management der Komplexität umstritten sind. Wenn Sie beispielsweise Java unterrichten, können Sie alle Ihre Klassen in denselben Ordner und einfügen javac *.java. Sie brauchen dafür keine IDE! Dies spricht dafür, Projekte klein zu halten, nicht viel mehr als Proof-of-Concepts. Minimieren Sie den Aufwand und konzentrieren Sie sich darauf, das Konzept zu vermitteln, das die Schüler benötigen. Größere Projekte, in denen eine IDE nützlich wäre, gehören entweder zu fortgeschritteneren SE-Klassen oder zu speziellen Projekten.

Was die Suche nach Klassen und die API-Forschung angeht, so halte ich dies auch für umstritten, wenn die Projekte klein gehalten werden. Auch in Java ist Javadoc sehr einfach zu lesen. Es kann sowieso niemand die gesamte API im Kopf behalten, und es wird eine Zeit geben, in der Sie nach einer API suchen müssen, ohne die Vorteile einer IDE zu nutzen. Zum Beispiel in anderen Sprachen oder beim Remotezugriff auf einen Server, auf dem Sie die IDE nicht öffnen können. Lehren Sie, wie Sie Dokumentation finden, nicht "drücken". und Sie können sehen, was die Methoden eines Objekts sind. "

Jeder Programmierer kann eine IDE erlernen, aber wenn Sie eine IDE kennen, sind Sie kein guter Programmierer. Abgesehen von schwarzem Humor ist "Magie" für einen Programmierer niemals ein gutes Wort.

Michael K
quelle
Gelernt mit Texthervorhebung… glücklicher Punk. Einige von uns haben nur eine Liste von Schlüsselwörtern und eine Eingabeaufforderung.
Matthew Whited
@ Matthew: Java Ich habe mit dem Notizblock angefangen ... :)
Michael K
LOL ... Ich habe mit einem Apple IIc mit Applesoft BASIC begonnen, das in das ROM eingebaut wurde. : o)
Matthew Whited
Wow, ich habe das Glück, QBasic zu haben!
Michael K
4

Vielleicht sollte ein Neuling einfach zuerst an einfacheren Problemen arbeiten. Und nein, diese Probleme sollten nicht die Verwendung einer IDE erfordern oder fördern, um die Aufgabe abzuschließen. Durch das Verständnis der Grundkonzepte kann langfristig mehr erreicht werden. Die Werkzeuge sollten danach kommen.

Kein Holzhandwerker würde direkt auf einen Hochleistungshobel umsteigen, ohne zuerst die Feinheiten sowohl der Holzart als auch der Handhobel zu verstehen.

(Hinweis: Autocomplete und Intellisense sind zwei drastisch verschiedene Dinge).

Intellisense an sich ist nicht schlecht. Es ist nur schlecht, wenn eine Krücke verwendet wird, um die Funktionalität zu erraten, ohne die zugrunde liegende Dokumentation oder Implementierung zu lesen oder zu verstehen.

Nebeneffekt: Wenn für die Sprache eine IDE zum Codieren erforderlich ist, befindet sich die Sprache möglicherweise auf der falschen Abstraktionsebene für die Probleme, die Sie lösen möchten.

Ryan McGeary
quelle
2
+1 für den Seitenpunkt. Ich bin ein Fan des Lernens mehrerer Sprachen, sodass Sie wissen, wenn eine Sprache nicht für eine Aufgabe geeignet ist.
Michael K
3

Wenn wir als Kind aufwachsen, wird uns nicht gesagt, dass wir die komplizierten Regeln der englischen Sprache verstehen müssen, bevor wir sprechen können. Uns wird nicht gesagt, dass wir die richtige Verwendung von Präpositionen, Konjunktionen und das Vermeiden von Satzfragmenten verstehen müssen. Wir lernen dadurch. Wir lernen durch Erfolg und Misserfolg.

Eine IDE mit automatischer Vervollständigung hilft dem neuen Programmierer, Vertrauen zu gewinnen, indem sie die Erstellung von Programmen erleichtert, ohne sich an jede unzählige Funktion einer Vielzahl von Bibliotheken zu erinnern.

Wenn man wirklich die Ansicht extrapolieren würde, dass Autocomplete dem neuen Programmierer schadet, weil es ihm zu leicht fällt, dann könnte man argumentieren, dass Nachschlagewerke beim Programmieren nicht verwendet werden sollten , weil die darin enthaltenen Konzepte zuerst dem Speicher zugewiesen werden sollten. Wenn sie nicht auswendig gelernt werden, werden sie langsamer und es ist ihnen nicht möglich, die Konzepte zuerst vollständig zu verstehen.

Autocomplete ist ein Tool, mit dem der Programmierer produktiver wird. So wie wir zum ersten Mal eine Sprache lernen, arbeiten wir, nachdem wir Vertrauen und Erfolg mit dem, was wir lernen, gewonnen haben, daran, unser Wissen zu verbessern.

Rechnung
quelle
Dies ist ein hervorragendes Argument für die Verwendung von IDEs. Das scheint sich jedoch in CS aufzulösen, weil es (für mich) so aussieht, als ob viele nicht über das reine Sprechenlernen hinausgehen. Dazu müsste der Lehrplan überarbeitet werden, um die Dinge, die eine IDE verbirgt, explizit zu lehren.
Michael K
2

Am Anfang ist es schwierig genug, etwas zu bauen, das funktioniert, also alles, was der Marke hilft, besser zu werden. Ein neuer Programmierer braucht jemanden, der älter ist, damit er darüber nachdenkt, ob Array-gebundene Listen oder verknüpfte Listen besser zu dem vorliegenden Problem passen. Sie haben jeweils ihre Stärken und Schwächen.

Unabhängig davon, ob der Neuling eine IDE hat oder die API-Dokumente online durchsucht, wird es keinen wirklichen Unterschied zwischen dem Code geben, den er erstellt. Obwohl der Umgang mit dem Schmerz des Schreibens von Syntaxfehlern eine Lernerfahrung sein kann, gibt es zu viel zu lernen, um sich gleich zu Beginn darüber Gedanken zu machen.

Man lernt das Seiltanzen nicht, indem man ohne Netz direkt zum Hochseil geht. Sie beginnen mit einem Seil, das nur wenige Zentimeter über dem Boden liegt. Ich wage zu behaupten, dass die meisten von uns mit einer IDE und einer Art Build-Skript arbeiten (das Build-Skript von Visual Studio wird von der IDE erstellt, ist aber vorhanden). Die meisten von uns erstellen ihre Klassen nicht von Hand mit einem Texteditor und rufen den Compiler dann von Hand auf. Warum sollten wir das einem Neuling aufzwingen, der viel mehr zu lernen hat?

Berin Loritsch
quelle
2

Ich sehe keinen Grund, den Schmerz der vorhergehenden Werkzeuge zu ertragen, selbst wenn ein Entwickler lernt. Ich bin der Meinung, dass die zusätzliche Zeit und Mühe, die zum Schreiben des Codes ohne die Tools erforderlich wäre, besser wäre, wenn man lernen würde, wie man Komponententests schreibt und Fehler behebt. Sobald ein Benutzer weiß, wie er seinen Code testet und wie er ausgeführt wird, erfährt er viel darüber, was er tatsächlich tut.

Außerdem bedeutet die Verwendung einer IDE nicht, dass der Code selbst geschrieben wird. Ein unfähiger oder Anfänger-Entwickler wird Code schreiben, der nicht funktioniert, unabhängig davon, ob er eine IDE verwendet oder nicht.

Ich sehe die IDE nur als eine weitere Abstraktionsebene beim Codieren. Wenn ich Java schreibe, muss ich im Allgemeinen nicht verstehen, wie der erzeugte Bytecode funktioniert. Wenn ein neuer Programmierer Java-Bibliotheken verwendet, muss er nicht wissen, in welchem ​​Paket er sich befindet, wenn die IDE dies automatisch für ihn hinzufügen kann. In beiden Fällen, wenn ein Fehler oder ein Problem auf der unteren Ebene auftreten kann (z. B. ein Konflikt mit dem Klassennamen), der einen Fehler verursacht, muss der Entwickler den Fehler manuell überprüfen.

Alb
quelle
0

Viele andere gute Antworten sehen dies nicht als vollständige Antwort an, aber sowohl für Anfänger als auch für erfahrene Benutzer ist es gut, ein vollständiges Bild davon zu erhalten, welche Funktionen ihnen zur Verfügung stehen.

In Delphi kann ich Strg + J drücken und sehe eine Liste aller möglichen Dinge, von denen ich syntaktisch erwarten kann, dass sie funktionieren.

Ich bin nicht unbedingt einverstanden, habe aber Argumente dafür gelesen, dass Programmierer nicht einmal private Klassenmitglieder von Objekten betrachten sollten, die sie verwenden, und auf diese Weise gibt die automatische Vervollständigung jedem Benutzer eine sofortige API-Referenz.

Mit neueren IDEs können Benutzer und Sprachentwickler Metadaten in ihre Intellisense einfügen, wodurch die Fähigkeit zum Lesen und Verstehen der Funktionen ohne Lesen der Quelle weiter verbessert wird (was ohnehin nicht erforderlich ist).

Vielleicht ist es für Neulinge am besten, tatsächlich alles zu lesen und zu verstehen, was sie implementieren. Aber vielleicht wäre es eine bessere Frage, ob Neulinge beliebige Namespaces oder Units einschließen oder importieren dürfen, ohne zu dokumentieren, warum sie sie einschließen.

Peter Turner
quelle
0

Nach meiner Erfahrung ist die Verwendung einer IDE zum Erlernen der Grundlagen von OO großartig, da hierdurch ein Teil der Komplexität des eigentlichen Codeschreibens verborgen wird und der neue Entwickler sich auf die Logik des Programms konzentrieren kann. Kurz nach dem Erlernen des Programmierens und der grundlegenden OO-Grundsätze musste ich durch einen Programmierkurs genauer verstehen, welche Teile in Quelldateien miteinander interagieren mussten (nicht zu vergessen: Importanweisungen, Instanziierung der richtigen Klassen usw.) wo wir terminal nur unix maschinen benutzen mussten.

Dies ist in der Schule möglich, weil jemand die Berechtigung hat, Sie zum Gebrauch von Lo-Fi-Werkzeugen zu zwingen. In einem Geschäfts- oder Unternehmensumfeld wäre dies viel schwieriger zu erreichen.

Bryan J Swift
quelle
0

Ich habe zwei Gedanken dazu. Das erste ist, dass man wissen muss, was wirklich vor sich geht, um wirklich etwas zu lernen. Und mit wie gut IntelliSense geworden ist, kann es einem neuen Entwickler etwas davon verbergen. Ich hatte zum Beispiel einen Web-Engineering-Kurs am College, in dem wir unsere eigenen Web-Frameworks erstellt haben, auf denen unsere endgültigen Apps aufbauen. Ich kam aus dieser Klasse mit der Fähigkeit heraus, mich an fast jedes Web-Framework anzupassen, weil ich von Anfang an wusste, was darunter lag. Die Verwendung einer IDE ist noch nicht ganz so weit fortgeschritten, aber ich glaube, der Punkt ist immer noch da.

Mit einer IDE können Sie jedoch auch APIs für neue Entwickler öffnen. Als ich anfing, ernsthaft zu programmieren, half mir die von mir verwendete IDE enorm, da ich Dinge wie das Eingeben eines Objekts tun, die automatische Vervollständigung verwenden würde, um zu sehen, über welche Methoden es verfügte, und sie dann mithilfe der verfügbaren Dokumente zu untersuchen. Dies geschah alles innerhalb der IDE und war ein großartiges Lernwerkzeug.

Also, ja, ich glaube, es ist in Ordnung, eine zu verwenden, solange Sie sich auch die Zeit nehmen, um zu verstehen, was los ist. Nur eine Objektbesetzung zu verwenden, ohne zu verstehen, warum Sie dazu gezwungen waren, ist wirklich schlecht, aber wenn ein neuer Entwickler sieht, dass Sie eine Objektbesetzung verwenden können, und dann sieht er, warum ich nichts Falsches sehe.

Corv1nus
quelle
0

Lernen braucht Übung. Das Programmieren kann eine sehr frustrierende Aufgabe sein, wenn Sie keine Ahnung haben, was Sie tun können oder wie die Dinge funktionieren.

Es ist beispielsweise unpraktisch, viele Bücher über Programmierprinzipien zu lesen, ohne eine einzige Codezeile zu schreiben. so lernt man nichts.

Intellisense ist sehr hilfreich, um neuen Programmierern die Hilfe zu geben, die sie benötigen, um weiter zu programmieren, weiter zu üben und somit zu lernen.

Wie bereits erwähnt, ist das Erlernen spezifischer APIs nicht dasselbe wie das Erlernen von Programmierprinzipien. Was zweifellos passieren wird, ist, dass die neuen Programmierer Fehler machen werden (unabhängig von Intellisense), und wie sie sich entscheiden, diese Fehler zu beheben, wird sie dazu führen, gute oder schlechte Programmierer zu werden.

Wenn Sie jemandem das Programmieren beibringen möchten, würde ich ihn dazu bringen, Intellisense zu verwenden und herumzuspielen, bis er feststeckt. Dann würde ich versuchen, eine Stiftung aufzubauen, indem ich ihnen beibringe, warum sie feststeckten.

Remus
quelle
0

IMO, die IDEs machen Sie produktiver. Aber für Anfänger ist es im Allgemeinen keine gute Idee, mit IDE zu programmieren. Texteditoren wie Notepad ++, Notepad etc. wären ausreichend.

Außerdem wird es im Allgemeinen nicht als eine gute Idee angesehen, mit dem Erlernen der Programmiersprache auf hohem Niveau zu beginnen. Ich empfehle Ihnen, mit der Assemblersprache zu beginnen. Dies wird Ihnen sowohl Grundlagen als auch Geduld beibringen.

NinjaCoder
quelle