ブレット・ビクターの原理発明は、私がこれまで見た中で最も刺激的で衝撃的なデモンストレーションの 1 つです。元 Apple UI の第一人者は 2012 年にこのデモンストレーションを行っていましたが、その影響力は衰えていません。プログラムを作成するプロセスに何らかの変更があれば、プログラマが結果を確認できるように、つまり作成者が実際にその結果を確認できるようにする必要があります。彼らが作成したものについての時間的なフィードバック。
私は以前に Python を使用したことがあり、IPython Notebook がとても気に入っています。IPython Notenook を使用すると、いくつかのプロトタイプをすばやく完成させることができてとても便利です。プロジェクトの都合上、Go 言語を使い始めたいのですが、Go を使用できる IPython 環境はあるのでしょうか? Zhihu にも関連する投稿がありますが、残念ながら有効な答えは得られません。
小さな宿題をいくつかしましたが、結果は完璧ではないので、ここで共有します。
公式バージョン Go プレイグラウンド
Go 言語の学習を開始するための最良のリソースは公式ツアーです。学習と Go サンプル プログラムを同時に実行して、結果を直接取得できます。原則に基づいて発明するというコンセプトを完全に体現しています。
このツアーには Go Playgound が埋め込まれています。プロジェクトのコードは github で見つけることができます。
このプロジェクトには、プログラム動作のセキュリティを確保するためのフロントエンドとコンテナ化されたバックエンドのサンドボックスが含まれています。
ただし、Go Playground にはいくつかの制限があります:
ユーザー定義のパッケージをインポートできません
エディターが弱く、構文の強調表示、プロンプト、アンドゥはありません...
Ipython のようなセグメント化された操作はありません
Go の XIAM バージョン遊び場
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
Jupyter の Notebook は実際にさまざまな言語カーネルをサポートできます。GopherNotes プロジェクトは Jupyter 用の Go 言語カーネルを提供します。
このプロジェクトは、現在はメンテナンスされていない Gore (igo カーネルに基づく) からインスピレーションを受けています。
上記は 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