百科问答小站 logo
百科问答小站 font logo



为什么软件工程专业要学习大学物理? 第1页

  

user avatar   Namron 网友的相关建议: 
      

题主你好。

虽然这个问题关注的人并不多,回复基本上是灌水,但是刚好最近作业不是很多,我想好好聊一聊我的理解。

我和你有过类似的困惑,而且这些困惑往往在写不出作业或者期末复习的时候冒出来:我是计算机学院的,以后就是要当一个程序员而不是物理学家,为什么要学大学物理?我以后估计怎么都不会碰密码学,为什么要学代数结构和数理逻辑?图形学这东西我这辈子可能都不会碰,为什么还要花时间弄懂这天书一样的公式?

当时学得很痛苦,也不是特别感兴趣,特别是考试要考薛定谔方程,什么势井的时候那种头大的感觉我还记忆犹新。带着这些情绪去学,这些课程我都学得懵懵懂懂,我的相关课程的成绩都不是特别好看。

这主要是自己对大学培养目标的期待与大学培养人才目标的差异导致的。

大学培养人才的目标,跟技校相比不是熟练的某个技术方向的技术工人,而是素质更全面的“通才”,甚至可以说是“科学家”。而我,最开始我认为计算机系培养的应该是一群程序员,能解面试题,做漂亮的前端,写高效的后台,混口饭吃就差不多了。

后来我发现,那些技能,其实技校的人也都在学,还做得比我好,因为他们不需要花太多时间在跟程序开发本身“没有关系”的事情上面,做的都是实用性的事情。那时候我就开始思考,到底大学出来的学生,跟技校出来的学生,甚至是主要以就业为导向的学校出来的学生,能有什么差别?

直到之后我的一些经历让我明白,原来大学物理中的一些方法和思维方式,恰恰是在各个领域都通用的方法,不仅仅是工作,也有生活。当然,不仅仅是物理,任何学科的技能和方法都可能对我们有所帮助,但物理是用作高等教育应该是最合适的,跟化学生物相比,整个体系更具体和严谨。


李开复先生在 自传 《世界因你而精彩》中,有一句话[1]多多少少有点这个意思:

教育的本质是什么?当我们将在学校所学的一切全部忘记,剩下的就是教育的本质。

同时,大学物理能够让你在一个你接触了若干年的领域系统地训练你使用现代数学工具:线性代数、微积分和统计学,这些东西软件领域有广泛应用,却很难再找到如大学物理这样的训练体系的替代品,也不是很有必要。

从几个简单的例子入手吧。

我女朋友租的房子里有一台新安装的燃气热水器,将水烧热之后通过管道输送到洗手间,再跟冷水混合到一起之后,得到温水输出,水温的调控是通过出水段如下图所示的阀门控制冷热水混合比例达到的。


然而这个热水器有一个奇怪的问题,就是每次阀门由热水向冷水调节只要超过一个位置,它就会熄火。由于即便是最低档的水温出水还是太热,我女朋友没办法洗澡,叫房东来了几次也无济于事(房东声称这是新的热水器,也叫了售后来,表示没有问题)。

无奈只能自己动手解决问题。我首先把水阀卸了开始寻找原因,发现水阀连接处墙壁内的水管有一处弯折,因此热水出水口非常窄,这导致热水出水的水压比较低。而阀门冷热水是连通的,根据多年使用燃气热水器的经验,我推测应该是由于热水管那个窄口的存在,导致本来就水压本来就比较低的热水在与冷水水管连通后,热水器内水流量过小为了避免内部过热而启动的熄火保护。

注意我上面这段分析,都是自然而然的从脑子里流出来的,就像常识一样,但是我女朋友却做不到,因为她学的是文科,不知道伯努利方程,连通器的性质也忘记的差不多了,更重要的是一般文科不太需要这样的建模过程,而这种事情我们在解物理题的时候做得太多了,不是么?飞行的滑块,偏转的电子,饱和的电容……

(应女朋友要求加入此段:答主为了衬托自己的理科生逻辑性强的优越感,强行把女朋友描述成毫无常识的傻白甜,对于女朋友本身聪明伶俐的形象造成极大的影响,特此澄清和说明。)

这就是五年的中学物理学习加上大学物理训练出来的分析思维——水流经过热水器再出水的整个过程被抽丝剥茧简化成一个脑海中的模型,然后分析出原因所在。

分析完了还要解决问题,热水器的火力开关已经开到最小,水流已经开到最大,出水管道在墙内不能更换,水压也不受控制,怎么办?

