他的懊恼还没结束,立刻变成了惊讶,因为杜秋又展示了一种优化方案,这个方案代码很长,但是把时间复杂度从o(n)大幅减少为了o(logn)。
“靠,这怎么优化的,我看不懂。”
“我也看不懂。”
杜秋拿起杜春华安排他带过来提前打广告的保温杯,喝了一口水,让报告厅里的听众有时间看代码,然后才解释道:“这是我设计的一种比较特殊的优化方案,需要有一定的数学基础才行……”
他先介绍了一个矩阵公式,然后才讲解起了代码,讲的很精炼,张栋梁数学不太好,没有听懂,有些疑惑道:“一个斐波那契数列而已,有必要搞的这么复杂吗?”
肖家霖觉得杜秋肯定另有深意,因此沉默着没有回答。
果然,杜秋讲解完了之后,说道:“你们可能认为这种优化方式是小题大作,吃饱了撑的,事实上这个公式可以触类旁通,用在别的地方发挥作用,比如计算数值的整数次方,这个题目我给大家10分钟的时间,你们想想怎么编程。”
张栋梁抬眼望去,见幕布上出现了一道题目,和书签上的那个有点类似,都是设计一段代码,函数的功能,同样属于乍一看很简单,细想却很复杂的问题,他拿出铅笔,靠着微凉的墙壁,在记事本上涂涂抹抹了好几分钟,却感觉大脑一团乱麻,完全没有思路。
杜秋并没有在讲台上傻站着,而是走下讲台,在陈志扬的介绍下,挨个和坐在前排的老师以及教授认识。
他虽然只讲了不到十分钟,但却展现出来了不俗的实力,因为第三种优化方法很冷僻,也比较复杂,用到了高等数学的知识,不仅学生们没想到,老师和教授也都没想到,有实力自然没人怠慢,个个都很热情,有的鼓励,有的赞赏,只有侯院士不满意,说道:“小杜啊,你把大猷拐去美国打工,让我少了一个好学生,是不是该有所表示?”
“您想要什么表示?”
“我喜欢下象棋,但是研究所那边没有合适的棋友,大猷之前说帮我写一个可以跟电脑下棋的程序,写了半年都没写好,不如你帮我写一个,要是写的好,咱们的恩怨就一笔勾销。”
“行,那就一言为定。”
“事先得说明,你写的程序要是个臭棋篓子,我可是不认的。”
“保证不会。”
杜秋闲聊了一会,在姜丹枫做出时间已到的暗示之后,再次走上讲台,敲了敲麦克风,问道:“有人写出来了吗?”
经过两轮筛选,能进来听演讲的学生能力都不差,因此很多人都举起了手,杜秋随机选了几个学生,让他们把答案递上来,但没有公布对或者不对,而是切换了一下ppt文档,讲解起了自己写的两段代码,第一段用传统方法解题,代码有几十行,繁琐而又低效,第二段用刚才的数学公式解题,代码只有短短几行,简洁而又高效。
讲解完了之后,杜秋调出了宣传海报上的原始代码,总结道:“我拿这段代码做海报,是想让大家知道开源软件在学习编程方面的三个好处。”
“第一,课本上的知识和生产中的需求是两码事,计算机是生产力工具,不是纸上谈兵的玩具,只懂理论不懂实践是不行的,然而以国内目前的环境,在校学生很难有实际开发一款成熟商业软件的机会,如果不想当书呆子,唯一的途径就是阅读优秀的开源软件代码,了解真正的软件开发是什么样子。”
“第二,计算机软件是一个很讲究创新的行业,想要创新,首先得有积累,文学家可以看曹雪芹或者托尔斯泰的著作,数学家可以看高斯或者欧拉的著作,物理学家可以看牛顿或者爱因斯坦的著作,程序员靠什么积累?只有看开源软件的代码,比如这个公式,就是我从某个开源软件的递归函数中发现的。”
“第三,写开源软件会让你们进步的更快。”杜秋拿起刚才那几个学生递上来的答案,在空中扬了扬,说道:“如果你们知道我会把这些答案贴在墙上给所有人看,会不会想的更严谨一点?写的更仔细一点?如果在大庭广众之下,被很多人指出了其中的错误,你们会不会认真反思?不再犯同样的错误?”
这三个好处非常浅显,即使不说在座的学生也能想明白,但是经过这几天的亲身体验,每个人都有了更深一层的理解和体悟,报告厅里鸦雀无声,不少人脸上都流露出若有所思的表情。
接下来杜秋把ppt切换到了书签上的那个题目,讲解了起来,肖家霖只听了两句,就叹息道:“难怪杜总说我勉强算合格的码农,我们没有考虑到最大正整数和最小负整数的判定和溢出问题。”
张栋梁默然点头,说道:“事实上没几个人想到了这个疏漏。”
“现在软件越来越复杂,几十个甚至上百个员工一起工作已经变成了常态,软件公司需要的是有团队协作能力的人才,而不是单枪匹马的孤胆英雄,如果没有良好的编程习惯,考虑问题漏洞百出,一会这里打补丁,一会那里出bug,不仅老板要揍你,同事也会拿键盘砸你。”
“书签上的这个题目,是想告诉大家开源软件的另外一个好处,那就是开拓眼界,明辨好坏,分清楚哪些是好的编程习惯,哪些是坏的编程习惯,因为有很多开源软件都是陌生人互相合作的项目,如果编程习惯不好,很难与他人合作。”