软件的本质我觉得有非常多的理解方法。我们可以说软件是一种秩序,是一种从混沌的真实世界中抽象出的秩序的本质。软件描述了一种正确的规律,一系列必要的约束,指导着其他软件以及大众如何正确地行动。软件是一组可以用数学描述的命题,这些命题的证明过程描述了问题的正确的解决方式。广义上讲,我们大脑里对某个问题的理性的思考过程也就是一个软件正在被执行。 从另外一个一个角度说,软件是硬件工作的任务,软件协调并指导硬件与硬件正确地交互产生人们想要的正确结果。我们不能说没有经过build的代码就是软件,因为光代码不能做任何事情。软件供应商大多数时候将代码编译后的二进制版本成为软件并将之出售,我觉得也有问题。光盘上的二进制序列和代码本质上没有什么区别,什么都不能做。我觉得软件只有在执行的时候,在真正协调着我们工作时才是真正意义上的软件。也就是说,不能正常工作的软件没有任何意义,软件的一个最基本的要求就是,能够正常工作。 从这个角度上看来,软件与程序也是截然不同的两个概念。我们可以将一个非常炫的.exe叫做一个程序,但是有时候并不一定是软件。软件应该要具有一定的鲁棒性,可维护性和可扩展性,并且必须首先是不能经常出bug的,否则永远只能是程序。写程序容易,写软件难。 那么为什么那么多软件,到最后结果却并不是特别的好呢?我觉得这里又是两个概念了,就是软件与产品。软件的话,只要你写出来的东西能够运行,我们就可以说是软件。软件有非常非常多,但是能成为产品的却很少。产品,是给人用的,而且一般是给不懂你是怎么实现这些功能的人用的。产品就是把复杂逻辑封装后,只留下简单的用户接口。产品的特性决定了,一个产品,在是个软件的基础上,还要具备简单易用,界面美观,与同系列其它产品能够形成一套统一平台,拥有完整文档等等许许多多的要求,并且用户能直接看得见的产品的每一个部分,都必须是完美无缺的,这就不只是程序员或者软件工程师能够做到的了。产品,必须追求100%完美,即使不能达到也要追求这个目标。 软件的本质,是对真实世界的抽象。有时候这种抽象是难以接受的,这个时候这种抽象不能带来任何物质利益。而产品的本质就是服务,是一种全身心为客户着想的服务,只有对客户全身心投入,才能获得回报。这是这几天以来的一个感悟。
转载:http://zhidao.baidu.com/question/14935611.html