其实上一本书《笨办法学python》严格意义上来说,算不上是入门书,因为它主要目的是让你去找到敲代码的感觉,基本不涉及计算机的内容。说到真正的入门,MIT的《计算机科学和python编程导论》这门课程是个非常好的选择。对于想要入门python的人来说,这门课程不会让你失望,但是它能给你的不止于此,其实这门课程的核心目的,是以python这门语言为媒介,向你介绍计算机科学领域的重要基础内容。有了这个认识其实很重要,因为它决定了你学习这门课的方式和最终效果。自己当时很愚笨,只是单纯把它理解为了掌握pyhon这门语言的课程,对于课程中的有些内容并未给予足够的重视,即便如此,自己也收获了比预想多很多的东西。只是现在回过头里再看这门课程的时候才发现,错过了很多好东西。
说了这么多,这门课究竟讲了什么呢? 课程的一开始就抛出了一个问题——what does a computer do ? 随后作者介绍了计算机所具有的两个根本特性——超快的计算速度和超大的内存。计算机拥有的计算速度,可以达到每秒钟十亿次,与此同时,相较与需要存储的内容而言,计算机具有近乎无限的存储空间。正是因为在这两个惊人特性的组合,便赋予计算机强大的功能。当我在学习了后续的课程后,发现很多的内容都是围绕着这两点展开的。算法和数据结构就是一个很好的例子。虽然我们拥有超快的计算速度,但是面对异常复杂的问题时,单纯蛮力式的进行运算,是不明智的。这时候算法就派上了用场,通过一些巧妙的的算法,我们可以把一个问题简单化,这样运算自然简单了许多。同样的道理,面对复杂的问题,需要存储的内容和数据是巨大的,如何通过巧妙的存储以利于数据的读写,这就是数据结构的内容了。这也是为什么我们一般会把算法和数据结构放在一起讲授,因为它们本来就是一个整体。
这门课程的核心,是向大家传递一个概念——计算思维(computational thinking)。这其实是很庞大的一块内容,自己可能现在还不能完全驾驭,不过也尝试着说说自己的理解。过去当我们面对一个问题的时候,可以通过很多的角度来思考和解决,比如人性的角度、历史的角度、经济的角度等等,现在随着计算机性能的提升和使用的普及,它可以看做是人脑的一个延伸,那么利用计算机去考虑和解决问题就成了另一个我们可以使用的有效手段。计算思维就是在这种背景下产生的一个概念。其实计算思维这个玩意我们日常中一直在用,比如说,当我们面对选择,权衡利弊的时候,其实就是计算思维的体现。但是人脑的运转速度和记忆力是有限的,当计算机成为我们人脑的延伸时,具备的超快的计算速度和超大的储存空间,就让原先我们自己不可能解决的问题变成了可能。那么在这种情景下,对于一个现代人来说,掌握计算思维就非常变的非常重要了。计算思维的过程,概括起来主要有四个内容——抽象、可计算、运行、优化。 具体说来,面对一个问题的时候,先利用抽象能力,找到问题的本质,随后将其转换为可计算的内容来运行得到结果,但是到这一步并未结束,在得到结果后我们还有对其进行优化,以得到更好的结果,而且这个优化过程是往复多次的。
通过这门课,我们可以逐渐的去理解并掌握计算思维的本质,但这仅仅是一个入门,还需要我们后续不断的去学习和实践。作者也为我们开设了一门后续课程——《计算思维和科学导论》,Peter Norvig 开设的《design of computer program》也是一门强调计算思维的实践课程,很值得一看。