>  기사  >  백엔드 개발  >  Go 언어를 위한 IPython과 유사한 대화형 프로그래밍 인터페이스

Go 언어를 위한 IPython과 유사한 대화형 프로그래밍 인터페이스

高洛峰
高洛峰원래의
2016-11-23 09:27:331457검색

브렛 빅터(Bret Victor)의 원칙에 따른 발명은 제가 본 것 중 가장 흥미롭고 충격적인 시연 중 하나입니다. 전직 Apple UI 전문가가 2012년 초에 이 시연을 했음에도 불구하고 그의 영향력은 줄어들지 않았습니다. 프로그램 작성 과정의 모든 변경 사항은 프로그래머가 결과를 볼 수 있도록 직접 피드백을 생성해야 합니다. 즉, 제작자는 실제적인 작업이 필요합니다. 그들이 만든 것에 대한 시간 피드백.

저는 이전에 Python을 사용해 왔으며 IPythonn Notebook을 매우 좋아합니다. IPython Notenook을 사용하면 일부 프로토타입을 빠르게 완료할 수 있어 매우 편리합니다. 이제 프로젝트의 필요로 인해 Go 언어를 사용하려고 합니다. Go를 사용할 수 있는 IPython 환경이 있는지 궁금합니다. Zhihu에도 관련 게시물이 있지만 안타깝게도 유효한 답변을 제공하지 않습니다.

작은 숙제를 했는데 결과가 완벽하지 않아서 여기서 공유하겠습니다.

공식 버전 Go Playground

Go 언어 학습을 시작하는 가장 좋은 리소스는 Go 샘플 프로그램을 학습하는 동시에 실행하여 결과를 직접 얻을 수 있습니다. 원칙에 따른 발명의 개념을 완벽하게 구현합니다.

Go 언어를 위한 IPython과 유사한 대화형 프로그래밍 인터페이스

이 투어에는 Go Playgound가 포함되어 있습니다. 프로젝트 코드는 github에서 확인할 수 있습니다.

Go 언어를 위한 IPython과 유사한 대화형 프로그래밍 인터페이스

본 프로젝트에는 프로그램 운영의 보안을 보장하기 위해 프런트엔드와 컨테이너화된 백엔드 샌드박스가 포함되어 있습니다.

그러나 go Playground에는 몇 가지 제한 사항이 있습니다.

사용자 정의 패키지를 가져올 수 없습니다.

편집기가 약하고 구문 강조가 없으며 프롬프트가 표시되지 않고 실행 취소가 불가능합니다...

Ipython처럼 세분화된 상호작용이 없습니다

XIAM 버전의 Go Playground

Go 언어를 위한 IPython과 유사한 대화형 프로그래밍 인터페이스

XIAM의 바둑 놀이터는 공식 놀이터를 기반으로 합니다. 만들어졌습니다. 포함 사항:

사용자 정의 패키지 지원

안전하지 않은 샌드박스 지원, 사용자가 네트워크, 파일 시스템 등에 액세스할 수 있음

프런트 엔드 컨테이너화

커스텀 패키지를 사용하려면 해당 샌드박스

FROM xiam/go-playground/unsafebox

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

ENTRYPOINT ["/go/bin/sandbox"]

의 Dockerfile을 수정한 후 컨테이너 이미지를 다시 빌드해야 합니다.

사용자 정의 패키지 문제를 해결했지만 편집기는 여전히 너무 약하고 IPython의 분할된 상호 작용이 부족합니다. 더 좋은 게 있나요?

GopherNotes

Go 언어를 위한 IPython과 유사한 대화형 프로그래밍 인터페이스

Jupyter Notebook은 실제로 다양한 언어 코어를 지원할 수 있습니다. GopherNotes 프로젝트는 Jupyter용 Go 언어 코어를 제공합니다.

이 프로젝트는 더 이상 유지 관리되지 않는 Gore(igo 커널 기반)에서 영감을 받았습니다.

Go 언어를 위한 IPython과 유사한 대화형 프로그래밍 인터페이스

위는 Gophernotes를 사용하여 테스트한 내용입니다. 루프를 돌릴 때 [7]에 한 줄로 쓰면 괜찮습니다. 그런데 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


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:Python 예외 처리다음 기사:Python 예외 처리