Heim > Artikel > Backend-Entwicklung > IPython-ähnliche interaktive Programmierschnittstelle für die Go-Sprache
Bret Victors „Erfinden im Prinzip“ ist eine der aufregendsten und schockierendsten Demonstrationen, die ich je gesehen habe. Obwohl der ehemalige Apple-UI-Guru diese Demonstration bereits 2012 gemacht hat, hat sein Einfluss nicht nachgelassen, sodass Programmierer direkt Feedback generieren können, oder mit anderen Worten, die Entwickler brauchen echtes Feedback. Zeit-Feedback zu dem, was sie erstellen.
Ich habe Python schon einmal verwendet und mag IPythonn Notebook sehr. Es ist sehr praktisch, IPython Notenook zu verwenden, um schnell einige Prototypen fertigzustellen. Aufgrund der Anforderungen des Projekts möchte ich nun die Go-Sprache verwenden. Ich frage mich, ob es eine IPython-Umgebung gibt, die Go verwenden kann. Es gibt auch einen entsprechenden Beitrag zu Zhihu, der aber leider keine gültige Antwort gibt.
Ich habe ein paar kleine Hausaufgaben gemacht, aber das Ergebnis ist nicht perfekt, deshalb werde ich es hier mit Ihnen teilen.
Offizielle Version von Go Playground
Die beste Ressource, um mit dem Erlernen der Go-Sprache zu beginnen, ist die offizielle Tour. Sie können Go-Beispielprogramme gleichzeitig lernen und ausführen, um direkt Ergebnisse zu erhalten. Verkörpert perfekt das Konzept des prinzipiellen Erfindens.
Diese Tour beinhaltet einen Go Playgound. Den Code des Projekts finden Sie auf Github.
Das Projekt umfasst eine Front-End- und eine containerisierte Back-End-Sandbox, um die Sicherheit des Programmbetriebs zu gewährleisten.
Go Playground hat jedoch einige Einschränkungen:
Benutzerdefinierte Pakete können nicht importiert werden
Der Editor ist schwach, keine Syntaxhervorhebung, keine Eingabeaufforderungen, kein Rückgängigmachen...
Es gibt keine segmentierte Interaktion wie bei Ipython
XIAM-Version von Go Playground
XIAMs Go Playground basiert auf dem offiziellen Playground und hat erhebliche Verbesserungen erfahren gemacht worden. Beinhaltet:
Unterstützung benutzerdefinierter Pakete
Unterstützung unsicherer Sandbox, Benutzer können auf das Netzwerk, das Dateisystem usw. zugreifen.
Containerisierung des Frontends
Um ein benutzerdefiniertes Paket zu verwenden, müssen Sie die Docker-Datei der entsprechenden Sandbox ändern
FROM xiam/go-playground/unsafebox RUN go get github.com/myuser/mypackageRUN go get github.com/otheruser/otherpackage ENTRYPOINT ["/go/bin/sandbox"]
und dann das Image des Containers neu erstellen.
Obwohl wir das Problem der benutzerdefinierten Pakete gelöst haben, ist der Editor immer noch zu schwach und es fehlt ihm die segmentierte Interaktion von IPython. Gibt es etwas Besseres?
GopherNotes
Jupyter’s Notebook kann tatsächlich verschiedene Sprachkerne unterstützen. Das GopherNotes-Projekt stellt den Go-Sprachkern für Jupyter bereit.
Dieses Projekt ist von Gore (basierend auf dem Igo-Kernel) inspiriert, das nicht mehr gepflegt wird.
Das Obige ist ein Test, den ich mit Gophernotes durchgeführt habe. Wenn ich eine Schleife ausführe und sie in eine Zeile schreibe, In[7], ist alles in Ordnung. Aber wenn ich drei Zeilen schreibe, In[8], kann das korrekte Ergebnis nicht ausgegeben werden.
Der im Hintergrund angezeigte Fehler lautet:
Error running goimports: /tmp/979860191/func_proxy.go:4:4: expected declaration, found 'for' [I 08:18:56.621 NotebookApp] Saving file at /Untitled.ipynb