`
fixopen
  • 浏览: 83907 次
文章分类
社区版块
存档分类
最新评论
阅读更多
我先从现有的模块结构说起,然后做一个分类和总结,同时预测一下未来的趋势
最初的Fortran语言就提供了各种模块机制【当然,按照现在普遍的认识,不认为它们是模块,不过按照我的看法,它们显然是】。比如Routine,DataBlock等。后来出现了ADT,出现了Object,这些都是模块的具体例子。

例程 主要用于重用一个抽象
数据块 表达用于加工的原材料和结果的一种模块,可以认为是被动的实体
类 用于表达一个概念模型,实际上是数据块以及所有操纵该数据块的例程的综合
组件 实现一个或者数个约定好功能的模块,可以方便的装配成系统,语言无关
进程、线程 一个活动【可以是一个例程】加上其运行的环境或者操作的数据
Lambda 一个纯粹的Routine,其本质是一个映射或者关系,表达输入和输出之间的函数,被称作Pure例程的那种例程就是lambda
Closure lambda加上其环境数据构成closure
Aspect 这是对活动阶段共性的抽象,用来表达一些听起来比较抽象的领域问题。比如:安全性,事务之类的非功能性需求一般都可以方便的用Aspect表达。一个比较切贴的说法是横切的关注点
Service 拥有完整业务逻辑实现的组件
包、名字空间 一个逻辑容器,容纳下一层次的模块或者下一层次的包、名字空间。主要用于条理化的组织模块

上面所有的我识别出来的模块机制,可以按照数据和代码来分类,可以按照是静态的还是动态的来分类,可以按照是容器还是元素来进行分类,可以按照是粗粒度的还是细粒度的进行分类,可以按照是抽象的还是具体的进行分类,可以按照是主要用于重用还是主要用于控制复杂性进行分类。

这样,上面的模块和分类方式就形成一个二维表格
。。。省略。。。

可以看出,很多新的模块形式都只是旧的模块形式改变了粒度而形成的。混合了数据和代码的模块越来越受到青睐,原因是这样能更自然的控制复杂度,简化系统结构。虽然在逻辑上,作为模块逻辑容器的模块不必要,但是在实践上,这样的模块对于表达抽象来说仍然很必要。虽然数据类型的模块非常少,但是,现在主流的分解思想却是分解为数据类型的模块。作为代码类型的模块现在开始慢慢的侵入主流,虽然closure这种代码+数据【以代码为主】可以完整的以数据+()运算【以数据为主】表达,但仍然坚定的侵入主流,这说明语法问题不是一个无足轻重的问题,而是一个相当受到关注的问题。
分享到:
评论

相关推荐

    工业机器人-续S7-300培训例子.7z

    S7-300是西门子自动化系统中的一个模块化中型PLC系统,广泛应用于工业自动化领域,如生产线控制、机械制造、过程控制等。这个压缩包可能包含了继续学习或深化理解S7-300使用的实例、教程、程序代码或者模拟测试。 ...

    西门子PLC例程-续S7-300培训例子.zip

    S7-300 PLC是由西门子推出的模块化中型PLC,它具备强大的处理能力和灵活的扩展性,能够适应各种工业环境的需求。PLC编程主要使用的是西门子的编程软件SIMATIC Step 7,支持Ladder Logic(梯形图)、Structured Text...

    C#开发典型模块大全--在线升级模块

    - 对在线升级模块进行充分的自动化测试,确保在各种场景下都能正常工作。 - 使用单元测试、集成测试工具,如NUnit或xUnit,编写测试用例。 以上就是C#开发在线升级模块的主要知识点,涵盖了从检测更新到安全完成...

    51单片机的应用资料-续

    C语言的优势在于其结构化特性,可以实现模块化编程,方便后期的维护和扩展。51单片机的C语言开发环境通常包括编译器、调试器等工具,学习者应掌握如何配置和使用这些工具,以及如何编写C语言的输入输出、函数调用和...

    3-云栖 - 天猫互动联盟与新体验平台 - 续彬V3.pdf

    8. 个性化和创意营销:天猫互动联盟提供了模块定制、自主搭建等交互方式,使得品牌商家能够针对特定活动,如超级品牌日、粉丝趴等,进行互动定制和创意营销。同时,还提供了权益配置、玩法订购等服务,以满足不同...

    Aria2模块源码-易语言

    本资料包“Aria2模块源码-易语言”提供了Aria2在易语言环境下的模块化实现,这使得易语言用户可以方便地在自己的程序中集成Aria2的功能,实现高效、稳定的文件下载。描述中提到,该模块经过了在Mydm(一款下载管理...

    Delphi多线程 断点续传 下载模块源码.rar

    一个Delphi支持多线程的断点续传下载模块源码,可用在Delphi下载程序中,部分参数设置:  dtAddTime : TDateTime; //发布时间  sResTitle : string; //资源名称  sDownloadURL, sSavedPath : string; //下载及...

    人工智能-项目实践-C#-基于Unity平台 C#编写的断点续传、多线程下载模块.zip

    为了确保代码的可复用性和模块化,项目中可能包含了独立的C#脚本,比如一个`DownloadManager`类,负责整体的下载逻辑,以及`ThreadDownloader`类,专门处理单个线程的下载任务。这样的设计使得代码结构清晰,易于...

    易语言彗星虚表操作类_1.3模块源码-易语言

    1. 初始化与销毁:在使用彗星虚表操作类前,需要先对其进行初始化,这通常涉及到为类创建彗星虚表并填充必要的信息。使用后,记得及时释放资源,防止内存泄漏。 2. 添加与删除虚函数:通过操作类提供的API,可以...

    易语言在线更新模块源码-易语言

    通过对这两个模块的深入研究,开发者不仅可以掌握易语言中的模块化编程思想,还能了解网络通信、文件操作等核心技能,对于提升易语言的编程能力大有裨益。同时,这对于那些希望创建具有自动更新功能的软件的开发者来...

    易语言进度下载模块源码-易语言

    开发者可以通过这个模块轻松地集成下载功能,并且可以根据需要自定义下载策略,如断点续传、多线程下载等。此外,由于源码开放,开发者还可以根据具体需求进行二次开发,增强或优化模块的功能。 总结起来,易语言...

    易语言WinInet模块源码-易语言

    例如,通过InternetOpen函数初始化会话,然后使用InternetCloseHandle函数关闭会话。 3. **HTTP请求与响应**:学习如何构建HTTP请求,设置请求头,发送GET或POST请求,并解析服务器返回的HTTP响应,包括状态码、...

    第二周周报(子非鱼——智能模块化养鱼设备)1

    在本周的“第二周周报(子非鱼——智能模块化养鱼设备)”中,我们看到了项目的持续进展,主要集中在两个关键领域:颜色识别技术的优化以及前后端系统的整合。以下是对这两个知识点的详细说明: 颜色识别是智能系统中...

    Java毕业设计-Java多线程与线程安全实践-基于Http协议的断点续传.rar

    5. 可扩展性:项目的代码结构清晰,模块化程度高,可以方便地进行二次开发和定制。用户可以根据自己的需求修改下载策略、增加新功能等,以满足不同的应用场景。 总之,Java多线程与线程安全实践-基于Http协议的断点...

    易语言迅雷下载引擎模块源码-易语言

    通过这个例子,开发者可以快速学习到如何初始化引擎,设置下载任务,监控下载进度,以及处理各种下载相关的事件。这对于初学者来说是非常有价值的参考资料。 `迅雷引擎SDK.ec`是迅雷下载引擎的易语言类库文件,它...

    商业编程-源码-多任务多线程断点续传DLL.zip

    在商业编程中,使用DLL可以减少内存占用,简化代码管理,促进代码重用,并且有助于模块化设计。断点续传功能通常会封装成DLL,供其他程序调用,这样可以方便地集成到各种应用程序中,而无需重复编写相同的功能代码。...

    易语言软件更新打包下载模块源码-易语言

    7. **自动化更新策略**:更新模块可以设计成后台静默更新,也可以设置为用户触发更新。此外,还可以设定定期检查更新的策略,比如启动软件时检查、间隔一定时间检查等。 通过理解和使用这个易语言软件更新打包下载...

    易语言-易语言QQ本地续续火花程序

    此外,考虑到易语言的特性,代码的编写应该注重易读性和可维护性,遵循良好的编程规范,如适当的注释、变量命名和模块化设计。对于用户界面,易语言提供了丰富的控件和布局管理工具,开发者可以设计出直观友好的图形...

Global site tag (gtag.js) - Google Analytics