掘金的小伙伴们,你们好,我是沉默王二。算法
今天来给你们分享一些学习编程的心得,真的颠覆了我之前对学习编程的刻板印象,能够这么说,若是你刚好处在大学阶段,看到了这篇内容,OK,恭喜你,若是你能按照我说的去作,大三大四的时候绝对能领先同窗一大截,除非你好心把这篇内容分享给他——嘿嘿。编程
编程分两种,一种是实操型,奉行的准则是实践出真知;一类是理论型,奉行的准则是所有的知识都要搞懂后才肯去动手。前者代码写得多,但基础不扎实,刚学编程时候的我应该属于这一类;后者代码写得少,一句“talk is cheap, show me the code”就被呛得想动粗。数组
真正的大牛,能在二者之间找到一个巧妙的平衡点。浏览器
插句题外话,算法题就好像科举考试时代背的八股文,是知识改变命运的表明做。你不刷,不论是校招仍是社招,就很过算法题这一关。我整理的这份 LeetCode 刷题笔记足足 300 道,对算法薄弱和须要提升算法的同窗颇有帮助:安全
刷完 300 道 LeetCode 题后,我飘了!markdown
对于上班族或者转行的同窗来讲,想把全部的知识点都铺开去学习完,确实不现实,最好的办法就是重实战,而后再补理论。对于科班的在校大学生来讲,由于有充足的时间,因此能够在理论知识上多花一些时间,等到工做后再弥补实践上的短板我认为是最正确的方式。毕竟鱼和熊掌不可兼得呀!网络
最近些年,我补充了大量的基础知识,就忽然感受“今非昔比”了,编程上有了很大的进步,尽管依然很菜,但比前些年自认为好了不少。数据结构
好了,废话就很少说了。先给你们推荐一门课,哈佛大学的 CS50。编程语言
老师很是激情,尽管没有在现场,但依然有一种身临其境的感受。第一节课,直接就叫同窗到讲台上撕了一本超级厚的书,就为了给同窗们灌输一种思惟——说得直接点,就是二分查找法,先把书撕一半,而后再撕一半,再撕一半,直到找到一个 M 开头的名字。ide
总共也就 20 多节课,每节课大概一个小时左右的时间,你们能够天天刷一节。我简单列一下课程的目录,基本上都是编程中要搞懂的基础知识。
说一件挺很差意思的事,我之前以为只学 Java 这门编程语言就够了,作个 CRUD 的好 boy 不就挺好的嘛。而后随着时间的推移,愈来愈以为这个想法有点天真,有点无邪,哈哈,仍是要力争上进的,多学点没啥坏处。
一开始学也行,随后补也行,总之是不能想固然的不学,会吃亏的,吃大亏的。
关于 C 语言,我以前给你们推荐了浙大教授翁恺的视频,以及一个英文的在线学习网站,新来的同窗能够去看一下。
你们应该能发现,不少讲解计算机科学相关的书籍,包括课程,里面的例子几乎都是 C 语言描述的。我在一把小刀,直插 class 文件的当心脏这篇文章里也提到了 C 语言的符号表(Symbol Table)。
C 语言是很古老了,但越老的东西活得越久,越能证实它的优越性。
不得不说,哈佛就是哈佛,名校就是名校,这课程真心给力。若是你真的是对计算机科学感兴趣,而且未来要进入这个行业工做,强烈建议多刷几遍。
这是一个在编程界混吃等死了十多年的老菜鸟给初学者的最良心的建议。下面是这门课程的地址。
刷完这门《哈佛大学的 CS50》,也刷完了翁恺教授的《C 语言程序设计》,就能够看看下面这本天书了!
这本书牛不牛逼,直接看豆瓣评分就能感觉到,基本上全星,应该说是计算机相关书籍中评分最高的一本了吧。
那确定是一门好书,一本再好不过的书了。
但能不能看得懂,能不能耐着性子看下去,就须要看你的定力了!
这本书从计算机开始讲,介绍了电脑主机有什么部件,主板上有什么零件,CPU、内存和硬盘之间是怎么链接的。
介绍了咱们写的程序是怎么从一个文本文件被编译,而后是怎么变成汇编语言,再到机器码的,以及怎样被计算机执行的。
还讲到了计算机网络、计算机组成原理、进程和线程等等,从硬件到软件,所有拿下。
这本书读完后会有哪些收获呢?
再次强调,《深刻理解计算机系统》这本书对初学者并不友好,可能须要在不一样的时间节点反复的看,一开始看不懂的内容能够过一段时间再看,若是还看不懂就再等等,过一段时间回来再继续看。另外,书里面不少例子都是用 C 语言写的,因此在看这本书以前必定要把 C 语言给吃透了。
总之,不要抱着那种必定要把这本书吃透再怎么怎么样的幻想。先从中学到 1%,再学到 5%,再到 10%,不要操之过急,学到点是点,能学到多少都是值的,不抛弃不放弃,嘿嘿。
若是真的想从事编程,当作一份职业来对待的话,你须要一本这样的书。
读这本书的同时,能够着手学习数据结构了,好比说数组、链表、树、图,以及哈希表等。为何要学习数据结构呢?
清华大学邓俊辉老师的答案:数据结构做为构建高效算法的必要基础,在计算机科学领域中,起到了技术体系的基石的做用。以 ACM/IEEE Computing Curricula(计算机教学大纲)2005 年版为例,其中对于计算机科学、计算机工程、信息系统、信息技术、软件工程等几个相关专业的共同要求中,数据结构与算法做为程序设计概念与技能的核心,紧随在数学以后,排在第二位。
固然了,基本的算法也跑不了,好比说动态规划、贪心算法,还有基本的排序算法。
我给你们推荐一个在线的学习网站,地址以下所示:
这是一个纯英文的学习网站,截图中为何是中文的?哈哈,固然是我用 Safari 浏览器翻译过的。英文功底能够的同窗能够直接看英文原版的。代码示例有多种版本,Python、Java、C 和 C++ 的都有,彻底不用担忧被编程语言困扰的问题。
有 C++ 基础的同窗能够直接看邓俊辉老师亲自录制的课程,有配套书籍——《数据结构》第三版,清华大学的计算机系列教材,质量没得说。
我贴一下课程的在线地址:
害,若是你想在毕业后或者跳槽的时候拿到满意的 Offer,甚至体验那种好多个 Offer 摆在面前,殊不知道选哪个的感受的话,我推荐的这三门课程、一个学习网站、两本书,你值得拥有!
另外,就是必定要刷算法题,尤为是若是你想要去大厂的话,算法题是必需要刷到本身都窒息的那种!
哇塞,原来学编程能够这样呀,学完直接原地起飞,小伙伴们,把赞点起来,可好?,嘻嘻~