Go語言的類IPython 互動式編程介面

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

Bret Victor 的 Inventing on principle 是我看到過的最令人激動和震撼的示範,沒有之一。雖然這位前蘋果公司的UI大牛早在2012年就作出的這次示範,但他的影響一直沒有減弱,編寫程式過程中的任何變化,應該直接的產生反饋,讓程式猿能夠看到結果,或者說創造者需要對自己的創造的東西有即時的反饋

之前一直在使用Python,非常喜歡IPythonn Notebook,使用IPython Notenook來快速的完成一些原型非常的方便。現在由於項目的需要,要開始使用Go語言,我就在想,有沒有可以使用Go的IPython環境呢?知乎上還有一個相關的文章,可惜上面並沒有給出有效回答。

我做了些小功課,結果並不完美,這裡分享給大家。

官方版 Go Playground 

開始學習Go語言最好的資源就是官方的Tour了,大家可以一邊學習,一邊運行Go的樣本程式,直接獲得運行結果。完美體現Inventing on principle的理念。

這個Tour內嵌了一個Go的Playgound,大家可以在github上找到該項目的代碼。

該項目包含一個前端和一個容器化的後台Sandbox,以保證程式啟動並執行安全性。

然而go playground還有一些限制:

  • 不能import 使用者定義的包
  • 編輯器弱,沒有文法高亮,沒有提示,沒有undo ...
  • 沒有Ipython那種分段式的互動

XIAM版Go Playground

XIAM的go playground在官方的playground的基礎上做了重大的改進。包括:

  • 支援使用者自訂的包
  • 支援unsafe sandbox,使用者可以訪問網路,檔案系統等
  • 前端的容器化

想要使用自訂的包,需要修改相應sandbox的Dockerfile

FROM xiam/go-playground/unsafeboxRUN go get github.com/myuser/mypackageRUN go get github.com/otheruser/otherpackageENTRYPOINT ["/go/bin/sandbox"]

然後重新構建容器的Image就好了。

雖然我們解決了自訂包的問題,但是,這個編輯器還是太弱了,而且也缺乏IPython的分段式互動。有沒有更好的呢?

GopherNotes

Jupyter的Notebook其實可以支援不同的語言核心, GopherNotes項目為Jupyter提供了Go語言的核心。

該項目受到已經不在維護的Gore (基於igo核心) 的啟發 。

以上是我使用Gophernotes的一次測試,當我運行一個迴圈的時候,如果寫成一行,In[7],一切OK。到但是當我寫成三行後,In[8],就無法輸出正確的結果了。

後台給出的錯誤是:

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

我沒有搞明白為什麼,報了個bug,如果有搞明白的小夥伴請告訴我。

至此,雖然沒有找到一個好用的,但是我對Gophernotes抱以很大的希望,希望它能夠早日解決一些基本的問題。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.