循环结构是imperative
language的重要组成部分,一般也是程序中比较难以理解的部分。特别是没有软件技术背景的朋友,明显对于循环的理解力较弱。在Von
Neumann体系结构中,赋值语句是必须的,因而引出了存储概念,也引入了时间概念,因为我们可以区分出赋值前和赋值后的时刻。引入时间之后,本质性的
影响是程序串行化,而强迫我们从并行思考转入串行处理。很多时候这是一种不自然的情况,在我们的自然思维中,我们看到的或想到的也许只是一组静态结构,但
在程序中表达的时候却往往不可避免的需要引入一个动态过程。而我们控制动态结构的能力总是不足的。最近对于函数式语言及处理风格的越来越强烈的要求可能也
从侧面反映了大家对这种结构失配的不满。
但是串行思维毫无疑问也是我们正常思维模式的一部分(当然这种思维模式在多大程度上是因为Von
Neumann
体系造成的,也是个很有趣的问题)。例如在页面渲染的时候,我们可能希望预先把所有用到的数据都转载到内存中,赋予不同的变量名,然后在页面模板中我们只
要知道如何把这些数据变量表现出来就可以了。先做完A再做B,这是分层的思想,也是典型的串行思维。而基于数据进行处理,也是Von
Nenuman体系的基本思想。但是如果处处要求预先计算并赋值,往往增加了很多额外的步骤(glue
code),并且增大了对内存(计算空间)的需求。分层之后,还存在着一个各个层次之间结构匹配的维护问题。
面向对象在结构表达方面是一种
巨大的进步。经过多年的发展,我们在表达静态结构关系方面已经是驾轻就熟了。通过属性关联,我们可以沿着对象图进行结构遍历。如果使用成员函数,在这种遍
历过程中还可以包容更多的动态特性。而在数据持久化方面,ORM的盛行也在一定程度上证明了对象图的有效性。使用对象图可以大大降低对赋值语句的需求,减
轻了明确建模的压力(每一次赋值都要求着一个明确的变量名,一个概念),也缓解了Von Neuman体系结构的束缚。例如,我们不再需要
var user = loadUser(userId);
var userOrgnization = loadOrgnization(user.orgId);
var userOrgnizationName = userOrgnization.name
而是直接使用 user.orgnization.name
目前面向对象所表达的大多数结构还是基于数据语义的,而我们对于函数等高阶结构的控制能力仍然较弱。设计模式在这方面提供了一些经验,但还是远远不够的。
在我们经验不多的时候,我们需要依赖于明确的实体数据,而在我们的理解逐步深入之后我们就可以通过Visitor,
Iterator等模式支撑起整个结构。高阶结构比低阶结构难以控制,一方面是因为动态性本身比静态性难以理解,另一方面函数对信息的使用和流动是一种主
动约束,如果约束的不正确,会造成结构的失效。而数据的使用是完全开放的,很多决定都可以延迟到使用时刻决定。当然,开放性带来的问题也早就众所周知了:
不受限制的使用将导致无法控制的困境。在基础的数据层封装方面,一般我并不提倡大量使用domain
model似的具有丰富语义的数据对象。因为数据是共享的,应该存在一个开放的数据层,在其上可以建立业务对象。混杂在一起会限制系统的演化。
分享到:
相关推荐
首先,赞赏功能在微信小程序中扮演着重要的角色,它是用户对内容创作者或服务提供者表达支持和鼓励的一种方式。通过赞赏,用户可以向小程序的开发者直接捐赠小额资金,而无需进行完整的购买交易。这种模式特别适用于...
微信小程序“你画我猜”是一款基于微信平台的互动娱乐应用,它允许用户通过绘画来表达词语,其他用户则需要根据图画猜测所绘内容。这款小程序的源码提供了开发此类应用的技术实现,对于想要学习微信小程序开发或者...
循环结构作为课程中的重难点,对于学生掌握后续内容和提高程序设计能力具有承上启下的作用。本文将从循环结构的概念、循环结构的主要语句以及如何教学这些语句等方面详细阐述。 循环结构,又称重复结构,是指在程序...
在数学的教学中,程序框图是表达算法的一种重要工具,尤其在人教A版数学必修三中,第1.1.2章节着重探讨了程序框图和算法的基本逻辑结构。程序框图通过图形化的方式来表示算法,使得算法的步骤更清晰,表达更准确,...
### VHDL程序结构和数据类型详解 #### 一、VHDL程序结构 VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种用于描述数字系统的硬件描述语言,广泛应用于集成电路的设计之中。掌握...
通过学习和实践这个教程,开发者不仅可以了解小程序的基本开发流程,还能掌握特定的表达情感的工具——表情包的管理和展示技术。对于想要进入微信小程序开发领域的人来说,这是一个非常有价值的起点。
通过学习和理解这个源码,开发者可以掌握如何在易语言环境下利用ACCESS对象进行XML数据的导入导出,这对于需要处理大量结构化数据的应用程序开发非常有帮助。同时,这也是一种将数据库操作与数据交换格式结合的实际...
导入数据库文件后,表白墙小程序的数据结构和初始数据将被设置好,为用户提供表白记录存储等功能。 前端部分,即微信小程序源码,可以直接导入微信开发者工具进行编译和调试。微信开发者工具是微信官方提供的专业...
宏程序的使用可以涵盖多个方面,如自动计算刀具路径、优化进给速度、自动生成加工策略、快速导入和处理CAD模型等。例如,一个宏程序可能被设计用来自动检测模型的尖角并生成相应的清角刀路,这样就避免了手动操作的...
1. **编程语言**:程序设计的基础是编程语言,如Python、Java、C++等,它们提供了结构化的方式表达算法和数据结构。 2. **算法**:程序设计的核心是算法,它是解决问题或执行任务的明确步骤。包括排序算法(如冒泡...
首先,我们要明白“装逼”在这里是指一种趣味性的社交表达方式,通过小程序提供各种创意图片和功能,让用户在社交媒体上展示个性。这款小程序源码的核心特点在于其无需后台支持,可以直接在微信开发工具中运行,这...
通过具体例子,如个人理财问题和人口预测问题,让学生设计算法并绘制程序框图,理解变量的变化规律,掌握循环结构的完整表达。 在这个过程中,教师应着重强调计数变量和本利和变量的作用,它们在循环中分别代表循环...
在数据导入过程中,需要根据GIS文件与CAD文件数据结构的差异,编写相应的程序来处理数据转换,确保数据的准确性和完整性。 在GIS环境下,将管线信息导出时,将数据导出为DXF格式文件是一个关键步骤。DXF文件是一种...
赞赏功能是微信小程序中的一种常见交互方式,用户可以通过赞赏表达对小程序开发者或者内容创作者的支持和鼓励。赞赏通常通过微信支付进行,用户可以选择不同的金额进行打赏,开发者可以从中获取收入。在微信小程序的...
这份文档可能会介绍如何设置微信开发者工具,配置小程序项目,理解V2EX社区小程序的代码结构,以及如何进行页面跳转、数据交互等基础操作。此外,它还可能涉及微信小程序的一些特有API和组件的使用方法,帮助开发者...
目的基因是指我们希望在受体细胞中表达的特定基因,它可以是编码蛋白质的结构基因,也可以是调控其他基因表达的因子。获取目的基因的方法多种多样,包括从基因文库中获取、利用聚合酶链式反应(PCR)技术扩增以及...
通过USE语句,可以在其他程序单元中导入模块中的元素。 派生数据类型(Derived Data Types)允许用户自定义复杂的数据结构,将相关变量组合在一起,增强了数据的表达力。 最后,虽然Fortran95本身并不完全支持面向...
目标基因是指我们希望在受体细胞中表达的特定基因,它可以是编码蛋白质的结构基因,也可以是调控其他基因表达的因子。获取目标基因的方法有多种: - 从基因文库中获取:基因文库是包含生物所有或部分基因的DNA集合...
6. **源码导入视频教程**:视频教程通过视觉演示,更直观地展示操作流程,对于一些难以用文字表达的细节,视频教程往往能提供更清晰的理解。 7. **软件/插件**:可能包含了一些用于图像处理、数据管理或者用户体验...
流程图是一种直观的表达算法的方式,有助于学生把握算法的逻辑结构。 4. 小组讨论:鼓励学生分组讨论,共同设计解决方案,促进合作学习和思维碰撞,提高解决问题的技巧。 5. 编程实践:引导学生使用一种程序设计...