Aus diesem Grund ist Ihre Read-Eval-Print-Schleife so erstaunlich

Eines der Dinge, die die Tech-Community so besonders machen, ist, dass wir immer nach Wegen suchen, effizienter zu arbeiten. Jeder hat seine Lieblingswerkzeuge, mit denen er besser läuft. Als professioneller UI-Entwickler wurden die Chrome DevTools und die Read-Eval-Print-Loop (REPL) von Node.j schon früh zu meinen Lieblingswerkzeugen. Ich bemerkte, dass sie es mir ermöglichten, effizienter zu arbeiten und neue Dinge schneller zu lernen.

Das hat mich wirklich neugierig gemacht zu untersuchen, warum dieses Tool so nützlich ist. Ich konnte leicht viele Blog-Beiträge finden, in denen erklärt wurde, was REPLs sind und wie man sie verwendet, zum Beispiel hier oder hier. Aber dieser Beitrag hier ist dem Warum gewidmet (wie in Warum sind REPLs ein so großartiges Tool für Entwickler).

„Der Hauptgrund, warum Schulen sich von Java als Unterrichtssprache entfernen, sind die hohen Balken für Hello-World-Programme.“ - Stuart Halloway

Was ist eine REPL?

REPL steht für Read-Evaluate-Print-Loop und das ist im Grunde alles, was dazu gehört.

Ihre Anwendungslaufzeit befindet sich in einem bestimmten Zustand und die REPL hilft Ihnen bei der Interaktion. Die REPL liest und wertet die Befehle aus und druckt das Ergebnis aus. Anschließend kehrt sie zum Start zurück, um Ihre nächste Eingabe zu lesen. Der Auswertungsschritt kann Ihre Laufzeit ändern. Dieser Vorgang kann als Interview mit Ihrer Anwendung angesehen werden, um den aktuellen Status abzufragen.

Mit anderen Worten, die REPL macht Ihre Laufzeit greifbarer und ermöglicht es Ihnen, Hypothesen darüber zu testen .

Laut Stuart Halloway ist das Fehlen einer REPL in Java der wichtigste Grund, warum Schulen begonnen haben, in andere Sprachen zu wechseln, um Programmieren zu unterrichten. Einige Leute verwenden die REPL sogar, um bessere Komponententests zu schreiben.

Benutze ich heute schon ein REPL (-ähnliches Tool)?

Diese grundlegende Erklärung hat Sie möglicherweise an einige Tools erinnert, die Sie jeden Tag verwenden. Wenn Sie eines der folgenden Tools kennen und verwenden, lautet die Antwort „Ja“:

  • Die Entwickler-Tools Ihres Browsers (wie Chrome DevTools)
  • Ihr Terminal / Shell
  • Jupyter-Notizbücher
  • Der REPL-Prozess in Clojure
  • Repl.it, jsfiddle.net oder jsbin.com
  • Online-Regex-Validatoren

Warum ist die REPL so hilfreich?

Diese Frage hat mich nachts wach gehalten, weil ich nicht verstanden habe, was uns überhaupt ineffizient macht. Ich begann einige häufige psychologische Effekte zu untersuchen und versuchte sie mit meinen täglichen Interaktionen mit der REPL zu verknüpfen. Hier sind meine drei wichtigsten Hypothesen:

Im Fluss sein

Flow ist der mentale Betriebszustand, in dem eine Person, die eine Aktivität ausführt, vollständig in ein Gefühl des energetisierten Fokus, der vollständigen Einbeziehung und des Genusses in den Prozess der Aktivität eingetaucht ist. (Quelle)

Ich denke, wir alle kennen diesen Zustand, er macht uns extrem produktiv und die Zeit vergeht im Grunde. Leider ist es ziemlich einfach, den Fluss zu "verlieren", zum Beispiel wenn Sie unterbrochen werden oder wenn Sie einige Zeit warten müssen. Ich habe gelernt, dass dies sehr schnell gehen kann: Forscher fanden heraus, dass eine Sekunde ungefähr die Grenze für den Gedankenfluss des Benutzers darstellt, um ununterbrochen zu bleiben.

Die REPL muss Ihren Code nicht kompilieren oder bereitstellen. Dies führt zu einer sehr kurzen Reaktionszeit (<100 ms). So können Sie Ihre Hypothesen testen, ohne den Fluss zu verlieren.

Positive Verstärkung

Positive Verstärkung beinhaltet das Hinzufügen eines verstärkenden Stimulus nach einem Verhalten, das es wahrscheinlicher macht, dass das Verhalten erneut auftritt. (Quelle)

Dies ist der Effekt, der mich am meisten anspricht. Ihr Gehirn lernt, bestimmte Handlungen zu bevorzugen, wenn sie in der Vergangenheit belohnt wurden. Diese Belohnung kann ein Bonus von Ihrem Chef nach einem herausragenden Monat oder ein einfacher „Großartiger Job!“ Sein. von Ihrem Skilehrer.

Jedes Mal, wenn Ihr REPL-Experiment erfolgreich ist und Sie ein Rätsel / Problem gelöst haben, fühlt sich auch Ihr Gehirn belohnt! Dies erfolgt auch, wenn Sie in einer gemeinsamen IDE codieren. Die REPL reagiert jedoch viel schneller und ermöglicht es Ihnen, häufiger zu iterieren. Mehr Experimente führen also zu mehr Verstärkung. Durch diesen Effekt verwenden Sie die REPL häufiger und behalten den Ball im Auge (anstatt sich durch das Abrufen von E-Mails abzulenken).

Digitale Amnesie

Die Tendenz, Informationen zu vergessen, die mithilfe von Internet-Suchmaschinen leicht online gefunden werden können. (Quelle)

Ich muss zugeben, ich mische oft Java-, Python- und JavaScript-Syntax, weil diese Informationen überall im Internet zu finden sind. Ich würde mich fragen: "Muss ich add () , append () oder push () verwenden , um einem Array in JavaScript ein neues Element hinzuzufügen?". Ein Beispiel für diesen Effekt ist für mich das Abrufen von Methodennamen von API- und Sprachreferenzen.

In der REPL kann ich die verfügbaren Funktionen sofort mit Autocomplete sehen:

Das Tolle ist, dass dies über die Standardobjekte von Programmiersprachen hinaus funktioniert. Dies funktioniert für alle Frameworks und Module , wodurch die REPL mächtiger ist als Ihre IDE! Die Versionsnummern von Modulen und API-Referenzen müssen nicht mehr verglichen werden:

„Die Wahrheit kann nur an einem Ort gefunden werden: dem Code.“ - Robert C. Martin, Clean Code

Ich hoffe, dieser Artikel hat Ihnen geholfen zu verstehen, wie Ihr Gehirn funktioniert und wie die REPL Ihnen helfen kann, produktiver zu sein.

Ich bin gespannt, ob Sie meinen Hypothesen zustimmen oder ob Sie mehr Tools kennen, um ein effizienterer Entwickler zu sein.

Update 13.02.2019:

Ich habe auch einen Blog-Beitrag über die Verwendung von REPLs in Cloud Foundry-Umgebungen geschrieben.

Schauen Sie sich dieses Video von DJ Adams an, wenn Sie die REPL in Aktion sehen möchten :)