最后我的解决办法是把热水器外的燃气阀门从全开的状态打到半开,减小进气量,问题成功解决,从此女朋友愉快地洗上了热水澡。

自始至终,这些想法都是自然而然的一种内化的能力,而这时候我才发现,没有经过物理思维训练的人,是很难做到这样的分析过程的。

还有一个生活中的例子。

女朋友搬新家,买了一个新床,来帮装床的是个小伙子。床板的连接处是用如下图所示的钉子连接起来的,当然床板的钉是要比这个长一点,当时我还不知道这个东西叫做自攻钉,只知道这是螺钉。



那个小伙子应该是新来的,发现床板忘记打孔了,他就开始强行拧,累得满头大汗。我在一边观察这个螺丝钉头是平的,底部是尖的,就给他提建议说,你可以用锤子敲进去一点,再开始拧。他试了试,果然好使,效率倍增。最后他感叹了一句:“哎呀,还是你们上过大学的人脑子好使。”

我想看到这个螺钉的形状很多人能够和我有一样的反应——它就应该是这样用的。但是这后面蕴藏的是什么,可能很多人没有仔细想过。这后面有压强、摩擦力、斜面等等物理概念。

经验给了我感性的认知,物理公式和模型给了我理性的理解,然后我二者内化成了一种能力,在碰到类似的问题的时候就自然而然地从脑海中流淌出来,很多时候,我自己都意识不到,觉得这是常识,直到我发现别人做不到的时候,我才知道,原来这是那些看似“与专业无关”的学习和训练带来的能力。

前面两个都是生活中的例子,提出来是因为可能没有计算机基础的人也能够更容易理解。题主既然是软件学院的,想必一定知道软件工程师绝不仅仅是“搞安卓的”和“做网站的”,航天飞机、机器人、视频监控等等领域都有大量的软件工程师,而这些位置的工程师,只会“写代码”是远远不够的,还需要了解现代常用的数学工具:线性代数、微积分、统计学,这三个数学分支构成了现在非常火的机器学习的基础。而这些知识,从数学课上学到的往往非常理论,不直观,可能很多公式你学过了就忘记了。而实践它们的最佳领域是哪里?当然是物理!因为作为一个理工科的学生,你在中学已经有了足够的解题经验和认知基础,你更容易在熟悉的问题上使用一个全新的数学工具。就好比,微元法和微积分本质上都是一个东西,但是却是两种截然不同的角度。

接下来我要讲的是我最近碰到的机器视觉方面的一个问题。

这个学期我上了我们学校的计算机视觉课程,都做的是一些有趣的问题。由于老师是机器人系的,所以涉及到很多机器视觉的东西。一个有趣的作业就是:如何通过两个已知位置的相机拍摄的图片,对目标物体进行3D重构,这是3D电影的基础,这就是让你能够看到栩栩如生的《阿凡达》、《少年派》的看似无用的大学物理理论所涉及的一个点。

上图吧:

左右两张图是同一个物体从不同角度拍摄的图片。他们重构的结果是这样的:


可惜时间太紧我没有时间加上纹理,不然一定更酷炫。助教的重构结果在这里:

youtube.com/watch?

抱歉了,可能有的朋友需要自行搭梯子,我这里放个截图吧:



这里面就大量应用到了坐标系变换——这恰恰是中学物理和大学物理里面区别最大的地方:中学物理训练的是分析过程,不管什么方法,解出来就好。而大学物理则更进一步,则需要系统化、标准化的分析流程和建模,比如说,全程使用矩阵求解。这就是为什么你看到大学物理里面力学的开始章节仿佛在侮辱你的智商——高中都不会出这么蠢的题。然而那些只是训练向量计算过程的题目——这恰恰是中学里面很少有的。

下面是这次作业的一个理论题,应用的原理非常简单,只需初中的平面镜成像,以及高中的立体几何足矣。

示意图是我自己画的,这是我毕生所学的绘画技巧,太丑还请见谅!


这个题放给一个初中生,只要搞清楚了相关概念列出公式是一定能够证明出来的。但是我相信绝大部分的中学生都做不出这样的证明:


这是什么区别,一个比较直观的类比是,这类似于解鸡兔同笼问题的时候,小学算术法跟中学代数法的区别——从数学工具上说,中学的方法更抽象,更通用。可能对于目前这个问题,两种方法都能够得到更正确的答案,但是求解更难更复杂的问题,强大数学工具往往能够助你一臂之力。

如果说上面都是物理训练思维和数学工具的话,那下面这个例子则更有趣,是物理理论跟计算机理论的直接关联。

