Read–eval–print loop: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Creata dalla traduzione della pagina "Read–eval–print loop"
 
Fix link
Riga 1:
A '''Read–Eval–Print Loop''' ('''REPL'''), noto anche come un '''interactive toplevel''' o '''linguaggio shell''', è un ambiente di [[Programmazione (informatica)|programmazione]] semplice e interattivo che accetta input da parte di un singolo utente (vale a dire singole espressioni), li valuta e restituisce il risultato all'utente; un programma scritto in un ambiente REPL viene eseguito a tratti. Il termine è solitamente usato per riferirsi a interfacce di programmazione simili al classico ambiente interattivo della [[macchina Lisp]]. Esempi comuni includono [[Shell (informatica)|shell]] a [[riga di comando]] e ambienti simili per i [[linguaggi di programmazione]] ed è una particolare caratteristica dei [[Scripting|linguaggi di scripting]].<ref>{{Cita libro|ISBN=978-1-31612322-5}}Parametro <code style="color:red;">titolo</code> vuoto o mancante ([[Discussioni modulo:Citazione/Aiuto#citation missing title|aiuto]])
[[Categoria:Errori del modulo citazione - citazioni senza titolo]]</ref>
 
Riga 9:
* La funzione di '''stampa''' prende il risultato ottenuto da'' eval'' e lo stampa all'utente. Se è un'espressione complessa, potrebbe essere [[pretty-printed]] per renderne più facile la comprensione. In questo esempio, però, il numero <code>6</code> non ha bisogno di molta formattazione per stampare.
 
L'ambiente di sviluppo ritorna quindi allo stato di lettura, creando un [[Loop]]''loop'', che termina quando il programma viene chiuso.
 
REPLs facilitano la [[programmazione esplorativa]] e il [[debugging]] perché il programmatore può ispezionare il risultato stampato prima di decidere quale espressione fornire per la prossima lettura. Il ciclo read-eval-print loop coinvolge il programmatore più frequentemente rispetto al classico ciclo edit-compile-run-debug.
Riga 15:
Poiché la funzione di ''stampa'' viene emessa nello stesso formato testuale utilizzato dalla funzione di lettura per l'input, la maggior parte dei risultati viene stampata in una forma che potrebbe (se è utile) essere copiata e incollata nel REPL. Tuttavia, a volte è necessario stampare rappresentazioni di elementi che non possono essere letti in modo sensibile, come un handle di socket o un'istanza di classe complessa. In questi casi, deve esistere una sintassi per gli oggetti illeggibili. In Python, è la <code><__module__.class instance></code> notazione, e in Common Lisp, il <code>#<whatever></code> form. La REPL di [[Clim|CLIM]], [[SLIME]] e [[Symbolics Lisp Machine]] può anche leggere oggetti illeggibili. Loro registrano per ogni uscita quale oggetto è stato stampato. Successivamente, quando il codice viene riletto, l'oggetto verrà recuperato dall'output stampato.
 
I REPLs possono essere creati per supportare qualsiasi linguaggio basato su testo. Il supporto REPL per i linguaggi compilati viene in genere ottenuto implementando un interprete su una macchina virtuale che fornisce un'interfaccia al compilatore. Ad esempio, a partire da JDK 9, [[Java (linguaggio di programmazione)|Java]] ha incluso [[JShell]] come interfaccia a riga di comando per il linguaggio. Vari altri linguaggi dispongono di strumenti di terze parti disponibili per il download che forniscono un'interazione shell simile con il linguaggio.
 
== Uso ==
 Come uno [[Shell (informatica)|shell]], un ambiente REPL consente agli utenti di accedere alle funzionalità rilevanti di un sistema operativo, oltre a fornire accesso alle funzionalità di programmazione.
 
L'uso più comune dei REPL al di fuori delle shell del sistema operativo è la [[prototipazione]] istantanea. Altri usi includono il calcolo matematico, la creazione di documenti che integrano l'analisi scientifica (ad esempio[[ IPython]]), la manutenzione del software interattivo, il [[Benchmark (informatica)|benchmarking]] e l'esplorazione dell'algoritmo.
 
Un REPL può diventare una parte essenziale dell'apprendimento di una nuova lingua in quanto fornisce un rapido riscontro al novizio.
Riga 48:
{{reflist}}
 
== Collegamenti Esterniesterni ==
 
* Paul Graham has written a [http://www.paulgraham.com/rootsoflisp.html description of a REPL implementation] in Common Lisp.