chore: add 3.0 3.1 3.2 3.2.1 3.3

This commit is contained in:
FallenYing
2023-07-25 20:41:22 +08:00
parent 3716e9f77c
commit ada68ea8bd
5 changed files with 23 additions and 23 deletions

View File

@@ -38,7 +38,7 @@
这是我的第一个也是最重要的建议。
无论是学一门语言,还是学一个工具:<strong>尽可能地先用最短的时间搞懂这个东西是做什么的,然后以最快的方式把它 “run”起来。</strong>
无论是学一门语言,还是学一个工具:<strong>尽可能地先用最短的时间搞懂这个东西是做什么的然后以最快的方式把它“run”起来。</strong>
当你已经能跑起一个语言、一个工具的最简单的示例的时候,再去花时间慢慢了解背后的复杂的内容,再去拓展即可。先用起来,跑起来,带着问题去翻资料。
@@ -58,7 +58,7 @@
那么该怎么学呢?
<strong>先简单地会一样东西的最核心的部分,再去找一个实际的编程场景、编程任务、项目。你会在完成这个项目中遇到各种各样的问题,无论是遗漏了知识点还是压根没思路, 这时候不断地用搜索引擎来学习。( </strong>[2.3 高效的信息检索](../2.%E9%AB%98%E6%95%88%E5%AD%A6%E4%B9%A0/2.3%E9%AB%98%E6%95%88%E7%9A%84%E4%BF%A1%E6%81%AF%E6%A3%80%E7%B4%A2.md)<strong></strong>
<strong>先简单地会一样东西的最核心的部分,再去找一个实际的编程场景、编程任务、项目。你会在完成这个项目中遇到各种各样的问题,无论是遗漏了知识点还是压根没思路,这时候不断地用搜索引擎来学习。( </strong>[2.3 高效的信息检索](../2.%E9%AB%98%E6%95%88%E5%AD%A6%E4%B9%A0/2.3%E9%AB%98%E6%95%88%E7%9A%84%E4%BF%A1%E6%81%AF%E6%A3%80%E7%B4%A2.md)<strong></strong>
举个例子:你想做一个小程序,来检测某电影院的电影预售。程序大概要做到不断刷新网页,一检测到这个电影预售了,就马上发短信给自己手机(或者直接帮你抢)
@@ -101,7 +101,7 @@
1. 输入决定输出。开源的代码多是经过检验的牛逼的代码,通过多看看优雅的代码来提高编程能力,比自己无中生有简单地多。
2. 开源圈牛人多。无论是拓宽视野,还是在 issue 下的交流,还是别人给你的 review 建议,都能学到很多。你会在开源的过程中认识很多的人,很多大厂的人,说不定就是你以后的面试官。
3. 参与开源社区能极大地锻炼自己的编程能力,能给简历贴金
3. 参与开源社区能极大地锻炼自己的编程能力,能给简历贴金。
4. 开源是程序员的浪漫。
对于学生而言,可以参加一些仅面向学生开放的开源活动。一般会有一个主办方,然后有许多知名的开源社区报名。他们会罗列出一些有一定难度的任务,学生可以提交申请书,陈述如何完成这个任务。中选后会分配单独的导师来带你,还会发奖金给你,一般是大几千起步。推荐阅读这个系列的文章:[https://erdengk.github.io/gsoc-analyse/](https://erdengk.github.io/gsoc-analyse/)

View File

@@ -1,6 +1,6 @@
# 3.1 该使用哪个编辑器???
# 编辑器,编译器,集成开发环境
## 编辑器,编译器,集成开发环境
我们平时所说的程序是指双击后就可以直接运行的程序这样的程序被称为可执行程序Executable Program
@@ -12,7 +12,7 @@
(你也不想用一沓纸带写程序吧)
## 什么是编辑器
### 什么是编辑器
编辑器的概念很简单,百度百科上这么写道:
@@ -24,7 +24,7 @@
- <em>Vim </em>: Vim 是从 vi 发展出来的一个文本编辑器,在程序员中被广泛使用,运行在 Linux 环境下。
- <em>GNU Emacs</em> : Emacs 是一个轻便、可扩展、免费的编辑器,它比其它的编辑器要更强大,是一个整合环境,或可称它为集成开发环境。它可以处理文字,图像,高亮语法,将代码更直观地展现给开发者。
## 什么是编译器
### 什么是编译器
C 语言代码由固定的词汇按照固定的格式组织起来,简单直观,程序员容易识别和理解,但是对于 CPUC 语言代码就是天书根本不认识CPU 只认识几百个二进制形式的指令。这就需要一个工具,将 C 语言代码转换成 CPU 能够识别的二进制指令,也就是将代码加工成 .exe 程序这个工具是一个特殊的软件叫做编译器Compiler
编译器能够识别代码中的词汇、句子以及各种特定的格式并将他们转换成计算机能够识别的二进制形式这个过程称为编译Compile
@@ -56,7 +56,7 @@ C 语言代码由固定的词汇按照固定的格式组织起来,简单直观
编译器可以 100% 保证你的代码从语法上讲是正确的,因为哪怕有一点小小的错误,编译也不能通过,编译器会告诉你哪里错了,便于你的更改。
## 什么是集成开发环境
### 什么是集成开发环境
实际开发中,除了编译器是必须的工具,我们往往还需要很多其他辅助软件,例如:
@@ -72,15 +72,15 @@ C 语言代码由固定的词汇按照固定的格式组织起来,简单直观
集成开发环境也是这个道理,只有编译器不方便,所以还要增加其他的辅助工具。
# 我的推荐
## 我的推荐
作为个人使用比较顺手的几款 IDE
Java: [JetBrains](https://www.jetbrains.com/zh-cn/idea/)[ IntelliJ ](https://www.jetbrains.com/zh-cn/idea/)[IDEA](https://www.jetbrains.com/zh-cn/idea/)
Java: [JetBrains](https://www.jetbrains.com/zh-cn/idea/)[IntelliJ](https://www.jetbrains.com/zh-cn/idea/)[IDEA](https://www.jetbrains.com/zh-cn/idea/)
C: Visual Studio(宇宙第一 IDE), [JetBrains](https://www.jetbrains.com/zh-cn/clion/)[ Clion](https://www.jetbrains.com/zh-cn/clion/), Visual Studio Code(编辑器 IDE 化需要额外配置)
C: Visual Studio(宇宙第一 IDE), [JetBrains](https://www.jetbrains.com/zh-cn/clion/)[Clion](https://www.jetbrains.com/zh-cn/clion/), Visual Studio Code(编辑器 IDE 化需要额外配置)
Python: [JetBrains](https://www.jetbrains.com/zh-cn/pycharm/)[ ](https://www.jetbrains.com/zh-cn/pycharm/)[P](https://www.jetbrains.com/zh-cn/pycharm/)[ycharm](https://www.jetbrains.com/zh-cn/pycharm/)
Python: [JetBrains](https://www.jetbrains.com/zh-cn/pycharm/)[](https://www.jetbrains.com/zh-cn/pycharm/)[P](https://www.jetbrains.com/zh-cn/pycharm/)[ycharm](https://www.jetbrains.com/zh-cn/pycharm/)
Vim 在附加篇章里有额外介绍

View File

@@ -2,7 +2,7 @@
author:wenjing
先验条件:保证你可以在每天进行练习和学习此方面内容即使是假期也不能超过三天以上休息,如果你想验证一下这件事当然也可以,注意心态的保持很重要
先验条件:保证你可以在每天进行练习和学习此方面内容即使是假期也不能超过三天以上休息如果你想验证一下这件事当然也可以,注意心态的保持很重要
## 将时间花在 ACM 上值得吗?

View File

@@ -1,6 +1,6 @@
# 3.2 算法杂谈
# 学计算机要先学算法吗?
## 学计算机要先学算法吗?
也许有的同学在高中阶段接触过信息学奥赛,那么也许你已经对基础的算法知识已经有了一定的了解。
@@ -10,19 +10,19 @@
学习算法的基础是拥有最基本的计算机素养,你需要优先学习一些基本的计算机概念、编程语言、简单的数据结构(数组、链表等),这些基本知识是你能够灵活利用算法的基础。
# 学了算法就相当于学好了计算机吗?
## 学了算法就相当于学好了计算机吗?
学好了算法当然不等于学好了计算机科学。计算机科学是一个非常庞大的知识体系,包括更为底层的计算机组成原理、编译原理等,更为表层的 AI开发等是一门综合性学科。总的来说算法是计算机科学中较为重要的一部分但<strong>远远</strong>不是全部。
# 学算法就要用《算法导论》一类的书吗?
## 学算法就要用《算法导论》一类的书吗?
我的答案是否定的。它更适合作为“工具书”(就像你英语的词典那样),而不是一本适合新生入门学习的书。可以使用《我的第一本算法书》一类的更为基础更为有趣的算法内容。相比于完全严谨的逻辑推导, 初学者的诉求是在"看得见, 摸得着的例子和环境下探索和吸收新概念". 像这样的大部头可以在之后进行阅读.
我的答案是否定的。它更适合作为“工具书”(就像你英语的词典那样),而不是一本适合新生入门学习的书。可以使用《我的第一本算法书》一类的更为基础更为有趣的算法内容。相比于完全严谨的逻辑推导初学者的诉求是在"看得见摸得着的例子和环境下探索和吸收新概念". 像这样的大部头可以在之后进行阅读
# 学算法一定要用 C 语言吗?不用 C 语言可以吗?
## 学算法一定要用 C 语言吗?不用 C 语言可以吗?
不一定要用 C 语言。但是 C 语言作为一种贴近底层面向过程语言,对日后学习其他的语言会有较大的帮助。你也可以先学习 Python、JAVA 等等。学校的课程仅仅是教授一些比较基础的知识,如果想要真正掌握一门语言,需要在学校课程的基础上更进一大大大步。
# ACM 怎么说?
## ACM 怎么说?
前情提要,请尽量不要以功利的心态去参加 ACM你想要的与你能得到的可能存在过大落差
@@ -32,6 +32,6 @@ ACM 是美国计算机协会Association for Computing Machinery的缩写
在我校,参加 ACM 社团姑且叫做社团并不代表能够参加有含金量的团体赛ICPC、CCPC 等)。你需要先参加由我校教练刘春英老师组织的各种比赛,有资格进入集训队后,才有机会代表学校参加比赛(当然不限名额的个人赛想参加就参加)。
进入集训队后采取末位淘汰制度(最后留下来的人在 20 人左右),最后留下来的人才有机会参加比赛。<strong>因此个人并不推荐 0 基础的同学对于 ACM 过于执着</strong>,有 0 基础的同学最后进入校队的例子,不过这通常意味着你一天至少得刷一道算法题。如果还是想尝试的同学,可以去洛谷(www.luogu.com.cn)、Codeforces(www.codeforces.com)、Atcoder(atcoder.jp)等平台上注册账号,练习题目,参加这些网站定期组织的一些比赛。
进入集训队后采取末位淘汰制度(最后留下来的人在 20 人左右),最后留下来的人才有机会参加比赛。<strong>因此个人并不推荐 0 基础的同学对于 ACM 过于执着</strong>,有 0 基础的同学最后进入校队的例子,不过这通常意味着你一天至少得刷一道算法题。如果还是想尝试的同学,可以去洛谷 ([www.luogu.com.cn](http://www.luogu.com.cn))、Codeforces([www.codeforces.com](http://www.codeforces.com))、Atcoder([atcoder.jp](https://atcoder.jp/)) 等平台上注册账号,练习题目,参加这些网站定期组织的一些比赛。
如果经过一段时间的练习能够在 Codefoces[www.codeforces.com](http://www.codeforces.com))上达到 1400 以上的 Rating那么可以再观望观望参与 ACM。

View File

@@ -1,18 +1,18 @@
# 3.3 如何选择编程语言
# 编程语言的工具属性
## 编程语言的工具属性
在回答这个问题之前,需要各位同学明确的一点是,编程并不是一个独立的学科,像数学那样做题是学不好的。
编程语言的选择更像是锤子与扳手之间的选择,更大程度上看的是你需要解决什么样的问题。当你需要砸钉子的时候,使用螺丝刀总归是不顺手的,因此了解不同语言的特性,针对任务进行选择是非常有必要的。
# 编程语言特性
## 编程语言特性
首先附上一张经典老图
![](https://cdn.xyxsw.site/boxcnW0YQY58RXhwdtRj5k6ndlc.jpeg)
## C 语言/C++
### C 语言/C++
C 语言/C 艹一脉同源从图中来看C 和 C 艹都像多功能瑞士军刀说明其是用来做细活的工具C 上面的优盘说明其可以进行硬件开发的相关工作。
@@ -26,7 +26,7 @@ C 语言其实是一门优秀的承上启下的语言,既具有高级语言的
<strong>我们的任务一部分会使用 C 语言,一方面培养大家编程能力,一方面辅助大家期末考试。</strong>
## C++
### C++
现代 C++ 程序可看成以下三部分组成。