`

什么是程序的本质?是数据结构+算法+设计模式吗?

 
阅读更多

 

      有一阵子很喜欢JDon这个论坛,里边经常有一些深入的讨论,给人以启发,引发人的深层次思考。最近在上边看到一篇帖子,里边提到对程序本质的思考,由此我联想到著名的《编程之禅》,也想了很多。
 
 在这篇帖子的开始,提到:

什么是程序?结论是:程序=数据结构+算法+设计模式。

    这也算是站在一个角度,从方法论的角度来思考程序的设计和开发,这里我想也提出一个观点:
 

   什么是程序?结论是:程序就是用计算机能理解的方式,描述业务

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

 

 

分享到:
评论

相关推荐

    js-data-structures:我的个人学习资源。 使用JavaScript编程语言实现的数据结构,算法和设计模式

    JavaScript数据结构,算法和设计模式 我的目标是使用JavaScript编程语言实现流行的数据结构,算法和设计模式。 我正在一个永无止境的学习旅程中,本质上是“锯锯”。 我还将努力为每种数据结构,算法和设计模式提供...

    数据结构课程设计-学生成绩管理系统.docx

    1968年美国唐·欧·克努特教授开创了数据结构的最初体系,他所著的《计算机程序设计技巧》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。"数据结构"在计算机科学中是一门综合性...

    (c语言)数据结构教程

    1.1 数据结构讨论的范畴 Niklaus Wirth Algorithm + Data Structures = Programs 程序设计: 为计算机处理问题编制一组指令集 算法:处理问题的策略 数据结构:问题的数学模型 例如: 数值计算的程序设计问题 结构静力...

    二十三种设计模式【PDF版】

    2.设计模式是比 J2EE 等框架软件更小的体系结构,J2EE 中许多具体程序都是应用设计模式来完成的,当你深入到 J2EE 的内 部代码研究时,这点尤其明显,因此,如果你不具备设计模式的基础知识(GoF 的设计模式),你很难...

    数据结构(C++)有关练习题

    31 习题9 排序------------------------------------------------------------------------------------34 第1部分 C++基本知识 各种数据结构以及相应算法的描述总是要选用一种语言工具。在计算机科学...

    计算机二级C语言考试题预测

    数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系统的核心是(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是(C) A.数据库是一个独立的...

    软件设计规范

    所谓统一建模,所谓设计模式,其实都是软件生成的问题。 需求分析。需求分析本质上是独立的。所谓OOA,面向对象的建模,把程序构造概念上升到需求分析领域可能是不对的。一个先验的,复杂的难于掌握的限制,只会让人...

    最新Java面试宝典pdf版

    13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托方案怎么配置? 123 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有...

    二级C语言公共基础知识

    数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系统的核心是______。(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是______。(C) A. ...

    Java面试笔试资料大全

    13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托方案怎么配置? 123 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有...

    Java面试宝典2010版

    13、在DAO中如何体现DAO设计模式? 14、spring+Hibernate中委托方案怎么配置? 15、spring+Hibernate中委托方案怎么配置? 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类...

    leetcode题库-Blog:Fashion'sBlog个人学习笔记,涵盖JVM、数据结构、算法、设计模式、中间件、数据库、缓存、分布式微服

    设计模式 消息中间件 RocketMQ 概念 RocketMQ 特性 RocketMQ 集群 RocketMQ 事务 RocketMQ 常见问题 数据库 Redis 基本数据结构 进阶使用 持久化 集群 分布式锁 Client API 常见问题 ZooKeeper 概念特征 集群 基于...

    Java面试宝典-经典

    13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托方案怎么配置? 123 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有...

    JAVA面试宝典2010

    13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托方案怎么配置? 123 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有...

    java面试题大全(2012版)

    13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托方案怎么配置? 123 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有...

    Java面试宝典2012版

    13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托方案怎么配置? 123 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集...

    java面试宝典2012

    13、在DAO中如何体现DAO设计模式? 134 14、spring+Hibernate中委托方案怎么配置? 134 15、spring+Hibernate中委托方案怎么配置? 134 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有...

    Java面试宝典2012新版

    13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么配置? 123 15、spring+Hibernate中委托方案怎么配置? 123 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有...

Global site tag (gtag.js) - Google Analytics