加载中...
你是程序员!
第1节:你了解学习编程的困难吗?
第2节:你适合学习编程吗?
第3节:你能理解冯.诺依曼结构吗?
第4节:从机器指令到高级语言
第5节:你是程序员!
课文封面

在C++设计中有一条指导原则,那就是无论做什么事情,都必须相信程序员;与可能出现什么样的错误相比,更重要的多的是能做出什么好事情。C++程序员总是被看作是成年人,只需要最少的看护。

视频

这是本课程的最后一节课,让我们对以往所学做一次快速回顾。

第1节:好学和不好学的编程知识

在第一节,我们首先认识的三位祖师爷,并且在他们面前宣誓。当然,能让我们成为程序员的不是宣誓,而是各位正在学习的启蒙课程。

此时此刻,距离你成为一名程序员还有10分钟。

在第一节,我们将编程所需面对的知识,划分成两大类:好学,但容易过期的;难学,但相对长期有效的。基于这一认识,我们提出:学习编程,尤其是学习C++编程,需要从理解掌握计算机的基本原理、概念开始,并在日常的学习过程中,主动建立起知识上下层之间的联系,形成完善的知识体系结构。做到知其然并且知其所以然。

我们还提到学习编程最有效的两个动力来源:兴趣加信心。注意我们鼓励大家以找工作拿高薪,作为学习编程的目的,但是你需要将拿高薪的欲望,转化为对编程知识自身的学习兴趣;并建立起学习信心。请相信,相比一个人战斗,通过老师及课程的引导,更容易建立并长久保持这一兴趣和信心。

第2节:英语、数学,和学习编程的关系

在第二节《你适合学习编程吗?》,我们开始讨论学习编程的技能要求。首先是两个经典问题:学习编程需要英语好吗?需要数学好吗?

英语好当然有利于你阅读更丰富,更及时的学习资料。但对初学者而言,当前国内的中文编程资料已经极大丰富、新鲜。事实上,通过编程训练,反倒有利于我们理解不少英文资料。

数学也类似,数学好,有利大家学习编写更复杂的算法。但计算机编程早已应用到各个行业,大量问题的解决,并不需要高深的数学知识;另外,常用的数学算法也已经被写入代码库,初学者更多的是学习如何使用它们,而不是如何重新发明它们。

然后我们提出:学习编程真正需要的技能,一是逻辑能力,二是动手能力。基于这一结论,在逻辑方面建议大家平时加强训练,让逻辑推理成为你的一种思维习惯。在动手方面,现在要做到的是踏踏实实的完成课程中的各个动手实践练习,将来更是要达到:一日不写代码,便觉三餐无味的地步。通过高强度的训练,养成编程手感。

编程也需要手感吗?真正的原因是:只有代码写多了才有可能实现,将10个手指头一放到键盘上,你的整个身心,就能马上切换到编程所需的状态。

在第二节,我们也完成了第一个动手练习题:你好,C++的世界。

第3节:冯诺伊曼结构

第三节我们重点讲了冯诺伊曼结构。运算器、控制器、输入输出设备、内外存储设备等。并且使用了一个小例子,模拟冯诺伊曼结构下,各个部分的协同运转过程;还特意提到了控制器的作用。以及我们尝试将一行代码,套用到冯诺伊曼结构上进行解释。

我们还提到了,内存由一个个连续的字节组成,每个字节都有唯一的地址编号。我们想办法 “偷窥”了两个写在代码中的字符串,在程序运行时它们的内存地址。希望这个动手练习,能建立起你对数据和内存的第一个感性认识。这也是上层知识和底层知识建立起连接的一个小例子。

第4节:从机器指令到高级语言

在这一节里,我们知道了计算机和马桶的本质区别是:能不能输入输出程序。我们还有了有关机器指令的第一个定义:计算机可执行的最小功能;并且提到了指令的常见分类,以及不同型号的处理器的指令可能并不兼容。

第四节里,我们还写了一段C++代码;然后亲眼看到了这段代码,在编译之后的机器指令和汇编指令。顺便的,我们提到了16进制的一点小知识:16进制,借用了字母a到f来表达数字10-15。

很快我们从形而下的机器指令,上升到了形而上的编程哲学。我们知道了:C++编程的第一个大道理:诸事诸物,当有出处!其实是想说,C++的语法对代码的各个符号的出处,有着严格的要求。

为了验证这一点,我们尝试着注释掉include这行代码,由此看到了爆炸式的出错信息。最终我们明白:c-out和end的这两个符号的声明,来自 iostream 这个文件。同样的方法,我们注释掉“using namespace ” 这行代码,并由此解释了“名字空间” 这个术语,也大致了解了它的作用:它主要用于减少代码中的符号重名。

第5节:最后四个秘诀

如果你,理解掌握了刚刚提到的各个知识点,也完成了各个动手练习题;那么你马上就要是一名程序员了。

现在还有5分钟,我们要讲一讲成为一名优秀程序员的最后四个秘诀。

5.1 秘诀一:你要勇于苦中作乐

写程序、找bug、赶进度,很苦很累。想要成为程序员,就要做好吃苦受累的准备。而最好的方法是你能做到以苦为乐,越斗越勇。

5.2 秘诀二:你要乐于自省自嘲

现代的编程工作基本是团队作战,当系统出现问题时,每个程序员应该首先怀疑、检查自己负责的模块;而不是第一时间去怀疑、指责团队的其他成员。反过来如果你发现最终问题,确实是自己造成的,也不要觉得这有很丢脸,然后要去隐瞒它;正确的做法早:将自己犯的bug公示出来,并加以自嘲,你会更强大!

5.3 秘诀三:你要惯以逻辑理性的思考问题

事实上长期的编程工作,必然会让一个优秀的程序员。越来越理智、冷静、敏锐。绝不容易情绪化。你用不着因此会担心,被女朋友嫌弃不够感性。想想吧,一个遇到困难能苦中作乐的人,一个碰到问题总是先自省自嘲的人,一个为人处事冷静理性的人,你的女朋友还嫌弃你?还不懂你的优秀?那为什么不把她抓过来,也来学习C++呢?

5.4 秘诀四:你要善于表达沟通

不要以为当程序员就一定是穿着格子衫很闷的形象。无论是编写代码,还是表述需求讲解设计,或者是团队合作,甚至就是公司年底的工作小结,通通都需要你有很强的表达能力。

如何提升表达沟通能力?过段时间我们的第2学堂也会开课。欢迎关注。

出发赠言

终于到了出发赠言的环节,先送大家一段C++之父说的话:

“在C++设计中有一条指导原则,那就是无论做什么事情,都必须相信程序员;与可能出现什么样的错误相比,更重要的多的是能做出什么好事情。C++程序员总是被看作是成年人,只需要最少的看护。”

所以如果在本课程结束时,让我对大家说一句话,我想说:学C++,做成年人。