软件工程师需要数学的真正理由

[软件工程师需要数学的真正理由](http://blog.csdn.net/g9yuayon/article/details/8737

作者:Keith Devlin

翻译:g9yuayon

本文译自 The Communication of ACM 第44卷,2001年第10期

软件工程师们常常宣称他们从来不用在大学里学到的任何数学知识. 说到这个,他们还会说连大学里学到的计算机专业知识都用不了多少。我搞了三十年数学,就让别人来谈计算机专业方面的情况,不过就数学的使用情况而言,我不得不坦白承认那些软件工程师太对了:他们就是用不着大学里学的数学。

但他们也太错了。他们每天都运用着大学里学到的数学。

其实这没什么矛盾。关键在于“运用”这词何解。一种理解是软件工程师们曾在数学课上常碰到的。比如,在高数课上学了分步积分法后,学生们就用该方法解相应的练习题和考试题。这种所谓的“运用”最为常见,而且也是当软件工程师说他们从不用大学数学时所暗指的。不过,这种理解建立在把人的学习方式看作“填鸭”的观点上。

根据这种“填鸭”观,教育主要就是把知识灌到我们头脑中,而运用我们所学主要就是把灌进去的东西再倒出来。我敢说,这种教育观高度简化而且错了。不过,现行教育制度(我也置身其中)下,人们开课,然后设置三小时反刍般的笔试(译注:三小时的笔试是北美很多大学期末考试的标准)来检验课的效果。正是这种方式,一次又一次滋养了教育是填鸭的观念。

相比之下,数十年来所有关于大脑工作方式及学习方法的大量研究都表明,掌握知识和像算法般的系统化做事步骤不过是人们学习过程的表象(我们知道那些是表象,因为我们一般都会在期末考试后飞快地忘记课堂上学到的东西)。教育的真正价值不在于此。我们的大脑或许是世上适应性系统的最佳范例。当我们让大脑经受长期的教育,大脑就会发生永久性的改变。从身体角度讲,大脑中某部分传导神经纤维链进一步生长并得到加强。从功用和经验的角度讲,我们获取了新的知识和技能。学习过程重复得越多,上述的改变就越强越久。

重复学习在数学里展现的效果之强烈,其他学科无出其右。形式化数学大概有五千多岁。5000年在漫漫进化史中不过眨眼工夫,而且肯定只够我们的大脑做出最细微的改变。因此,虽然闪族人在5000年到8000年前提出抽象的数,人类的数学思维当在更久更久前便已发轫。我们在最初的自然选择中发展了思考大自然和社会的能力,但人脑中应数学思考而生的新改变将综合我们的能力,使我们不光能思考具象的世界,还能推演我们头脑所创照的纯粹抽象世界。

要人脑处理新层次上的抽象极度困难。这就是为什么直到18世纪数学家们才能自如地处理零和负数,也是为什么直到今天许多人都不能接受负一的平房根是真正的数。

但是,软件工程全跟抽象相关,它的每一个概念,观点,以及方法,都是完全抽象的。当然,很多软件工程师都不这样觉得,但这正说明了我的观点。他们从数学课上得到的最大收益便是曾对纯粹抽象的物体和结构进行过严格推演。而且,数学课是唯一给他们这种体验的科目。这种体验不在于那些课堂上教的重要东西,而在于其本身是数学化的。日常生活中,熟悉滋生出轻慢,而在学习如何在高度抽象的领域工作时,熟悉培养出的是种感觉,唔,熟悉的感觉 -- 就是说,曾经让人感到抽象的东西开始变得具体,因而变得比较容易对付。

尽管学习数学带给计算机专业人士的回报大过常人,但现今社会里每个人都能由此受益。例如,美国教育部1997年一项研究(The Reilly Report)表明,在高中修过严格的代数或几何课的学生在升学方面表现更加优秀,而且升学后的表现也更好,不管他们在大学里学的是什么。换句话说,看来完成一门严格的数学课 -- 学生们甚至不用学得多好 -- 是让人们提高自己思维能力,变得聪颖的绝佳方法。这种思维能力能让人们在各方面受益。

(我在自己的书,《数学基因:数学思考如何演进及数为什么像闲言碎语》(Basic Books, 2000)中,我更加仔细地分析了本文的观点,并确定了哪些生存优势致使人类有能力进行数学思考。)

如我在这篇短文中所指,学数学对软件工程师们的这种好处比对其他人大得多。其实,这是基本的先决条件。虽然并没在工程系学生的必修数学课的要求里被正式提到,但它的确是数学为什么有用的真正理由。

Keith Devlin (devlin@csli.stanford.edu) 是斯坦福大学语言及信息研究中心的执行主任

====
总结一下:

软件工程师不需要的是:死板的大学数学课中的内容,比如积分。这是“填鸭”。

软甲工程师需要的是:从数学课中重复学习而得到的抽象能力,比如对纯粹抽象的物体和结构进行严格推演,使得对于抽象的东西开始感到具体而容易对付。

这样说来,SICP一书真的是值得好好读一读的。

时间: 2024-09-12 18:02:56

软件工程师需要数学的真正理由的相关文章

明星软件工程师的十种特质

如今,每家公司都似乎成了科技公司.从软件创业公司到投机性投资公司.制药巨头和媒体巨头,它们都越来越多地加入到软件业务行列. 代码质量不仅成为了一个必需品,更成为了一个竞争优势.因为众多公司围绕软件而竞争,开发软件的人--软件工程师正显得越发重要.但是,你该如何发现那种百里挑一的程序员呢?在本文中,我们简明扼要地列出了明星开发人员的10种特质. 1. 热爱编程 编程是一种为了满足兴趣而心甘情愿去做的劳动(Programming is a labor of love).和其他任何职业一样,唯有真正的

一位软件工程师的7年总结

1.分享第一条经验:"学历代表过去.能力代表现在.学习力代表未来."其实这是一个来自国外教育领域的一个研究结果.相信工作过几年.十几年的朋友对这个道理有些体会吧.但我相信这一点也很重要:"重要的道理明白太晚将抱憾终生!"所以放在每一条,让刚刚毕业的朋友们早点看到哈! 2.一定要确定自己的发展方向,并为此目的制定可行的计划.不要说什么,"我刚毕业,还不知道将来可能做什么?","跟着感觉走,先做做看".因为,这样的观点会通过你的潜

一位软件工程师的6年总结收藏

"又是一年毕业时",看到一批批学子离开人生的象牙塔,走上各自的工作岗位:想想自己也曾经意气风发.踌躇满志,不觉感叹万千--本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标.本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几点旨在确定大的方向,算是废话吧. 谨以此文献给那个自己为你奉献3年青春与激情的开发团队.还有团队成员:PPL.YT.YK .TYF.LGL.CHL.CDY.CB.DPD. 1. 分享第一条经验:

物理学家不再吃香?可以转型当 AI 软件工程师呀

物理学家 Oscar Boykin,现在转型做了软件工程师 雷锋网按:人工智能已经越来越火热,对于有着突出数学能力和抽象思维能力的物理学家,进军 AI 是很有优势的.近日,<连线>杂志的资深撰稿人 Cade Metz 撰文表达了对物理学家进军 AI 及机器学习领域的看法.Cade Metz 一直关注人工智能,比特币,数据科学以及 Google.Facebook 等公司的科技动态.原文标题<Move Over, Coders-Physicists Will Soon Rule Silico

你会给想学习机器学习的软件工程师提出什么建议?

本文讲的是你会给想学习机器学习的软件工程师提出什么建议?, 原文地址:What would be your advice to a software engineer who wants to learn machine learning? 原文作者:Alex Smola 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:lsvih 校对者:吃土小2叉,Tina92 你会给想学习机器学习的软件工程师提出什么建议? 这很大一部分都取决于这名软件工程师的背景

【珍藏】CMU大师对软件工程师的系统建议(附书和论文下载)

问题:你对想要学习机器学习的软件工程师有哪些建议?(What would be your advice to a software engineer who wants to learn machine learning?) Alex Smola: 这很大程度上取决于软件工程师的背景及其具体想掌握机器学习的哪部分知识.简而言之,我们以一名拥有四年本科学位和一到两年行业经验的初级程序员为例,并假设这位程序员希望学习计算广告学.自然语言处理.图像分析.社交网络以及搜索和排序.那么,我们先说掌握机器学

富士康发力Firefox OS 招聘3000名软件工程师

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   富士康将在火狐OS(Firefox OS)移动平台上投入 大量人力物力,并计划为此招聘3000名软件工程师进行相应开发工作.除此之外,富士康此举似乎还有更大目的:为该公司所代工的硬件产品也 预装好软件并提供相关服务.     业界人士 认为,富士康招聘这批软件工程师的用意之一,无疑是该公司在生产火狐OS设备过程中当中,让这些工程师协助做好诸如火狐OS驱动以及相应

软件工程师获得足够尊重了吗?

"软件工程师的日子当然是越来越好."CNet 如是说.招聘网站 Glassdoor 对此表示同意:软件工程师的平均工资是85000 美元,旧金山地区更是达到六位数 (我个人觉得还有点低了).对软件工程人才需求的暴涨是众所周知的.那么,为什么还有人会认为软件工程师是被践踏.被鄙视,被剥夺权利的一个群体? --其实,他们差不多说准了一部分. 一个名为麦可·O·彻奇(Michael O. Church)的作家就是其中一员.他对比了同一个申请者申请"高级软件工程师"与&qu

一位软件工程师的7年总结 [转]

原文出处:http://www.oschina.net/discuss/thread/500 1.分享第一条经验:"学历代表过去.能力代表现在.学习力代表未来."其实这是一个来自国外教育领域的一个研究结果.相信工作过几年.十几年的朋友对这 个道理有些体会吧.但我相信这一点也很重要:"重要的道理明白太晚将抱憾终生!"所以放在每一条,让刚刚毕业的朋友们早点看到哈! 2.一定要确定自己的发展方向,并为此目的制定可行的计划.不要说什么,"我刚毕业,还不知道将来可能