大家好,我是二哥呀。

今天来给大家分享一些学习编程的心得,真的颠覆了我以前对学习编程的刻板印象,可以这么说,如果你恰好处在大学阶段,看到了这篇内容,OK,恭喜你,如果你能按照我说的去做,大三大四的时候绝对能领先同学一大截,除非你好心把这篇内容分享给他——嘿嘿。

编程分两种,一种是实操型,奉行的准则是实践出真知;一类是理论型,奉行的准则是全部的知识都要搞懂后才肯去动手。前者代码写得多,但基础不扎实,刚学编程时候的我应该属于这一类;后者代码写得少,一句“talk is cheap, show me the code”就被呛得想动粗。

真正的大牛,能在两者之间找到一个巧妙的平衡点。

对于上班族或者转行的同学来说,想把所有的知识点都铺开去学习完,确实不现实,最好的办法就是重实战,然后再补理论。对于科班的在校大学生来说,因为有充足的时间,所以可以在理论知识上多花一些时间,等到工作后再弥补实践上的短板我认为是最正确的方式。毕竟鱼和熊掌不可兼得呀!

最近些年,可能是因为写作的原因,我补充了大量的基础知识,就突然感觉“今非昔比”了,编程上有了很大的进步,尽管依然很菜,但比前些年自认为好了很多。

好了,废话就不多说了。先给大家推荐一门课,哈佛大学的 CS50。

老师非常激情,尽管没有在现场,但依然有一种身临其境的感觉。第一节课,直接就叫同学到讲台上撕了一本超级厚的书,就为了给同学们灌输一种思维——说得直接点,就是二分查找法,先把书撕一半,然后再撕一半,再撕一半,直到找到一个 M 开头的名字。

总共也就 20 多节课,每节课大概一个小时左右的时间,大家可以每天刷一节。我简单列一下课程的目录,基本上都是编程中要搞懂的基础知识。

  • 算法、程序设计、语言等
  • 数据存储、磁盘等
  • C 语言、源代码、编译器等
  • 函数、全局变量、参数、返回值等
  • 线性搜索、二进制搜索
  • 符号、递归、冒泡排序等
  • 归并排序、动态内存分配、堆和栈等
  • 指针、文件输入输出等
  • 数独、计算机史上最有名的 bug 等
  • 魂斗罗游戏如何分配内存等
  • 哈希函数等
  • 网络编程等
  • 网络安全等

说一件挺不好意思的事,我以前觉得只学 Java 这门编程语言就够了,做个 CRUD 的好 boy 不就挺好的嘛。然后随着时间的推移,越来越觉得这个想法有点天真,有点无邪,哈哈,还是要力争上进的,多学点没啥坏处。

一开始学也行,随后补也行,总之是不能想当然的不学,会吃亏的,吃大亏的。

关于 C 语言,我之前给大家推荐了浙大教授翁恺的视频,以及一个英文的在线学习网站,新来的同学可以去看一下。

https://www.bilibili.com/video/BV19W411B7w1

大家应该能发现,很多讲解计算机科学相关的书籍,包括课程,里面的例子几乎都是 C 语言描述的。我在《一把小刀,直插 class 文件的小心脏》这篇文章里也提到了 C 语言的符号表(Symbol Table)。

C 语言是很古老了,但越老的东西活得越久,越能证明它的优越性。

不得不说,哈佛就是哈佛,名校就是名校,这课程真心给力。如果你真的是对计算机科学感兴趣,并且将来要进入这个行业工作,强烈建议多刷几遍。

这是一个在编程界混吃等死了十多年的老菜鸟给初学者的最良心的建议。下面是这门课程的地址。

https://open.163.com/newview/movie/free?pid=M6U6LS8CV&mid=M6U6MHDUR

刷完这门《哈佛大学的 CS50》,也刷完了翁恺教授的《C 语言程序设计》,就可以看看下面这本天书了!

这本书牛不牛逼,直接看豆瓣评分就能感受到,基本上全星,应该说是计算机相关书籍中评分最高的一本了吧。

那肯定是一门好书,一本再好不过的书了。

但能不能看得懂,能不能耐着性子看下去,就需要看你的定力了!

