Zbog toga je vaša petlja čitanja-ispisa-ispisa tako nevjerojatna

Jedna od stvari koja tehnološku zajednicu čini tako posebnom jest ta što uvijek tražimo načine za učinkovitiji rad. Svatko ima svoj omiljeni set alata koji ga čini boljim u radu. Kao profesionalni razvijač korisničkog sučelja, Chrome DevTools i Node.js read-eval-print-loop (REPL) rano su postali moji omiljeni alati. Primijetio sam da su mi omogućili učinkovitiji rad i brže naučili nove stvari.

To me zapravo zanimalo istražiti zašto je ovaj alat tako koristan. Lako bih mogao pronaći mnoštvo postova na blogu koji su objasnili što su REPL i kako ih koristiti, na primjer ovdje ili ovdje. Ali ovaj je post ovdje posvećen zašto (kao i zašto su REPLs tako sjajan alat za programere).

„Glavni razlog zbog kojeg se škole odmiču od Jave kao nastavnog jezika su visoke ljestvice programa Hello-world.“ - Stuart Halloway

Što je REPL?

REPL je kratica za čitanje-procjenu-ispisnu petlju i to je u osnovi sve što postoji.

Vrijeme izvođenja vaše aplikacije je u određenom stanju i REPL vam pomaže u interakciji s njom. REPL će pročitati i procijeniti naredbe i ispisati rezultat, a zatim se vratiti na početak kako bi pročitao vaš sljedeći unos. Korak procjene može promijeniti vaše vrijeme izvođenja. Taj se postupak može smatrati intervjuom s vašom prijavom radi ispitivanja trenutnog stanja.

Drugim riječima, REPL čini vaše vrijeme izvođenja opipljivijim i omogućuje vam testiranje hipoteza o njemu.

Prema Stuartu Hallowayu, odsutnost REPL-a na Javi najvažniji je razlog zašto su se škole počele prelaziti na druge jezike kako bi učile programiranje. Neki ljudi čak koriste REPL za pisanje boljih jediničnih testova.

Da li već danas koristim REPL (sličan alatu)?

Ovo osnovno objašnjenje moglo bi vas podsjetiti na neke alate koje svakodnevno koristite. Ako poznajete i koristite jedan od sljedećih alata, odgovor je "da":

  • Alati za razvoj vašeg preglednika (poput Chrome DevTools)
  • Vaš terminal / ljuska
  • Jupyterove bilježnice
  • Proces REPL-a u Clojureu
  • Repl.it, jsfiddle.net ili jsbin.com
  • Internetski validatori regularnih izraza

Zašto je REPL tako koristan?

Ovo me pitanje držalo budnim noću jer nisam razumjela što nas uopće čini neučinkovitima. Počeo sam istraživati ​​neke uobičajene psihološke učinke i pokušao sam ih povezati sa svojom svakodnevnom interakcijom s REPL-om. Evo moje tri glavne hipoteze:

Biti u toku

Tok je mentalno stanje operacije u kojem je osoba koja obavlja aktivnost u potpunosti uronjena u osjećaj energičnog fokusa, potpune uključenosti i uživanja u procesu aktivnosti. (izvor)

Mislim da nam je svima poznato ovo stanje, čini nas izuzetno produktivnima i vrijeme u osnovi leti. Nažalost, prilično je lako "izgubiti" tok, na primjer kada vas prekidaju ili kada morate pričekati neko razdoblje. Naučio sam da se to može dogoditi vrlo brzo: istraživači su otkrili da je jedna sekunda približno granica da tijek misli korisnika ostane neprekinut.

REPL ne treba kompajlirati ili rasporediti vaš kôd. To dovodi do vrlo kratkog vremena odziva (<100 ms). Dakle, u mogućnosti ste testirati svoje hipoteze bez gubitka protoka.

Pozitivno pojačanje

Pozitivno pojačanje uključuje dodavanje poticaja koji pojačava nakon ponašanja zbog kojeg je vjerojatnije da će se ponašanje ponoviti. (izvor)

To je učinak koji me najviše privlači. Vaš mozak uči favorizirati određene radnje kad su bile nagrađivane u prošlosti. Ova nagrada može biti bonus vašeg šefa nakon izvanrednog mjeseca ili jednostavan "Odličan posao!" od vašeg instruktora skijanja.

Svaki put kad vaš REPL eksperiment uspije i riješite zagonetku / problem, vaš mozak se osjeća također nagrađenim! To se također događa kada kodirate u zajednički IDE. Ali REPL brže reagira i omogućuje vam češće ponavljanje. Dakle, više eksperimenata dovodi do više pojačanja. Ovaj vam učinak omogućuje češće korištenje REPL-a i pazi na loptu (umjesto da vam odvlači pažnju provjerom e-pošte).

Digitalna amnezija

Težnja ka zaboravljanju informacija koje se putem Interneta mogu tražiti putem Interneta. (izvor)

Moram priznati, često miješam sintaksu Java, Python i JavaScript, jer se te informacije mogu naći na cijelom internetu. Zapitao bih se "Trebam li dodati add () , append () ili push () za dodavanje novog elementa u niz u JavaScript-u?". Stoga je za mene primjer ovog učinka podsjećanje na nazive metoda API-ja i reference jezika.

U REPL-u mogu odmah vidjeti dostupne funkcije s automatskim dovršavanjem:

Sjajna stvar je što ovo djeluje izvan standardnih objekata programskih jezika. Ovo radi za sve okvire i module , što REPL čini moćnijim od vašeg IDE-a! Više nije potrebno uspoređivati ​​brojeve verzija modula i API reference:

"Istina se može naći samo na jednom mjestu: kod." - Robert C. Martin, Clean Code

Nadam se da vam je ovaj članak pomogao da shvatite kako vaš mozak radi i kako vam REPL može pomoći da budete produktivniji.

Zanima me da li se slažete s mojim hipotezama ili znate više alata da biste bili učinkovitiji programer.

Ažuriranje 13.2.2019:

Također sam napisao post na blogu o korištenju REPL-ova u Cloud Foundry Environmentima.

Pogledajte ovaj video DJ Adamsa ako želite vidjeti REPL u akciji :)