现在自然语言处理技术的应用非常广泛,其中包括所谓的舆情分析、机器翻译、垃圾邮件检测等等。而这些技术一个很重要的基础就是信息论。

说到信息论,没有人不知道香农。信息论里面很重要的一个概念就是熵。然而熵最开始的定义是从物理学里面来的,香农收到启发,将它应用到了信息论。而根据维基百科中的描述:

根据Jaynes(1957)的观点,热力学熵可以被视为香农信息理论的一个应用:热力学熵被定义为与要进一步确定系统的微观状态所需要的更多香农信息的量成比例。比如,系统温度的上升提高了系统的热力学熵,这增加了系统可能存在的微观状态的数量,也意味着需要更多的信息来描述对系统的完整状态。


zh.wikipedia.org/wiki/%

信息论中的熵又反过来推动了热力学对熵的理解。可见,现代科学体系并不是独立的,割裂的,而是相通的。

再说个有趣的例子吧,虽然这并不是大学物理里教的。

相信很多人都听说过分形学,Matrix67的博客里有大量关于分形的文章,比如

7 个分形图形的动画演示

下面就是一个常见的分形图形,雪花,非常美吧:


可是它可不仅仅是美而已。

我不太了解分形的物理学成因,但是由于它自相似的性质,在数据库领域,分形具有重要的作用。这个学期我上了一门多媒体数据库和数据挖掘的课程,老师是H-Index高达107的大神。他在讲课的时候就花了很长的时间讲分形和分形维数,刚开始我也十分不理解,后来去翻了他说的论文才恍然大悟:

在存储坐标的时候,为了兼顾查询和插入效率,出现了Quad-树,KD树的数据结构,这些数据结构的复杂度分析就用到了分形学中Hausdorff Dimension和Minkowski–Bouligand Dimension的分析方法。具体细节就不在这里展开了。

更别说微积分、傅里叶变换等等了,这些在图像,声音领域,用得太多太多,但是你要让一个从未接触过数字语音图像的人上课听这些应用,多半是听不懂的,而大学物理恰恰是最好的练兵场。

当然,不仅仅是这些。就以我的本科学校为例,我们的课程开设有理论课和实验课。

当初写实验报告的时候,我们本科的要求格外变态。实验数据必须现场获取,现场有老师签字,不许有任何修改,做出来是什么样就是什么样。不符合预期的统统在报告里分析,如果实在差得离谱的自己下课找时间重做,作图必须手绘,用作图纸。

这课程消耗的时间,几乎是我那个学期花在学习上的时间的一半,远远超过专业课程。当时我非常的不理解,学计算机的,为什么要手绘报告?为什么要分析液氮和扭称?为什么要花这么长的时间分析实验过程?别人做过千百次的实验,为什么我做不对了我还要花那么多时间去重做?

但是,后来我才慢慢意识到,正是因为有了这样看似枯燥无聊费时费力的训练,我才能够在生活和学习中具备像前面分析热水器那样的分析能力。

程序Debug,你做过吧?计算机系的女生说,能够帮人Debug的男生最帅了,于是真的有很多很多人,De着De着Bug就De成了男朋友。其实,Debug的过程,跟你做实验时候实验结果不符合预期的过程是非常相似的:都是在一个庞杂的系统中,根据结果提供的信息,逆向分析可能出错的原因,同样费时费力、同样考验耐心。这样的能力对于一个刚刚会写Hello World的学生来说,让他在一个大工程里训练不现实,但是让他在物理实验里面训练却是可行的——因为他已经当了好多年的理科生,做过好多好多类似的物理实验。

另外,设计实验也是非常重要的技能。虽然我没有实际的工作经验,但是我想真正做起来应该差不多。在产品经理的岗位上,往往需要去做一些用户需求的调查,用户实验的测试,这时候物理实验里面那些建模和分析方法就能够起到作用了。

科学知识是人类智慧的结晶,最好还是不要用“有用”和“无用”这样功利的心态去看待它。数学家们发展线性代数的时候,也没有想到日后会被海森堡用到量子力学里;黎曼发展黎曼几何学的时候,也没有想到会被爱因斯坦用到广义相对论;数学家们研究凸优化的时候,也没有想过最后竟然会成为机器学习里的一把宝剑……

