Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 基于流的编程_Language Agnostic_Paradigms - Fatal编程技术网

Language agnostic 基于流的编程

Language agnostic 基于流的编程,language-agnostic,paradigms,Language Agnostic,Paradigms,在过去的几天里,我一直在做一些阅读。有一个例子提供了进一步的细节。维基百科也有自己的特色。我的第一个想法是,“乐高乐园假装编程的另一个伟大支持者”——这一概念可以追溯到80年代末。但是,当我读到更多的时候,我必须承认我变得很好奇 你在一个真实的项目中使用过FBP吗 你对FBP有什么看法 FBP有前途吗 从某种意义上说,它似乎是自过程语言出现以来我们行业一直追求的重用圣杯。我在Java Web应用程序中广泛使用来建模(通常)应用程序流程,这些流程往往是复杂的向导式事务,有许多关于显示哪些页面的条件

在过去的几天里,我一直在做一些阅读。有一个例子提供了进一步的细节。维基百科也有自己的特色。我的第一个想法是,“乐高乐园假装编程的另一个伟大支持者”——这一概念可以追溯到80年代末。但是,当我读到更多的时候,我必须承认我变得很好奇

  • 你在一个真实的项目中使用过FBP吗
  • 你对FBP有什么看法
  • FBP有前途吗
  • 从某种意义上说,它似乎是自过程语言出现以来我们行业一直追求的重用圣杯。

    我在Java Web应用程序中广泛使用来建模(通常)应用程序流程,这些流程往往是复杂的向导式事务,有许多关于显示哪些页面的条件逻辑。它的威力令人难以置信。添加了一个新产品,我在一两个小时内成功地将现有的部分重现到一个全新的应用程序流程中(添加了几个新的视图/状态)

    我还研究了如何使用模型对业务流程进行建模,但由于各种原因,该项目被终止了

    在微软的世界里,你有(WWF),它正变得越来越流行,尤其是与微软的合作


    FBP只是一种实现一个目标的手段。这不是什么新鲜事。

    这就是MQ系列、MSMQ和JMS的用途

    这是Web服务和企业服务总线实现的基石

    像TIBCO和Sun的JCAPS这样的产品基本上都是基于流的,没有使用这个特定的流行语


    应用程序的大部分工作都是通过处理网络传递消息的小模块来完成的。

    我不同意关于FBP只是实现FSM的一种手段的评论:我认为FSM很整洁,我相信它们在构建应用程序中起着一定的作用,但FBP的核心概念是多个组件进程异步运行,通过数据块流进行通信,这些数据块流跨现在称为有界缓冲区。是的,当然FSM是构建组件过程的一种方式,事实上,我的书中有整整一章专门讨论了FBP的概念,以及PDA()中的相关概念,但在我看来,实现非平凡FBP网络的FSM将是不可能的复杂。作为示例,如中所示的图 大约是大型机上运行的单个批处理作业的1/3。这些块中的每一块都与所有其他块异步运行。顺便说一句,我很想听到更多关于第一篇文章中问题的答案


    :下推自动机

    我意识到它不是完全一样的东西,但这种模型已经在PLC编程中使用多年了。ISO称之为顺序流程图,但许多人在流行的实现之后称之为Grafcet。它提供并行处理并定义状态之间的转换

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


    相比之下,Grafcet中的E来自Etapes,意思是“步骤”,这是一个完全不同的概念。在这种模型中(有很多这样的模型),步骤之间的数据流要么被限制在一次可以保存在高速内存中的数据,要么必须保存在磁盘上。FBP还支持网络中的循环,这在基于step的系统中是很难做到的——例如,请注意,此应用程序以自然的方式同时使用MQSeries和CORBA。此外,FBP本身是并行的,因此它适合于网格网络、多核机器和许多现代计算方向的编程。最后一点评论:在文献中我发现了许多相关的项目,但很少有项目具有FBP的所有特征。我多年来积累的一个列表(其中一些比Grafcet更接近)可以在中找到。

    每当我听到基于流的编程这个术语时,我就会从概念上想到LabView。Ie组件进程的调度主要由其输入数据的更改驱动。从labview平台用于最新一批mindstorm产品的意义上讲,这确实是乐高编程。然而,我不同意这使得它成为一个不太有用的编程模型

    对于通常涉及数据收集、控制和自动化的工业系统,它非常适合。如果不将数据输入转换为数据输出,任何控制系统都是什么?也就是说,如果可以的话,在你的控制方案中,你不想在更大的画面中表现为黑匣子的成分是什么。为了使用其他方法实现这种层次的体系结构清晰性,您可能必须绘制一个数据域类图,然后绘制一个问题域运行时类关系,然后在此基础上绘制一个用例图,并在它们之间来回切换。使用流驱动系统,您可以将大量这些信息精确地折叠在一起,以便在构建和定义组件后,可以直观地设计系统

    在查看用labview编写的应用程序时,我从未问过一个问题:“哪段代码设置了此值?”,因为它是固有的,很容易从数据中追溯,而且错误(如多个无意图的编写器)是不可能错误地创建的

    要是写代码时也是这样就好了