技术分享
如何自学计算机
前言
这篇文章主要讲述一下我当时在自学计算机时躺过的一些坑,以及总结一些自己推荐的资源。
正文
网络环境
需要能正常访问Google。如果不能推荐过完电丸AK的 硬核翻墙系列, 然后去 duyaoss 找到并购买理想服务。
中/英文
虽然前期通过中文上手很快,但从长远发展,一定是推荐英语作为计算机课程学习语言的。全球互联网默认语言为英文,工作所需框架英文文档翻译成中文大约需要等待一年及以上时间。
在英文专业书籍译本中,除了 CSAPP 外,少有优秀译本。
学习英文课程对于一些从小在一线/新一线强校毕业,高考时大家准备的不是高考英语,而是雅思/托福教学,这类人在纯英文学习环境下会好一些。我高中毕业于普通小城,个人高考英语140左右。在听有关英语课程、阅读简单英文文章以及将系统、软件语言切换成英文学习过程中都还不错,但在刚开始适应英文书籍过程中还是比较痛苦的。我看完的第一本专业书籍为曼昆的《经济学原理》(Principles of Economics)。但在阅读过程中遇到两点问题。一是阅读速度慢,当时暑假每天晚上花两小时左右时间,哪怕一小时专心致志也只能看8页,这本书文字量并不是很大,页面还是很多插图;二是受语言影响理解受限,知识掌握并不扎实。
结合我的经验,我建议在用英语学习专业知识时,需要准备充足的学习时间,做好1~2年适应的时间。
学习方式:视频/课本
视频方面,我个人看过国内的 MOOC,也看过国外 Coursera, Edx 以及 Udemy. 因为下定决心学英文,国内MOOC最先舍弃。国外的话我其实觉得 Coursera, Edx 视频内容比较简单,和课本完全不是一个难度等级,经常碰到初看视频很轻松,做作业时一片懵的情况。(比如 Priceton 在 Coursera 的 Algorithm 课程) Udemy 的话,我觉得内容参差不齐,而且价格不便宜。可以等到以后入职后,蹭公司的 Udemy Business 看。
相对来说,国外有很多优秀适合自学的课本。不过,最重要的还是要做练习。不然很容易忘。
书籍阅读平台
直接来一个个人的总结。笔记本屏幕 > iPad > 影印本 > A4打印 > 电纸书。
iPad效果不如电脑原因为屏幕尺寸不够大。竖屏模式下不够宽,A4页面的书本字体非常小,看着费眼;横屏模式下所能展示的行数又远不如电脑。
影印本主要是很难找,而且我觉得和电子版相比,字体不可调节这点很伤。如当时在京东买的 Linear algebra and its applications David C. Lay,字体非常小成了我没有看完的主要因素。而且谁不喜欢电纸书彩色页面呢,影印版彩印书籍难买且贵。不推荐A4打印的原因为检索和携带都很麻烦。
最不推荐的阅读媒介是电纸书,因为电纸书一般尺寸都很小。当然如果是能买得起且能买得到 Sony DPT-RP1 的土豪,这部分就不用看了。
当然如果宿舍很安静的话,外接显示器阅读也是很推荐的。但如果是住的国内宿舍,能同时遇到全安静的室友真的很难得。在学习方面,我宿舍的外接显示器压根没用上。
书籍格式
格式方面 epub > pdf > mobi/aw3.
获取渠道
虽然知道创作一本书或发表一篇paper很辛苦,但是我更对当前教育不公平现象表示不满。
有一些书籍同时有在线免费阅读以及购买纸质书两种选项。也可以购买Pearson等平台会员来下载指定书籍,这样会相比下载单本书籍便宜一些。最后如果实在家里困难,可以去z-lib搜搜看。
论文的话:sci-hub。国内论文的话随便看看吧,优质论文一般都是全球以英文形式发表。最后还是忍不住吐槽一下国内论文平台,CNKI就是一大毒瘤。
课程
数学课程
主要包括高等数学、线性代数、离散数学、概率论与数理统计之类。这些课程也很重要。
在这里主要提醒两点:
- 注意如果学校考试语言为中文,考试前一定要对应词汇表,不然会考试体验简直不要太美妙。比如离散数学,蕴含、析取、重言,因为自学用英文教材,参加第一次阶段性测试,整个人彻底是懵的。
- 一定要合理预估学期课程时间。对于转专业同学尤为如此。以概率论与数理统计一书为例,全书900多页内容,真的需要非常多时间。
计算机核心课程
至于计算机核心课程,我非常推荐大家看一下知乎胡津铭的回答:非计算机专业学生怎么走上计算机技术之路?。据我的了解,不仅非科班可以通过这种方式学习,甚至很多科班学生,如SJTU大名鼎鼎迟先生也系统过了一遍这些课程。
另外千万别被学历给限制住,除了胡津铭讲述的自己同学例子如何摆脱大学差、学历低的焦虑和困窘? - 胡津铭的回答 - 知乎外,也可以Twitter关注一下我非常佩服的 February.
以及在学习稍显枯燥的计算机专业课程学习之余,也可以看看一些提升软实力的东西:
- The Missing Semester of Your CS Education. 这个课程弥补了一些计算机专业课程中不会讲述,但在现实软件工程中必不可少的部分。这里的总体都讲的不错,里面的Resource都非常丰富,如Vim的
vimtutor,刷两三遍就能记住常用功能了;git推荐的Pro Git以及Learn Git Branching小游戏。
总结
最后,希望大家能减少焦虑,找到自己喜欢的东西。“种一棵树最好的时间是十年前,其次是现在”,也附上自己当时找工作焦虑时看到的一篇文章与大家共勉:Teach Yourself Programming in Ten Years.