有一阵子很喜欢JDon这个论坛,里边经常有一些深入的讨论,给人以启发,引发人的深层次思考。最近在上边看到一篇帖子,里边提到对程序本质的思考,由此我联想到著名的《编程之禅》,也想了很多。
在这篇帖子的开始,提到:
什么是程序?结论是:程序=数据结构+算法+设计模式。
这也算是站在一个角度,从方法论的角度来思考程序的设计和开发,这里我想也提出一个观点:
什么是程序?结论是:程序就是用计算机能理解的方式,描述业务。
没有任何贬低别人的意思,因为也没有绝对的对错,只是站在另外一个角度来看待开发这件事。
我从事开发十多年,最初是编程、开发,但是从某一个阶段开始,更多是客户沟通、需求分析和撰写,架构的设计。这些活动,给了我另外一种思考的模式。
所以,我在给开发人员讲设计开发这件事的时候,并不怎么去紧盯着设计模式、框架、数据结构这些东西,而是反复叮咛“时刻想着业务,时刻想着需求,时刻想着客户”。
不谈数据结构、不谈算法、更不谈设计模式。
数据结构和算法都是为了(用计算机语言)描述需求而衍生的;而设计模式,则是师法建筑设计行业,为了在软件设计时能够重复利用前人的经验而衍生的。因此,在程序这件事上,是第二位的。并不是第二位并不重要,而是一定要时刻抓住根本。
我对目前流程的一些概念和框架殊无好感,一方面是自己见识浅陋,阅历不广;另外一个方面的原因是我认为:如果你的系统非常复杂,那么应该是你并没有把客户的问题通过分块、分层解析开来(老子说:挫其锐、解其纷);如果本身比较简单,那么应该尽可能让设计开发人员能够用简单的方式解决问题。当然,这里说的“简单”,不是指的“少写或不写代码”,二是逻辑和思路上简单,维护和改进简单,容纳需求的变化简单;再有,就是大多数人使用框架和开源代码,仅仅想自己省点事,找点免费的午餐(这根本就不是做产品的思路)。
多写几行代码,并不一定就复杂。
相关推荐
《算法+数据结构=程序》是Niklaus Wirth的经典之作,它深刻揭示了编程世界的基石——算法和数据结构的重要性。在计算机科学中,这两者是构建高效、可维护程序的关键元素,也是软件工程师的基本技能。 算法是解决...
### 二级基础考试重点知识点详解 ...以上内容详细介绍了二级基础考试中数据结构与算法、结构化程序设计的原则、软件工程基础以及数据库设计基础的主要知识点,对于备考学生来说是非常宝贵的资料。
数据结构与算法是计算机科学的基础,对于ACM(国际大学生程序设计竞赛)参赛者来说,它们是必备的技能。在编程挑战中,高效地解决问题往往依赖于对数据结构的深入理解和巧妙运用各种算法。以下是对标题和描述中涉及...
6. **数据结构设计**:如堆、平衡二叉树(AVL、红黑树)、B树和B+树等,以及它们在数据库索引和文件系统中的应用。 这些知识点的掌握不仅有助于应对考试,更能在实际编程和系统设计中发挥重要作用。通过深入理解和...
在IT领域,尤其是在计算机科学与软件工程中,数据结构与算法是两大基石,它们的重要性不言而喻。根据“小甲鱼-数据结构和算法”的标题与描述,我们可以深入探讨这一系列课程所涵盖的关键知识点,这不仅对于初学者,...
4. **分析与优化**:除了介绍具体的数据结构和算法,本书还强调了如何分析算法的效率,如时间复杂性和空间复杂性,并讨论了如何通过优化数据结构和算法来提高程序性能。例如,分析排序算法的平均和最坏情况,以及...
本资料主要关注的是数据结构算法的实现,采用C语言作为编程工具,这使得代码更接近底层,有助于理解算法的本质。"数据结构算法实现及解析"是针对清华大学数据结构课程中的算法进行的实际操作和解析,旨在帮助学习者...
C语言作为一种底层、高效的编程语言,是学习算法和数据结构的理想选择,因为它能让学习者更好地理解内存管理和程序执行的本质。通过严蔚敏教授的幻灯片,学习者不仅可以掌握理论知识,还能看到具体的C代码实现,从而...
例如,你可以创建抽象基类定义算法的接口,然后为不同数据结构实现具体的算法,这就是所谓的模板方法设计模式。 此外,书中还会讨论如何在C++中使用对象和类来封装数据结构和算法,以提高代码的模块化和可维护性。...
例如,高等数学、程序设计和离散数学等是数据结构与算法课程的基础,学生若不能很好地掌握这些课程,就难以学好数据结构与算法。 综上所述,案例教学法的引入和实施,对于改善数据结构与算法课程的教学效果具有积极...
《算法讲义》是一份深度探讨算法和数据结构的教程,非常适合初学者入门。这份讲义涵盖了算法的基础概念、重要性以及如何通过算法解决实际问题。数据结构是算法的基石,两者相辅相成,共同构成了计算机科学的核心部分...
通过学习《数据结构》这本书,不仅可以掌握C++中的数据结构和算法,还能培养良好的编程思维和问题解决能力,为后续的软件开发和系统设计奠定坚实基础。邓俊辉教授的高清版教材和习题解答为自主学习提供了极大的便利...
《C常用算法程序集-徐士良》是针对C语言编程者的一本宝贵资源,它汇集了多种常见的算法实现,旨在帮助读者提升在算法设计和分析方面的能力。在这个压缩包中,我们可以找到一系列以C语言编写的算法示例,涵盖了数据...
《实用算法的分析与程序设计》是一本深受信息学竞赛选手和计算机科学爱好者推崇的经典著作,由清华大学的知名教授撰写。这本书深入浅出地探讨了算法的本质,旨在帮助读者掌握如何设计、分析并优化算法,从而提升编程...
理解数据结构的本质是为了优化问题的解决方案,提高程序的效率。同时,注意理论知识与实际编程的结合,通过编写代码来加深理解和记忆。对于难点章节,如树、图、查找和排序,需要投入更多的时间和精力去理解和实践。...
2.设计模式是比 J2EE 等框架软件更小的体系结构,J2EE 中许多具体程序都是应用设计模式来完成的,当你深入到 J2EE 的内 部代码研究时,这点尤其明显,因此,如果你不具备设计模式的基础知识(GoF 的设计模式),你很难...
在这个压缩包文件中,读者可以找到一系列精心编写的C语言程序,这些程序旨在帮助开发者提升算法设计与实现的能力。通过对这些代码的学习和实践,程序员能够更好地理解和掌握算法的本质,提高编程效率。 C语言是一种...
通过比较不同的数据结构和算法特点,学生能够全面理解数据结构和算法的概念,并掌握设计数据结构与算法的基本原理和方法。此外,课程还致力于研究解决常用问题的经典算法,提高学生使用计算机解决问题的能力。 2. ...
C语言程序设计与数据结构是计算机科学的基础课程,它涵盖了编程语言的基本概念、算法设计和数据组织的核心原理。在这个考研真题中,考生需要对C语言的语法、控制结构、函数、指针以及数据结构如链表、数组、栈、队列...