Një lak read-eval-print ( REPL ), i quajtur gjithashtu një nivel ndërveprues ose guaskë gjuhësore, është një mjedis i thjeshtë programimi kompjuterik ndërveprues që merr hyrje të një përdoruesi, i ekzekuton ato dhe ia kthen rezultatin përdoruesit; një program i shkruar në një mjedis REPL ekzekutohet pjesë-pjesë. [1] Termi zakonisht i referohet ndërfaqeve programuese të ngjashme me mjedisin klasik ndërveprues të makinës Lisp . Shembujt e zakonshëm përfshijnë guaska të linjës së komandës dhe mjedise të ngjashme për gjuhët e programimit, dhe teknika është shumë karakteristike për gjuhët e skriptimit . [2]

Historia

Redakto

Në vitin 1964, shprehja laku LEXO-EVAL-PRINT përdoret nga L. Peter Deutsch dhe Edmund Berkeley për një implementim të Lisp në PDP-1 . [3]

Vështrim i përgjithshëm

Redakto

Në një REPL, përdoruesi fut një ose më shumë shprehje (në vend të një njësie të tërë përpilimi ) dhe REPL i vlerëson ato dhe shfaq rezultatet. [1] Emri laku read–eval–print vjen nga emrat e funksioneve primitive Lisp që zbatojnë këtë funksionalitet:

  • Funksioni i leximit pranon një shprehje nga përdoruesi dhe e parson atë në një strukturë të dhënash në memorie. Për shembull, përdoruesi mund të fusë shprehjen s (+ 1 2 3), e cila analizohet në një listë të lidhur që përmban katër elementë të të dhënave.
  • Funksioni eval merr këtë strukturë të brendshme të të dhënave dhe e vlerëson atë. Në Lisp, të vlerësosh një shprehje-s që fillon me emrin e një funksioni do të thotë të thërrasësh atë funksion në argumentet që përbëjnë pjesën tjetër të shprehjes. Pra funksioni + thirret në argumentet 1 2 3, duke dhënë rezultatin 6 .
  • Funksioni i print merr rezultatin e dhënë nga eval dhe ia printon përdoruesit. Nëse është një shprehje komplekse, mund të jetë printuar bukur për ta bërë më të lehtë për t'u kuptuar.

Më pas mjedisi i zhvillimit kthehet në gjendjen e leximit, duke krijuar një lak, i cili përfundon kur programi mbyllet.

REPL-të mund të krijohen për të mbështetur çdo gjuhë të bazuar në tekst. Mbështetja REPL për gjuhët e përpiluara zakonisht arrihet duke zbatuar një interpreter në krye të një makine virtuale e cila ofron një ndërfaqe për përpiluesin. Për shembull, duke filluar me JDK 9, Java përfshiu JShell si një ndërfaqe të linjës së komandës për gjuhën. Gjuhë të tjera të ndryshme kanë mjete të palëve të treta të gatshme për shkarkim që ofrojnë ndërveprim të ngjashëm të guaskës me gjuhën.

Përdorimet

Redakto

Si një guackë, një mjedis REPL i lejon përdoruesit të aksesojnë veçoritë përkatëse të një sistemi operativ përveç sigurimit të qasjes në aftësitë e programimit. Përdorimi më i zakonshëm për REPL-të jashtë guackave të sistemit operativ është për prototipimin interaktiv. Përdorime të tjera përfshijnë llogaritjen matematikore, krijimin e dokumenteve që integrojnë analizat shkencore (p.sh. IPython ), mirëmbajtjen interaktive të softuerit, stolshënimin dhe eksplorimin e algoritmeve.

  1. ^ a b Grillmeyer, O. (2013). Exploring Computer Science with Scheme. Undergraduate Texts in Computer Science. Springer New York. fq. 239. ISBN 978-1-4757-2937-5. Marrë më 2021-06-26. The central component to the Scheme interpreter is the read-eval-print loop. Commands are read in, then evaluated. Finally, the evaluated result is printed. {{cite book}}: Mungon ose është bosh parametri |language= (Ndihmë!) Gabim referencash: Invalid <ref> tag; name "Grillmeyer 2013 p.239" defined multiple times with different content
  2. ^ Hey, Tony; Pápay, Gyuri (2014). The Computing Universe: A Journey through a Revolution. Cambridge University Press. fq. 76. ISBN 978-1-316-12322-5, "A major characteristic of modern scripting languages is their interactivity, sometimes referred to as a REPL programming environment. ... The characteristics of ease of use and immediate execution with a REPL environment are sometimes taken as the definition of a scripting language." {{cite book}}: Mungon ose është bosh parametri |language= (Ndihmë!)Mirëmbajtja CS1: Passhkrimi (lidhja)
  3. ^ L. Peter Deutsch; Edmund Berkeley, The LISP Implementation for the PDP-1 Computer (PDF), fq. 15 {{citation}}: Mungon ose është bosh parametri |language= (Ndihmë!)