Go语言的类IPython 交互式编程界面
来源:互联网 发布:淘宝ulzzang什么意思 编辑:程序博客网 时间:2024/06/06 09:45
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
然后重新构建容器的Image就好了。
虽然我们解决了自定义包的问题,但是,这个编辑器还是太弱了,而且也缺乏IPython的分段式交互。有没有更好的呢?
GopherNotes
Jupyter的Notebook其实可以支持不同的语言内核, GopherNotes项目为Jupyter提供了Go语言的内核。
该项目受到已经不在维护的Gore (基于igo内核) 的启发 。
以上是我使用Gophernotes的一次测试,当我运行一个循环的时候,如果写成一行,In[7],一切OK。到但是当我写成三行后,In[8],就无法输出正确的结果了。
后台给出的错误是:
我没有搞明白为什么,报了个bug,如果有搞明白的小伙伴请告诉我。
至此,虽然没有找到一个好用的,但是我对Gophernotes抱以很大的希望,希望它能够早日解决一些基本的问题。
- Go语言的类IPython 交互式编程界面
- 交互式编程-IPython
- Ipython:交互式的Python命令行
- Go logo Google的编程语言 Go
- IPython 交互式调试器
- IPython+交互式环境常用命令
- R语言-交互式界面Rcmdr-安装方法
- 使用IPython增强交互式体验
- 使用IPython增强交互式体验
- Google的Go编程语言源代码(Windows)
- 编程语言 Google Go 的初级读本
- Go语言简单的TCP编程
- Go是设计糟糕的编程语言
- 2017 年 Go 语言编程的发展
- Goolge Go编程语言
- Go编程语言简介
- Go 编程语言规范
- Go编程语言简介
- python(1)
- [leetcode]75. Sort Colors(Java)
- 常量指针和指针常量的区别详解
- ios 基础数据持久化存储
- 脚本实现U盘自动挂载(linux平台)
- Go语言的类IPython 交互式编程界面
- butterknife详细使用及混淆打包和新版本(8.6.0)的使用方法
- Mybatis 多表关联查询,快速添加返回类型
- 全面介绍Windows内存管理机制及C++内存分配实例(三):虚拟内存
- 地址栏搜索参数转为对象
- 工业现场相机坐标系和机械手坐标系的标定(1)-相机和机械手分离的情况
- 音频的录制逻辑(外部麦克风)
- 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
- 一道据说是苹果的面试题