@@ -26,18 +26,59 @@ OK,我们开始。这一章的内容很轻松,就当闲聊了。
26
26
1 . 编译型 (Compiled) 语言和解释型 (Interpreted) 语言
27
27
2 . 主流编程语言
28
28
29
- ## 2. 学习编程必需的能力
29
+ ### 1.4 学习编程必需的能力
30
30
31
- 1 . 搜索引擎的使用 :主流搜索引擎见 2.3 使用搜索引擎查找资料
32
- 2 . 寻找官方网站 ,注册账号,与下载正版软件的能力
33
- 3 . 基本的英语水平,要理解报错信息的内容
34
- 4 . 合理提出问题的能力,详见[ 编程交流群生存指南] ( /杂项/技术无关/1_编程交流群生存指南.md )
31
+ 1 . ** 搜索引擎 ** 的使用 :主流搜索引擎见 2.3 使用搜索引擎查找资料;
32
+ 2 . 寻找 ** 官方网站 ** ,注册账号,与下载正版软件的能力;
33
+ 3 . 基本的英语水平,要理解 ** 报错信息 ** 的内容;
34
+ 4 . 合理提出问题的能力,详见[ 编程交流群生存指南] ( /杂项/技术无关/1_编程交流群生存指南.md ) ;
35
35
5 . 理解语言的能力:
36
36
37
37
1 . 编程语言是人写的,也是给人看的,编程语言当中有自然语言的影子;
38
38
2 . 把你的代码写得更像自然语言,就能自然地契合“如无必要,勿添注释”的思想;
39
39
3 . 函数的名称有意义,了解这些名称(的词源)有助于记忆函数的功能,也方便在正确的使用场景想起特定函数。
40
40
41
+ ## 2. 如何学习编程
42
+
43
+ ### 真正的底层是“语义”,而非实现
44
+
45
+ 很多初学者认为,“底层”就是指那些跟硬件打交道的东西,比如汇编和操作系统。这没错,但它不是学习的起点。
46
+
47
+ 对于学习者而言,** 真正的“底层”是语言的“语义”(Semantics)——即一个特性“是什么”以及它“承诺遵守的规则”。**
48
+
49
+ * ** 语义(你要先掌握的)** :比如,` union ` 这个关键字,它的规则是“所有成员共享一块内存,同一时间只有一个有效”。这是它的核心身份,是它不变的承诺。
50
+ * ** 实现(你可以后探索的)** :这块内存具体是如何对齐的,在不同编译器下有什么差异。这是它具体的“建造方式”。
51
+
52
+ ### 2. 掌握语言的“成语”与“套路”(Idioms)
53
+
54
+ 每门编程语言都有一些约定俗成的、用于高效解决特定问题的最佳实践,我们称之为“** 套路** ”或“** 惯用法** ”(Idioms)。
55
+
56
+ 以循环为例:
57
+
58
+ * ` for ` 和 ` while ` 都能实现循环。但它们的“套路”完全不同。
59
+ * ** ` for ` 的套路** :用于** 已知次数** 的迭代。当你看到一个数组,想对它从头到尾进行操作,你的大脑里应该自动浮现出 ` for (int i = 0; i < n; i++) ` 这个标准句式。它结构紧凑,意图清晰——“我要对这个序列做N次事”。
60
+ * ** ` while ` 的套路** :用于** 未知次数** 、依赖某个条件才能结束的迭代。比如读取文件直到末尾,或等待用户输入特定指令。它的句式 ` while (condition) ` 完美地表达了“只要条件满足,就一直做”的意图。
61
+
62
+ 先学** 语义** ,后探索** 套路** ,必要时了解实现。
63
+
64
+ ### 3. 如何学习这些“套路”?——从观摩大师开始
65
+
66
+ 这么重要的‘套路’,为什么书上很少系统地教?
67
+
68
+ 这是一个极好的问题。因为“套路”源于实践,它存在于鲜活的代码和程序员社区中。教科书能给你地图,但真正的驾驶技巧要在路上学。
69
+
70
+ 那么,去哪里学?走出书本,去代码的世界里“观摩”和“实践”。
71
+
72
+ 1 . ** 看各种代码片段(Snippets)** :主动寻找和阅读解决小问题的优秀代码。
73
+ 2 . ** 使用在线编程平台(如Codewars)** :这些平台是学习“套路”的绝佳健身房。
74
+ 3 . ** 遵循最高效的学习回路** :
75
+ * ** 第一步:自己动手** 。用你当前学会的知识,努力解决一个问题。
76
+ * ** 第二步:观摩高手** 。提交你的答案后,去看别人的解决方案,特别是那些被高票点赞的。
77
+ * ** 第三步:对比反思** 。你会震惊地发现:“原来这个问题还能这么写!”“原来这个函数还能这么用!”
78
+ * ** 第四步:吸收内化** 。在巨大的差距和顿悟中,你就能最高效地吸收新的“套路”,并把它变成你自己的武器。
79
+
80
+ 你的目标,是在更高的抽象层次上思考:通过掌握一个个“套路”,** 将解决问题的步骤打包成可以直接调用的“模式”** 。
81
+
41
82
## 3. 关于 C
42
83
43
84
### 3.1 发展历史
@@ -49,16 +90,17 @@ OK,我们开始。这一章的内容很轻松,就当闲聊了。
49
90
50
91
### 3.2 标准
51
92
52
- 1 . ANSI C(被 ISO 采纳)
53
- 2 . 从 C89 到 C23(建议大家有空了看看标准)
54
- 3 . 未来的 C2y(如果有精力和能力,可以关注最新的草案,了解新标准的制定进程)
93
+ 1 . 事实标准:** K&R C**
94
+ 2 . ** ANSI C** (被 ISO 采纳)
95
+ 3 . 从 ** C89** 到 ** C23** (建议大家有空了看看标准)
96
+ 4 . 未来的 C2y(如果有精力和能力,可以关注最新的草案,了解新标准的制定进程)
55
97
56
98
### 3.3 应用领域
57
99
58
- 1 . 系统编程:操作系统 (Operating System, OS),编译器 (Compiler),数据库 (Database, DB) 等
59
- 2 . 嵌入式开发, 物联网 (Internet of Things, IoT)
60
- 3 . 网络编程
61
- 4 . 图形图像处理
100
+ 1 . 系统编程:** 操作系统** (Operating System, OS),** 编译器** (Compiler),** 数据库** (Database, DB) 等
101
+ 2 . ** 嵌入式开发** , ** 物联网** (Internet of Things, IoT)
102
+ 3 . ** 网络编程**
103
+ 4 . ** 图形图像处理**
62
104
63
105
### 3.4 推荐网站
64
106
@@ -68,18 +110,10 @@ OK,我们开始。这一章的内容很轻松,就当闲聊了。
68
110
2 . [ ** Compiler Explorer** ] ( https://godbolt.org/ )
69
111
在线编译器,支持生成汇编等多项功能,支持非常多的语言和多种编译器
70
112
![ compiler explorer] ( /images/语法和标准库/1_在开始编程之前/002.png )
71
- 3 . [ ** 牛客网(New Coder)** ] ( https://www.newcoder.com/ )
72
- 大量练习题,** 需要会员**
73
- ![ 牛客网] ( /images/语法和标准库/1_在开始编程之前/003.png )
74
- 点击** 在线编程 - 语法篇 - C 语言入门**
75
- ![ 在线编程] ( /images/语法和标准库/1_在开始编程之前/005.png )
76
- 点击** 专项练习 - 编程语言** ,选择 ** C 语言**
77
- ![ 专项练习] ( /images/语法和标准库/1_在开始编程之前/004.png )
78
- 4 . [ ** Codewars** ] ( https://www.codewars.com/ )
79
- 偏实际应用的题目,注重语言特性和实践,需要登录后使用
113
+ 3 . [ ** Codewars** ] ( https://www.codewars.com/ )
114
+ 偏实际应用的题目,注重语言特性和实践,需要登录后使用;** 成功解题之后可以看到所有人的解题方法并进行评价**
80
115
![ codewars] ( /images/语法和标准库/1_在开始编程之前/006.png )
81
116
登录后初始化账号,鼠标移动到左边打开侧边栏,点击 ** practice**
82
- ![ practice] ( /images/语法和标准库/1_在开始编程之前/007.png )
83
117
84
118
### 3.5 推荐的 C 书籍
85
119
@@ -90,13 +124,26 @@ C 语言之父力作,第一推荐;
90
124
C 语言的经典教材,但是有些地方表述有误或者不合适,第二推荐。
91
125
习题答案暂时见[ ** 这里** ] ( https://github.com/Relph1119/c-primer-plus )
92
126
127
+ ### 3.6 关于 C 语言标准文档
128
+
129
+ 有且只有标准文档,规定了一门语言** 是什么** 。如果有精力和能力,可以阅读 C 语言标准,上面不仅有语言规则的定义,还有丰富的示例代码。标准文档的专业性很强,不适合作为初学者的入门读物。
130
+
131
+ 各版本 C 语言标准文档获取如下:
132
+
133
+ 1 . 点开 [ C++ Reference] ( https://zh.cppreference.com )
134
+ ![ cppreference] ( /images/语法和标准库/1_在开始编程之前/008.png )
135
+ 2 . 向下翻,找到 ** C 参考手册** 的** 外部链接**
136
+ ![ C 参考手册] ( /images/语法和标准库/1_在开始编程之前/009.png )
137
+ 3 . ** C 语言及库参考** 中的 ` .pdf ` 就是标准文档,编号(n 后面的数)越大越新
138
+ ![ C 语言及库参考] ( /images/语法和标准库/1_在开始编程之前/010.png )
139
+
93
140
## 4. 开发工具
94
141
95
142
### 4.1 编译器
96
143
97
144
1 . GCC
98
145
2 . Clang
99
- 3 . MSVC(充话费送的)
146
+ 3 . MSVC
100
147
101
148
### 4.2 编辑器 (Compiler) 和 集成开发环境 (Integrated Development Environment, IDE)
102
149
@@ -164,19 +211,19 @@ IDE 一般会自带 debugger。
164
211
165
212
截至目前(注:2025.8.4),主流的大语言模型提供商有如下几个:
166
213
167
- - 国外:
168
- - OpenAI:** GPT** 系列和 ** o** 系列,免费用户只能体验有限功能。
169
- - Google:** Gemini** 系列,免费用户在官网上的使用次数受限;在 ** Google AI Studio** 上可以免费使用。
170
- - Anthropic:** Claude** 系列,官网注册需要国外手机号,免费用户只能体验有限功能。在某些 AI 编辑器中可以直接使用。
214
+ * 国外:
215
+ * OpenAI:** GPT** 系列和 ** o** 系列,免费用户只能体验有限功能;Plus 订阅每个月 20 \$ ,Pro 订阅每个月 200 \$ 。
216
+ * Google:** Gemini** 系列,免费用户在官网上的使用次数受限;在 ** Google AI Studio** 上可以免费使用。
217
+ * Anthropic:** Claude** 系列,官网注册需要国外手机号,免费用户只能体验有限功能。在某些 AI 编辑器中可以直接使用。
171
218
172
219
Anthropic 还推出了终端编程助手 [ ** Claude Code** ] ( https://www.anthropic.com/claude-code ) ,Pro 用户使用额度较少,Max 用户额度较多。充 Max 一定要充每个月 200 美元的。
173
- - xAI:** Grok** 系列,自 Grok 4 起,只有付费用户才能在官网使用。
174
- - 国产:
175
- - DeepSeek:[ 官网] ( https://chat.deepseek.com/ ) 免费使用。
176
- - Kimi:[ 官网] ( https://www.kimi.com/ ) 免费使用。
177
- - 通义千问:[ 官网] ( https://chat.qwen.ai/ ) 免费使用。
178
- - 质谱清言:[ 官网] ( https://chat.z.ai/ ) 免费使用。
179
- - 豆包:不要用豆包写代码。太糖了。
220
+ * xAI:** Grok** 系列,自 Grok 4 起,只有付费用户才能在官网使用。
221
+ * 国产:
222
+ * DeepSeek:[ 官网] ( https://chat.deepseek.com/ ) 免费使用。
223
+ * Kimi:[ 官网] ( https://www.kimi.com/ ) 免费使用。
224
+ * 通义千问:[ 官网] ( https://chat.qwen.ai/ ) 免费使用。
225
+ * 质谱清言:[ 官网] ( https://chat.z.ai/ ) 免费使用。
226
+ * 豆包:不要用豆包写代码。太糖了。
180
227
181
228
在 [ ** Poe** ] ( https://poe.com ) 上充值(每天有免费额度)后,可以使用上述所有模型。
182
229
@@ -233,19 +280,6 @@ Code is cheap, show me the proof.
233
280
234
281
注:[ ** CS 自学指南** ] ( https://csdiy.wiki/CS%E5%AD%A6%E4%B9%A0%E8%A7%84%E5%88%92/ ) 上面汇集了计算机各个领域的课程资料。
235
282
236
- ## 8. 关于 C 语言标准文档
237
-
238
- 有且只有标准文档,规定了一门语言** 是什么** 。如果有精力和能力,可以阅读 C 语言标准,上面不仅有语言规则的定义,还有丰富的示例代码。标准文档的专业性很强,不适合作为初学者的入门读物。
239
-
240
- 各版本 C 语言标准文档获取如下:
241
-
242
- 1 . 点开 [ C++ Reference] ( https://zh.cppreference.com )
243
- ![ cppreference] ( /images/语法和标准库/1_在开始编程之前/008.png )
244
- 2 . 向下翻,找到 ** C 参考手册** 的** 外部链接**
245
- ![ C 参考手册] ( /images/语法和标准库/1_在开始编程之前/009.png )
246
- 3 . ** C 语言及库参考** 中的 ` .pdf ` 就是标准文档,编号(n 后面的数)越大越新
247
- ![ C 语言及库参考] ( /images/语法和标准库/1_在开始编程之前/010.png )
248
-
249
283
## 习题
250
284
251
285
::: details 关于习题
0 commit comments