转跳到内容

关于计算机自学的一点点经验


推荐贴

新手上路,刷三次元区看到个关于计算机自学的交流贴,可惜没有权限回复,所以在新手区发出来。

【节操节操我来啦】

以下是都是在个人经验的基础上尝试优化下顺序的结果。(我是跨专业上岸的目标院校,所以专业课什么都是自学的,应该有点说服力吧maybe)

大学的课,其实确实能翘都可以翘,当然那是在保证你自己有清晰的方向性认识的前提下,大多数,自己不是全摆的情况下,自学的效率和进度都是远高于课程上教的。当然这个前提是要掌握基础的自学能力,这需要能够独立在网络上找到有效的文字资料,并梳理提纲和结构,能够回顾自己的搜索/查找资料的过程和上下文,能够多方查找资料并交叉验证,自学的过程可以训练这些能力。不过现阶段有各种ai助手辅助,其实会容易不少。另外,对于大学专业课,大多在b站有成体系的视频,可以直接拿来用,会更容易。

首先是入门阶段,掌握基础数据结构,不用磕太复杂的算法,我觉得比较好的是刷刷简单/中等的算法题,浙大pat的题库我觉得很棒,刷3个月,每天3-4小时,基本基础数据结构就炉火纯青了。这个时候对c/c++语言会有个初步的认识,可以熟练的写100-200行的代码,结构化思维初步形成,对于内存单元和顺序执行应该会有个清晰的概念。然后再建议可以翻翻算法导论的目录,对各种高级算法有个概念性的认识,知道名字,用途,在某方面特化,或者只是知道以后有相关需求的时候在哪里可以找到高效的解决方案就好了。

专业课方面,离散数学,数据结构,操作系统,计算机体系结构,计算机网络,务必得好好学,尽量吃透,也许很多人觉得体系结构什么的意义不大,平时涉及不到,但是这算是计算机基础方面的硬骨头了,掌握不了基础概念,别的任何相关概念在碰到时,都难以理解,甚至举一反三,会因此缺失对一整个方向的理解的。扩展来说,编译原理也是一个很重要的方向,其中的自动机理论,能了解下也最好。检验的办法很简单,去做408的考研真题吧,能吃透考研真题,基本问题就不大了(考研最后几道大题的综合性其实挺棒的,我觉得,当然肯定比不上真的实践和实际的工程经历,但是很难获得就是了)

然后是进阶阶段,去看MIT的公开课吧,最经典的莫过于6.828的OS课(建议2018年的,再之后的年份这个课拆了),过完这个课,你的编码能力,工程能力,以及上面提到的专业课能力都上了一个大的台阶,在实验过程中会有很多东西得到印证,不再虚无缥缈的感觉。这个过程建议不要去阅读中文的各种经验帖,最多带着ai助手(kimi)去提问。然后就是,你会发现你的英文文献阅读能力上了一个档次,会渐渐习惯用翻译软件硬啃大段的英文材料,同时对官方文档的严谨性有个更深刻的认识(官方文档会标明版本,环境,操作步骤等等等,比csdn等大多数中文博客的资料有效性高出不知道多少量级,前述的学会资料交叉验证,其实就是在踩坑中文材料过程中吃了太多无效指导的亏),今后查资料会习惯阅读更加冗长的手册,同时会用ai助手协助阅读手册,提炼手册内容,快速找到手册中自己需要的内容。


还可以看看,MIT的分布式系统,或者别的自己感兴趣的公开课,这之后的目的就是扩充见识,明白自己感兴趣什么东西了。
另外,有些公开课会有开放式题目的,这些题目通常都可以深挖,如果愿意深挖都会是不错的开源项目(也许你能找到别人做的开源项目)
总结这个阶段的目标是具有相对成熟的工程能力,有充分的计算机领域资料查找能力,有硬啃复杂源代码的能力,同时拓宽视野。(啃别人的好代码是个很好的学习过程,debug和理解代码逻辑,在这个过程中应该不可避免)。
另外还有一些软件工程思想的视频真的不错,对于工程素养很有帮助,建议扩充视野的看看,包括TDD,契约式编程等思想,不过千万不要被局限了,每种思想都有适用场景的。

再下一个阶段,就没什么定数了。
如果是学术导向,可以去阅读论文,尝试复现论文中的工作,找准一个前沿方向论文,阅读某几个大佬的论文。(PS1:做学术如果没有好的工程能力,我觉得都是白搭,除非只是打算灌水,不打算做实事儿;PS2:我自己没找准方向,所以我在这里翻车了,我的经验不作数- -,依旧是博爱的我,所有方向都喜欢,都学不会,都不精)
工程导向的话,就是开源项目吧?懒狗不太会为爱发电,虽然有兴趣,但是都懒得动手,也没有好的idea就已经成为社畜了,成为社畜之后更没法为爱发电了。不过,有耐心去挖进阶阶段中的公开课开放式课题,一般会有不少不错的idea,有耐心毅力的大佬可以试试。

