0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

软件工程师为什么需要数学

工程师人生 来源:工程师吴畏 2019-07-04 17:42 次阅读

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

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

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

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

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

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

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

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

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

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

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

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

====

总结一下:

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件工程师
    +关注

    关注

    8

    文章

    217

    浏览量

    21112
收藏 人收藏

    评论

    相关推荐

    FPGA算法工程师、逻辑工程师、原型验证工程师有什么区别?

    ,还需要软件工程师、硬件工程师紧密合作,对整个系统进行集成和测试。 总的来说,FPGA 算法工程师着重于算法优化,FPGA 逻辑工程师专注
    发表于 09-23 18:26

    需要无刷电控硬件工程师

    需要无刷电控硬件工程师,地点东莞松山湖。最好有5-10年经验,大功率电摩电控。有意私聊。
    发表于 09-11 22:51

    嵌入式软件工程师如何提升自己?

    的基础 嵌入式软件工程师需要具备扎实的计算机科学和工程知识。因此,在职业生涯的起步阶段,建议将重点放在学习基础知识上,包括数据结构、算法、操作系统、编程语言等。通过深入学习这些基础知识,打下坚实的理论基础,为将来
    发表于 06-12 11:20

    索尼诚邀软件工程师参与PS免费手游平台设计

    据悉,近日,澳大利亚知名媒体TweakTown发现,索尼互动娱乐正在为其旗下的PlayStation Studios Mobile招募一名资深的软件工程师,负责设计PlayStation的免费手机游戏平台。
    的头像 发表于 05-23 17:08 659次阅读

    嵌入式软件工程师和硬件工程师的区别?

    、机器人等。 定义和工作职责 嵌入式软件工程师的主要职责包括但不限于:设计、开发、测试和调试嵌入式软件应用程序,以满足特定硬件和软件要求。他们需要理解并掌握嵌入式系统的基本原理,熟悉相
    发表于 05-16 11:00

    大厂电子工程师常见面试题#电子工程师 #硬件工程师 #电路知识 #面试题

    电子工程师电路
    安泰小课堂
    发布于 :2024年04月30日 17:33:15

    Cognition发布首款AI软件工程师Devin

    据报道,Cognition公司今日公布了其首款人工智能软件工程师——Devin,掀起了打造软件模式变革的序幕。该产品在SWE-bench代码测验中展现出卓越表现,甚至超过了部分顶级人类工程师的水准。
    的头像 发表于 03-13 10:57 575次阅读

    优秀电源工程师需要哪些必备技能?

    提升电源开发效率。电源新手在学习初期,如果实验设备不足,可以利用仿真软件进行电路模型搭建,从而快速、直观地了解电源的工作原理。2、器件参数选型参数选型时,需要工程师进行电路关键参数的计算,计算方法可以
    发表于 01-29 11:29

    如何构建linux开发环境和编译软件工程、应用程序

    前文介绍了如何使用官方提供的镜像文件启动开发板,本文将说明如何构建linux开发环境和编译软件工程、应用程序。
    的头像 发表于 01-03 12:31 1838次阅读
    如何构建linux开发环境和编译<b class='flag-5'>软件工程</b>、应用程序

    嵌入式软件工程师常用的

    最近我换工作了,看见不同嵌入式软件工程师用的平台都不一样,所以我整理了一下。PlatformIO:多平台支持:PlatformIO支持多种嵌入式平台,包括Arduino、ESP8266、ESP32
    的头像 发表于 12-24 08:00 606次阅读
    嵌入式<b class='flag-5'>软件工程师</b>常用的

    嵌入式硬件和软件哪个好?

    ,如复位电路、常用滤波器电路、功放电路、高速信号传输线的匹配电路等;故障定位、解决问题的能力;设计文档的组织编写技能! 那对于嵌入式软件工程师来说: 嵌入式软件工程师领域较新,他的发展也是很快的,像
    发表于 12-05 15:17

    FPGA工程师需要具备哪些技能?

    ,并进行调试测试以确保其正确性、稳定性、可靠性和可移植性。 因此,FPGA工程师需要有较强的设计思维和逻辑分析能力。他们需要能够理解和应用数学和物理学知识,并解决各种实际问题。
    发表于 11-09 11:03