我在实习的时候,做过一个项目,是把类似bash语法的机器集群配置文件解析出来,可视化其中的数据通信依赖,然后进行可视化编辑。一年之后,当时一起实习现在已经是员工的同事告诉我,我写的配置文件解析器因为某个符合bash语法但是不符合配置文件规范的手写的配置文件挂了。现在回想起来,最大的缺憾是当时做配置文件解析的时候,还没有深入理解编译原理中Parser的工作方法,用了非常粗暴的删空格换行等规则式的格式化方法,而且还因为语法五花八门而debug了很久。要是当初能够写个状态机,那规则会简单很多,而且理论上只要符合bash语法的应该都可以解析正确。

这是另外一个话题了,意识到这个,还是因为我Linkedin的面试面挂了,然后一个同学告诉了我这样一个解法:

你有哪些对当初学习的“没用的知识”恍然大悟甚至受益的经历? - 知乎用户的回答

瞬间,数字电路、状态机、字符串匹配……相关的东西全部涌现出来。大概打通任督二脉就是这样的感觉。我想,所谓的融会贯通,大致如此。

中国的高等教育,虽然跟先进的国家相比还是很有差距,但是请相信最高层的设计者们在大方向上还是高瞻远瞩的,只是具体的细节和实施上,实在有点惨不忍睹,所以才会让学生产生厌恶和困惑。

在国内,我最大的感受是,学的理论跟实践割裂得太厉害,老师授课水平或者精力有限:有的讲课老师甚至自己都还没有完全弄清楚课程的内容,有的老师则是自己很清楚,却不知道怎么讲清楚。还有一个问题是,教材写得太“苏式”了。上来就是一大版结论和证明,从来不告诉你为什么这么搞,这么弄有什么用,如果老师讲得好,那就是考完忘;如果老师讲得不好,考试都成困难,然后老师只能考试放水。该学好的东西没有学好,最后用到了还得回头补。而“美式”的教材则基本是按照能让读者自学的标准把每一个问题讲清楚的,微积分的来龙去脉、实际问题中的应用,等等。

相比之下,美国顶尖大学就好一点,起码对于抄袭的容忍度很低,助教的作用很大,课程设计比较成体系,教材写的比较生动适合自学。

所以我建议题主,既然开设了这门课,就尽量好好学,技多不压身。说不定哪一天就能对你的生活和工作带来莫大的帮助,或许能让你在职业的道路上走得更远。复旦人总爱“装逼”地说,他们是“自由而无用的灵魂”,但往往由于宽松的环境,变成了“自由而没用”。在我的理解中,“自由而无用”指的是祛除功利的念头,脚踏实地的学习,不管所学的东西在所能预料的范围内能否给自己产生好处,去追求纯粹的知识,而非有用的知识。无用之用,或许方为大用。

以上,就是我对大学里基础学科设置和学习的一些粗浅的理解和思考,希望能够对你有所帮助,也希望有类似经历的同学来多多交流一下类似的经验。

好久没写这么长的文章了,不过也算是把我积累的一些思考全部吐了出来。多年不写长文不知道是不是写的很杂乱,如果能够有人从中得到启发或者帮助,那我就很高兴了。


Note:

[1]

@刘桐

指出,这句话是爱因斯坦先说的,原话是“在学校所学的一切全都忘记之后,还剩下来的才是教育。”


=================================

发了一段时间被顶上日报,受宠若惊,根据补充一些文科生为什么学编程、Flash的例子:

下面这张图来自一个摄影师,

整个系列在这儿:

Fine Art - Day To Night

这个系列的照片是一整天所拍摄图片的叠加,能够做到这么平滑,应该是使用了程序辅助拼接。我并不知道具体他是怎么做的,应该是写了一个程序根据特定纹理算法来拼接,辅以photoshop等软件修正,看,摄影师会编程,能够进一步放飞灵感不是。




  

相关话题

  天津大学留学生下雨天闯进女更衣室,校方调查结果为误入,暴露了什么社会问题? 
  大学教育的意义是什么呢? 
  外交学院是个什么样的学校? 
  网易 CEO 丁磊称「看衰会计金融专业,看好生物医学材料科学」,大学专业该怎么选? 
  大学中遇到老师给低绩点怎么办? 
  如何看待类似「大学毕业于b站」的现象? 
  我每天都觉得很困,这是为什么? 
  在武汉大学弘毅班就读是怎样一番体验? 
  成都大学的事情就这样结束了吗? 
  有一批人特不情愿你会独立思考,什么原因? 

前一个讨论
为什么向初创企业提供共享工作空间的 WeWork 能获得 100 亿美元的估值?
下一个讨论
如何看待王垠的《关于测试的道理》?





© 2024-11-05 - tinynew.org. All Rights Reserved.
© 2024-11-05 - tinynew.org. 保留所有权利