ACM的题库的编程都只能算做程序,不能算软件。写程序和做软件区别还是很大的。程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。为实现预期目的而进行操作的一系列语句和指令。而软件是程序以及开发、使用和维护所需要的所有文档的总称,而程序是软件的一部分。软件可能是由一个程序组成,或者由千万个程序组成,程序是软件的一个必不可少的组成。
Edsger Dijkstra 曾经提到:“Software engineering, of course,presents itself as another worthy cause,but that is eyewash: if you carefully read its literature and analyse what its devotees actually do,you will discover that software engineering has accepted as its charter ‘How to program if you cannot.’”[i]
软件工程是不是教那些不怎么会写程序的人开发软件? 你怎么看? 请采访一个编程特别厉害的学生 (例如学校ACM 队的队员)。
软件工程不是教那些不会写程序的开发软件。在我看来软件开发的基础是包括写程序的能力。软件开发是一个很复杂的过程,也是一个逐步进步的过程。我觉得编程是个考验个人的逻辑思维能力,它需要强大的思维去完成一项功能。而软件开发是一件综合性的事情,或许在编程方面不需要你达到ACM竞赛得奖的那些大牛。软件开发需要首先进行需求分析,在对整体总体的结构进行概要设计,而在功能的实现方面就需要对编程能力的考验,最后还需要对软件进行相关测试等。所以在我看来软件开发更多的需要是经验之谈,编程能力是软件开发的基础,就像程序只是软件开发的一部分。一个好的 软件不仅仅只是它在功能上表现的多强大,必须得考虑综合因素。
答题人:张鹏