什么是程序的本质?是数据结构+算法+设计模式吗?
程序员文章站
2022-07-03 16:21:20
...
有一阵子很喜欢JDon这个论坛,里边经常有一些深入的讨论,给人以启发,引发人的深层次思考。最近在上边看到一篇帖子,里边提到对程序本质的思考,由此我联想到著名的《编程之禅》,也想了很多。
在这篇帖子的开始,提到:
什么是程序?结论是:程序=数据结构+算法+设计模式。
这也算是站在一个角度,从方法论的角度来思考程序的设计和开发,这里我想也提出一个观点:
什么是程序?结论是:程序就是用计算机能理解的方式,描述业务。
没有任何贬低别人的意思,因为也没有绝对的对错,只是站在另外一个角度来看待开发这件事。
我从事开发十多年,最初是编程、开发,但是从某一个阶段开始,更多是客户沟通、需求分析和撰写,架构的设计。这些活动,给了我另外一种思考的模式。
所以,我在给开发人员讲设计开发这件事的时候,并不怎么去紧盯着设计模式、框架、数据结构这些东西,而是反复叮咛“时刻想着业务,时刻想着需求,时刻想着客户”。
不谈数据结构、不谈算法、更不谈设计模式。
数据结构和算法都是为了(用计算机语言)描述需求而衍生的;而设计模式,则是师法建筑设计行业,为了在软件设计时能够重复利用前人的经验而衍生的。因此,在程序这件事上,是第二位的。并不是第二位并不重要,而是一定要时刻抓住根本。
我对目前流程的一些概念和框架殊无好感,一方面是自己见识浅陋,阅历不广;另外一个方面的原因是我认为:如果你的系统非常复杂,那么应该是你并没有把客户的问题通过分块、分层解析开来(老子说:挫其锐、解其纷);如果本身比较简单,那么应该尽可能让设计开发人员能够用简单的方式解决问题。当然,这里说的“简单”,不是指的“少写或不写代码”,二是逻辑和思路上简单,维护和改进简单,容纳需求的变化简单;再有,就是大多数人使用框架和开源代码,仅仅想自己省点事,找点免费的午餐(这根本就不是做产品的思路)。
多写几行代码,并不一定就复杂。