免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4336 | 回复: 5
打印 上一主题 下一主题

[原创]节选:对于主流编程模型的简要分析 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-11 16:28 |只看该作者 |倒序浏览
稍微解释一下,这是我个人对于现有编程模型的一个简要概括,希望写出来给大家看看,并且期待一些意见反馈。

6.2 主流编程模型分析
6.2.1 现有模型

    * 数据流驱动
          o 数据流驱动,基于模块输入输出架构,每周期定时调用所有模块
          o 简单直观的编程,适合工业应用
          o 对于复杂逻辑序列事件编程复杂而且调试困难
          o 应用模型通常基于单线程分时,类似伪纤程,算法等价为为一棵定时器触发跟节点的执行树
          o 对于IO使用轮询,中断一般有底层驱动或者操作系统服务处理
          o 作为一般的应用情况,数据流驱动的程序可以是无限循环运行的
    * 数据加算法
          o 函数方式编程
          o 实现代价换取最高的灵活性
          o 作为冯诺依曼和图灵机体系下的工作计算机里面,可以实现任何编程模型
          o 纯函数调用等价于一颗调用树(除了setrun,setlong run,jump等特殊接口)
          o 大部分情况编译时确定执行树,也存在动态节点,可以通过函数指针和dll装载实现
    * 面向对象
          o 高阶编程模型,通常向下兼容函数式编程
          o 以类和对象为基础通过方法(消息)交互,对象一般具有封装,继承,多态等特性
          o 面向对象同时暗含了自指,元和衍生对象概念
          o 衍生的编程概念包括事件处理
          o 面向对象是更为高阶的设计模式的基础,包括用途,契约式设计,UML等
          o 通常和运行环境和库紧密相关

6.2.2 动态对象复杂应用分析

    * 操作系统管理进程
          o 主要对象:操作系统和进程
          o 操作系统负责创建销毁进程,调度进程,改变进程状态,内部维护有进程列表,指定/替换进程执行内容,但是不关心进程具体实现
          o 进程通过系统调用和操作系统通信
          o 进程通过父子关系,间接操作系统核心对象(管道,socket等等)和其他进程建立删除连接,并交换信息
    * 网络服务守护任务
          o 主要对象:守护进程和任务进程
          o 守护进程接受客户请求,管理任务进程,包括创建,销毁,改变任务进程状态
          o 任务进程通过特定接口对象和客户通信
          o 任务间进程通常彼此独立
    * 多窗口GUI应用
          o 主要对象:窗口对象和消息循环
          o 程序静态或者动态创建窗口对象,由操作系统负责加入消息循环来响应外部事件
          o 窗口通过暴露接口变量和回调函数和后台应用逻辑通信
          o 窗口可以动态建立和销毁,窗口控件之间不直接耦合,但是可以通过后台应用逻辑联合显示信息
    * 插件链条管理
          o 一个典型的插件链条是媒体播放,包括demux,stream decoding, stream playback构成
          o 根据用户配置和媒体文件不同,每播放一个文件,这个链条重置并重新建立
          o 主程序根据不同的输入配置载入合适的动态库,并在过程中连接这些动态库的输入输出构成链条
          o 当播放停止时,链条被解构

6.2.3 程序模型升级更新分析

    * 一般IT升级
          o 部分升级和全部升级
                + 程序的动态加载库升级
                + 程序包的完全升级
          o 在线升级和线下升级
                + 程序运行时部分或者全部部分升级,可能对正在运行的软件构成影响,一般工业产品软件环境简单可以使用
                + 通常的做法是后台下载整个程序包,被动等待或者主动进行重启,下次重新启动前进行升级
    * 工业软件升级
          o 升级过程从属于产品操作流程的一部分
          o 一般过程是关闭机器,确认处于安全状态下,升级软件,重启工业控制器,软件运行正常后重新启动机器

6.2.4 模型比较
        数据流        数据加算法        面向对象
执行树唯一        是        否        否
动态结构对象管理        否        是        是
程序无限循环        是        否        否
程序入口        第一个顺序执行的模块        指定函数名(main)        指定函数名(main)
6.3 现有编程开发过程
6.3.1 文本编程

    * 开发更新过程
          o 加入新的原代码文件,更新项目组织文件
          o 编译运行调试
          o 发布最终版本
    * 版本系统协作
          o 利用现有版本系统跟踪文本文件改变,进行比较合并
          o 利用版本系统进行自动编译

6.3.2 图形编程

    * 系统架构
          o 纯图形编程
          o 图形编程作为程序跨架,可以与模块共同工作
          o 文本编程语言环境作为框架,图形模块编译嵌入框架
    * 开发更新过程
          o 加入新的模块,和现有系统模块连接
          o 编译运行调试
          o 发布最终版本,包括源代码和编译版本
    * 版本系统协作
          o 大系统分拆为组件,以组件文件级别进行更新
          o 其修改无法直接比较,通过更改日志和文档进行说明,可控性由个人负责

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
2 [报告]
发表于 2011-12-13 17:44 |只看该作者
没看出你这篇帖子想说啥。

论坛徽章:
0
3 [报告]
发表于 2011-12-13 22:49 |只看该作者
简述编程模型和编程平台的底层机制,所利用到的概念没有超过计算机体系结构里面的基本常识。
其中的数据+算法可以认为概括了C,pascal类似的编程语言,面向对象是对obj-c,c++,perl等等的一个简单概括。纯数据流驱动的模型一般用于工业开发当中。
如果有那些点看不明白我可以再补充一些。
这篇文章的主要对象针对的是编程语言和编程平台的设计,和具体的java或者.net关系不是很大。

论坛徽章:
0
4 [报告]
发表于 2011-12-29 20:23 |只看该作者
本帖最后由 jpzhu 于 2011-12-29 20:25 编辑

从主流编程语言和编程平台的根本机制来看,现行各家之间的共同点远远大于不同的地方。
值得关注的是学术化的lisp/scheme,由于其嵌套栈和解释器的运行方式,更多的运用于学术环境,以及相对极其有限的实际应用环境,一般用户能接触到的成熟化的软件只有emacs, autocad等。但是由于其语言的特性完全等价于图灵机,所以理论上可以实现现有的任何一种编程语言。
希望能联系熟悉lisp/scheme的同学,以整理一下这种软件的架构模式。

论坛徽章:
0
5 [报告]
发表于 2012-01-12 12:07 |只看该作者
回复 1# jpzhu


    楼主是牛人

论坛徽章:
0
6 [报告]
发表于 2012-02-01 19:52 |只看该作者
这是我目前工作文档的一部分。因为不完整给各位带来理解上的困难,先道个歉。因为工作性质,目前还不是完整放出的机会。
从软件角度看,编程语言和编程平台是紧密联系的,编程语言的特性决定了编程平台提供了怎么样的功能。目标执行平台则制约的编程平台的整个编译开发链条的工作特性,以及调试诊断特性。目前这些东西存在不少割裂之处,比如源代码和执行程序的分离,程序串行并行的不统一,开发和产品应用的分离,工业领域和IT领域编程的分离等等。
在未来4-5年之间,随着市场和应用得的要求,个人感觉也许会有一些比较大的变化。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP