软件工程和计算机科学有什么区别?

大家好,最近在咨询过程中遇到了学生的提问,大家对于俄罗斯计算机方面非常强悍这一点早有耳闻,许多同学希望来俄就读计算机专业,但实际在选择方向过程中却出现了许多疑问,其中最常见的一个问题是“选择«软件工程»和«计算机科学»哪个好?它们有什么区别?”,今天小狮座俄罗斯留学的李经理就为大家详细解答一下这个问题!

乌拉尔联邦大学GSEM学院的学生在上课

软件工程和计算机科学专业的区别

首先我们要知道«计算机科学»和«软件工程»是完全不同的两个方向,计算机科学关注计算机理论技术和发展,例如算法的构造、计算复杂度、计算机技术解答数学问题的可行性、密码学底层问题,后期甚至可能会牵扯到什么黎曼猜想、NP完全问题、冰雹猜想的底层难题,这门科学主要的目标是找到尽可能永恒的、长期的、客观的计算机领域的真理,所以计算机科学这个专业更加偏向于“理论、底层基础”方向。

而«软件工程»这门课主要是利用计算机理论去追求短期实际的结果(可能是商业结果,也可能是社会发展结果),所以软件工程是更加偏向“工程、实际运用”的专业。

大体上«软件工程»专业相对于计算机科学专业而言,更加注重理论知识在实践上的转化,而计算机科学专业则更加注重研究计算机底层的理论,例如自动机和图灵机理论、算法结构、数理逻辑学、图论和组合数学等基础课题,而软件工程专业则着重于把这些理论成果转化为可以带来商业收益的软件上去,软件工程专业的发展常常可以带动其他行业的发展,例如开发快速视频剪辑、渲染和编码的软件以提视频媒体工作者工作效率又或者创造出更好的无现金支付软件(例如Y支付宝和paypal钱包)可以降低实体经济中交易支付的难度,提高社会整体商业效率。

软件工程和计算机科学关注的维度有什么区别?

那么我们就需要探讨另外一个问题,软件工程和计算机科学关注的底层维度有什么区别?我们制作了一张表格来详细向大家讲述这个问题:

关注的维度软件工程计算机科学
研究目标发现永恒的、客观的计算机领域真理和实施运用已经得出的成熟理论投入来产出实际价值
研究对象底层的计算机理论,包括算法、数理逻辑、组合数学、密码学、自动机理论、编码学、纠错码的理论,提出和优化算法结构、复杂度、编译理论。如何把前者提出的理论来商业化投产,提高社会生产效率、国家经济发展速度和人民生活的便利性。
研究所考虑的问题底层、逻辑层面、基础的问题实际的、具体的、高商业价值的问题
关注维度研究结果的确定性、长期性产出结果的可靠性、商业价值
追求目标解释底层的形式化公理高商业价值的成熟的实践方法
计算机科学和软件工程关注的侧重点

为了简单阐述计算机科学家和软件工程师的区别,我们举一个例子:

1977年三位麻省理工大学的计算机科学家提出了一种加密算法,这种加密算法的核心是用一串256比特十六进制的字符串,这个数字是由两个大素数A和B相乘得到,他们相乘得到N,这里“N=A×B”,比如A=11,B=17,则N=11×17 = 181,那么我如果告诉你N是多少,让你求出A和B,如果N很小我们可以很快得到,但是如果A和B是非常大的素数呢? 比如A有100多位,B也有100多位,那么N将会是一个极其大的合数,而且你在有限时间内根本没办法计算出来组成N的两个数字A和B是多少。因为破解一个数是否为质数,利用目前最快的素数筛法也只能做到√N的时间复杂度。所以要求解一个100多位甚至1000多位的数字是否为素数需要的时间可能是接近无穷大,由于破解难度极大,所以对极大整数做因数分解的难度决定了这个算法的可靠性。 这个算法就叫RSA算法,由3位麻省理工大学的教授罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)于1977年一起提出,所以算法的名字就取他们三个的姓名首字母命名。

RSA算法具体的生成方法,但是这里大家可以不用看,原理上面我已经讲了

这个算法优秀之处在于它的底层逻辑极其简单,就是两个大素数相乘而已,但是要破解起来极其复杂,如果我给你一个一千多位的数字,如果你要用穷举法来求解它是否为一个素数,可能需要一台超级计算机计算好几万年时间才能求出来,也就是说破译这个数字的难度几乎是无穷大。这就是计算机科学学家在做的事情,利用数学工具来提出计算机底层的模型。

那么软件工程师在做什么? 很简单,软件工程师就是在计算机科学学家提出了这个算法的基础逻辑之后,把他以一种高效率的方式做成软件,比如我们现在在用的支付宝、yandex钱包、paypal等,以及各个银行的软件。 RSA算法的成功之处在于,随后90年代全世界的金融系统、金融市场、银行大部分都在使用这个方法来加密他们的交易信息。 有了软件工程师的帮助,大家可以很轻松只需要点几下就可以完成一笔交易而不需要自己去从底层学习代码,然后自己编写软件进行转账。 总而言之,计算机科学家复杂从0到1提出一个算法,而软件工程师则评估这个算法是否具有实用性,如果有的话,把它做成一个可以面向大众使用的软件来造福人民。

软件工程和算计科学的MBTI人格选择

在这篇文章《理论数学和应用数学专业选择和MBTI人格的关系》中我们介绍了MBTI十六型人格。 如果您有兴趣可以了解一下,这里我们也简单介绍一下MBTI十六型人格和计算机科学以及软件工程专业选择的区别。

MBTI十六型人格是由美国心理学家迈尔斯和她的母亲凯瑟琳共同制定的一种人格类型理论模型。该指标以瑞士心理学家卡尔·荣格划分的8种心理类型为基础,从而将荣格的心理类型理论付诸实践,经过二十多年的研究后,衍生出人格类型的终生发展理论,最终形成四个衡量维度:

维度类型相对应类型英文及缩写类型相对应类型英文缩写
注意力方向(精力来源)外倾(外向)E(Extrovert)内倾(内向)I(Introvert)
认知方式(如何搜集信息)实感(感觉)S(Sensing)直觉(直觉)N(Intuition)
判断方式(如何做决定)思维(理性)T(Thinking)情感(感性)F(Feeling)
生活方式(如何应对外部世界)判断(主观)J(Judgment)知觉(客观)P(Perceiving)
人格维度

这里影响我们做专业选择的核心标准是第二个也就是S和N的区别:

  • S感觉型的人比较在意现实情况、确定的事务、有形的事物、实际、感官体验、具体的事物、重视细节、从细节出发考虑事物、信息接收上重视单一事物的深度
  • N直觉型的人格更在意未来的发展、事物的可能、从整体考虑事物、对于一般概念该兴趣、信息接收上重视广度、喜欢抽象、从全局理解

这里我们可以看出来,如果您是S型人格,那么您会更加关注实际的感受、有形的事物、具体的事物、重视细节。 而如果您是N型人格,则您会更加关注抽象的、逻辑的事务,喜欢从整体考虑。

李经理本人是INTP,这里第二个维度是N型人格,所以对于INTP而言,《计算机科学》这个专业是更加有意思的,因为李经理本人确实也不太喜欢去具体实例化,而是喜欢提出底层抽象的定义。 而对于S型人格而言,则把那些底层抽象的定义运用到生活中来、实践中来是更有意思的事情,所以对于S型人格而言,选择《软件工程》是更加有意思的!

发布于 俄罗斯留学专业 并且被标记为 , .