有一阵子很喜欢JDon这个论坛,里边经常有一些深入的讨论,给人以启发,引发人的深层次思考。最近在上边看到一篇帖子,里边提到对程序本质的思考,由此我联想到著名的《编程之禅》,也想了很多。
在这篇帖子的开始,提到:
什么是程序?结论是:程序=数据结构+算法+设计模式。
这也算是站在一个角度,从方法论的角度来思考程序的设计和开发,这里我想也提出一个观点:
什么是程序?结论是:程序就是用计算机能理解的方式,描述业务。
没有任何贬低别人的意思,因为也没有绝对的对错,只是站在另外一个角度来看待开发这件事。
我从事开发十多年,最初是编程、开发,但是从某一个阶段开始,更多是客户沟通、需求分析和撰写,架构的设计。这些活动,给了我另外一种思考的模式。
所以,我在给开发人员讲设计开发这件事的时候,并不怎么去紧盯着设计模式、框架、数据结构这些东西,而是反复叮咛“时刻想着业务,时刻想着需求,时刻想着客户”。
不谈数据结构、不谈算法、更不谈设计模式。
数据结构和算法都是为了(用计算机语言)描述需求而衍生的;而设计模式,则是师法建筑设计行业,为了在软件设计时能够重复利用前人的经验而衍生的。因此,在程序这件事上,是第二位的。并不是第二位并不重要,而是一定要时刻抓住根本。
我对目前流程的一些概念和框架殊无好感,一方面是自己见识浅陋,阅历不广;另外一个方面的原因是我认为:如果你的系统非常复杂,那么应该是你并没有把客户的问题通过分块、分层解析开来(老子说:挫其锐、解其纷);如果本身比较简单,那么应该尽可能让设计开发人员能够用简单的方式解决问题。当然,这里说的“简单”,不是指的“少写或不写代码”,二是逻辑和思路上简单,维护和改进简单,容纳需求的变化简单;再有,就是大多数人使用框架和开源代码,仅仅想自己省点事,找点免费的午餐(这根本就不是做产品的思路)。
多写几行代码,并不一定就复杂。
相关推荐
JavaScript数据结构,算法和设计模式 我的目标是使用JavaScript编程语言实现流行的数据结构,算法和设计模式。 我正在一个永无止境的学习旅程中,本质上是“锯锯”。 我还将努力为每种数据结构,算法和设计模式提供...
1968年美国唐·欧·克努特教授开创了数据结构的最初体系,他所著的《计算机程序设计技巧》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。"数据结构"在计算机科学中是一门综合性...
1.1 数据结构讨论的范畴 Niklaus Wirth Algorithm + Data Structures = Programs 程序设计: 为计算机处理问题编制一组指令集 算法:处理问题的策略 数据结构:问题的数学模型 例如: 数值计算的程序设计问题 结构静力...
2.设计模式是比 J2EE 等框架软件更小的体系结构,J2EE 中许多具体程序都是应用设计模式来完成的,当你深入到 J2EE 的内 部代码研究时,这点尤其明显,因此,如果你不具备设计模式的基础知识(GoF 的设计模式),你很难...
31 习题9 排序------------------------------------------------------------------------------------34 第1部分 C++基本知识 各种数据结构以及相应算法的描述总是要选用一种语言工具。在计算机科学...
数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系统的核心是(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是(C) A.数据库是一个独立的...
所谓统一建模,所谓设计模式,其实都是软件生成的问题。 需求分析。需求分析本质上是独立的。所谓OOA,面向对象的建模,把程序构造概念上升到需求分析领域可能是不对的。一个先验的,复杂的难于掌握的限制,只会让人...
13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托方案怎么配置? 123 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有...
数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系统的核心是______。(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是______。(C) A. ...
13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托方案怎么配置? 123 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有...
13、在DAO中如何体现DAO设计模式? 14、spring+Hibernate中委托方案怎么配置? 15、spring+Hibernate中委托方案怎么配置? 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类...
设计模式 消息中间件 RocketMQ 概念 RocketMQ 特性 RocketMQ 集群 RocketMQ 事务 RocketMQ 常见问题 数据库 Redis 基本数据结构 进阶使用 持久化 集群 分布式锁 Client API 常见问题 ZooKeeper 概念特征 集群 基于...
13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托方案怎么配置? 123 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有...
13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托方案怎么配置? 123 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有...
13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托方案怎么配置? 123 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有...
13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托方案怎么配置? 123 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集...
13、在DAO中如何体现DAO设计模式? 134 14、spring+Hibernate中委托方案怎么配置? 134 15、spring+Hibernate中委托方案怎么配置? 134 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有...
13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托方案怎么配置? 123 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有...