「搭建编程环境」总是一件让人头大的事情。从新手到是熟手、从业余玩家到专业人员,概莫能外。只不过,大家原因可能各不相同:
- 对于学习编程的新手: 虽然现在许多语言已经提供了官方的自动化安装包,但仍然需要掌握一些基础知识(例如终端和包管理的基本操作)才能上手,而往往是这「最后一公里」把人挡在了门外;
- 对于演示、尝鲜的临时需求: 为了短暂的使用,需要做大量的事前准备和事后清理,显得非常不经济(最近层出不穷的 AI 开源项目相信让大家对此深有体会);
- 对于专职人员: 即使靠开发吃饭,除了 bug 之外,最耽误时间的事情之一也莫过于搭建开发环境(倘若让我再新机子上重新配置一次终端,我宁愿选择默认设置)。
好在,随着「云原生」开发的普及、容器化技术的成熟,市面上出现了不少「在线开发环境」类产品。 1 简单说,这些服务都旨在提供一个开箱即用、干净且标准的开发环境,不受操作系统或设备的限制,有的还会提供在线协作、环境分享、数据库集成等附加功能。你可以将它们当作是沙盒、试验田或游乐场,免去枯燥的环境搭建步骤,把更多精力集中在写代码和实现功能上。
本文中,我将结合自己的使用经验,介绍适用于不同场景的主流在线开发环境,并对它们的优劣进行比较,希望能帮你选出一个好用的学习和测试工具。
Replit:独树一帜的全能选手
如果要找一个目前最具代表性、最适合新手尝试的「在线开发环境」,我会优先推荐 Replit 。
与其他在线开发环境相比,Replit 的优点包括:
- 支持语言齐全:Replit 支持大约 50 多种编程语言,并且内置各种框架模板,可以快速搭建开箱即用的编程环境。
- 操作自由度高:Replit 并不是只提供编辑器和运行环境,而是更接近于完整的虚拟机,你可以在里面运行各类常用 Linux 命令。虽然 Replit 免费方案的容器配置仅有 0.5 个虚拟 CPU、512MB 内存以及 1GB 的存储,但对于新手练习或轻量项目而言已经足够了。
- 附带功能丰富:Replit 还提供了一系列便利开发和测试的功能,比如自带一个免费的存储数据库、集成 Git、可设置单元测试、支持多人协作等等。
- 有移动客户端:虽然大部分使用 Replit 的时候都是在浏览器,但它也同样提供了功能齐全的 iOS 和 Android 移动端 app,这在同类产品中并不多见。
Replit 的大多数基础功能都是免费的。如果你付费升级(7 美元/月起),可以让编程环境拥有更高的配置,最近新增的功能还包括类似于 GitHub Copilot 的 AI 编程助手 Ghostwriter 。
总之,对于新手,Replit 提供了一站式的编程体验,省去了前期配置的门槛;对于部分的专业开发需求,多人协作以及 AI 编程助手也比其他不少服务价格更低廉。
当然,Replit 也不是唯一的选择,下面就来分类介绍市面上其他各具特色的在线开发环境。
「前端娱乐圈」的最爱
前端是开发工具最「卷」的领域之一,这种「卷」也延伸到了在线开发环境;在网页里开发网页,听起来就很合理。这一类别常见的在线开发环境如下表所示:
CodePen
CodePen 是我在最开始学习前端基础时就使用的。它不仅是很多教程推荐的学习前端基础的利器,同时也被很多技术文章用来演示或嵌入前端代码。
CodePen 之所以成为这些场景的优选,主要是因为它的功能专一、设计简洁。打开 CodePen 后,三个输入框就分别对应着经典的「前端三剑客」——HTML、CSS 和 JavaScript,以及一个预览界面。这样,在一个界面中就可以覆盖前端开发的基础需求;不仅创建页面的效率高,效果也是所见即所得。
在基础的编辑和预览之外,CodePen 也提供了一些便捷功能,例如 HTML 模板、CSS 预处理器、Babel 和 TypeScript 支持、代码格式化,以及自动保存等。这些功能虽然看着不复杂,但倘若是要从头在本地配置,一般总得花些时间装插件,而 CodePen 则包揽了一切,让我们只需要专注写代码即可。
CodePen 采用了免费增值的定价策略。如果想使用多人协作、项目开发界面、静态资源文件存储等高级功能,就需要开通对应的付费订阅计划(8 美元/月起)。
Glitch
Glitch 是一个设计充满青春气息的服务。与注重单页面「速成」的CodePen 相比,它对多文件编辑和管理的支持更好,因此也可以用于开发中小型项目。
但从新手入门角度而言,Glitch 提供的模板比较有限,只有纯静态页面、Node、React、Eleventy 和 SQL 等少数几种,其他模版就只能通过导入 GitHub 项目的方式来获得了,门槛相对更高一些。
此外,和 Replit 类似,Glitch 也提供了功能完整的终端环境,你可以通过命令来安装各种前端开发需要的框架和包。不过,免费账户仅提供了 512MB 的内存和 200MB 的存储,配置相比于 Replit 而言可能有些拮据,只能说勉强够用。
CodeSandbox 和 StackBlitz
CodeSandbox 是我 2022 年下半年在 YouTube 上观看前端框架教学视频时了解到的。当时,我发现许多教学视频中都出现了它的身影,并对颇有设计感的界面和独特的字体选用产生了深刻印象(按:这款字体名为 MonoLisa ,个人完全版售价约 1400 元)。
如果你是 VSCode 的用户,看到 CodeSandbox 可能觉得非常眼熟,这是因为它的界面和编辑器就是基于 VSCode 修改而来的。因此,VSCode 很多受欢迎的特性,例如 Command Palette 和丰富的快捷键等,在 CodeSandbox 中都可以用到。
除了美观的设计,CodeSandbox 还提供丰富的模板,以及在线协作、实时分享与预览、GitHub 集成、快速部署等功能。默认情况下 CodeSandbox 不提供终端选项,但可以通过点击界面中的 Docker 图标切换到「Cloud Sandbox」模式,这就是一个完整的容器了。
CodeSandbox 也被很多文档站点作为嵌入式演示环境。例如,知名的 JavaScript 框架 React 最新的官方文档就是直接嵌入了 CodeSandbox,方便学习者一边阅读文档,一边查阅和测试示例代码。
CodeSandbox 的免费方案比较慷慨,具有 2 vCPUs、2GB 内存以及 6GB 存储,基本上可以比肩轻量级服务器;升级成 Pro 账户后上述配置会进一步翻番。
不过既然说到了 CodeSandbox,那也就不得不提到另外一个与之十分类似的竞品—— StackBlitz 。它和 CodeSandbox 一样,也是基于 VSCode 的代码修改开发的,功能上也难分伯仲。
但是,StackBlitz 的一个比较优势在于模板更多更全,除了大家都有的前端模板之外,还专门提供了「后端」和「全栈」等模板,对于学习或快速开发更加容易。
此外,StackBlitz 在架构上也有独特之处。前面介绍的 CodeSandbox 等服务的容器都是运行在远程,而 StackBlitz 支持 WebContainers 技术:基于浏览器自带的 Node.js 运行时、WASM 以及 Service Workers API 而构建,相当于把本地浏览器当做容器。因此,使用 StackBlitz 在构建开发环境时会更快并且网络延迟更低,在突然断网的情况下依旧能继续编写代码并实时预览,这是其他很多服务所无法媲美的。
StackBlitz 也有着自己的付费计划,不过付费点比较单一,就是允许创建非公开项目、解除文件上传限制,以及可以使用 Codeflow(与 GitHub 无缝集成的测试功能)等。
最后,CodeSandbox 和 StackBlitz 都支持 iOS 版移动客户端,对于 iOS 荒芜的开发生态可谓非常实用。
数据科学专场:在线 Jupyter Notebook 服务
但凡接触数据科学,不可能绕过的一个软件就是 Jupyter Notebook。它将图文笔记和可即时运行的 Python 代码块结合在一起,非常适合教学演示和开发测试。最近 GPT 等 AI 项目的火热,也让 Notebook 越来越多走进数据科学圈外视野,成为大语言模型开发测试的事实标准。
在线开发环境中,也有很多专门提供 Jupyter Notebook 托管和运行的服务,常见选项如下表所示:
Google Colab
出自大厂 Google 之手的 Colab 是最为主流的在线 Jupyter Notebook 服务之一,也是最近各大 AI 模型文档中的常客。
Google Colab 为每个用户提供了 2 核 CPU、12GB 内存的基本配置。背靠自家 Google Drive,Colab 可以直接与其共用一套存储空间。免费账户还可以使用基本的 GPU 和 TPU 算力;虽然时限不长,但对于新手学习足矣。而如果你有预算,Google 庞大的云计算资源还能充分满足对性能的各种要求。
JetBrains Datalore
大多数程序员对 JetBrains 并不陌生:这家来自于捷克的 IDE 开发商创造了一系列经典 IDE,比如 Intellij IDEA、PyCharm、WebStorm 等,而且出品质量都很稳定。 Datalore 就是出自于 JetBrains 之手的在线 Notebook。
Datalore 的特色是支持多种数据源,接入之后即可使用内置的 SQL 编辑器完成数据操作。并且得益于 Jetbrains 在 IDE 方面的积淀,即便是裸写 SQL 字符串,也能享受到 SQL 语法高亮、检查、补全等 JetBrains 标志性的功能。
Datalore 为免费账户提供了每个月 120 小时的使用时长(不含 GPU)、同时运行 2 个 Notebook 但在不使用的情况下将于 6 小时候之后自动停止运行,并且 SQL 单元仅能试用 30 天。对于刚入门数据科学的新手而言,足够学习与使用;但是对于想要使用 GPU、无限制使用内置的 SQL 功能、或是拥有更多使用时长的用户可以考虑付费升级至 Pro 账户。当然,正如 Jetbrains 其他产品一样,有条件的在校学生可以申请教育版。
Deepnote
Deepnote 是我目前见过的界面设计最具现代感的在线 Notebook,虽然主打团队的数据协作,但个人使用也很合适。
Deepnote 和 Datalore 一样,都集成了多种数据源且内置 SQL 编辑器,可以在一个 Notebook 中完成数据探索任务;相比于 Datalore 而言,Deepnote 还专门为图表进行优化,即我们无需通过代码调用某个可视化库以及编写对应的图表细节,只需要通过类似于在 Excel 上点击的方式就可以生成漂亮的对应数据的可视化图表:
除此之外,Deepnote 还允许你自定义开发环境,比如更换不同的资源配置、选择对应版本的 Python 解释器,甚至是基于某个 Docker 镜像来生成等。
Deepnote 为免费账户提供了基础的 2vCPUs 以及 5GB 内存的配置,可以创建 5 个项目和 3 个编辑器,对于个人学习使用而言无疑是绰绰有余;而团队版账户虽然费用较高,但能享受所有功能并且不限制成员数量,甚至如果你还是在校师生,也可以免费使用。
Kaggle Notebook
Kaggle 是一个老牌的数据竞赛平台,在上面你可以浏览到各式各样的数据竞赛信息,以及竞赛过程中提交的代码。不过,对于非竞赛用途,Kaggle 也是一个不错的 Notebook 运行环境,上面大量的数据科学教学资源、各式各样的数据集和模型也对入门机器学习或深度学习的新手学习有益。
Kaggle 的另一优势在于,它为免费账户的 Notebook 提供了 豪华 的资源配置:4 核 CPU、32GB 内存、20GB 的存储以及每周拥有 30 小时的 NVIDIA Tesla P100 GPU 使用时长。和数据打交道的人都知道,能用上大内存无疑是有如神助,不用担心一次性加载大数据集时内存爆栈的戏码;足够慷慨且有升级选项的 GPU 和 TPU,对于数据科学的各个方面都是绰绰有余。
基于容器的通用在线开发环境
前面介绍的服务主要是领域特定的。但如果面对更综合的项目开发需求,可能还需要更多的自定义空间,获得接近于一台真实服务器的开发环境,这就需要用到基于容器的通用在线开发环境。
GitHub Codespace
要说目前开发者最活跃的平台莫过于 GitHub,它推出的 Codespace 服务也因此具有最大的潜在受众群体。如果你的工作流以 GitHub 为中心,那么使用 Codespace 可以作为补齐你完整云上体验的最后一块拼图。
Codespace 与 GitHub 仓库页面深度绑定,在任何项目主页点击 Code 按钮,找到 Codespace 选项卡,然后点击Create codespace on [branch] 即可。
取决于网络速度和项目大小,构建开发环境容器的时间长短各异。创建完成后,就会看到和 VSCode 如出一辙的界面。如果在本地 VSCode 上打开了 GitHub 配置同步功能,还会自动开始设置同步和插件安装。
Codespace 提供每个月 120 小时的免费使用时间和 15GB 存储,性能则是 2 核 CPU 和 4GB 内存。而 GitHub Pro 用户则提升至 180 小时和 20GB 存储。如果需要更高性能,GitHub 也提供了多档资源配置任君选择;如果你拥有「钞能力」,直接将配置拉满到 32 核 CPU 以及 64GB 内存也未尝不可。
Codespace 支持远程连接,如果你不想用浏览器,也可以通过在本地 VSCode 安装插件来接入 Codepsace,在保持环境干净的同时保留个人开发配置与习惯。
Gitpod
Gitpod 是一个开源的 Kubernetes 应用,与 GitHub 不同,它不依附于特定的代码托管平台,还可以接入 GitLab、Bitbucket 等其他服务。当然,代价就是需要单独进行授权、连接仓库的操作,不像 Codespace 那样即点即用。
Gitpod 的免费方案也比较慷慨: 每个月 都有 50 个小时的容器使用时间以及 500 信用额度(credits,用于购买配置升级),对于短期学习或临时使用来说完全足够。即使是中小项目的开发,用 Gitpod 也未尝不可,因为它所提供的标准资源配置就十分强悍:4 核 CPU、8GB RAM 以及 30 GB 的存储空间起步(每小时 0.36 美元或 10 credits),也可翻倍升级至最高规格;并且还是按量付费,随用随取十分省心。
同时,在 Gitpod 创建容器后,你也可以不使用它所提供的 codepsace,必要时可以连接到你本地的 VSCode 或 JetBrains 家的 IDE 进行远程开发。
总而言之,Gitpod 提供了灵活的付费方式且配置给力,但由于 Gitpod 支持的登录方式比较少,也仅支持从项目仓库中构建环境,而不支持创建像空模板之类环境,所以如果你不熟悉上述提到的代码托管平台但又想使用 Gitpod,那就需要事先简单了解一下并创建个人仓库。
Cloud Studio
Cloud Studio 是腾讯云旗下一站式 DevOps 研发管理平台 CODING 中所孵化的云端开发工具,可以与 CODING 平台集成使用,也可以连接其他平台使用。相比于前两者而言,Cloud Studio 可能比较贴合本土开发者,且付费方式更为友好。
Cloud Studio 支持开箱即用,但模板不多,仅有比较主流的 Python、Java、JavaScript、Go 等,但可自定义。
性能方面,Cloud Studio 为免费账户提供每月 1000 分钟的使用时长,基础的资源配置为 2 核 CPU、4GB 内存以及 8GB SSD 存储,基本能够满足短期学习或小型项目开发。如果需要升级,有按量付费与包月付费两种灵活的付费方式,最高配置和 Gitpod 类似。