Home  >  Article  >  Backend Development  >  IPython-like interactive programming interface for Go language

IPython-like interactive programming interface for Go language

高洛峰
高洛峰Original
2016-11-23 09:27:331508browse

Bret Victor’s Inventing on principle is one of the most exciting and shocking demonstrations I have ever seen. Although the former Apple UI guru made this demonstration as early as 2012, his influence has not diminished. Any changes in the process of writing programs should directly generate feedback so that programmers can see the results. , or in other words, creators need real-time feedback on what they create.

I have been using Python before and like IPython Notebook very much. It is very convenient to use IPython Notenook to quickly complete some prototypes. Now due to the needs of the project, I want to start using the Go language. I was wondering, is there an IPython environment that can use Go? There is also a related post on Zhihu, but unfortunately it does not give a valid answer.

I did some small homework, but the result is not perfect, so I will share it with you here.

Official version Go Playground

The best resource to start learning Go language is the official Tour. You can learn and run Go sample programs at the same time to get the running results directly. Perfectly embodies the concept of Inventing on principle.

IPython-like interactive programming interface for Go language

This Tour has a Go Playgound embedded in it. You can find the code of the project on github.

IPython-like interactive programming interface for Go language

This project contains a front-end and a containerized back-end Sandbox to ensure the security of program operation.

However, go playground has some limitations:

cannot import user-defined packages

The editor is weak, no syntax highlighting, no prompts, no undo...

No segmented interaction like Ipython

XIAM version of Go Playground

IPython-like interactive programming interface for Go language

XIAM’s go playground has made significant improvements based on the official playground. Includes:

Supports user-defined packages

Supports unsafe sandbox, users can access the network, file system, etc.

Containerization of the front end

If you want to use a custom package, you need to modify the Dockerfile of the corresponding sandbox

FROM xiam/go-playground/unsafebox

RUN go get github.com/myuser/mypackageRUN go get github.com/otheruser/otherpackage

ENTRYPOINT ["/go/bin/sandbox"]

Then Just rebuild the container's Image.

Although we have solved the problem of custom packages, this editor is still too weak and lacks the segmented interaction of IPython. Is there anything better?

GopherNotes

IPython-like interactive programming interface for Go language

Jupyter’s Notebook can actually support different language cores. The GopherNotes project provides the Go language core for Jupyter.

This project is inspired by Gore (based on igo kernel) which is no longer maintained.

IPython-like interactive programming interface for Go language

The above is a test I did using Gophernotes. When I run a loop, if I write it in one line, In[7], everything is OK. But when I write three lines, In[8], the correct result cannot be output.

The error given in the background is:

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


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:Python exception handlingNext article:Python exception handling