Ezért olyan csodálatos a read-eval-print-loop

Az egyik dolog, ami különlegessé teszi a technológiai közösséget, az az, hogy mindig a hatékonyabb munkavégzés módjait keressük. Mindenkinek megvan a kedvenc eszközkészlete, amely jobban fut. Szakmai felhasználói felületként a Chrome DevTools és a Node.js read-eval-print-loop (REPL) korán a kedvenc eszközeimmé vált. Észrevettem, hogy lehetővé tették számomra a hatékonyabb munkát, és lehetővé tették, hogy gyorsabban tanuljak új dolgokat.

Ez valójában kíváncsi volt arra, hogy megvizsgáljam, miért hasznos ez az eszköz. Könnyen megtalálhattam rengeteg blogbejegyzést, amelyek elmagyarázták, hogy mik a REPL-ek és hogyan kell használni őket, például itt vagy itt. De ez a post itt elkötelezett a miért (mint a miért REPLs ilyen nagyszerű eszköz a fejlesztők).

"Az első számú ok, amiért az iskolák eltávolodnak a Java-tól, mint tanítási nyelvtől, a Hello-world programok magas szintjei." - Stuart Halloway

Mi az a REPL?

A REPL jelentése olvassa-értékelje-nyomtassa-hurok, és ez lényegében minden.

Az alkalmazás futásideje meghatározott állapotban van, és a REPL segít abban, hogy interakcióba lépjen vele. A REPL elolvassa és kiértékeli a parancsokat, kinyomtatja az eredményt, majd visszatér a kezdethez, hogy elolvassa a következő bevitelt. Az értékelő lépés megváltoztathatja a futásidőt. Ez a folyamat az alkalmazásával készített interjúnak tekinthető annak aktuális állapotának lekérdezéséhez.

Más szavakkal, a REPL kézzelfoghatóbbá teszi futásidejét, és lehetővé teszi a hipotézisek tesztelését .

Stuart Halloway szerint a REPL hiánya a Java-ban a legjelentősebb oka annak, hogy az iskolák más nyelvekre kezdtek áttérni a programozás tanítására. Vannak, akik a REPL-t jobb egységtesztek megírásához használják.

Ma már használok egy REPL (-szerű eszközt)?

Ez az alapvető magyarázat emlékeztethetett néhány olyan eszközre, amelyet mindennap használ. Ha ismeri és használja a következő eszközök egyikét, a válasz "igen":

  • A böngésző fejlesztői eszközei (például a Chrome DevTools)
  • A terminálod / shelled
  • Jupyter Notebookok
  • A REPL folyamat a Clojure-ban
  • Repl.it, jsfiddle.net vagy jsbin.com
  • Online regex érvényesítők

Miért olyan hasznos a REPL?

Ez a kérdés éjszakánként fent tartott, mert nem értettem, hogy mitől vagyunk eleve hatástalanok. Elkezdtem kutatni néhány gyakori pszichológiai hatást, és megpróbáltam összekapcsolni őket a REPL-lel való napi interakcióimmal. Íme a három legfontosabb hipotézisem:

Az áramlásban lenni

Az áramlás az a mentális működési állapot, amelyben egy tevékenységet végző személy teljesen elmerül az energiával kapcsolatos összpontosítás, teljes részvétel és élvezet érzésében a tevékenység folyamatában. (forrás)

Azt hiszem, mindannyian ismerjük ezt az állapotot, ez rendkívül produktívvá tesz bennünket, és az idő alapvetően repül. Sajnos meglehetősen könnyű „elveszíteni” az áramlást, például amikor megszakad vagy ha várnia kell egy ideig. Megtudtam, hogy ez nagyon gyorsan megtörténhet: A kutatók kiderítették, hogy egy másodperc kb. A felhasználó azon gondolatfolyamának határa, hogy zavartalanul maradjon.

A REPL-nek nem kell lefordítania vagy telepítenie a kódot. Ez nagyon rövid válaszidőhöz vezet (<100ms). Így képes tesztelni hipotéziseit anélkül, hogy elveszítené az áramlást.

Pozitív megerősítés

A pozitív megerősítés magában foglalja egy olyan erősítő inger hozzáadását, amely egy olyan viselkedést követ, amely valószínűbbé teszi a viselkedés újbóli előfordulását. (forrás)

Ez a hatás vonz engem a legjobban. Az agyad megtanul bizonyos cselekedeteknek kedvezni, amikor azokat korábban díjazták. Ez a jutalom lehet főnökének járó bónusz egy kiemelkedő hónap után, vagy egy egyszerű „Remek munka!” a síoktatótól.

Minden alkalommal, amikor a REPL kísérleted sikerrel jár, és megoldottál egy rejtvényt / problémát, agyad is jutalomnak érzi magát! Ez akkor is megtörténik, amikor egy közös IDE-be kódol. De a REPL gyorsabban reagál, és lehetővé teszi, hogy gyakrabban iteráljon. Tehát több kísérlet további megerősítéshez vezet. Ez a hatás arra készteti, hogy gyakrabban használja a REPL-t, és szemmel tartja a labdát (ahelyett, hogy elterelné a figyelmét e-mailek keresésével).

Digitális amnézia

Az internetes keresőmotorok használatával az interneten könnyen megtalálható információk elfelejtésére való hajlam. (forrás)

Be kell vallanom, gyakran keverem a Java, a Python és a JavaScript szintaxist, mert ezek az információk az egész interneten megtalálhatók. Megkérdezném magamtól, hogy az add () , az append () vagy a push () billentyűk használatával új elemet kell hozzáadni egy tömbhöz a JavaScript-ben? Így számomra erre a hatásra példa az API és a nyelvi hivatkozások metódusneveinek felidézése.

A REPL-ben azonnal látom az elérhető funkciókat automatikus kiegészítéssel:

Nagyszerű, hogy ez túlmutat a programozási nyelvek szabványos objektumain. Ez minden keretrendszerre és modulra érvényes , ami a REPL-t hatalmasabbá teszi, mint az IDE! Nem kell többé összehasonlítani a modulok és az API hivatkozások verziószámát:

„Az igazság csak egy helyen található meg: a kód.” - Robert C. Martin, Clean Code

Remélem, hogy ez a cikk segített megérteni, hogyan működik az agyad, és a REPL hogyan segíthet abban, hogy produktívabb legyél.

Kíváncsian várom, hogy egyetért-e hipotéziseimmel, vagy tud-e több eszközt hatékonyabb fejlesztőnek lenni.

Frissítve 2019.02.13 .:

Írtam egy blogbejegyzést is a REPL-ek felhőöntő környezetekben történő használatáról.

Nézze meg ezt a DJ Adams videót, ha szeretné látni a REPL működését :)