当前位置: 首页 > 专利查询>微软公司专利>正文

反应性表达式生成和优化制造技术

技术编号:8323200 阅读:146 留言:0更新日期:2013-02-13 23:55
本发明专利技术公开了反应性表达式生成和优化。促进反应性编程。可从非反应性表达式或换言之标准表达式自动生成反应性表达式。作为附加或替换,可按多种不同方式优化反应性表达式以使计算工作最小化。

【技术实现步骤摘要】
反应性表达式生成和优化
本专利技术涉及反应性表达式生成和优化。
技术介绍
通常利用一个或多个表达式(例如,作为语句的组成部分)来详细说明计算机程序。表达式是根据具体编程语言的优先级规则解释的值、常数、变量、运算符和函数的组合。表达式可被计算,或者换句话说是评估,其结果是某一类型的值(例如,整数、串、布尔、…)。例如,算术和编程表达式可以是“1+2”,它可等于“3”。类似地,表达式可对应于“x+2”,其中“x”是指向存储器中的值的指针。此外,“5>4”是评估为真的关系或布尔表达式的示例。经评估的表达式可具有副效应,意思是除返回一值之外,还有次要的、通常不希望的效应,诸如某些状态的变化。
技术实现思路
下面呈现了简化的
技术实现思路
,以便提供对所公开主题的某些方面的基本概念。本
技术实现思路
不是广泛性的概观。它并不旨在标识关键/重要元素,也不旨在划定所要求保护主题的范围。其唯一目的是以简化形式呈现一些概念,作为稍后呈现的更具体实施例的序言。简言之,本专利技术涉及促进反应性编程。根据本专利技术的一个方面,可基于非反应性或标准表达式自动生成反应性表达式。根据另一个方面,反应性表达式不管是否从非反应性表达式生成,均可通过应用很多优化技术中的一种或多种来优化,例如为了避免重复副效应并消除过多的重新评估,并提高整体性能。为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护主题的某些说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护主题的范围之内。当结合附图阅读以下详细描述时,本专利技术的其他优点和新颖特征将变得显而易见。附图说明图1是反应性编程系统的框图。图2示出利用所公开的方面的电子数据表模型的实现。图3是代表性优化组件的框图。图4是代表性副效应组件的框图。图5是包括域优化组件的反应性表达式系统的框图。图6是促进反应性编程的方法的流程图。图7是优化反应性表达式的方法的流程图。图8是优化反应性表达式的方法的流程图。图9是优化反应性表达式的方法的流程图。图10是示出用于本公开各方面的合适操作环境的示意性框图。具体实施方式以下详细描述一般涉及促进反应性编程,更具体地是反应性表达式生成和优化。构建传播输入更新的反应性程序(也称为反应性编程)需要相当多的管道代码(plumbingcode)或换言之,后台的低级代码。通常在限定反应性表达式的过程中,编程人员的意图丢失。为了解决该问题,提供一种用于从非反应性表达式生成反应性表达式的机制。换言之,可将标准表达式提升为反应性表达式。因此,编程人员可指定标准表达式(例如,函数),该标准表达式随后可用于自动产生反应性表达式。此外,可按很多不同方式优化反应性表达式,以使与输入变化后传播更新相关联的计算工作最小化等等。作为示例而非限制,可生成避免重复副效应、消除过多的重新评估并提高整体性能(例如,执行更快、更高效…)的反应性表达。现在参考附图更详细地描述本专利技术的各个方面,在全部附图中用相同的标号来指示相同的或相应的元素。然而应该理解,附图及其相关详细描述不旨在将所要求保护的主题限于所公开的具体形式。相反,其意图是覆盖落在所要求保护主题的精神和范围之内的所有修改、等价物和替换的方案。首先参考图1,示出了反应性编程系统100。该系统100包括生成组件110,其配置成基于非反应性表达式(换言之是标准表达式)生成反应性表达式。诸如函数之类的非反应性表达式仅响应于评估而改变。相反,反应性表达式响应于输入的变化而改变。作为示例,考虑表达式“a=b+c”,这意味着“a”被赋予“a”和“b”之和的结果。如果这是标准或非反应性表达式,则当“a”被赋予“b+c”的结果时,该表达式立即被评估。之后,如果“b”或“c”改变,则该改变对值“a”没有影响。如果表达式是反应性表达式,则“a”的值将会基于“b”和“c”中的任一个或两者的新值而自动更新。常规上,指定反应性表达式需要相当多的后台、低级、样板代码。结果,编程人员的意图在限定反应性功能的过程中丢失。生成组件110使编程人员能仅指定标准、非反应性表达式,随后使等价的反应性表达式或其反应性版本自动生成。此外,生成组件110可应用于传统程序,更具体地是其中的表达式,以产生反应性版本。通过生成组件110生成反应性表达式可按多种不同方式进行,全部都在所附权利要求的范围内。在一个实例中,可将程序代码添加到非反应性表达式以生成反应性表达式。作为附加或替换,非反应性表达式可从非反应性表达式转换或另外变换或转变为反应性表达式。另外,可根据非反应性表达式产生新的反应性表达式。从非反应性表达式生成反应性表达式可体现在根据一个方面的“提升(Lift)”函数中。因此,反应性表达式的生成可被称为非反应性表达式至反应性表达式的提升,或者在本文中仅称为提升或其各种形式。作为示例,可构建具有以下预订的一组运算符:Lift::(T1x…xTn→R)→(IO<T1>x…xIO<Tn>→IO<R>)换言之,运算符可采用关于“T1”至“Tn”类型的自变量且具有返回类型“R”的诸如函数之类的标准表达式(其中“n”是大于或等于0的整数)。结果,运算符产生经提升的表达式,其接受自变量的变体“IO<T>”并返回结果类型的变体“IO<R>”,其中“IO<T>”和“IO<R>”指代“IObservable<T>”和“IObservable<R>”,即表示根据观测者设计模式向观测者发送“T”或“R”类型的基于推送的通知的类的接口(例如,提供者)。实现期望的提升行为的一种可能的方法是利用“CombineLatest”运算符(例如,只要两个可观测序列之一具有新值就将这些可观测序列合并成一个序列)并提供函数作为自变量来从输入序列构造可观测序列(例如基于推送的数据源)。例如:对于较大数量的函数,或者换言之,自变量的数量大于2,可提供具有较大数量的“CombineLatest”运算符,以使提升过程直接,如上所示。或者,可使用中间组合器函数。例如:以上分配很多中间对象,所以优选较大数量的“CombineLatest”过载。也就是说,对于任意数量的自变量的函数,不管“CombineLatest”过载的数量如何,以上的技术都可能起作用(例如,利用表达式树,为任意函数呈现提升器)。此外,取代将匿名类型用于中间投影,还可使用内建元组类型。例如:使用反应性类型表达式的一个示例是在电子数据表程序中。例如,电子数据表单元格可包括基于其它单元格的值评估的诸如“B1+C1”之类的字面值或公式。只要独立单元格的值改变,得自公式的值就将被更新。然而,按照惯例,这些类型的反应性表达式被紧密耦合到单元格的概念以及其内部表示,如此不能在任意反应性(例如,基于推送的)数据源上运算。如本文中所使用的,反应性表达式指的是随时间被连续评估的表达式,其中基于对表达式的子表达式或从属物中的一个或多个的改变触发重新评估,该表达式的子表达式或从属物本身可以是反应性表达式。此外,本文中所提及的反应性表达式旨在比类似的电子数据表表达式更全面,且在任何反应性/可观测的数据源上操作。为了便于清楚和理解,图2示出利用所公开的方面的电子数据表模型的实现。示出总共具有6个本文档来自技高网...
反应性表达式生成和优化

