Heim  >  Artikel  >  Backend-Entwicklung  >  IPython-ähnliche interaktive Programmierschnittstelle für die Go-Sprache

IPython-ähnliche interaktive Programmierschnittstelle für die Go-Sprache

高洛峰
高洛峰Original
2016-11-23 09:27:331510Durchsuche

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.

IPython-ähnliche interaktive Programmierschnittstelle für die Go-Sprache

Diese Tour beinhaltet einen Go Playgound. Den Code des Projekts finden Sie auf Github.

IPython-ähnliche interaktive Programmierschnittstelle für die Go-Sprache

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

IPython-ähnliche interaktive Programmierschnittstelle für die Go-Sprache

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

IPython-ähnliche interaktive Programmierschnittstelle für die Go-Sprache

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.

IPython-ähnliche interaktive Programmierschnittstelle für die Go-Sprache

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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Python-AusnahmebehandlungNächster Artikel:Python-Ausnahmebehandlung