网站开发发展和前景,重庆智能网站建设设计,官网推广计划,国际新闻最新消息战争新闻假设我们身边的一切都是用制造材料加以描述的#xff1a;“空调”不是“空调”#xff0c;而是“由金属和塑料做成的物体”#xff1b;“书”不是“书”#xff0c;而是“由纤维和墨做成的物体”。沟通时我们也不用“空调”和“书”这样的词汇#xff0c;而是“金属和塑料…假设我们身边的一切都是用制造材料加以描述的“空调”不是“空调”而是“由金属和塑料做成的物体”“书”不是“书”而是“由纤维和墨做成的物体”。沟通时我们也不用“空调”和“书”这样的词汇而是“金属和塑料做成的物体”和“纤维和墨做成的物体”。可以想象大脑在面对这些信息时会让我们觉得多么的痛苦显然这样的事情在现实中很少发生因为我们的大脑具备很强的抽象能力 会通过抽象塑造“空调”和“书”这样的概念提升沟通效率和维持思维次序。我们学习知识的过程其实就是不断精确掌握抽象概念和建立思维次序的过程。 对于程序员来说除了生活在现实世界还“身处”由程序所构建的虚拟世界中。程序设计其实是在个人头脑中构建虚拟世界的过程而维护代码则首先是通过程序所表达的虚拟世界与其他程序员间接沟通的过程。为了提高程序员间的间接沟通效率我们一定希望虚拟世界也象现实世界那样充满着象“空调”和“书”这样的概念也希望程序员们在虚拟世界所使用的概念相似。由于现实世界中程序员们已掌握了大量的相似概念如果能将这些概念带入虚拟世界那将显著提升程序员间通过虚拟世界即程序沟通的效率。因此作者认为软件设计的真谛是通过程序构建与现实世界相似的虚拟世界。通常设计质量越高就越能在虚拟世界中找到现实世界的影子。 软件设计活动的关键又是什么呢还是让我们回到现实世界去寻找答案吧 在远古时期人类只能通过徒步从一个地方到达另一个地方。后来发现马可以被驯服通过马车能更快地从一处到达另一处。再后来人类逐步发明了自行车、汽车和飞机且每一次发明都使得交通效率得以大幅提高。在这里马车、自行车、汽车和飞机都共同地为了解决交通效率问题。很显然马车、自行车、汽车和飞机都是不同的概念人类通过抽象发明这些概念并通过相互学习的方式使得大家掌握其含义。如果将焦点放在交通工具上我们会发现交通效率越高则其概念越抽象复杂度也越高。或者说越是抽象的概念其所隐藏的复杂度就越高。 从这个关于交通的例子中我们不难发现现实世界中我们是通过转移复杂度的方式解决复杂问题的且每一次不同的转移都伴随着抽象概念的建立转移的复杂度越多所建立的概念就越抽象。由于复杂度被转移了后使得一小部分人专注于被转移的复杂度比如制造飞机而其他绝大部分人在享用复杂度被转移所带来好处的同时不用关心被转移走的复杂度乘飞机的人不用关心飞机的驾驶与制造。同样的事情也发生在软件行业不同的是软件行业“制造”的不是汽车和飞机而是编程语言、数据库、平台和框架等。
不难发现软件设计的关键活动应是抽象通过抽象建立新的概念并将部分复杂度转移到概念背后。尽管不断的抽象增加了新概念的复杂度但也简化了所需解决问题的复杂度。显然好的设计应是其所简化的复杂度要大于因为抽象所创造的复杂度。