Files
fzu-product/2.编程模块/2.编程模块.md
2024-07-30 14:06:13 +08:00

70 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2.编程模块
::: warning 施工中🚧
关于新版的编程模块,我们打算以`项目`的方式呈现,正在努力完善中,敬请期待!
关于本模块的旧版内容,你可以点击[这里](/2023旧版内容/旧版内容索引)查看。
:::
## 本期改版做了什么
过去的wiki采用的方式是将我们认为适合大家的内容直接明了的翻译或者改编并且针对大伙的情况从国外的优质课程中挑选了一部分其优势在于全但劣势在于我们无法轻易的找到适合自己的项目并且整体结构非常纷乱繁杂。
在全新的改版内容中我们的wiki会以项目为核心导向以C和python两个在高校中发挥作用最大的两种语言作为核心内容讲诸多仍然有效的的内容放在杂谈之中。
## 如何入门
### 先“run”起来
这是我的第一个也是最重要的建议。
无论是学一门语言,还是学一个工具:**尽可能地先用最短的时间搞懂这个东西是做什么的然后以最快的方式把它“run”起来。**
当你已经能跑起一个语言、一个工具的最简单的示例的时候,再去花时间慢慢了解背后的复杂的内容,再去拓展即可。先用起来,跑起来,带着问题去翻资料。
- 比如学写 C 语言,我建议大家直接打开在看的教程的第一章,把代码复制到这个[在线编译](https://rextester.com/l/c_online_compiler_gcc)的网站里,点一下 "Run it" 看效果。为什么要去详细了解编译器、编辑器、IDE、gcc、g++、make 这种东西?能最快地上手,最快地运行看到效果,对于初学者来说是最好的。等你把环境装好了,人家已经学完三章了。当你已经会了简单的循环、判断、函数,已经建立了信心,就可以慢慢地去看那些让人头疼的东西了。
- 比如学 Linux如果你电脑操作系统是 MacOS直接打开“终端”可以勉强当 Linux 使;如果你是 Windows直接跟着微软的 [WSL 安装教程](https://docs.microsoft.com/zh-cn/windows/wsl/install),一步步无脑地用鼠标点击然后装起来。这时候你就拥有一个 Linux 了,再对着教程去敲。等闲下来了就可以了解了解内核是什么,发行版是什么,去了解云服务器,去了解不同的装 Linux 的方式。
为什么要这样?
- 第一,计算机是很重实操的东西,不要光看所谓的理论不动手。动手是王道。
- 第二,要尽可能多地、尽可能快地给自己找一些正反馈,学编程不是当苦行僧
- 第三,很多东西没必要学,学了也忘。用到了再去学,是最省事最容易记住最高效的。
- 第四,程序员这一辈子会接触无数的新的东西,如何快速上手一个东西,是非常重要的能力。
### 任务/项目驱动
任务/项目驱动的意思承接上文,意思就是不要瞎看文章,不要让阅读教程和学习课本成为你的驱动力,等你看完一本 C 语言的书,一行代码就没敲,你就 g 了。
那么该怎么学呢?
**先简单地会一样东西的最核心的部分,再去找一个实际的编程场景、编程任务、项目。你会在完成这个项目中遇到各种各样的问题,无论是遗漏了知识点还是压根没思路,这时候不断地用搜索引擎来学习。( **[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)****
举个例子:你想做一个小程序,来检测某电影院的电影预售。程序大概要做到不断刷新网页,一检测到这个电影预售了,就马上发短信给自己手机(或者直接帮你抢)
1. 你通过搜索引擎或者从不知道哪个学长/学姐那里得知这玩意叫爬虫简单来说就是用程序抓取网页上的内容。我们又通过搜索引擎得知python 写爬虫最舒服。[3.6python(灵巧的胶水)](3.6Python%EF%BC%88%E7%81%B5%E5%B7%A7%E7%9A%84%E8%83%B6%E6%B0%B4%EF%BC%89.md)
2. 我们又通过例如菜鸟教程这种最简单的极速入门教程,在 3 个小时内掌握了 python 的核心语法。
3. 这时候我们开始写代码了,但是我该怎么获取到网页啊?这时候,你在浏览器里分别搜索了以下几个内容:“程序如何获取网页内容”。
4. 你会学习到 http 相关的知识,大概知道了我们平时打开网页可以简单理解为一次 http GET。
5. 可是还是好抽象啊python 又怎么才能获取到网页的内容啊这时候你在浏览器里精确了一下搜索内容“python 如何获取网页内容”。
6. 搜索引擎会告诉你,可以用诸如 `requests` 一类的库来请求网页。但问题又来了,这个库一下子会返回整个网页内容,我怎么才能筛选出我要的电影有没有放出来?
7. 这时候你又去搜索,学会了怎么解析网页。比如用 `xpath`, `bs4`, 甚至直接用正则。
8. 我们现在能不断地刷新网页,并且筛选出所有的电影的信息,然后分析出自己想看的那个电影有没有放出来了。但是问题又来了,怎么让程序给自己发信息啊?
9. 这时候又打开了浏览器,我们可以知道诸如阿里云、腾讯云这样的云服务商提供了发短信的服务,并且会教你怎么写代码,主要注册、申请一下,就能发短信了。
10. 但是你又会发现这个申请流程真 tm 麻烦,我还是发邮箱吧!这时候又开始搜,如何用 python 发邮件。
11. 然后你会了解到 python 用于发邮件的一些库,以及简单的邮件协议的知识,如 `POP3`
12. 程序真的能如期运行了,能不断刷新、获取网页内容、解析内容以判断电影是否上映,上映了还会发邮件给你。
13. 又又又出问题了!!!你发现程序出错了,因为你请求频率过高,电影院的网站发现你是爬虫了,把你给 ban 了!这时候你知道了“反爬”这个概念,就是反爬虫,类似于外挂和反外挂。你开始学习反爬的知识。
14. 你了解到可以给程序挂个“代理”,相当于每次请求网页的时候,都伪装成了世界上上某个角落的另外一台电脑的请求。
15. 能走到这里太艰辛了,但你很快又发现了问题!现在程序是跑在自己的电脑上的,我们不知道电影院啥时候放票,所以程序得一直跑着,但是电脑会关机啊,关机了还怎么抢???
16. 这时候你了解到了服务器的概念。服务器可以简单地了解为一台远程的几乎从不关机的电脑,一般用的是 Linux 操作系统。[3.Y 附加模块Linux](3.Y%20%E9%99%84%E5%8A%A0%E6%A8%A1%E5%9D%97%EF%BC%9ALinux.md)
17. 这时候你又开始去学 Linux当然不是非常系统地学而是像我之前说的以最快的方式知道它是做什么的然后运行起来。比如可以直接在阿里云、腾讯云、AWS 等云服务器商那里购买。甚至也可以用自己的旧手机装个 Linux 等等,这些都是后话了。
18. 服务器是远程的,我们怎么连上去操纵它呢?我怎么把我的 python 代码传上去呢?这时候你又去求助万能的搜索引擎,或者神秘的学长学姐。你知道了世界上有 `ssh``ftp``sftp` 这些东西。
以上的“简单”的例子,就是所谓的任务驱动。带着目的去学,带着任务去学,带着问题去学,快速搞定。在上面的例子中,如果能成功走完,你会学到编程语言本身、学到网络知识、学到 Linux 服务器及其相关操作、学到云服务器和各种云服务(例如短信服务)。更重要的是,每一次从问题到答案的搜索与解决过程,你的编程内功就增强了一波。以后上手一个新东西,或者遇到问题再去解决它的速度,只会越来越快。
刚开始你可能什么都不会,什么地方都被阻塞,但当你把坑踩遍了。就发现,哎嘿,不好意思,这玩意我怎么又会!
**所以让我们基于这个“任务驱动”,再看看本章的内容。这些内容大多看了就忘,因为细节非常多,而且并不一定能解决你手头上的问题。但这些文档,带你领进了新的领域的大门,让你的工具箱里多了一个可以解决问题的工具,以后用到了可以想起他们。并且,这些文章多是通俗的,且作者多是讲述了 ta 所认为的该语言/工具的最核心、最精华的部分,或者说第一次入门最需要学习的部分。**