Skip to content

Commit 7f64541

Browse files
committed
dev/language: Split and reorg
1 parent 62fe171 commit 7f64541

File tree

7 files changed

+199
-164
lines changed

7 files changed

+199
-164
lines changed

docs/dev/language/cxx.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
icon: simple/cplusplus
3+
---
4+
5+
# C/C++ 与构建工具
6+
7+
!!! note "主要作者"
8+
9+
[@xiao-h1024][xiao-h1024]
10+
11+
!!! warning "本文编写中"
12+
13+
!!! comment "适用范围"
14+
15+
C/C++ 的适用范围非常广泛,几乎可以适用于计算机的各种领域,通常用于性能要求较高或是资源受限、贴近底层的地方,比如操作系统内核、游戏引擎、高频量化交易、嵌入式开发等
16+
17+
!!! note "特点"
18+
19+
- 高性能:编译为机器码,没有额外开销
20+
- 手动内存管理:与一些自带 GC 的语言不同,C/C++ 要求开发者自行管理内存
21+
- 生态分散:C/C++ 并没有官方的包管理器,生态较为分散,现有的包管理器、构建工具并不完善
22+
23+
参考资料:
24+
25+
- [Linux 101/Ch07](https://101.lug.ustc.edu.cn/Ch07/#c)
26+
- [C++ Reference](https://en.cppreference.com/w/)
27+
- [CppCon](https://cppcon.org/)
28+
- [Modern C++ Programming](https://federico-busato.github.io/Modern-CPP-Programming/)
29+
30+
常用工具:
31+
32+
- [CMake](https://cmake.org/): 目前最流行的跨平台 C/C++ 构建系统
33+
- [Meson](https://mesonbuild.com): 一种开源构建系统,比 CMake 更加用户友好
34+
- [Xmake](https://xmake.io): 现代化的 C/C++ 构建工具,拥有快速构建、生成工程文件、包管理等强大功能,同时轻量易上手
35+
- [Vcpkg](https://vcpkg.io): 微软开发的免费开源 C/C++ 包管理器,可以跨平台,能够与 CMake 等构建工具协作
36+
- [Conan](https://conan.io/): 另一个 C/C++ 的包管理器,比 Vcpkg 更方便定制
37+
38+
Style Guide:
39+
40+
- [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html)
41+
42+
!!! comment "@xiao-h1024: 关于 C/C++ 生态的吐槽"
43+
44+
C/C++ 的生态非常分散且混乱,你可以看到各种各样的构建工具,每个都声称自己解决了先前构建工具的问题,然而现实是各有各的坑点,生态还是那样混乱。想要把第三方库顺利集成到自己的项目中,还要跨平台,解决构建问题的时间都够写好多代码了,这可真是噩梦。所以还得是 Rust(逃

docs/dev/language/frontend.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
icon: simple/html5
3+
---
4+
5+
# 前端简介
6+
7+
!!! note "主要作者"
8+
9+
[@tiankaima][tiankaima]
10+
11+
!!! warning "本文编写中"
12+
13+
!!! comment "适用范围"
14+
15+
HTML/CSS/JavaScript 分别负责网页的结构、样式和交互。得益于 NodeJS 等技术的发展,JavaScript 不必受限在浏览器中运行,应用场景更加广泛。
16+
17+
使用场景:Web 开发、跨平台应用开发等。
18+
19+
!!! note "特点"
20+
21+
- 较完善的社区生态:有大量的库、脚手架、模板等。
22+
- JavaScript 存在太多语言特性的问题,例如 [equality](https://dorey.github.io/JavaScript-Equality-Table/), [this](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/this) 等。
23+
24+
参考资料:
25+
26+
- [MDN Web Docs](https://developer.mozilla.org/zh-CN/docs/Web): 百科全书
27+
28+
常用工具:
29+
30+
- 作为 JavaScript 的替代品,TypeScript 提供了静态类型检查、更好的 OOP 支持,范型、装饰器,更好的 ECMAScript 特性支持
31+
- 伴随着这些特性,一般而言,IDE 支持也更加友好。
32+
- TypeScript 一般作为 npm 脚手架使用,在编译期转为无类型检查的 JavaScript。
33+
- SCSS: 一个 CSS 预处理器,提供了变量、嵌套、混合等功能,可以提高 CSS 的可维护性。
34+
- Webpack: 一个模块打包工具,可以将多个 JavaScript 文件打包成一个文件,提高页面加载速度。
35+
36+
常用框架:
37+
38+
- 前端开发
39+
- [React](https://react.dev/): 一个用于构建用户界面的 JavaScript 库
40+
- [Vue](https://cn.vuejs.org/): 一套用于构建用户界面的渐进式框架
41+
- 跨平台应用开发
42+
- [Electron](https://www.electronjs.org/): 使用 Web 技术构建跨平台桌面应用
43+
- [React Native](https://reactnative.dev/): 使用 React 构建原生应用,主要用于移动端开发

docs/dev/language/golang.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
icon: simple/go
3+
---
4+
5+
# Golang
6+
7+
!!! warning "本文编写中"

docs/dev/language/index.md

Lines changed: 16 additions & 164 deletions
Original file line numberDiff line numberDiff line change
@@ -4,178 +4,30 @@ icon: material/xml
44

55
# 编程语言概览
66

7-
!!! note "主要作者"
8-
9-
[@tiankaima][tiankaima]、[@xiao-h1024][xiao-h1024]
10-
11-
!!! warning "本文编写中"
7+
本部分介绍我们开发时常用的编程语言,以及常用工具、实用技巧等信息。
128

139
!!! note
1410

15-
现代开发语言种类丰富、内容繁多; 部分语言也存在不少的历史遗留问题,我们无法在一篇文档中涵盖完全。
16-
本文将简要介绍部分编程语言的常用工具、实用技巧等。
11+
现代开发语言种类丰富、内容繁多;部分语言也存在不少的历史遗留问题,我们无法在一篇文档中涵盖完全。
1712

1813
阅读本文档后,您应当能够知晓:
1914

20-
- 语言的适用范围 (为了实现这个任务,我应该选用哪种语言)
21-
- 语言的特点 (特性、发展历程、社区活跃度等)
22-
- 如何学习这种语言 (入门文档链接、学习资源等)
23-
- 各个语言的常用工具 (如何使用这种语言进行开发)
24-
25-
我们也会在文章的[末尾](#style-guide)给出一些编程风格指南,帮助您更好、更规范地使用这些语言。
26-
27-
## Shell Script
28-
29-
!!! comment "适用范围"
30-
31-
Shell 也许是与 Linux 打交道 (日常维护、安装等) 最直接的方式。
32-
在此基础上逐渐发展出了需要使用变量、控制流的 Shell Script。
33-
34-
<!-- TODO: require revision -->
35-
36-
Shell Script 的适用范围:**自动化、不涉及核心业务的流程** (例如周期性执行的任务、编译、安装脚本) 等,通过 Shell 可以很方便的调用其他命令、批量处理文件/目录等,但是不适合编写大型程序。
37-
38-
!!! note "特点"
39-
40-
- 作为脚本语言,Shell Script 只提供基本的变量、控制流、函数等,几乎没有面向对象的特性。
41-
- Shell Script 适合处理文本、调用系统命令等,但是不适合处理复杂的数据结构。
42-
- 真正意义上的开箱即用,无需额外安装,因此常用在安装、编译等场景。
43-
44-
参考资料:
45-
46-
- [Linux 101/Ch06](https://101.lug.ustc.edu.cn/Ch06/)
47-
- [The Missing Semester of Your CS Education/shell-tools](https://missing-semester-cn.github.io/2020/shell-tools/)
48-
49-
作为补充,可以查阅:
50-
51-
- [jq](https://jqlang.github.io/jq/): 用于处理 JSON 数据
52-
- [yq](https://github.com/mikefarah/yq): 用于处理 YAML 数据
53-
54-
??? comment "Shell tools"
55-
56-
一个常见的提升日常效率的办法是: 使用 oh-my-zsh、fzf、tmux 等工具。
57-
58-
## Python
59-
60-
!!! comment "适用范围"
61-
62-
Python 的适用范围更加广泛, 常用在 Web 开发, 以及各种科学计算、数据处理、机器学习等领域。
63-
64-
!!! note "特点"
65-
66-
- 社区生态完善,有大量的第三方库,例如 Django、Flask、numpy、pandas 等。
67-
- 语法简洁,易于学习,适合初学者。
68-
- 「年长但恰逢新春」, 即没有 C++ 那样的历史包袱,也没有新型语言那样的不稳定性、不成熟性。
69-
- 类型检查不严格,但是也有完整的类型检查工具 (mypy)。
70-
71-
参考资料:
72-
73-
- [Linux 101/Ch07](https://101.lug.ustc.edu.cn/Ch07/#py)
74-
- [Python 官方文档](https://docs.python.org/zh-cn/3/)
75-
76-
在掌握基础的工具链、语法之后,可以从下面几个方面进一步学习:
77-
78-
- [FastAPI](https://fastapi.tiangolo.com/): 尝试写一个简单的 API 服务
79-
- [Python Data Science Handbook](https://jakevdp.github.io/PythonDataScienceHandbook/): 了解 Python 在数据科学领域的应用
80-
- [PyTorch](https://pytorch.org/tutorials/): 了解 PyTorch 的使用
81-
- [TensorFlow](https://tensorflow.google.cn/tutorials?hl=zh-cn): 了解 TensorFlow 的使用
82-
- [Python Cookbook](https://python3-cookbook.readthedocs.io/zh_CN/latest/): 深入了解 Python 的一些特性
83-
84-
在这些过程中,Python 语言本身可能不会是一个较大的障碍,但是安装、配置等方面可能存在一点障碍,以下是一些常见的问题,我们提前整理在这里:
85-
86-
- [Python 3.12 importlib](https://docs.python.org/3/whatsnew/3.12.html#importlib): 导致了部分库历史版本的兼容问题 (例如 `numpy~=1.23`), 如果需要对应包的历史版本,可能需要降级 Python (或者指定 `python310` / 使用 conda 等)
87-
- [Poetry Pytorch](https://github.com/python-poetry/poetry/issues/4231): Poetry 与 Pytorch 的兼容问题,可能需要手动安装 Pytorch
88-
89-
## Golang
90-
91-
<!-- 不熟,谁来写 -->
15+
- 语言的适用范围(为了实现这个任务,我应该选用哪种语言)
16+
- 语言的特点(特性、发展历程、社区活跃度等)
17+
- 如何学习这种语言(入门文档链接、学习资源等)
18+
- 各个语言的常用工具(如何使用这种语言进行开发)
9219

93-
## HTML/CSS/JavaScript
20+
对部分编程语言,我们也会给出一些编程风格指南,帮助您更好、更规范地使用这些语言。
9421

95-
!!! comment "适用范围"
22+
<!-- !!! note "主要作者"
9623
97-
HTML/CSS/JavaScript 分别负责网页的结构、样式和交互。得益于 NodeJS 等技术的发展,JavaScript 不必受限在浏览器中运行,应用场景更加广泛。
98-
99-
使用场景:Web 开发、跨平台应用开发等。
100-
101-
!!! note "特点"
102-
103-
- 较完善的社区生态:有大量的库、脚手架、模板等。
104-
- JavaScript 存在太多语言特性的问题,例如 [equality](https://dorey.github.io/JavaScript-Equality-Table/), [this](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/this) 等。
105-
106-
参考资料:
107-
108-
- [MDN Web Docs](https://developer.mozilla.org/zh-CN/docs/Web): 百科全书
109-
110-
常用工具:
111-
112-
- 作为 JavaScript 的替代品,TypeScript 提供了静态类型检查、更好的 OOP 支持,范型、装饰器,更好的 ECMAScript 特性支持
113-
- 伴随着这些特性,一般而言,IDE 支持也更加友好。
114-
- TypeScript 一般作为 npm 脚手架使用,在编译期转为无类型检查的 JavaScript。
115-
- SCSS: 一个 CSS 预处理器,提供了变量、嵌套、混合等功能,可以提高 CSS 的可维护性。
116-
- Webpack: 一个模块打包工具,可以将多个 JavaScript 文件打包成一个文件,提高页面加载速度。
117-
118-
常用框架:
119-
120-
- 前端开发
121-
- [React](https://react.dev/): 一个用于构建用户界面的 JavaScript 库
122-
- [Vue](https://cn.vuejs.org/): 一套用于构建用户界面的渐进式框架
123-
- 跨平台应用开发
124-
- [Electron](https://www.electronjs.org/): 使用 Web 技术构建跨平台桌面应用
125-
- [React Native](https://reactnative.dev/): 使用 React 构建原生应用,主要用于移动端开发
126-
127-
## C/C++
128-
129-
!!! comment "适用范围"
130-
131-
C/C++ 的适用范围非常广泛,几乎可以适用于计算机的各种领域,通常用于性能要求较高或是资源受限、贴近底层的地方,比如操作系统内核、游戏引擎、高频量化交易、嵌入式开发等
132-
133-
!!! note "特点"
134-
135-
- 高性能:编译为机器码,没有额外开销
136-
- 手动内存管理:与一些自带 GC 的语言不同,C/C++ 要求开发者自行管理内存
137-
- 生态分散:C/C++ 并没有官方的包管理器,生态较为分散,现有的包管理器、构建工具并不完善
138-
139-
参考资料:
140-
141-
- [Linux 101/Ch07](https://101.lug.ustc.edu.cn/Ch07/#c)
142-
- [C++ Reference](https://en.cppreference.com/w/)
143-
- [CppCon](https://cppcon.org/)
144-
- [Modern C++ Programming](https://federico-busato.github.io/Modern-CPP-Programming/)
145-
146-
常用工具:
147-
148-
- [CMake](https://cmake.org/): 目前最流行的跨平台 C/C++ 构建系统
149-
- [Meson](https://mesonbuild.com): 一种开源构建系统,比 CMake 更加用户友好
150-
- [Xmake](https://xmake.io): 现代化的 C/C++ 构建工具,拥有快速构建、生成工程文件、包管理等强大功能,同时轻量易上手
151-
- [Vcpkg](https://vcpkg.io): 微软开发的免费开源 C/C++ 包管理器,可以跨平台,能够与 CMake 等构建工具协作
152-
- [Conan](https://conan.io/): 另一个 C/C++ 的包管理器,比 Vcpkg 更方便定制
153-
154-
!!! comment "@xiao-h1024: 关于 C/C++ 生态的吐槽"
155-
156-
C/C++ 的生态非常分散且混乱,你可以看到各种各样的构建工具,每个都声称自己解决了先前构建工具的问题,然而现实是各有各的坑点,生态还是那样混乱。想要把第三方库顺利集成到自己的项目中,还要跨平台,解决构建问题的时间都够写好多代码了,这可真是噩梦。所以还得是 Rust(逃
157-
158-
## 开发指南
159-
160-
### Style Guide {#style-guide}
161-
162-
- [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html)
163-
- [Style Guide for Python Code](https://peps.python.org/pep-0008/)
164-
165-
### Flame Graph {#flame-graph}
166-
167-
TBC
168-
169-
### IDE {#ide}
170-
171-
- [Visual Studio Code](https://code.visualstudio.com/): 其实 Visual Studio Code 是个代码编辑器,但是在众多插件的帮助下,可以有 IDE 一样的体验。Visual Studio Code 可以用于各种语言的开发,更是拥有非常出色的远程开发功能。
172-
- [Pycharm](https://www.jetbrains.com/pycharm/): Jetbrains 开发的 Python IDE,提供了开箱即用的 Python 开发体验,支持 Python 的各种框架
173-
- [Clion](https://www.jetbrains.com/clion/): Jetbrains 开发的 C++ IDE,使用 CMake 管理工程,拥有强大的静态检查功能,以及强大的代码重构功能
174-
- [QT Creator](https://www.qt.io/zh-cn/product/development-tools): 主要用于开发 Qt 应用的 IDE
175-
- [Cursor](https://www.cursor.com/): 深度集成了 AI 工具的代码编辑器,基于 Visual Studio Code 开发,兼容大部分 Visual Studio Code 的插件,Tab 键的体验谁用谁知道!
176-
177-
### 其他工具
24+
[@tiankaima][tiankaima]、[@xiao-h1024][xiao-h1024]
25+
-->
17826

179-
#### 网络抓包
27+
!!! tip "IDE 推荐"
18028

181-
TBC
29+
- [Visual Studio Code](https://code.visualstudio.com/): 其实 Visual Studio Code 是个代码编辑器,但是在众多插件的帮助下,可以有 IDE 一样的体验。Visual Studio Code 可以用于各种语言的开发,更是拥有非常出色的远程开发功能。
30+
- [Pycharm](https://www.jetbrains.com/pycharm/): Jetbrains 开发的 Python IDE,提供了开箱即用的 Python 开发体验,支持 Python 的各种框架
31+
- [Clion](https://www.jetbrains.com/clion/): Jetbrains 开发的 C++ IDE,使用 CMake 管理工程,拥有强大的静态检查功能,以及强大的代码重构功能
32+
- [QT Creator](https://www.qt.io/zh-cn/product/development-tools): 主要用于开发 Qt 应用的 IDE
33+
- [Cursor](https://www.cursor.com/): 深度集成了 AI 工具的代码编辑器,基于 Visual Studio Code 开发,兼容大部分 Visual Studio Code 的插件,Tab 键的体验谁用谁知道!

docs/dev/language/python.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
icon: simple/python
3+
---
4+
5+
# Python
6+
7+
!!! note "主要作者"
8+
9+
[@tiankaima][tiankaima]
10+
11+
!!! warning "本文编写中"
12+
13+
!!! comment "适用范围"
14+
15+
Python 的适用范围更加广泛, 常用在 Web 开发, 以及各种科学计算、数据处理、机器学习等领域。
16+
17+
!!! note "特点"
18+
19+
- 社区生态完善,有大量的第三方库,例如 Django、Flask、numpy、pandas 等。
20+
- 语法简洁,易于学习,适合初学者。
21+
- 「年长但恰逢新春」, 即没有 C++ 那样的历史包袱,也没有新型语言那样的不稳定性、不成熟性。
22+
- 类型检查不严格,但是也有完整的类型检查工具 (mypy)。
23+
24+
参考资料:
25+
26+
- [Linux 101/Ch07](https://101.lug.ustc.edu.cn/Ch07/#py)
27+
- [Python 官方文档](https://docs.python.org/zh-cn/3/)
28+
29+
Style Guide:
30+
31+
- [Style Guide for Python Code](https://peps.python.org/pep-0008/)
32+
33+
在掌握基础的工具链、语法之后,可以从下面几个方面进一步学习:
34+
35+
- [FastAPI](https://fastapi.tiangolo.com/): 尝试写一个简单的 API 服务
36+
- [Python Data Science Handbook](https://jakevdp.github.io/PythonDataScienceHandbook/): 了解 Python 在数据科学领域的应用
37+
- [PyTorch](https://pytorch.org/tutorials/): 了解 PyTorch 的使用
38+
- [TensorFlow](https://tensorflow.google.cn/tutorials?hl=zh-cn): 了解 TensorFlow 的使用
39+
- [Python Cookbook](https://python3-cookbook.readthedocs.io/zh_CN/latest/): 深入了解 Python 的一些特性
40+
41+
在这些过程中,Python 语言本身可能不会是一个较大的障碍,但是安装、配置等方面可能存在一点障碍,以下是一些常见的问题,我们提前整理在这里:
42+
43+
- [Python 3.12 importlib](https://docs.python.org/3/whatsnew/3.12.html#importlib): 导致了部分库历史版本的兼容问题 (例如 `numpy~=1.23`), 如果需要对应包的历史版本,可能需要降级 Python (或者指定 `python310` / 使用 conda 等)
44+
- [Poetry Pytorch](https://github.com/python-poetry/poetry/issues/4231): Poetry 与 Pytorch 的兼容问题,可能需要手动安装 Pytorch

docs/dev/language/shell.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
icon: simple/gnubash
3+
---
4+
5+
# Shell 脚本
6+
7+
!!! note "主要作者"
8+
9+
[@tiankaima][tiankaima]
10+
11+
!!! warning "本文编写中"
12+
13+
!!! comment "适用范围"
14+
15+
Shell 也许是与 Linux 打交道 (日常维护、安装等) 最直接的方式。
16+
在此基础上逐渐发展出了需要使用变量、控制流的 Shell Script。
17+
18+
<!-- TODO: require revision -->
19+
20+
Shell Script 的适用范围:**自动化、不涉及核心业务的流程** (例如周期性执行的任务、编译、安装脚本) 等,通过 Shell 可以很方便的调用其他命令、批量处理文件/目录等,但是不适合编写大型程序。
21+
22+
!!! note "特点"
23+
24+
- 作为脚本语言,Shell Script 只提供基本的变量、控制流、函数等,几乎没有面向对象的特性。
25+
- Shell Script 适合处理文本、调用系统命令等,但是不适合处理复杂的数据结构。
26+
- 真正意义上的开箱即用,无需额外安装,因此常用在安装、编译等场景。
27+
28+
参考资料:
29+
30+
- [Linux 101/Ch06](https://101.lug.ustc.edu.cn/Ch06/)
31+
- [The Missing Semester of Your CS Education/shell-tools](https://missing-semester-cn.github.io/2020/shell-tools/)
32+
33+
作为补充,可以查阅:
34+
35+
- [jq](https://jqlang.github.io/jq/): 用于处理 JSON 数据
36+
- [yq](https://github.com/mikefarah/yq): 用于处理 YAML 数据
37+
38+
??? comment "Shell tools"
39+
40+
一个常见的提升日常效率的办法是: 使用 oh-my-zsh、fzf、tmux 等工具。

mkdocs.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,11 @@ nav:
136136
- dev/index.md
137137
- 编程语言概览:
138138
- dev/language/index.md
139+
- 前端简介: dev/language/frontend.md
140+
- Python: dev/language/python.md
141+
- C/C++ 与构建工具: dev/language/cxx.md
142+
- Shell 脚本: dev/language/shell.md
143+
- Golang: dev/language/golang.md
139144
- 版本管理与合作: dev/git.md
140145
- SSH 使用技巧: dev/ssh.md
141146
- 高级内容:

0 commit comments

Comments
 (0)