我在各种场合一直都在强调结构问题是独立的,在程序语言之外存在着独立的,可研究的,富有成效的结构问题。[url]http://canonical.iteye.com/blog/147424 [/url]在这个方向上更进一步,我们注意到所有的代码并不是天然出现的,而是由人所编制的,因此代码世界内部并不构成封闭的,自足的某个世界。代码中的结构问题并不是由代码本身完全解决的,即在代码之外仍然存在着技术上可研究的结构问题。
我们在编制代码的同时也在编制着大量的说明文档。这些文档描述了代码片断之间的相互关系,描述了代码未来的扩展方向,描述了代码之间的可能的交互方式,同时也描述了针对现有代码实现的很多具体约束。例如我们在文档中约定某个量要在10和20之间,但在代码中却不一定显式进行了判断。针对代码结构的很多具体约束条件和相关性描述可能只在文档中体现,只在程序员的头脑中存在,而并不一定忠实的在代码结构中得到表达。
我在设计领域基本持有一种物理实在论,即某种技术相关的约束应该在技术世界中通过技术手段得到表达。只是这里的技术手段却不一定指在应用中加上特定的代码实现,虽然我们在代码实现中更直接的表达设计要求无疑是需要提倡的。为了在程序中有效的维护结构相关性,我们并不一定需要抽象出所有可能重用的代码,并不一定需要确保某一概念在程序中只有精确的唯一的表达。程序中难以直接精确表达的弱关联,仍然可以通过开发/设计工具等技术手段得到有效的维护。我们需要保证的是代码世界中知识的自恰性,而自恰性并不等于唯一性。
http://canonical.iteye.com/blog/33788
在Witrix中我们采用一种物理模型驱动的开发方式,
http://canonical.iteye.com/blog/29412 由pdm模型出发,自动生成hibernate的hbm文件,java实体类,元数据meta文件,前台Action注册文件等。生成的配置文件通过 syncWithModel标记与模型保持着稳定的关联。所有配置文件都支持手工修改,开发工具识别syncWithModel标记,当pdm模型发生变化的时候,工具自动将变化信息同步到各个配置文件中。注意到这里并不是采用一个统一的元数据模型的方式,各个配置文件所表达的信息在一定程度上是重复的,也可能是不一致的。例如后台数据库允许保存100个字节,但是前台meta中我们可能配置只允许录入20个字节。根据不同应用场景的需要,我们可以在各个层面对每个配置文件进行独立的调节. 当然,在一般情况下并不存在这种需要。整个开发过程中,信息表达的自恰性并不是在应用程序代码中得到定义的,而是因为开发工具的存在而在技术上得到保证的。放松模型之间的唯一匹配要求,我们可以得到更加丰富,更加灵活的软件结构。实际上我认为RoR(RubyOnRails)采用直接映射的 ActiveRecord的方式虽然有效保证了系统变动中知识的一致性,但是如果不允许在各个层面上都能够自然的定义某种偏离,它在复杂应用中的价值就要打上大大的折扣。
分享到:
相关推荐
《软技能:代码之外的生存指南》是编程领域的一本重要书籍,由John Sonmez撰写。这本书不仅仅关注技术层面的提升,而是强调了作为一名程序员在职业生涯中需要掌握的非技术性,或者说“软”技能。这些技能对于程序员...
除了个别算法之外,演示系统给出了《数据结构》(C语言版)书中算法对应的程序代码(CPP文件)和测试运行程序(VC++6.0的EXE文件)。通过本系统,可以显示算法的源代码以及运行结果。具体操作步骤如下: 1.选择...
### 数据结构伪代码 #### 一、数据结构基础概念与应用 **数据结构**是计算机科学中的一个重要概念,它指的是一组数据以及它们之间的关系和在这些数据上执行的操作的集合。良好的数据结构设计能够极大地提高算法的...
代码外提是指将循环体中与循环变量无关的运算提出,并将其放到循环之外,以避免每次循环过程中的重复操作。 删除冗余运算 删除冗余运算是指删除循环体中的冗余运算,以减少循环体的复杂性。 变换循环控制条件 ...
除了自己复习之外,我想如果把这些代码放在自己的电脑上就太浪费了,所以分享给大家,可以方便大家复习数据结构的知识,同时有可以参考的源代码(个人所写,并不完善或严格,仅供参考)。 其中包括的数据结构有: 1...
除此之外,书中还可能包含其他数据结构和算法的实现,如二分查找、哈希表、堆排序、快速排序等。这些内容对于计算机科学的学习者来说都是基础且重要的知识。通过阅读和理解这些源代码,不仅可以提升编程能力,还能...
"代码之外的功夫:程序员精进之路"这个主题,暗示了在技术深度之外,还有许多方面需要我们去修炼和提升,以实现全面的专业成长。这篇讨论将深入探讨这些非编码技能,帮助程序员在职业生涯中更上一层楼。 首先,我们...
本资源“数据结构经典程序解析(含代码)”旨在深入解析数据结构的实现细节,通过C语言和VC++(Visual C++)编程环境,为学习者提供了实践性的代码示例。 在C语言中,数据结构的实现往往更加底层,直接操作内存,这有...
除此之外,报告中还提到了其他多个项目,如Josephus问题、交集问题、线性表、二叉排序树、哈希表、后缀表达式求值、二叉树的创建与显示、表达式树等。这些项目涵盖了数据结构中数组、链表、树形结构、哈希等基础概念...
首先,线性表是数据结构中常见的逻辑结构,它具有相同的特性:数据元素之间是一对一的关系,除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。在代码中,线性表是通过结构体list实现的,包含了指向...
除了基本的数据结构实现之外,高一凡还可能提供了具体的实践案例来展示这些数据结构的应用。例如: - **排序算法**:冒泡排序、快速排序、归并排序等。 - **查找算法**:二分查找、哈希查找等。 - **动态规划**:...
《代码之外的功夫:程序员精进之路》是图灵程序设计丛书中的一部,它强调了程序员不仅仅是个技术工匠,更是问题解决者和社会创新者。这本书深入探讨了那些超越编程技术本身,对于提升程序员能力至关重要的方面。以下...
除此之外,Python还支持更高级的数据结构,如堆栈、队列、链表、树、图等。堆栈遵循“后进先出”(LIFO)原则,常用于函数调用和表达式求值。队列则遵循“先进先出”(FIFO)原则,适用于任务调度和消息传递。链表由...
WordPress的核心架构遵循“插件化”设计,这意味着功能可以独立于核心代码之外,通过插件实现。主要的代码结构包括wp-includes(包含核心函数库)、wp-content(用户可编辑的部分,如主题和插件)和wp-admin(后台...
本书不仅涵盖了理论知识,还提供了丰富的实践案例和代码示例,以便读者能够更好地理解和应用所学知识。 #### 二、基础知识与哲学 ##### 2.1 数据结构的重要性 - **需求**:在第1章中,作者强调了数据结构的重要性...
标题中的"C代码之全局变量(数据结构)"指出我们要讨论的是C语言中的全局变量以及它们与数据结构的关系。全局变量是在程序的任何函数之外声明的变量,可以在整个程序中被访问,除了在局部作用域内被同名局部变量覆盖时...
除了对数据结构的基本操作进行实现之外,我们还需要考虑时间和空间复杂度等重要问题,以确保算法的执行效率和程序的稳定性。 最后,在实验报告中,除了要详细描述实验过程和结果之外,还需要对实验中遇到的问题和...
除此之外,理解数据结构和算法也是读懂源代码的关键。数组、链表、栈、队列、树等基本数据结构,以及排序、查找、图论等算法,构成了大多数复杂程序的基础。当你遇到这些概念时,需要能够识别并理解它们在源代码中的...
除此之外,为了优化调度,可能还会涉及到其他数据结构,如链表或者优先队列。链表可以方便地插入和删除船只,而优先队列可以保证紧急船只得到优先处理,即使它们不是最早到达的。这些数据结构的选择和组合,将直接...
这份“华为机试源代码”包含了一系列与数据结构和算法相关的挑战,如链表、二叉树以及背包问题,同时也涉及基础的算术操作。下面我们将深入探讨这些知识点。 首先,链表是一种基础的数据结构,它由一系列节点组成,...