Go:
Utilizzo di un guscio interattivo (REPL)
Come fare:
Anche se Go non include un REPL incorporato, la comunità ha creato strumenti come gore
per colmare questa lacuna. Prima di tutto, installa gore
eseguendo:
$ go get -u github.com/motemen/gore
Una volta installato, avvia gore
digitando gore
nel tuo terminale:
$ gore
Dovresti vedere un prompt pronto per accettare comandi Go. Proviamo un esempio semplice:
gore> :import fmt
gore> fmt.Println("Ciao, Go REPL!")
Dovresti vedere un output come:
Ciao, Go REPL!
Variabili e definizioni di funzioni funzionano come previsto. Puoi dichiarare una funzione:
gore> :import math
gore> areaCircle := func(radius float64) float64 {
...> return math.Pi * radius * radius
...> }
gore> fmt.Println("Area del cerchio con raggio 4:", areaCircle(4))
E ottenere subito l’output:
Area del cerchio con raggio 4: 50.26548245743669
Approfondimento:
Il concetto di REPL è antico, risalente alle macchine Lisp degli anni ‘60, fornendo un’esperienza di programmazione interattiva. A differenza di linguaggi come Python o JavaScript, Go è stato progettato senza un REPL, concentrandosi invece su binari compilati per performance e semplicità. Ciò riflette la filosofia di Go sulla semplicità e la sua progettazione per software scalabile e mantenibile.
Tuttavia, strumenti come gore
o goplay
mostrano la versatilità della comunità Go nel colmare questa lacuna. Questi strumenti analizzano dinamicamente il codice Go e utilizzano il pacchetto go/eval
o meccanismi simili per eseguirlo in tempo reale, sebbene con alcune limitazioni rispetto a un ambiente REPL nativo. Queste limitazioni derivano dal sistema di tipi di Go e dal modello di compilazione, che possono rendere la valutazione al volo impegnativa.
Sebbene gli ambienti REPL siano eccezionalmente utili per l’educazione e i test rapidi, l’ecosistema Go tende tipicamente verso processi di compilazione ed esecuzione tradizionali per la maggior parte dei compiti di sviluppo. IDE e editor con supporto Go, come Visual Studio Code o GoLand, offrono strumenti integrati per il test e il debugging che alleviano gran parte della necessità di un REPL per lo sviluppo professionale.
Per la programmazione esplorativa, la prototipazione o l’apprendimento, tuttavia, REPL come gore
offrono un’alternativa preziosa, permettendo ai programmatori abituati ai REPL in altri linguaggi di godere di un’esperienza simile in Go.