【技术保护点】
一种促进反应性编程的方法,包括:采用至少一个处理器(1020),所述处理器被配置来执行存储在存储器(1030)中的计算机可执行指令以执行以下动作:自动生成使输入序列改变后的计算工作最小化的反应性表达式的经优化版本。

【技术特征摘要】
2011.11.08 US 13/291,4751.一种促进反应性编程的方法,包括:采用至少一个处理器(1020),所述处理器被配置来执行存储在存储器(1030)中的计算机可执行指令以执行以下动作:从非反应性表达式生成反应性表达式,其中所述反应性表达式是所述非反应性表达式的反应性版本;自动生成所述反应性表达式的经优化版本,所述反应性表达式的经优化版本基于所述反应性表达式指定的一个或多个输入序列以及所述一个或多个输入序列产生元素的频率来最小化计算工作。2.如权利要求1所述的方法,其特征在于,生成经优化的版本包括消除对单个源的多次预订。3.如权利要求1所述的方法,其特征在于,生成经优化的版本包括应用一个或多个域专用的优化。4.如权利要求1所述的方法,其特征在于,生成经优化的版本包括生成将对反应性表达式的重新评...

【专利技术属性】
技术研发人员:B·德斯梅特H·J·M·梅杰
申请(专利权)人:微软公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1