ホームページ  >  記事  >  バックエンド開発  >  IPython に似た Go 言語用対話型プログラミング インターフェイス

IPython に似た Go 言語用対話型プログラミング インターフェイス

高洛峰
高洛峰オリジナル
2016-11-23 09:27:331456ブラウズ

ブレット・ビクターの原理発明は、私がこれまで見た中で最も刺激的で衝撃的なデモンストレーションの 1 つです。元 Apple UI の第一人者は 2012 年にこのデモンストレーションを行っていましたが、その影響力は衰えていません。プログラムを作成するプロセスに何らかの変更があれば、プログラマが結果を確認できるように、つまり作成者が実際にその結果を確認できるようにする必要があります。彼らが作成したものについての時間的なフィードバック。

私は以前に Python を使用したことがあり、IPython Notebook がとても気に入っています。IPython Notenook を使用すると、いくつかのプロトタイプをすばやく完成させることができてとても便利です。プロジェクトの都合上、Go 言語を使い始めたいのですが、Go を使用できる IPython 環境はあるのでしょうか? Zhihu にも関連する投稿がありますが、残念ながら有効な答えは得られません。

小さな宿題をいくつかしましたが、結果は完璧ではないので、ここで共有します。

公式バージョン Go プレイグラウンド

Go 言語の学習を開始するための最良のリソースは公式ツアーです。学習と Go サンプル プログラムを同時に実行して、結果を直接取得できます。原則に基づいて発明するというコンセプトを完全に体現しています。

IPython に似た Go 言語用対話型プログラミング インターフェイス

このツアーには Go Playgound が埋め込まれています。プロジェクトのコードは github で見つけることができます。

IPython に似た Go 言語用対話型プログラミング インターフェイス

このプロジェクトには、プログラム動作のセキュリティを確保するためのフロントエンドとコンテナ化されたバックエンドのサンドボックスが含まれています。

ただし、Go Playground にはいくつかの制限があります:

ユーザー定義のパッケージをインポートできません

エディターが弱く、構文の強調表示、プロンプト、アンドゥはありません...

Ipython のようなセグメント化された操作はありません

Go の XIAM バージョン遊び場

IPython に似た Go 言語用対話型プログラミング インターフェイス

XIAM の囲碁遊び場は、公式遊び場に基づいて大幅に改良されました。含まれるもの:

ユーザー定義パッケージのサポート

安全でないサンドボックスのサポート、ユーザーはネットワーク、ファイルシステムなどにアクセス可能

フロントエンドのコンテナ化

カスタムパッケージを使用したい場合は、Dockerfileを変更する必要があります対応するサンドボックスの

FROM xiam/go-playground/unsafebox

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

ENTRYPOINT ["/go/bin/sandbox"]

その後、コンテナのイメージを再構築するだけです。

カスタム パッケージの問題は解決しましたが、このエディターはまだ弱すぎて、IPython のセグメント化された対話が欠けています。もっと良いものはありますか?

GopherNotes

IPython に似た Go 言語用対話型プログラミング インターフェイス

Jupyter の Notebook は実際にさまざまな言語カーネルをサポートできます。GopherNotes プロジェクトは Jupyter 用の Go 言語カーネルを提供します。

このプロジェクトは、現在はメンテナンスされていない Gore (igo カーネルに基づく) からインスピレーションを受けています。

IPython に似た Go 言語用対話型プログラミング インターフェイス

上記は Gophernotes を使用して行ったテストです。ループを実行する場合、In[7] に 1 行で記述すると、すべて OK になります。しかし、In[8]を3行書くと正しい結果が出力されません。

バックグラウンドで表示されるエラー:

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


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Pythonの例外処理次の記事:Pythonの例外処理