import{_ as l,c as a,o as e,a4 as i}from"./chunks/framework.DtvhUNIn.js";const b=JSON.parse('{"title":"3.0 编程入门之道","description":"","frontmatter":{},"headers":[],"relativePath":"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.0 编程入门之道.md","filePath":"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.0 编程入门之道.md"}'),t={name:"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.0 编程入门之道.md"},o=i('
作者:爱飞的鸟
故意写这么大的题目,就是为了“噱头”,为了让读者有点开的欲望。
可能本文的所谓的“道”并不是普适的,甚至是错误的,请尽你所能地喷这篇讲义,让我们一起完善它。
(首先纠正一个心态,当我们获得一大片非常丰富的新的知识的时候,不应该感到焦虑。不知道自己不知道什么,远比知道自己不知道什么来得好。同时,虽然你收获的信息量很大,但也并不意味着你要全部看完,不需要焦虑。)
简单来说就是,抱着平和的心态,随便看看,知道这一章都讲了哪些东西,看完有个印象就好,然后常回家看看。
技术细节本身永远都不是最重要的,重要的是思想和方法,如何快速掌握一门技术。
这是我的第一个也是最重要的建议。
无论是学一门语言,还是学一个工具:尽可能地先用最短的时间搞懂这个东西是做什么的,然后以最快的方式把它“run”起来。
当你已经能跑起一个语言、一个工具的最简单的示例的时候,再去花时间慢慢了解背后的复杂的内容,再去拓展即可。先用起来,跑起来,带着问题去翻资料。
为什么要这样?
任务/项目驱动的意思承接上文,意思就是不要瞎看文章,不要让阅读教程和学习课本成为你的驱动力,等你看完一本 C 语言的书,一行代码就没敲,你就 g 了。
那么该怎么学呢?
先简单地会一样东西的最核心的部分,再去找一个实际的编程场景、编程任务、项目。你会在完成这个项目中遇到各种各样的问题,无论是遗漏了知识点还是压根没思路,这时候不断地用搜索引擎来学习。( 2.3 高效的信息检索)
举个例子:你想做一个小程序,来检测某电影院的电影预售。程序大概要做到不断刷新网页,一检测到这个电影预售了,就马上发短信给自己手机(或者直接帮你抢)
requests 一类的库来请求网页。但问题又来了,这个库一下子会返回整个网页内容,我怎么才能筛选出我要的电影有没有放出来?xpath, bs4, 甚至直接用正则。POP3ssh、ftp、sftp 这些东西。以上的“简单”的例子,就是所谓的任务驱动。带着目的去学,带着任务去学,带着问题去学,快速搞定。在上面的例子中,如果能成功走完,你会学到编程语言本身、学到网络知识、学到 Linux 服务器及其相关操作、学到云服务器和各种云服务(例如短信服务)。更重要的是,每一次从问题到答案的搜索与解决过程,你的编程内功就增强了一波。以后上手一个新东西,或者遇到问题再去解决它的速度,只会越来越快。
刚开始你可能什么都不会,什么地方都被阻塞,但当你把坑踩遍了。就发现,哎嘿,不好意思,这玩意我怎么又会!
所以让我们基于这个“任务驱动”,再看看本章的内容。这些内容大多看了就忘,因为细节非常多,而且并不一定能解决你手头上的问题。但这些文档,带你领进了新的领域的大门,让你的工具箱里多了一个可以解决问题的工具,以后用到了可以想起他们。并且,这些文章多是通俗的,且作者多是讲述了 ta 所认为的该语言/工具的最核心、最精华的部分,或者说第一次入门最需要学习的部分。
先干了这碗鸡汤,我之前写的,就单纯想让你看看。
每个大学的同一个专业,录取的时候分数是差不多的,但是毕业的时候工资可以差几十倍。他们的大环境是相同的,外界对他们的学历评价也是一样的。外部的大环境,我称之为大圈子,最典型的是学校。大圈子决定的是外部对你的整体性的刻板印象式的评价,以及决定了你能以多大的成本来获取资源(比如有没有公司来学校主要招生,有没有免费出国交流的机会,有没有图书馆)。但是,这个大圈子,在一般情况下,在你思考这个问题的时候就已经决定了,比如大家的大学是不能改变的。但更重要的是,小圈子,即你自身所营造的环境。比如每个人都有几个要好的朋友,他们的编程水平,其实就决定了你的编程水平,比如你是否有加入有技术大佬坐镇的社团,这样他们能带你学。如果线下都没有的话,你是否主动去加一些网上的社群、编程社区,问问公司对计算机专业学生的要求是什么,问问能进大厂的人,都在学些什么(知道要学什么很重要,瞎学悔大学)小圈子能时刻让你知道重要的讯息,比如计算机哪个细分方向的就业好,什么厂最近又有提前批,等等。圈子这东西太重要了,我以前很长一段时间就是一个所谓的一直在学习,很想提高自己,但因为比较自闭没有认识牛逼的人,所以我压根不知道学什么啊。那就只能随便弄,瞎搞,做无用功。
圈子,从另外一个角度,也可以理解为“信息差”,“信息壁垒”。对于编程这东西,知道有哪些东西能学,哪些东西赚钱多好找工作,哪些地方有项目,然后有着志同道合的人一起唠,太重要了。
我最近的两次编程能力的飞跃,一次是在加入了某个社团认识了很多技术大佬以及有了非常多的项目可以写,一次是意外地获得了一份实习所以能够和行业的领跑人物经常聊天,以及在开源社区慢慢接触到来自世界各地的技术大牛。
“破圈”的话,我目前接触到的最好的方式是参与开源社区。参与开源的好处如下:
对于学生而言,可以参加一些仅面向学生开放的开源活动。一般会有一个主办方,然后有许多知名的开源社区报名。他们会罗列出一些有一定难度的任务,学生可以提交申请书,陈述如何完成这个任务。中选后会分配单独的导师来带你,还会发奖金给你,一般是大几千起步。推荐阅读这个系列的文章:https://erdengk.github.io/gsoc-analyse/
这里主要讲讲我对不同媒介来学习编程知识的看法,媒介主要指的是
我身边的牛逼的人,一般都更喜欢通过看图文来学习,而不是视频。主要有以下几个原因:
当然,视频也有很大的好处,就是直观、简单。适合学习初期。
当然也不必强行把自己往上套,结合自身特质,以什么的方式学习效率最高,就采用什么样的方式。不过我建议你多锻炼阅读官方文档、文档教程的能力。
正确解读 GPA这篇文档写得很好,和我的想法完全一致,但是被放得太后面了,我想把它提上来。
大学不是唯分数论的,起码编程不是这样。我的建议是,如果以后大概率考研,可以多抓一下绩点;如果以后大概率工作,就不必追求高绩点了(指把大部分时间都花在提高绩点上)。
至于为什么是“选择大于努力”这么笼统的标题,因为我想表达更多的意思(虽然我一时想不到那么多)。
选择真的比你想象的重要。
以及,一旦作出了选择,就不要像祥林嫂那样自怨自艾。过去的事情无可改变,我们只能基于当前的状态和资源,去把接下来的事情做得更好。
',52),r=[o];function n(p,h,s,c,d,u){return e(),a("div",null,r)}const f=l(t,[["render",n]]);export{b as __pageData,f as default};