当前位置:  开发笔记 > 数据库 > 正文

基于流程的编程

如何解决《基于流程的编程》经验,为你挑选了3个好方法。

在过去的几天里,我一直在阅读基于流程编程的一些内容.有一个维基,提供更多细节.维基百科对此也有很好的概述.我的第一个想法是,"伟大的另一个乐高土地假装编程的支持者" - 一个可以追溯到80年代后期的概念.但是,当我读到更多内容时,我必须承认我已经被吸引了.

    您是否将FBP用于实际项目?

    你对FBP有什么看法?

    FBP有未来吗?

从某种意义上讲,自程序语言出现以来,我们的行业一直在追求重用的圣杯.



1> ern0..:

1.您是否将FBP用于实际项目?

我们为自动化项目设计并实现了DF服务器(调度程序,组件接口,一组组件,DF语言,DF编译器,UI).它是用裸C++编写的,可以在几个类Unix系统上运行(Linux x86,MIPS,avr32等,Mac OSX).它缺乏一些功能,例如复杂的流量控制,复杂的线程控制(只有一个不太先进的组件),所以它只是一个原型,即使它工作.我们现在正在开发一个功能齐全的服务器.我们在实施和使用原型时学到了很多东西.

此外,我们有一天会制作一个可视化编辑器.

你对FBP有什么看法?

2.1.首先,数据流编程非常 有趣

当我遇到数据流编程时,我感觉就像20年前,当我第一次遇到编程时.尽管如此,DF编程与过程/ OOP编程不同,它只是一种编程.有很多东西要发现,即使是简单的东西也是如此!这很有趣,作为一名经验丰富的程序员,你遇到了DF问题,这是一个非常非常基本的问题,但是之前你完全不知道.所以,如果你进入DF编程,你会觉得自己像一个新手程序员,他首先遇到了"周期"或"条件".

2.2.它只能用于特定的体系结构

它只是一把锤子,用于锤击钉子.DF不适用于UI,Web服务器等.

2.3.数据流架构是某些问题的最佳选择

数据流框架可以制作神奇的东西.它可以对程序进行并列化,这些程序最初并不是为了进行并行化而设计的.组件是单线程的,但是当它们被组织成DF图时,它们变成了多线程的.

示例:您知道吗,make是DF系统吗?尝试make -j(参见man,-j用于什么).如果您有多核机器,请使用和不使用-j编译项目,并比较时间.

2.4.问题的最佳分裂

如果您正在编写程序,则通常会将问题分解为较小的子问题.对于众所周知的子问题,通常有分裂点,您不需要实现,只需使用现有的解决方案,如SQL for DB,或OpenGL用于图形/动画等.

DF架构以一种非常有趣的方式分解您的问题:

数据流框架,提供架构(只使用现有架构),

组件:程序员创建组件; 组件是简单,分离良好的单元 - 它易于制造组件;

配置:又称数据流编程:配置器使用程序员提供的组件将数据流图(程序)放在一起.

如果您的组件集经过精心设计,配置程序可以构建这样的系统,这是程序员从未梦寐以求的.配置器可以在不干扰程序员的情况下实现新功能.客户很高兴,因为他们有个性化的解决方案.软件制造商也很高兴,因为他/她不需要维护软件的几个客户特定分支,只需要客户特定的配置.

2.5.速度

如果系统构建在本机组件上,则DF程序很快.与简单的OOP程序相比,唯一的时间丢失是组件之间的消息调度,它也是最小的.

FBP有未来吗?

是的,当然.

主要原因是它可以解决大量的多处理问题而无需引入全新的奇怪软件架构,奇怪的语言.数据流编程很简单,我的意思是:组件编程和数据流配置构建.(即使数据流框架编写也不是火箭科学.)

而且,它非常经济.如果你有一套好的组件,你只需要将乐高积木放在一起.DF程序易于维护.DF配置构建不需要有经验的程序员,只需要系统集成商.

我很高兴,如果本机系统传播,打开门可以创建自定义组件.此外,应该有一个标准的DF语言,这意味着它可以与平台无关的可视化编辑器和几个DF服务器一起使用.



2> Paul Morriso..:

有趣的讨论!我昨天想到,部分混乱可能是由于许多不同的符号使用有向弧,但使用它们来表示不同的东西.在FBP中,线代表有界缓冲区,数据包的传输流在这些缓冲区之间.由于组件通常是长时间运行的进程,流可能包含大量数据包,FBP应用程序可以运行很长时间 - 甚至可能"永久"运行(参见2007年关于Eon项目的论文,主要是麻省大学阿默斯特分校的人员) ).由于当缓冲区(暂时)满(或暂时为空)时,发送到有界缓冲区会暂停,因此可以使用有限资源处理无限量的数据.

相比之下,Grafcet中的E来自Etapes,意思是"步骤",这是一个相当不同的概念.在这种模型中(并且存在许多这样的模型),步骤之间流动的数据要么限于一次可以保存在高速存储器中,要么必须保存在磁盘上.FBP还支持网络中的循环,这在基于步骤的系统中很难做到 - 例如参见http://www.jpaulmorrison.com/cgi-bin/wiki.pl?BrokerageApplication - 请注意,此应用程序以自然的方式使用MQSeries和CORBA.此外,FBP本身是并行的,因此它适用于网格网络,多核机器以及现代计算的许多方向的编程.最后一条评论:在文献中我发现了很多相关的项目,但很少有FBP的所有特征.我可以在http://www.jpaulmorrison.com/cgi-bin/wiki.pl?FlowLikeProjects中找到我多年来积累的列表(其中一些列表比Grafcet更接近).



3> Paul Morriso..:

我不得不不同意关于FBP只是实现FSM的一种方式的评论:我认为FSM很简洁,我相信它们在构建应用程序方面有一定的作用,但FBP的核心概念是异步运行的多个组件进程,通过数据流进行通信,这些数据块运行在现在称为有界缓冲区的数据块上.是的,肯定FSM是构建组件流程的一种方式,实际上我的FBP专门讨论这个想法的一章,以及相关的PDA(1) - http://www.jpaulmorrison.com/ fbp/compil.htm - 但在我看来,实施一个非平凡的FBP网络的FSM将是不可能复杂的.作为示例,图中显示了 http://www.jpaulmorrison.com/fbp/image010.jpg 大约是在大型机上运行的单个批处理作业的1/3 .这些块中的每一个都与所有其他块异步运行.顺便说一下,我很想在第一篇文章中听到更多问题的答案!

1:http://en.wikipedia.org/wiki/Pushdown_automaton下推式自动机

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有