这本书从计算机开始讲,介绍了电脑主机有什么部件,主板上有什么零件,CPU、内存和硬盘之间是怎么连接的。

介绍了我们写的程序是怎么从一个文本文件被编译,然后是怎么变成汇编语言,再到机器码的,以及怎样被计算机执行的。

还讲到了计算机网络、计算机组成原理、进程和线程等等,从硬件到软件,全部拿下。

这本书读完后会有哪些收获呢?

  • 明确某一个阶段我们欠缺什么知识。
  • 对技术有极客追求的同学会在这本书里找到很多答案。
  • 终于明白了,我们写的程序是怎么被计算机执行的。

再次强调,《深入理解计算机系统》这本书对初学者并不友好,可能需要在不同的时间节点反复的看,一开始看不懂的内容可以过一段时间再看,如果还看不懂就再等等,过一段时间回来再继续看。另外,书里面很多例子都是用 C 语言写的,所以在看这本书之前一定要把 C 语言给吃透了。

总之,不要抱着那种一定要把这本书吃透再怎么怎么样的幻想。先从中学到 1%,再学到 5%,再到 10%,不要操之过急,学到点是点,能学到多少都是值的,不抛弃不放弃,嘿嘿。

如果真的想从事编程,当做一份职业来对待的话,你需要一本这样的书

读这本书的同时,可以着手学习数据结构了,比如说数组、链表、树、图,以及哈希表等。为什么要学习数据结构呢?

清华大学邓俊辉老师的答案:数据结构作为构建高效算法的必要基础,在计算机科学领域中,起到了技术体系的基石的作用。以 ACM/IEEE Computing Curricula(计算机教学大纲)2005 年版为例,其中对于计算机科学、计算机工程、信息系统、信息技术、软件工程等几个相关专业的共同要求中,数据结构与算法作为程序设计概念与技能的核心,紧随在数学之后,排在第二位。

当然了,基本的算法也跑不了,比如说动态规划、贪心算法,还有基本的排序算法。

我给大家推荐一个在线的学习网站,地址如下所示:

https://www.programiz.com/dsa/why-algorithms

这是一个纯英文的学习网站,截图中为什么是中文的?哈哈,当然是我用 Safari 浏览器翻译过的。英文功底可以的同学可以直接看英文原版的。代码示例有多种版本,Python、Java、C 和 C++ 的都有,完全不用担心被编程语言困扰的问题。

有 C++ 基础的同学可以直接看邓俊辉老师亲自录制的课程,有配套书籍——《数据结构》第三版,清华大学的计算机系列教材,质量没得说。

我贴一下课程的在线地址:

https://www.xuetangx.com/learn/THU08091000384/THU08091000384/5883586/video/9215529

害,如果你想在毕业后或者跳槽的时候拿到满意的 Offer,甚至体验那种好多个 Offer 摆在面前,却不知道选哪一个的感觉的话,我推荐的这三门课程、一个学习网站、两本书,你值得拥有!

最后再送大家一本美团大佬手撕的 300 道 LeetCode 刷题笔记,纯 Java 版,二哥亲自整理的,分亮白版(可以打印出来学习)和暗黑版(晚上看保护眼睛),对于算法薄弱或者需要提高的同学都十分受用(提起码:xs23):

https://pan.baidu.com/s/1xe3r8qDuKE99p2ZD9w2XrQ

哇塞,原来学编程可以这样呀,忍不住点个赞,嘻嘻~

