软件科学 与 软件工程,好像都跟软件相关。
很多大学生在选择专业时,好像也没有太搞清楚到底有什么不同,毕业后好像都是从事编程工作。
但实际上,我们看托尼 霍尔(Tony Hoare)的比较表,大概能有个概念:
计算机科学 | 软件工程 |
---|---|
发现和研究长期的,客观的真理 | 短期的实际结果(具体的软件会过时) |
理想化 | 对各种因素的折中 |
确定性,完美,通用性 | 对不确定性和风险的管理,足够好,具体的应用 |
各个学科独立深入研究,做出成果 | 关注和应用各个相关学科的知识,解决问题 |
理论的统一 | 百花齐放的实践方法 |
强调原创性 | 最好的,成熟的实践方法 |
形式化,追求简明的公式 | 在实践中建立起来的灵感和直觉 |
正确性 | 可靠性 |
那么为什么很多学生在学习时,没有感觉很实质的区别呢?
中国大陆高校大多设有与“计算机科学”相关的院系。除了学术水平名列前茅的几个学校,其他学校的这些院系大部分老师做的都是偏工程方面的研究(所谓的“横向工程”),大部分学生毕业后也投身于解决具体的工程问题,这跟软件学院/软件工程系(院)的研究和培养方向非常雷同。这是目前中国IT产业发展的现状,但并不是说世界上没有人研究计算机科学的各个领域,或者说计算机科学就等同于软件工程。
——–《构建之法:现代软件工程》周欣