@@ -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 键的体验谁用谁知道!
0 commit comments