另外,没事可以看看koala聊开源之类的热门开源项目介绍的视频,闲的时候可以去关注某个开源项目的能力,闹测下自己想实现会遇到什么问题,如何解决,应该都还不错。

就这么多,只是一点很不成熟的想法,欢迎交流~。上述的步骤做到一半,我相信如果是真的喜欢的人,已经找到了自己的路了。

 

上面的事我做了一半,然后我成为了社畜和咸鱼,苦逼打工仔,依旧热爱,但是不喜欢发电的打工仔,也许有一天会为自己发电也说不定。

 

最后,,,节操节操我来啦

,由Tachimo修改
注释
ㅤ凯ㅤ ㅤ凯ㅤ 10.00节操 支持!
链接到点评
11 分钟前,月晓说道:

我的天好认真

haha,第一次写贴,必须得认真的点啊(瑟瑟是第一生产力!)

:Genshin_Albedo_005:

而且没有什么实际内容(主要写的时候完全忘记了就业目的的项目和简历需求了),只顾着顺自己的思路去写知识体系方面的内容了。。。而且还都是专业课/基本功方面的。。有点偏题其实

 

 

链接到点评
46 分钟前,Tachimo说道:

haha,第一次写贴,必须得认真的点啊(瑟瑟是第一生产力!)

:Genshin_Albedo_005:

而且没有什么实际内容(主要写的时候完全忘记了就业目的的项目和简历需求了),只顾着顺自己的思路去写知识体系方面的内容了。。。而且还都是专业课/基本功方面的。。有点偏题其实

 

 

其实这也是自我介绍的一种x

链接到点评
17 小时前,Tachimo说道:

新手上路,刷三次元区看到个关于计算机自学的交流贴,可惜没有权限回复,所以在新手区发出来。

【节操节操我来啦】

以下是都是在个人经验的基础上尝试优化下顺序的结果。(我是跨专业上岸的目标院校,所以专业课什么都是自学的,应该有点说服力吧maybe)

大学的课,其实确实能翘都可以翘,当然那是在保证你自己有清晰的方向性认识的前提下,大多数,自己不是全摆的情况下,自学的效率和进度都是远高于课程上教的。当然这个前提是要掌握基础的自学能力,这需要能够独立在网络上找到有效的文字资料,并梳理提纲和结构,能够回顾自己的搜索/查找资料的过程和上下文,能够多方查找资料并交叉验证,自学的过程可以训练这些能力。不过现阶段有各种ai助手辅助,其实会容易不少。另外,对于大学专业课,大多在b站有成体系的视频,可以直接拿来用,会更容易。

首先是入门阶段,掌握基础数据结构,不用磕太复杂的算法,我觉得比较好的是刷刷简单/中等的算法题,浙大pat的题库我觉得很棒,刷3个月,每天3-4小时,基本基础数据结构就炉火纯青了。这个时候对c/c++语言会有个初步的认识,可以熟练的写100-200行的代码,结构化思维初步形成,对于内存单元和顺序执行应该会有个清晰的概念。然后再建议可以翻翻算法导论的目录,对各种高级算法有个概念性的认识,知道名字,用途,在某方面特化,或者只是知道以后有相关需求的时候在哪里可以找到高效的解决方案就好了。

专业课方面,离散数学,数据结构,操作系统,计算机体系结构,计算机网络,务必得好好学,尽量吃透,也许很多人觉得体系结构什么的意义不大,平时涉及不到,但是这算是计算机基础方面的硬骨头了,掌握不了基础概念,别的任何相关概念在碰到时,都难以理解,甚至举一反三,会因此缺失对一整个方向的理解的。扩展来说,编译原理也是一个很重要的方向,其中的自动机理论,能了解下也最好。检验的办法很简单,去做408的考研真题吧,能吃透考研真题,基本问题就不大了(考研最后几道大题的综合性其实挺棒的,我觉得,当然肯定比不上真的实践和实际的工程经历,但是很难获得就是了)

然后是进阶阶段,去看MIT的公开课吧,最经典的莫过于6.828的OS课(建议2018年的,再之后的年份这个课拆了),过完这个课,你的编码能力,工程能力,以及上面提到的专业课能力都上了一个大的台阶,在实验过程中会有很多东西得到印证,不再虚无缥缈的感觉。这个过程建议不要去阅读中文的各种经验帖,最多带着ai助手(kimi)去提问。然后就是,你会发现你的英文文献阅读能力上了一个档次,会渐渐习惯用翻译软件硬啃大段的英文材料,同时对官方文档的严谨性有个更深刻的认识(官方文档会标明版本,环境,操作步骤等等等,比csdn等大多数中文博客的资料有效性高出不知道多少量级,前述的学会资料交叉验证,其实就是在踩坑中文材料过程中吃了太多无效指导的亏),今后查资料会习惯阅读更加冗长的手册,同时会用ai助手协助阅读手册,提炼手册内容,快速找到手册中自己需要的内容。


