【其实所有的程序都是在制定规则,只不过操作系统制定的是最根本的规则。创造一个操作系统,就相当于为自己创造的一方土地制定宪法,而在电脑上跑的程序则相当于各式各样的普通法律。】 大牛谈编程之美,大家感觉下。 人们之所以会对计算机着迷,原因之一就在于计算机可以让人们游历自己创造的新世界,了解这个新世界能由自己改造后,可以变成什么样子。在数学中,人们往往是开动脑筋,根据经验来假设,从而得出可能性。举个例子,说到几何学,大部分人想到的都是欧几里德几何学。但是计算机能够帮助人们将不同的几何学形象化,而不仅仅局限于欧几里德几何学。有了计算机的辅助,就可以把虚构的世界形象化,亲眼看看这些虚构世界到底是什么样子的。记得曼德勃罗集吗,就是那个基于伯努瓦曼德勃罗等式的分形图像?分形图像是人们利用计算机,对一个纯粹的数学世界的形象化表述。而在计算机出现之前,像这种纯数学,是绝不可能被形象化的。曼德勃罗就是在他那个本不存在的世界中,人为地制定了一些规则。虽然分形与客观现实毫无关系,但他们却创造出了一些非常棒的形状。通过计算机和编程,你可以构建新的世界。有时机缘巧合,这个新世界还会特别美妙。 不过,大部分时候,你并不是在创造新世界。你写一个程序,其实只是为了让它执行某个任务而已。在这种情况下,你就不是在创造新世界,而是在这个已存在的计算机世界里解决一个具体问题。要解决问题,就得好好思考问题。但是,光是坐在电脑前盯着屏幕思考,就能把问题想通的,只有一些比较怪异的人才能做到。比如说,像我这种呆子气十足的怪胎就做得到。 计算机上的所有功能要起作用,都得以操作系统为基础。于是,创造一个操作系统就成了终极挑战。你创造操作系统的时候,相当于给所有在这部电脑上跑的程序创造了一个全新的生存环境从根本上说,其实就是在制定这个世界的规则:什么事可以接受、可以做,什么事不可以接受、不可以做。其实所有的程序都是在制定规则,只不过操作系统制定的是最根本的规则。创造一个操作系统,就相当于为自己创造的一方土地制定宪法,而在电脑上跑的程序则相当于各式各样的普通法律。 有时候这些普通法律根本就行不通,这时就要看你的能耐了。你需要找到解决方案,并且清楚意识到自己已经循着正确的方式找到了正确答案。 还记得学校里那个总能答对问题的家伙吗?他的答案总比其他人来得快,恰恰是因为他没有刻意去寻找正确答案。他并不知道问题本该以什么样的标准思路来解决,只是以一种合理的思路来考虑这个问题。因此别人一听到他的答案,就觉得很合乎逻辑。 编程也是如此。你可以用蛮劲解决问题,跟问题慢慢磨蹭,直到它不再是问题为止,看谁磨得过谁。不过这是个愚蠢的办法。或者你也可以找到正确的方法来解决问题,这样问题就会立马消失。换一个角度看问题,你会突然灵光一闪:问题之所以成为问题,只是因为我原先看问题的方法不对! 要证明这一点,计算机科学方面似乎没有什么好例子,不妨举一个数学的例子吧。故事是这样的,伟大的德国数学家高斯那时候还在上学。有一天,他的老师觉得课本上的题太无趣,为了不让学生们走神,他让大家把从1到100的数字加起来求和。老师原以为这群小孩子要花一整天的时间来做这道题,没想到这才过了五分钟,我们这位初露头角的小数学家就给出了正确答案:5050。他没有从1到100一个数字一个数字简单相加,因为要那样计算,可真是既折腾人又愚蠢到家。原来,他发现1加100是101,2加99也是101,3加98还是101,一对对算下去,直到50加51得到最后一个101。没多久的时间,他就注意到一共有50对101,于是答案就出来了,就是5050。 这个故事也许是虚构的,道理却十分浅显:伟大的数学家不会采用既繁琐又无趣的方法解决问题,因为他们能理解问题背后的真正内涵,并且利用这个内涵找到更为简便的方法,从而得出答案。这个道理放到计算机科学上,绝对也是一样的。没错,同样的问题,你可以随便写个程序来求和,就现在的计算机技术来看,这就跟打个响指一样简单。但是只有才思敏捷的伟大程序员才知道真正的答案。他们知道怎么样采用全新的方法,写出一个漂亮的程序来攻下某个问题,并且最终会证明这个新方法就是正确的方法。 我还是很难解释清楚,闭门三天冥思苦想却徒劳无功,找不到一个漂亮的好方法来解决难题,这编程到底有什么好着迷的?其实,一旦找到了解决问题的那个漂亮方法,那种感觉就会是无与伦比的。 推荐图书: IT人物传记图书中最有趣的一本,世界上最伟大的程序员的人生经历如何?一个创造性开发者的脑子是怎样运转的? 如果你是一名程序员,强烈推荐此书,如果你是一名普通读者,高度推荐此书,总之,你会喜欢。 点击左下角【阅读原文】跳转到某东本书购买页面。 本文转载自:微信公众账号 - 图灵教育,版权归原作者所有! |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|