这样学编程,直接原地起飞啊!相关推荐

  1. 众筹倒闭始末:他8岁学编程14岁开公司,40岁败在智能硬件

    众筹倒闭始末:他8岁学编程14岁开公司,40岁败在智能硬件 投递人 itwriter 发布于 2016-02-05 15:57 评论(2) 有186人阅读 原文链接 [收藏] « » 一万多名众筹支持 ...

  2. 温州哪里可以学计算机编程,温州 | 什么样的孩子适合学编程?

    原标题:温州 | 什么样的孩子适合学编程? 乔布斯曾说过,这个国家的每个人都应该学习如何编程,因为它教会你如何去思考.在美国,儿童编程已经成为孩子继阅读.写作.算术这三项基本能力外所需要掌握的第四项必 ...

  3. C语言学习——从零开始学编程(第二篇:C语言知识总括)

    本节将介绍:C语言的基本框架和大部分知识的浅了解(记得先看目录哦~~) 前言--小颖的话 提示:本文篇幅长,知识点多,可以分开学习,记得收藏点赞哦~ 一.数据类型 1.C语言中的关键字 2.不同类型所 ...

  4. 非计算机专业怎样零基础学编程?

    1.入门的门槛. 对自学者而言,入门的门槛不宜设得过高.我们通常都会在做事之前高估我们的意志力,而在事情完成之后低估事情的难度.所以就会造成这样一种现象:过来人会说"这也没有什么难的啊&qu ...

  5. 学编程太枯燥太难怎么办?

    大家好,我是老三,和大家分享一些我学编程的经历. 那年二十,头发浓密如野狗,夏日炎炎,枯坐机房如木头,一根指头,颤颤巍巍如老叟,敲下了第一行"Hello World",开启了编程学 ...

  6. python从0开始学编程课件_小白从零开始学编程(三)--python基本概念

    前言 从2020年3月份开始,计划写一系列文档--<小白从零开始学编程>,记录自己从0开始学习的一些东西. 第一个系列:python,计划从安装.环境搭建.基本语法.到利用Django和F ...

  7. 《从问题到程序:用Python学编程和计算》——第2章 计算和编程初步 2.1 数值表达式和算术...

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第2章,第2.1节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第2 ...

  8. python中年大叔学编程_中年大叔学编程-Python简单操作文件

    原标题:中年大叔学编程-Python简单操作文件 在计算机中,经常打交道的就是各种文档,用得比较多的软件就是office和记事本来操作文件,那么我们试试用Python来简单读写文件. Open函数的用 ...

  9. 学编程当中最重要的三点,一些很正经的建议

    来源 | 沉默王二(ID:cmower) 今天不聊别的,给大家聊一下我认为学编程当中最重要的三点,尤其是针对新人来说. 热爱 努力 解决问题的能力 先说热爱. 有的同学是一开始就热爱,所以选专业的时候 ...

  10. 《从问题到程序:用Python学编程和计算》——第3章 基本编程技术 3.1 循环程序设计...

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第3章,第3.1节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第3 ...

最新文章

  1. java的知识点27——lambda推导
  2. cli3解决 ie11语法错误 vue_从零到一教你基于vue开发一个组件库高性能前端架构解决方案...
  3. dnf单机无线连接服务器,dnf单机云服务器
  4. 让你IDA Pro 快速上手使用
  5. otc焊接机器人操作规范_「分享」超声波塑料焊接机的操作规范
  6. 将url参数转为json对象
  7. 实现excel在线打印
  8. FreeRTOS消息队列详解第一讲(全网最全)——消息队列概述
  9. git创建本地版本仓库
  10. stm32f405rgt6芯片手册
  11. 导出计算机应用的组策略,组策略应用
  12. 如何在win10中迅速打开命令提示符
  13. 解决ios7.x越狱后静态壁纸变为空白
  14. 关于AI芯片功耗和应用的一些看法
  15. matlab图像处理二,图像缩放、旋转、修剪
  16. Windows部分软件乱码教你快速解决
  17. 《利用python进行数据分析》读书笔记
  18. 小白学电脑计算机的组成,零基础的电脑小白学电脑
  19. Android下拉刷新
  20. Mind quantum 基础知识学习笔记(1)

热门文章

  1. Android 画笔演示功能的实现
  2. 优化GPU显存不足,提高GPU利用率
  3. Eclipse的Maven创建
  4. 获取计算机用户名称的方法,javascript读取用户名和计算机名
  5. Mac vmvare vmdk文件使用
  6. Java获取某年某月的第一天
  7. 邮件抄送(CC)和秘密抄送(BCC)
  8. 计算机专硕双导师,【计算机专业论文】双导师制人才培养计算机专业论文(共1315字)...
  9. 在Ubuntu上安装KDE(Kubuntu)
  10. 内存的速度和CPU缓存速度比较