Hello 算法编程环境安装指南:配置 VS Code 与十余种语言的算法代码运行环境
《Hello 算法》是一本动画图解、源代码可一键运行的数据结构与算法教程,仓库中收录了 Python、Java、C++、C、C#、Go、Swift、Rust、Ruby、Kotlin、JavaScript、TypeScript、Dart 等十余门语言的完整示例代码(位于 codes/ 目录)。本文基于本书附录 编程环境安装文档 编写,系统讲解如何安装 IDE 与各语言运行环境、如何验证环境可用、以及如何用 Docker 一键容器化,帮助读者从零搭建可运行全书算法示例的本地开发环境。
一、安装 IDE:推荐开源轻量的 VS Code
文档推荐开源、轻量的 VS Code 作为本地集成开发环境(IDE)。从 VS Code 官网根据操作系统选择相应版本下载并安装即可。
VS Code 拥有强大的扩展包生态系统,支持大多数编程语言的运行和调试。以 Python 为例:在扩展市场(快捷键 Ctrl/Cmd + Shift + X)中搜索并安装 "Python Extension Pack" 扩展包之后,即可进行 Python 代码的语法高亮、补全与调试。这也是本书官方在线代码运行所依赖的工作方式——每种语言的示例文件都能被对应的语言扩展正确识别。
二、安装各语言环境
本章完整继承原文档的安装步骤,并结合仓库中各语言代码目录(codes/<语言>/)的结构补充版本要求与验证方式。各语言环境的最低版本约束均可从仓库的构建配置中得到印证。
Python 环境
- 下载并安装 Miniconda3,需要 Python 3.10 或更新版本。
- 在 VS Code 的插件市场中搜索
python,安装 Python Extension Pack。 - (可选)在命令行输入
pip install black,安装代码格式化工具。
仓库印证:文档站部署用的根 Dockerfile 基于 python:3.10.0-alpine 镜像,代码容器 codes/Dockerfile 中同样显式安装 python3.10 并通过 update-alternatives 将其注册为默认 python 命令,可见 3.10 是本书代码实际运行的基准版本。
C/C++ 环境
- Windows 系统需要安装 MinGW(需按官方教程将其加入
PATH);macOS 自带 Clang,无须安装。 - 在 VS Code 的插件市场中搜索
c++,安装 C/C++ Extension Pack。 - (可选)打开 Settings 页面,搜索
Clang_format_fallback Style代码格式化选项,设置为{ BasedOnStyle: Microsoft, BreakBeforeBraces: Attach }。
仓库印证:C 与 C++ 代码分别位于 codes/c 与 codes/cpp,均采用 CMake 构建。根 CMakeLists.txt 要求 CMake ≥ 3.10、CMAKE_C_STANDARD 为 C11,并通过 add_subdirectory 挂载 chapter_array_and_linkedlist、chapter_sorting、chapter_dynamic_programming 等全部 13 个章节子目录。
Java 环境
- 下载并安装 OpenJDK,版本需满足大于 JDK 9(Java 代码中使用了
List.of、var等新特性)。 - 在 VS Code 的插件市场中搜索
java,安装 Extension Pack for Java。
仓库印证:Java 示例位于 codes/java,按包名组织(如 bubble_sort.java 声明 package chapter_sorting;),每个章节目录对应一个包,这与 JDK 的目录-包名对应规则一致。
C# 环境
- 下载并安装 .NET 8.0(.NET SDK 8.0 及以上)。
- 在 VS Code 的插件市场中搜索
C# Dev Kit,安装 C# Dev Kit。 - 也可使用 Visual Studio 作为 IDE。
仓库印证:hello-algo.csproj 中 <TargetFramework>net8.0</TargetFramework> 明确了目标框架为 .NET 8.0,并引用了 NUnit 3.14.0 作为测试框架;<Nullable>enable</Nullable> 与 <ImplicitUsings>enable</ImplicitUsings> 说明代码启用了可空引用类型与隐式 using,这是 .NET 8 项目模板的默认选项。
Go 环境
- 下载并安装 Go 工具链(golang.org/dl 按操作系统安装)。
- 在 VS Code 的插件市场中搜索
go,安装 Go 扩展。 - 按快捷键
Ctrl + Shift + P呼出命令栏,输入go,选择Go: Install/Update Tools,全部勾选并安装即可(安装gopls、dlv等配套工具)。
仓库印证:go.mod 声明 go 1.19 与模块名 github.com/krahets/hello-algo,即 Go 1.19 及以上版本可运行全部代码;Go 代码目录还包含各章节的 _test.go 单元测试文件(如 codes/go 下每章约 2 倍于源文件的测试文件)。
Swift 环境
- 下载并安装 Swift(swift.org/download 提供 macOS 与 Linux 版本)。
- 在 VS Code 的插件市场中搜索
swift,安装 Swift for Visual Studio Code。
仓库印证:Package.swift 声明 swift-tools-version: 5.7,即为每个算法示例定义了独立的可执行 target(如 iteration、bubble_sort、edit_distance),并依赖 apple/swift-collections 包提供 HeapModule——这意味着首次构建会自动拉取外部依赖,需要网络可用。
JavaScript 环境
- 下载并安装 Node.js(含 npm)。
- (可选)在 VS Code 的插件市场中搜索
Prettier,安装代码格式化工具。
仓库印证:JavaScript 代码位于 codes/javascript,并提供 test_all.js 批量运行脚本——它基于 JSR 的 @std 标准库(expandGlob、颜色输出)遍历 chapter_*/*.js 逐个执行,脚本内还使用了 import ... from 'jsr:@std/...' 语法,可推断运行时需要较新的 Node.js 版本或 node --experimental-jsr 支持。
TypeScript 环境
- 同 JavaScript 环境:安装 Node.js。
- 安装 TypeScript Execute(
tsx)运行器,用于直接执行.ts文件而无需先编译。 - 在 VS Code 的插件市场中搜索
typescript,安装 Pretty TypeScript Errors 扩展,美化类型报错信息。
仓库印证:package.json 定义了 typescript ^5.9.3 与 @types/node 作为开发依赖,scripts.check 使用 tsc 做类型检查;代码位于 codes/typescript,modules/ 目录存放跨章节复用模块。
Dart 环境
- 下载并安装 Dart SDK(dart.dev/get-dart)。
- 在 VS Code 的插件市场中搜索
dart,安装 Dart 扩展。
仓库印证:Dart 代码位于 codes/dart,每个算法示例是独立的 .dart 文件,直接以 dart run <文件> 执行即可。
Rust 环境
- 下载并安装 Rust 工具链(通过 rustup 安装
rustc与cargo)。 - 在 VS Code 的插件市场中搜索
rust,安装 rust-analyzer 扩展。
仓库印证:Cargo.toml 使用 edition 2021,依赖 rand 0.8.5,并把每个算法文件注册为独立的 [[bin]] 可执行目标,文件内直接标注了运行命令,例如:
cargo run --bin bubble_sort
cargo run --bin edit_distance
cargo run --bin n_queens
三、验证环境:运行示例代码
环境安装完成后,最直接的验证方式是从仓库 codes/ 目录中挑选对应语言的章节代码运行。各语言的运行方式汇总如下(命令均需在相应语言代码根目录下执行):
| 语言 | 代码目录 | 运行方式 |
|---|---|---|
| Python | codes/python | python chapter_sorting/bubble_sort.py,或 python test_all.py 全量回归 |
| Java | codes/java | javac chapter_sorting/bubble_sort.java && java chapter_sorting.bubble_sort |
| C / C++ | codes/c / codes/cpp | cmake -B build && cmake --build build 后运行可执行文件 |
| C# | codes/csharp | dotnet run(整个解决方案作为单个 Exe 项目) |
| Go | codes/go | go run ./chapter_sorting/... 或 go test ./... 跑单元测试 |
| Rust | codes/rust | cargo run --bin <示例名>(bin 名见 Cargo.toml) |
| Swift | codes/swift | swift run <target 名>(target 名见 Package.swift) |
| JavaScript | codes/javascript | node chapter_sorting/bubble_sort.js,或 node test_all.js |
| TypeScript | codes/typescript | tsx chapter_sorting/bubble_sort.ts,类型检查用 npm run check |
| Kotlin / Dart / Ruby | codes/kotlin / codes/dart / codes/ruby | kotlinc/dart run/ruby <文件> 直接执行 |
| Zig | codes/zig | zig run main.zig |
其中三个语言的仓库自带"一键全量回归"脚本,非常适合环境体检:
- Python 的 test_all.py:用
glob找出chapter_*/*.py,通过subprocess逐个以python执行,收集退出码非零文件的 stderr,最后汇总输出Tested N files / Found exception in M files,有失败即抛RuntimeError; - JavaScript 的 test_all.js 与 Ruby 的 test_all.rb:原理相同,分别用 JSR 的
expandGlob和 Ruby 的Open3.capture3遍历chapter_*目录批量执行并统计错误。
例如验证 C 环境,可在 codes/c 目录下执行:
cmake -B build
cmake --build build
根 CMakeLists.txt 会按 add_subdirectory 顺序编译全部 13 个章节,任何一个编译失败都能立刻定位到具体章节目录。
四、可选方案:用 Docker 容器化语言环境
如果不想在宿主机上逐一安装各语言工具链,仓库在 codes/ 目录下提供了一套代码容器方案。
codes/Dockerfile 基于 Ubuntu 镜像,通过构建参数 LANGS 按需安装语言环境,其 case 分支已内置:
python:安装python3.10并注册为默认python;cpp:安装g++与gdb(后者支持调试);java:安装openjdk-17-jdk;csharp:接入 Microsoft apt 源后安装dotnet-sdk-8.0;- 其他语言:输出警告
Warning: No installation workflow for $LANG。
配套的 codes/docker-compose.yml 中通过 build.args.LANGS: "python cpp java csharp" 声明要预装的语言列表(以空格分隔,可按需增删)。在 codes/ 目录下执行:
docker-compose up -d # 构建镜像并启动容器
docker-compose exec hello-algo-code bash # 进入容器,代码已拷贝至 /codes
docker-compose down # 删除部署
容器内 WORKDIR /codes 已 COPY ./ ./ 全部代码,进入后按上表方式运行各语言示例即可。
需要注意的是仓库根目录另有一组 Dockerfile 与 docker-compose.yml,二者用途不同:根目录镜像基于 python:3.10.0-alpine,安装 mkdocs-material==9.5.5 与 mkdocs-glightbox,分别用简体中文、繁中、英文、日文、俄文五套 mkdocs.yml 构建文档站点,并通过 python -m http.server 8000 在 8000 端口提供服务;contribution 文档 中提到的 docker-compose up -d 部署的是这套文档站,而非代码环境。
五、小结
- IDE 统一推荐 VS Code,按语言安装对应扩展包(Python Extension Pack、C/C++、Java、Go、rust-analyzer、C# Dev Kit 等)即可获得调试与补全能力;
- 各语言最低版本要求:Python ≥ 3.10、JDK > 9、.NET 8.0 SDK、Go 1.19、CMake ≥ 3.10(C11)、Rust edition 2021、Swift tools 5.7、TypeScript 5.9 等,均可在仓库对应构建文件中查证;
- 环境搭建后优先用各语言自带的
test_all脚本或单章示例做回归验证; - 宿主机环境不理想时,可用 codes/docker-compose.yml 通过
LANGS参数按需拉起多语言容器。
完成以上步骤后,本书所有章节的算法代码即可在本地逐条运行、调试,进入正文各章(如 数组与链表、排序)边读动画图解、边跑代码的学习流程。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0629
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00

