#### 问:在大学分专业的时候,计算机科学与技术和软件工程要选哪个好?
邹欣:一个比较偏“科学”,一个比较偏“工程”。大学也有像计算机/软件工程那样相关的一对专业,例如化学/化学工程,建筑学/土木工程,你也可以问一下这些专业的学长,它们之间的关系,就业方向有什么不同。
《构建之法》第一章就援引了托尼·霍尔(Tony Hoare)的论述,比较计算机科学和软件工程的不同侧重点。
|计算机科学|软件工程|
|--|--|
|发现和研究长期的、客观的真理|短期的实际结果(具体的软件会过时)|
|理想化的|对各种因素的折衷|
|确定性,完美,通用性|对不确定性和风险的管理,足够好,具体的应用|
|各个学科独立深入研究,做出成果|关注和应用各个相关学科的知识,解决问题|
|理论的统一|百花齐放的实践方法|
|强调原创性|掌握最好的、成熟的实践方法|
|形式化,追求简明的公式|在实践中建立起来的灵感、经验和直觉|
|正确性|可靠性|
表1_2计算机科学和软件工程的不同侧重点
#### 对今后的就业方向您有什么看法?
如果你想走科研为主的道路,或者你想做和计算机体系结构,算法,硬件相关的工作,那么建议你读CS,否则二者差不多。当然,在中国,这还要看某个具体大学的水平如何,是否真的有计算机科研的实力。
给大家一个实践题目:做个视频采访。在校园里,找到计算机系的老师或者研究生,问他们:
> 请问你发现了、或者正在研究哪方面长期的、客观的真理?
找到软件工程学院的老师或者研究生,问他们:
> 请问你在软件构建方面取得了哪些实际结果,总结了什么成熟的实践方法?