还可以看看,MIT的分布式系统,或者别的自己感兴趣的公开课,这之后的目的就是扩充见识,明白自己感兴趣什么东西了。
另外,有些公开课会有开放式题目的,这些题目通常都可以深挖,如果愿意深挖都会是不错的开源项目(也许你能找到别人做的开源项目)
总结这个阶段的目标是具有相对成熟的工程能力,有充分的计算机领域资料查找能力,有硬啃复杂源代码的能力,同时拓宽视野。(啃别人的好代码是个很好的学习过程,debug和理解代码逻辑,在这个过程中应该不可避免)。
另外还有一些软件工程思想的视频真的不错,对于工程素养很有帮助,建议扩充视野的看看,包括TDD,契约式编程等思想,不过千万不要被局限了,每种思想都有适用场景的。

再下一个阶段,就没什么定数了。
如果是学术导向,可以去阅读论文,尝试复现论文中的工作,找准一个前沿方向论文,阅读某几个大佬的论文。(PS1:做学术如果没有好的工程能力,我觉得都是白搭,除非只是打算灌水,不打算做实事儿;PS2:我自己没找准方向,所以我在这里翻车了,我的经验不作数- -,依旧是博爱的我,所有方向都喜欢,都学不会,都不精)
工程导向的话,就是开源项目吧?懒狗不太会为爱发电,虽然有兴趣,但是都懒得动手,也没有好的idea就已经成为社畜了,成为社畜之后更没法为爱发电了。不过,有耐心去挖进阶阶段中的公开课开放式课题,一般会有不少不错的idea,有耐心毅力的大佬可以试试。

另外,没事可以看看koala聊开源之类的热门开源项目介绍的视频,闲的时候可以去关注某个开源项目的能力,闹测下自己想实现会遇到什么问题,如何解决,应该都还不错。

就这么多,只是一点很不成熟的想法,欢迎交流~。上述的步骤做到一半,我相信如果是真的喜欢的人,已经找到了自己的路了。

 

上面的事我做了一半,然后我成为了社畜和咸鱼,苦逼打工仔,依旧热爱,但是不喜欢发电的打工仔,也许有一天会为自己发电也说不定。

 

最后,,,节操节操我来啦

感觉哥你 有点实力的虽然能翘的就翘了

但是还能写出这么多 哥肯定也努力过 还是希望哥你做到自己喜欢的事 至少咱努力 也有很强的精神 我相信哥你做什么事都能成功

链接到点评
3 小时前,rumia163说道:

:mx013:我在写脚本的时候,感觉之前计算机课上学到的东西并没有用上多少,但很有道理的样子。不明觉厉

:YangTuo_61:

确实文字内容有点偏死板了,不过,脚本也有些会和课上内容有相关的,如果只是业务逻辑确实大多牵扯不到,但是一旦碰到语言本身的边界的时候快速理解和绕过就需要这些知识了。

例如,基本所有脚本语言都需要面对gc,很多gc会stop the world,当业务逻辑需求连续的处理任务,但是莫名其妙代码暂停了1s,怎样规避或者缓解时就需要这方面经验了。

还有python的GIL涉及到OS相关。如果是js,最近比较流行的wasm,也会涉及到体系结构,操作系统和虚拟化技术。

虽然上面这些每个事情单独去看相关上下文,去查资料都不很难,但是它们在那几门课里都是有雷同的原型的,那几门课吃透的结果,是遇到这些问题很容易去联想,并产生解决思路。我大概是想表达这个意思。

Tachimo和寒幼藏在半夜盗取清禾的传国玉玺时,无意中挖出了清禾祖传的3DS,卖出手后获得了奖励3节操

链接到点评
11 分钟前,vv5050说道:

我的天这哪是自学,科班的从业人员能吃透其中几本书基本上在大厂上班简简单单啦。哈哈哈基本上真的懂操作系统和计算机网络就能轻松干底层开发啦

haha,其实自学和老师教在大学里没太大区别,我只是想谈谈我理解下,哪些是真正重要的,以及最快速的完善知识体系的,不过,路径也会很陡,对我自己来说,mit6.828的课,真的受益匪浅,也足够激发兴趣。按这个路走下来,我相信基础一定够牢,也足够去在有时间的情况下拓展感兴趣的东西了。所以提及算法和数据结构的时候只希望吃头基础,并对一些高级的算法有个目录和概念的认识。倒是离散数学真的是个好东西,一般被忽略不提,但在任何场景下都能看到它影子

:Genshin_HuTao_008:

,由Tachimo修改
链接到点评

创建帐号或登入才能点评

您必须成为用户才能点评

创建帐号

在我们社区注册个新的帐号。非常简单!

注册新帐号

登入

已有帐号? 登入

现在登入
×
×
  • 新建...

重要消息

为使您更好地使用该站点,请仔细阅读以下内容: 使用条款