Dette er grunden til, at din read-eval-print-loop er så fantastisk

En af de ting, der gør teknologisamfundet så specielt, er at vi altid leder efter måder at arbejde mere effektivt på. Alle har deres yndlingssæt med værktøjer, der får dem til at køre bedre. Som en professionel brugergrænsefladeudvikler blev Chrome DevTools og Node.js read-eval-print-loop (REPL) mine favoritværktøjer tidligt. Jeg bemærkede, at de gjorde det muligt for mig at arbejde mere effektivt og tillod mig at lære nye ting hurtigere.

Dette gjorde mig faktisk nysgerrig efter at undersøge, hvorfor dette værktøj er så nyttigt. Jeg kunne let finde masser af blogindlæg, der forklarede, hvad REPL'er er, og hvordan man bruger dem, for eksempel her eller her. Men dette indlæg her er dedikeret til hvorfor (som i hvorfor er REPLs et så godt værktøj for udviklere).

"Den førende årsag til, at skoler flytter væk fra Java som undervisningssprog, er de høje barer til Hello-world-programmer." - Stuart Halloway

Hvad er en REPL?

REPL står for read-evaluere-print-loop, og dette er stort set alt, hvad der er til det.

Din applikations runtime er i en bestemt tilstand, og REPL hjælper dig med at interagere med den. REPL læser og evaluerer kommandoerne og udskriver resultatet og går derefter tilbage til starten for at læse dit næste input. Det vurderer skridt kan ændre dit runtime. Denne proces kan ses som et interview med din ansøgning for at forespørge om den aktuelle tilstand.

Med andre ord gør REPL din runtime mere håndgribelig og giver dig mulighed for at teste hypoteser om det.

Ifølge Stuart Halloway er fraværet af en REPL i Java den mest betydningsfulde grund til, at skoler begyndte at flytte til andre sprog for at undervise i programmering. Nogle mennesker bruger endda REPL til at skrive bedre enhedstests.

Bruger jeg allerede et REPL (-lignende værktøj) i dag?

Denne grundlæggende forklaring kan have mindet dig om nogle værktøjer, som du bruger hver dag. Hvis du kender og bruger et af følgende værktøjer, er svaret “ja”:

  • Dev-værktøjerne i din browser (som Chrome DevTools)
  • Din terminal / skal
  • Jupyter Notebooks
  • REPL-processen i Clojure
  • Repl.it, jsfiddle.net eller jsbin.com
  • Online regex-validatorer

Hvorfor er REPL så hjælpsom?

Dette spørgsmål holdt mig oppe om natten, fordi jeg ikke forstod, hvad der i første omgang gør os ineffektive. Jeg begyndte at undersøge nogle almindelige psykologiske effekter og forsøgte at knytte dem til mine daglige interaktioner med REPL. Her er mine top tre hypoteser:

At være i strømmen

Flow er den mentale driftstilstand, hvor en person, der udfører en aktivitet, er fuldt nedsænket i en følelse af energisk fokus, fuld involvering og nydelse i aktivitetsprocessen. (kilde)

Jeg tror, ​​at vi alle er fortrolige med denne tilstand, det gør os ekstremt produktive, og tiden flyver grundlæggende. Desværre er det ret nemt at "miste" strømmen, for eksempel når du bliver afbrudt, eller når du skal vente i en periode. Jeg lærte, at dette kan ske meget hurtigt: Forskere fandt ud af, at et sekund handler om grænsen for, at brugerens tankegang forbliver uafbrudt.

REPL behøver ikke at kompilere eller implementere din kode. Dette fører til en meget kort responstid (<100 ms). Således er du i stand til at teste dine hypoteser uden at miste strømmen.

Positiv forstærkning

Positiv forstærkning indebærer tilføjelse af en forstærkende stimulus efter en adfærd, der gør det mere sandsynligt, at adfærden vil forekomme igen. (kilde)

Dette er den effekt, der appellerer mest til mig. Din hjerne lærer at favorisere bestemte handlinger, når de blev belønnet tidligere. Denne belønning kan være en bonus fra din chef efter en udestående måned eller et simpelt "Fantastisk job!" fra din skiinstruktør.

Hver gang dit REPL-eksperiment lykkes, og du løste et puslespil / problem, føles din hjerne også belønnet! Dette finder også sted, når du kode i en fælles IDE. Men REPL reagerer hurtigere og giver dig mulighed for at gentage oftere. Så flere eksperimenter fører til mere forstærkning. Denne effekt får dig til at bruge REPL oftere og holder øje med bolden (i stedet for at distrahere dig selv ved at kontrollere e-mails).

Digital hukommelsestab

Tendensen til at glemme oplysninger, der let kan findes online ved hjælp af internetsøgemaskiner. (kilde)

Jeg må indrømme, at jeg ofte blander Java, Python og JavaScript-syntaks, fordi disse oplysninger kan findes overalt på internettet. Jeg vil spørge mig selv "Skal jeg bruge add () , append () eller push () for at tilføje et nyt element til en matrix i JavaScript?". Således er et eksempel på denne effekt for mig at huske metodenavne på API og sprogreferencer.

I REPL kan jeg straks se de tilgængelige funktioner med autofuldførelse:

Det store er, at dette fungerer ud over standardobjekterne i programmeringssprog. Dette fungerer for alle rammer og moduler , hvilket gør REPL mere mægtig end din IDE! Det er ikke længere nødvendigt at sammenligne versionsnumrene på moduler og API-referencer:

”Sandheden kan kun findes ét sted: koden.” - Robert C. Martin, Clean Code

Jeg håber, at denne artikel hjalp dig med at forstå, hvordan din hjerne fungerer, og hvordan REPL kan hjælpe dig med at blive mere produktiv.

Jeg er nysgerrig efter at se, om du er enig med mine hypoteser, eller om du kender flere værktøjer til at være en mere effektiv udvikler.

Opdatering 13-02-2019:

Jeg har også skrevet et blogindlæg om brugen af ​​REPL'er i Cloud Foundry Miljøer.

Tjek denne video af DJ Adams, hvis du gerne vil se REPL i aktion :)