成果源于正确的思想
——读《大道至简:编程的精义》有感
应老师的推荐,我阅读了周爱民所著《大道至简》,在读完第一章“编程的精义”后,决定写下读后感表达自己小小的看法。
首先,世界变化万端、而理为一贯。我们学习一项知识理论并用它解决实际问题,最根本的不是掌握某种方法,而是明白其本源。只有深刻理解事物背后的道理,才可以此不变应万变,知变通之道而不乱。这本书主要为我们讲述了作者在从事十年软件开发之后回顾自己的经历所得到的感想、和自己的思考。
总结编程的精义,就需要简单的编程可以实现庞大的工程,而愚公移山就是一个很恰当的例子。“惩山北之塞,出入之迂”相当于我们在编程中所遇到的问题,“毕力平险,指通豫南,达于汉阴”是我们所要输出的结果,“扣石垦壤,箕畚运于渤海之尾”作为具有可行性的方案,利用“虽我之死,有子存焉”的分支结构,之后采用非死循环的循环结构“子又生孙,孙又生子;……无穷匮也”来完成了整个程序的构造。由此可见,编程的精义就在于顺序、分支和循环。
所以,我们再也不能去想会不会写程序的问题,在编程的精义下,有的,只是我们愿不愿意去思考、能不能认真的去分析,然后解决问题。
一个程序的实现取决于两部分工作:开发人员的编写和计算机的执行。前者编写程序的要求是通过语言的形式,让计算机明白你想要做什么。换言之,如何做到让计算机更好的理解,就需要先去分析和思考事物的本质,搞清楚事件先后的逻辑关系和依赖关系,找到解决的办法。而不是一接到问题就去敲代码,这样反而没有效率,事倍功半。就像书中所说的,积极工作和勤于思考都要占时间。程序=算法+结构,算法是逻辑实现的描述,而结构是其所依附的数据实体,也就是说这个公式表达了一种思想,找到了算法并应用于数据程序就已经定型了,剩下的代码就是一个体力活。
我们平时的交流是通过语言,对象是人与人。而程序的实现需要人与计算机的交流,所以编程语言就起到了它的作用。不同的编程语言有各自的试用范围,有的适用于做数值处理,有些适合做图形处理,还有的适合于做网页。不过,从根本上讲,它们还是极其相似的,所以我们没有理由只学习其中一种或者说哪一种语言更好。
总而言之,我认为懂得了编程的精义,就是懂得了程序的核心。当我们遇到一个问题,首先要搞清楚它的本质,即明白它要我们得到什么样的结果,然后采取一个具有可行性的思路,找到前后的逻辑关系,设计出合适的算法并应用于数据结构的描述,之后利用代码使计算机明白我们的目的,完成程序的实现。