CN108874382A - 用于处理代码的方法和装置 - Google Patents
用于处理代码的方法和装置 Download PDFInfo
- Publication number
- CN108874382A CN108874382A CN201810459144.1A CN201810459144A CN108874382A CN 108874382 A CN108874382 A CN 108874382A CN 201810459144 A CN201810459144 A CN 201810459144A CN 108874382 A CN108874382 A CN 108874382A
- Authority
- CN
- China
- Prior art keywords
- code
- sequence
- node
- user
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 61
- 238000012986 modification Methods 0.000 claims abstract description 16
- 230000004048 modification Effects 0.000 claims abstract description 16
- 230000009466 transformation Effects 0.000 claims description 47
- 238000004590 computer program Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 238000000844 transformation Methods 0.000 claims description 2
- 238000012163 sequencing technique Methods 0.000 claims 1
- 230000007246 mechanism Effects 0.000 abstract description 2
- 238000003860 storage Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 12
- 230000033001 locomotion Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 230000003993 interaction Effects 0.000 description 8
- 230000015654 memory Effects 0.000 description 8
- 230000018109 developmental process Effects 0.000 description 7
- 230000006399 behavior Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000003825 pressing Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000012800 visualization Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000019771 cognition Effects 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000001976 improved effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007177 brain activity Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000005684 electric field Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000005389 magnetism Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000032696 parturition Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000002864 sequence alignment Methods 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000010361 transduction Methods 0.000 description 1
- 230000026683 transduction Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04842—Selection of displayed objects or displayed text elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/0486—Drag-and-drop
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- User Interface Of Digital Computer (AREA)
- Stored Programmes (AREA)
Abstract
提供了用于与诸如软件代码之类的代码交互的机制,由此,所述代码被表示为诸如与代码相对应的有限状态机之类的图,使得用户可以例如凭借手势或光标移动来定义通过代码的路径,并且重构图的表示以突出显示属于定义的路径的节点及如在路径中定义的其序列。与每个节点相关联的底层代码可以与每个相对应的节点一起呈现,使得路径中的节点的代码被对齐,并且可以作为连续文本被通读。对所呈现的代码进行的修改可以重新整合,并根据需要对表示进行调整。
Description
技术领域
本发明涉及代码处理,并且更具体地涉及代码的评审和编辑。
背景技术
就离散数学领域而言,“图”是包括许多对象或者“节点”的结构,所述“节点”的相关性是由边反映的。这种图的各种常规图形表示是已知的,其中在使用这种图的不同上下文中出现变型。图的示例包括流程图、有限状态机、计算机网络图,以及甚至公共交通计划。
这些图往往变得越来越复杂,使得有效的表述和评审可能成为一项挑战。
期望的是提供用于操纵图的改进的工具。
发明内容
根据本发明的第一方面,提供了一种用于处理易于图形表示的代码的装置。该装置包括编码器,该编码器适于将代码的表示生成为图并且引起图的图形表示的呈现。该装置还包括输入接口,该输入接口适于接收用户输入,该用户输入通过图的一系列选择的节点来指定序列。该编码器还适于引起呈现被重构以表示与另一个相应选择的节点相邻的每个相应选择的节点的图的图形表示,使得选择的节点以与响应于用户输入的序列相对应的顺序进行布置。
在第一方面的开发中,代码是软件代码,图是与软件代码对应的有限状态机表示,并且每个节点是有限状态机表示的状态。
根据本发明,在第二方面中,提供了一种处理易于图形表示的代码的方法。该方法包括以下步骤:
·将代码的表示准备为图,
·呈现图的至少一部分的图形表示,
·接收用户输入,该用户输入通过图的一系列选择的节点来指定序列,以及
·呈现被重构以便表示每个相应选择的节点的图形的至少一部分的图形表示,使得选择的节点以与所述序列相对应的顺序进行布置。
在第二方面的开发中,代码是软件代码,图是与软件代码相对应的有限状态机表示,并且每个节点是有限状态机表示的状态。
在第二方面的进一步开发中,选择的节点以与响应于用户输入的序列相对应的顺序被垂直地布置。
在第二方面的进一步开发中,图的图形表示包括将图的节点表示为显示空间中的离散实体,并且用户输入采取通过显示空间的路径的形式。
在第二方面的进一步开发中,该序列被取为包括与位于该路径的预定邻近度内的离散实体对应的所有节点。
在第二方面的进一步开发中,该方法包括进一步的步骤:将该序列与该图中定义的节点的合法序列进行比较并采用所述合法序列中的是与该指定序列最接近的匹配的合法序列。
在第二方面的进一步开发中,比较步骤包括附加步骤:确定合法序列中的每个节点距路径的距离以及采用所述合法序列中的表示距路径的最小平均距离的合法序列作为指定序列。
在第二方面的进一步开发中,该方法包括进一步的步骤:取回被选择用于显示和/或属于该序列的节点中的一些或全部节点的文本表示,以及显示该文本表示。
在第二方面的进一步开发中,该方法包括进一步的步骤:取回代码的与被选择用于显示和/或属于该序列的状态中的一些或全部状态相对应的一部分,并显示相应的代码。
在第二方面的进一步开发中,序列另外指定图的与一个或多个选择的节点之间的选择的边相对应的一个或多个转变。
在第二方面的进一步开发中,该方法包括进一步的步骤:接收指定了对代码的修改的进一步用户输入,并且将代码的表示适配为图和图的图形表示以反映修改。
根据本发明,在第三方面中,提供了一种适用于实现第二方面的装置。
根据本发明,在第四方面中,提供了一种适用于实现第二方面的计算机程序。
附图说明
现在将参考附图描述本发明的上述和其他优点,仅出于说明的目的,其中:
图1示出了有限状态机表示的示例;
图2示出了根据实施例的方法;
图3示出了处于初始状态的根据实施例的图形表示环境的表示;
图4示出了处于高级状态的根据实施例的图形表示环境的表示;
图5示出了处于初始状态的根据另一实施例的图形表示环境的表示;
图6示出了处于高级状态的根据另一实施例的图形表示环境的表示;
图7示出了根据实施例的装置;以及
图8示出了适合于实现本发明的实施例的通用计算系统。
具体实施方式
虽然本发明适用于任何类型的图,该任何类型的图例如上面讨论的表示任何类型的对象,但下面的详细实施例将作为示例在软件代码的上下文中给出。本领域技术人员将认识到类似的硬件实现方式也是可能的。
随着,与软件代码编辑相关的工具和方法通常随着时间的推移与用于实现最终代码的计算机系统的发展而并行地发展。在穿孔卡时代,程序是在纸张上开发的,随着终端的可用性,在计算环境中直接开发软件代码变得可行。从那时起,编程主要围绕编辑基于文本的代码,在通用文本编辑软件中,或者越来越多地在专用集成开发环境(通常提供用于生成、编译和调试代码的附加工具)中进行。
更具体地说,程序员依靠集成开发环境(IDE)来可视化、理解、编辑和测试代码。这些工具的范围从使用文本语言(例如vi、emacs、EclipseTM到编辑C、C++或PythonTM程序)编辑程序的简单的文本编辑器到以可视化编程语言编辑程序(例如用框和箭头编辑状态机或Petri网)的图形编辑器。
这种编辑器可以使用多种视图来表示可编辑的代码。例如,像Eclipse这样的工具允许在文本窗口中显示代码,并在全局应用窗口左侧的树视图中显示类的层次结构。
命令式代码的规范文本表示包括显示以垂直方式堆叠的文本行,也就是说,从用户的角度来看,参考显示方位从上到下按顺序进行布置文本行,事件发生在前面看起来更接近顶端。对于描述的其余部分,将在该顶部到底部结构的上下文中描述实施例,其对应于软件开发环境中的代码的常规呈现(以及通常在某些社会中的书面文本的常规结构),但是实施例可以等同涵盖沿任意方向的顺序进行布置,包括从下到上、从左到右、从右到左、沿弧线或任意曲线或任何其他线性布置。机器执行的指令的序列由沿着屏幕的下降的Y维度的顺序指定。因此,为了理解文本命令式程序的行为,程序员可以遵循由文本指令指定的指令流程。他们看着特定的路线,并且一行一行地走下去,了解指令的序列的构思。这很容易实现,因为下一条指令(1)接近前一条(正好在前一条下面),并且(2)水平对齐(缩进)以便于对文本进行可视化分组和扫描。
某些环境支持可视编码,其中用户可以通过在某些计算机生成的空间中操纵代码实体的图形表示来编辑代码。基于文本的环境和可视化编程环境二者都倾向于使用围绕多个模块构建的结构来呈现代码,每个模块中的元素都按照将被执行的序列呈现,并经历模块内的任何循环和分叉。
当前编程工具的设计基于一种隐含的选择,即包括以单一、规范表示来显示代码。交互式代码的文本规范表示包括显示状态上下文中的离开转变。但是,为了理解一系列事件的行为,有时需要查看导致当前调查的特定状态的转变的代码。这要求程序员通过扫描所有代码来找到转变,并且一旦找到,就从转变跳转到转变以理解指令的序列。
在阅读、更新、测试和调试使用现有技术接口准备的代码方面出现困难,因为对于查看正在执行的当前代码行的读者来说,没有指示什么前面的步骤导致执行到达那一点。通过软件的特定片段通常有很多可能的途径,并且在很多情况下,在检查时这些路径不会立即显现。
一般来说,交互式计算机软件可以用有限状态机来表示。有限状态机是用具有许多定义状态的机器表示过程,由此,在任何时候,机器必须处于这些状态中的一个且仅一个状态,并且其中状态通过定义的转变链接,由此状态之间的移动只能根据这些定义的转变之一发生。因此,有限状态机是图的示例,其中图的节点对应于机器的状态,并且定义节点之间的相互关系的边是状态之间的转变。
利用状态机的交互式代码的规范表示包括针对状态绘制圆并且针对转变绘制箭头。当跨越转变时触发的代码位于该转变的箭头旁边。
图1示出了有限状态机的示例。
如图1所示,提供了表示用户界面交互特征的有限状态机100。定义了状态“开始”110、“Hyst”120和“拖动”130。“开始”状态具有转变“按压”111,其导致状态“Hyst”120。状态“Hyst”120具有转变“释放”121,其导致回到状态“开始”110,以及转变“拖动”122,其导致状态“拖动”130。状态“拖动”130具有转变“移动”131,转变“移动”131在状态“拖动”130上回转;以及转变“释放”132,其导致回到状态“开始”110。因此,该状态机表示经常与图形用户界面中的图标和其他实体相关联的常见“拖动和放下”行为。具体地,当用户使用诸如鼠标指针之类的光标设备来点击这样的实体时,例如通过将指针移动到实体上并按下鼠标左键,针对该实体发生按压转变使其状态变为“Hyst”。如果用户然后释放鼠标按钮,则会发生转变“释放”,并且对象的状态返回到“开始”。另一方面,如果用户将鼠标移动给定距离而不释放,则拖动转变发生,其将实体的状态变换为“拖动”。进一步的移动使实体处于“拖动”状态,直到用户释放鼠标按钮,触发“释放”事件并将状态返回到“开始”。
尽管大多数编程语言不直接定义有限状态机,但通常可以针对计算机程序定义等效的有限状态机表示。
关于上面突出强调的问题,将会意识到的是,就有限状态机而言的表述具有使得到达代码中的特定点的可能路径明确的益处。该特性可用于促进软件开发、编码、更新、调试等。然而,这仍然很难利用眼睛来跟随指令的流动,这是因为程序员被要求按照箭头的序列从一个循环跳到另一个循环,这与传统的基于文本的代码不同,随着执行的进行不能遵循一般的向下流动。
例如,在图1的情况下,程序员可能想要修复当该程序的用户执行事件的特定序列时发生的错误。这种事件的序列应该触发与所涉及的转变相关的指令的序列。为了有效地分析指令的序列,程序员必须将事件的序列保留在存储器中,确定初始状态,根据事件的序列的第一事件进行转变,读取与转变相关联的代码,记住它,转到下一个状态,跟随与下一个事件相对应的转变,在先前的转变的代码的上下文中阅读并理解与此转变相关联的代码,等等。这需要更多的贡献于流程扫描的认知,代价是理解代码所需的认知。
本发明通过提供使指令的序列对齐以便于程序员读取的交互来解决这个问题。
因此,建议将代码的表示的当前布局与由用户指定的新布局之间的转变进行显示和动画化,或者根据一组标准自动指定。下面描述用户交互和表示技术,使程序员能够更好地理解交互式代码。
图2示出了根据实施例的方法。如图2所示,提供了一种处理代码的方法。该方法开始于步骤200,然后进行到步骤205,在步骤205中,将代码的表示生成为图。在代码构成软件代码的情况下,该表示可以通过常规软件代码的转换来准备,例如由SwingStates库实现。可替代地,代码可以以本地有限状态机表示形式存在。此外,代码可以反映或定义硬件设备或包括硬件或软件元件的混合的系统的操作。此外,该系统可以包括一起操作的多个设备。例如,实施例可以很好地适应于“物联网”环境,例如在“If This Then That”(IFTTT)情况下,上述情况随着该领域的开发可能会变得更加复杂。再一次地,该设备或者系统可以明确地作为有限状态机操作,提供其操作和有限状态机表示之间的准备映射,或者其他。
该方法接下来前进到步骤210,在该步骤呈现图的至少一部分的图形表示。举例来说,诸如提升图库(BGL)之类的库可用于生成代码的有限状态机表示的图形表示。该呈现可以凭借如下讨论的任何类型的显示设备,并且可以是二维或三维的。在简单程序的情况下,可能一次呈现整个图,更一般地,可能需要仅选择图的一部分进行显示。该选择可涉及识别当前节点,所述当前节点例如由用户指定的或者在代码是软件代码的情况下基于当前正在执行的程序的当前状态(例如在中断情况下)确定的,以及合并当前节点相关的所有节点和边。
可选地,图的图形表示可以包括将图的节点表示为显示空间中的离散实体。
该方法接下来前进到步骤215,在步骤215处,接收用户输入,所述用户输入通过有限状态机表示的一系列选择的状态来指定序列。
在图的图形表示包括将图的节点表示为显示空间中的离散实体的情况下,用户输入可以采取通过显示空间的路径的形式。该路径可由用户凭借触摸屏或触摸板上的触笔或手指或由鼠标、跟踪球、手指跟踪器、手跟踪器、手势跟踪器、眼动跟踪器等控制的光标或指针移动而方便地定义。
应该意识到的是,由用户选择的路径可能倾向于构成公共的、优选的或有问题的节点序列,因此,记录用户指定的路径以供将来参考可能证明是有益的。图的默认呈现可以基于由用户定义的最常见或平均的路径来确定,使得这些路径优选地被呈现以用于快速且直观的读取。
该方法接下来前进到步骤220,在该步骤中以重构形式呈现所述图的至少一部分的图形表示,以便表示每个选择的节点,使得选择的节点以对应于该序列的顺序进行布置。该方法然后可以循环回到步骤215。
通过以这种方式重构表示,可能以可读性接近并且在某些方面超过基于文本的代码的从上到下的表示的方式来动态地表示图的相关部分。
在图的图形表示包括将图的节点表示为显示空间中的离散实体并且用户输入可以采取通过显示空间的路径的形式的情况下,节点呈现的序列可以对应于它们通过路径的顺序。
在其他情况下,其中呈现节点的序列可对应于路径通过的节点可能在执行期间发生的顺序或受到路径通过的节点可能在执行期间发生的顺序的影响,例如由图的边定义,并且如果适用的话,由它们的方向定义。同样地,可以提供分析序列的合法执行顺序的附加步骤。在某些情况下,非法序列的规范可能会引起标志,引发错误消息和/或简单地终止该方法。可替代地,可以提供识别所讨论的节点的最可能的执行顺序并相应地将序列重新排序的附加步骤。更进一步地,可以提供从其他合法序列中排除非法或不相关节点的附加步骤。
应该意识到,用户可能不希望或能够通过定义图中的节点的每个实体的中心来追踪确切路径,特别是在复杂和密集的表示中。因此,可以提供识别位于显示空间中的路径的预定邻近度内的离散实体并且考虑该序列以包括与位于路径的预定邻近度内的离散实体对应的所有节点的附加步骤。例如,可以认为其中心、句柄或边界位于路径的预定数目的像素内的所有实体都被认为属于该序列。可替代地,路径本身可以被认为具有预定义的宽度,使得全部在路径内的或者在其他实施例中部分在路径内的所有实体被认为属于该序列。
在某些情况下,可能会考虑特定的路径来指定一些可能的序列。因此,可以提供附加步骤,将该序列与图中定义的节点的合法序列进行比较,并且采用是与用户输入最接近的匹配的合法序列作为所述指定序列。除了在特定有限状态机内可能的合法序列的纯技术考虑之外,该方法还可以确定每个可能的合法序列中的每个节点距该路径的距离,并且采用所述合法序列中的暗示了距离路径的最小平均距离的合法序列作为指定序列。
图3示出了根据实施例的处于初始状态的图形表示环境的图。在该实施例中,通过示例将环境显示为软件开发,其中代码是以有限状态机表示形式表示的软件代码。更具体地说,图3可以被视为表示如上所述的图2的实施例在步骤215处的实现。如图3所示,在图形用户界面中提供了窗口310,其可以构成集成开发环境的一部分。如图所示,窗口310包括编辑窗格311、标题栏312、滑动条313和指针315,作为典型GUI界面特征的示例。编辑窗格311显示如上所述的图100的图形表示。
此外,图3示出了根据某些实施例的路径的定义。提供了与关于图1描述的图相同的图100的图形表示。此外,示出了使用指示笔302来描述路径303的用户手301,路径303依次经过状态110、120和130。
在这个示例中,代码最初用状态机的规范2D表示来表示:如上参考图1所述,用于与利用用于转变的箭头相连的状态的圆。程序员/用户用鼠标或指示笔或任何类似的设备通过跨越多个状态/圆,并可能通过遵循转变,来绘制路径。如此,绘制的路径指定一系列状态。
图4示出了根据处于高级状态的实施例的图形表示环境的表示。更特别地,图3可以被视为表示如上所述的图2的实施例在步骤220处的实现。具体地,在如参考图3所述的用户手势结束时,呈现有限状态机的重构图形表示以便表示由用户交互所选择的每个状态,使得所述选择的状态以与序列对应的顺序来进行布置。因此,如图所示,状态110现在处于表示的顶部,其后是状态120,并且最后是状态130。因此,用户可以以与用于阅读“传统代码”类似的方式通过从上到下的状态来“读取”默认进程(如按他或她追踪触摸笔通过状态的顺序所定义的)。
可选地,从图3的视图到图4的视图的转变可以凭借动画将所选状态逐步移动到其新位置来实现。
为了执行这些步骤,可以使用该程序的内部表示。内部表示可以基于存储器中的组件,这些组件通过指向存储器的指针链接在一起。虽然整体结构是任意的图,但这样的内部表示在概念上接近于抽象语法树(AST),即解析允许编译器输出可运行代码的代码表示的结果。IDE中的表示可以被视为AST组件之间的映射。要求保护的解决方案可以使用内部组件的类型来向用户充分地表示它(例如由圆表示的状态,由箭头表示的转变)。在上例中,设备计算每个组件的表示的新位置,使它们对齐,然后逐渐修改这些位置,以便它们在初始值与目标值之间进行插值。因此程序的语义没有被修改,而表示更高效地向用户/程序员传达有意义的、认知要求较低的信息。
如上所述,图通常可以用代码来定义。尽管传统上的有限状态机是凭借诸如上面关于图1所描述的附图来表示的,但是对于有限状态机的定义确实存在某些基于文本的约定。特别是Carling Appert和Michel Beaudouin-Lafon在美国纽约ACM的Proceedings ofthe 19th annual ACM symposium on User interface software and technology(UIST'06)的第319-322页上发表的题为“SwingStates:adding state machines to the swingtoolkit”的文章中提到的SwingStates,提出了一组用于定义Java中的有限状态机的规则,使用类来表示每个状态机和匿名类。每个状态都是属于各自匿名类的对象,它本身属于存储在状态机的字段中的状态类,并且对于特定状态的每个转变是属于各自的匿名类的对象,其本身属于存储在相对应的状态的字段中的转变类。
根据SwingStates的形式,下面的文本是图1中有限状态机的表示:
因此,此代码定义了具有滞后的拖放式交互。
图5示出了处于初始状态的根据另一实施例的图形表示环境的表示。如图5所示,如上所述的每个转变111、121、122、131、132的每个表示在窗口310中与定义相应转变的相对应的代码文本相关联,例如可以从上面提供的示例代码得到的。具体地说,如图所示,按压转变111与包含以下代码的文本块511相关联:
toMove=getShape();
toMove.highlight()
lastPoint=get{point();
类似地,释放转变121和132分别与文本块521和532相关联,每个文本块包含以下代码:
toMove=getShape();
toMove.unhighlight()
类似地,拖动转变122与包含以下代码的文本块522相关联:
Point2D newPoint=getPoint();
!(newPoint.distance(lastPoint)<25;
toMove.translateBy(getPoint().difference(lastPoint));
lastPoint=getPoint();
最后,移动转变131与包含以下代码的文本块531相关联:
toMove.translateBy(getPoint().difference(lastPoint));
lastPoint=getPoint();
尽管以这种方式呈现与每个转变相关联的代码可能对寻求理解有限状态机的详细操作的程序员有帮助,但是在这个问题上可能会以使初始同化变得更加困难的方式而增加文本可能经常增加被呈现给用户的信息密度。
在某些变型中,可以选择性地显示与给定节点或边相关联的代码或其他信息,例如基于明确的用户选择、隐式用户选择(例如,如果鼠标光标、指针或用户注视集中于该节点或在该节点的预定的邻近度内),上下文地(例如当当前执行状态在特定节点时)或其他。
尽管在表示为有限状态机的软件代码的上下文中进行了描述,但可以意识到的是,可以设想软件代码的其他图形示。此外,可以意识到的是,可以如上所述处理任何任意图,在这种情况下,代码可以包括诸如PostScript、SVG等的图形描述语言。
图6示出了处于高级状态的根据另一实施例的图形表示环境的表示。图6示出了图4的实施例的变型。如图6所示,如上所述的每个转变111、112、122、131、132的每个表示在窗口310中以与参照图5描述的方式类似的方式与定义相应的转变的相对应的代码文本611、621、622、631、632相关联。同时,如参考图4所描述的,状态110、120和130以及它们各自的转变已经被重新定位。
因此,例如如在前面的段落中所描述的,从图中选择用于显示的的节点和/或转变中的一些或全部的图形表示可以伴随有节点和/或边的相对应的文本版本。这样,可以定义进一步步骤:取回被选择用于显示和/或属于该序列的节点中的一些或全部的文本表示并显示这些文本表示。
另外,如图所示,与属于图3和图5中的用户所定义的路径的转变(即转变111、122和131)相关联的文本,已被重新对齐,以便表示文本块的连续的垂直组,使得用户能够以清晰呈现的序列通读与他所选路径对应的转变。以这种方式,信息的呈现被重新组织并且有利地被简化,以通过如由用户对路径的定义所表达的该用户特别感兴趣的有限状态机来强调和优先化该序列。
在以这种方式来呈现文本表示的情况下,界面可以允许进一步的用户输入,其指定对文本表示的修改。此外,在这种情况下,底层图形、其图形表示以及适用的代码本身可能会适应以反映修改。
在某些情况下,例如在代码本身原本对应于有限状态机的情况下,或者存在底层代码的部分与相对应的状态或转变之间的明确映射的情况下,还可以伴随从图中选择的节点和/或边中的一些或全部的图形表示以用于与相对应的代码一起显示。在以这种方式呈现代码的情况下,界面可以允许进一步的用户输入,其指定对代码的修改。此外,当适当时,表示代码的图(及其图形表示)可以适应以反映修改。
尽管上述示例集中在节点的选择上,但应该意识到的是,相同的方法可以以与边的选择类似的方式进行扩展。虽然通常两个相邻节点的选择也会隐含地定义这些状态之间的边界,但在某些情况下,可以期望的是提供对边和节点的明确选择。例如,在一些情况下,给定的一对节点之间可能存在多于一个的边,在这种情况下,用户可能希望指定在图形表示中突出显示哪一个边。在这种场景中,可以如此自动识别替代路径,并且可以向用户给出指定哪个边应该被选择为属于所选择的路径,并由此例如如图6所示与前面的路径对齐的机会。由用户进行的这种选择可以包括例如使用如上所述的指针315的点击类型交互、触摸屏界面中的转变或适合于环境的任何其它交互。
可替代地,该方法可以将边作为序列定义中的主要实体,并自动选择由指定的转变请求的节点。虽然前面的示例主要涉及对图的表示的操纵,而不是对图的本身的操纵,但将意识到的是,可以使用相同的机制来支持对图的修改,并且扩展为通过类似的交互来支持代码的修改。例如,如果路径被确定为定义非法序列;该路径可能会失效,或自动修改以排除落在优选的合法序列之外的节点。在另一组替代实施例中,非法序列检测可被解释为用于定义新转变,以使所描述的路径合法的指令。本文基础上,代码可以自动生成来实现所描述的转变。可以凭借自动对话的方式从用户请求缺少的信息,使得可以在底层代码中以用户键入最少来完全定义转变。
虽然如上所述,本发明可以应用于任何图,但它在代表诸如软件代码之类的处理流程的图的上下文中具有特定的性质性。
应该意识到的是,除了上述可视化、调试和修改动作之外,呈现代码的环境可以支持由传统编程环境提供的任何操作。这些动作和操作中的任何一个都可以由用户界面特征(诸如触摸屏、指示笔、眼动跟踪、鼠标指针或本文或其他所述的其他此类特征)来启动和控制。
特别是,由于本发明,诸如程序员之类的用户能够使导致状态的所有转变的指令可视化。因此,人们可以快速检查是否进入“开始”状态的所有转变实际上都不突出显示图形的形状。另外,这也允许程序员依靠非常短期的存储器来比较相关的代码段并检测潜在的缺陷。这使得程序员能够更高效地理解代码,根据适合他们现有问题的视图进行编辑,并且相对应的缩短开发时间并得到效率更高的、更不易出错的软件。这继而有利地转化为时间和能量节省、改进的安全性和较低的系统维护成本。
应该意识到的是,虽然前述实施例呈现了代码的结构和流程,但是可能存在代码的其他特性,这些特性在有限状态机表示中是不可见的。例如,变量的值可能因状态而异,并且在确定代码的行为方面起着重要作用。在调试期间尤其如此,其中特定值可能归因于用于测试不同场景中的行为的变量。因此,某些实施例可以包含与相应的节点和与节点相关联的边相关联的这种附加信息的呈现。
在某些实施例的变型中,任何图形可以与保存时反映图的状态的信息相关联地保存。保存的图因此可以构成“冻结状态”。随后可以在需要跳转到定义的状态时加载这些信息。该状态信息可以包括在保存时的状态的最小指示,或者与在前面段落中提出的考虑相结合,还可以包括在保存时与代码相关联的变量值。
图3、图4、图5和图6以特定的图形用户界面实现的形式呈现了本发明的实施例。应该意识到的是,有无数可能的这种实现方式,其中图3、图4、图5和图6仅仅是示例。此外,将意识到的是,实施例还可以采用基于文本的方法,例如其中经由命令行来输入状态选择和/或识别标准。
所公开的方法可以采取完全硬件实施例(例如FPGA)、完全软件实施例(例如根据本发明的控制系统)或者包含硬件和软件元素的实施例的形式。这样,实施例可以包括彼此通信的适合于实现本发明的多个子系统、功能元件或单元,和/或具有标准固定功能或可编程元件,例如如下所述。
图7示出了根据实施例的装置。如图7所示,提供了用于处理代码721的装置710。如图所示,代码721可以位于数据库720中。如图所示,该装置包括编码器711,其适于将代码721的表示生成为图形722并且引起图的图形表示的呈现。该装置还包括输入接口712,其适于接收用户输入,所述用户输入通过图形的一系列选择的节点来指定序列。与此同时,编码器711还适于使得呈现被重构以便表示每个相应选择的节点的图722的图形表示,使得选择的节点以与响应于用户输入的序列相对应的的顺序进行布置。
类似地,提供了一种适于执行上文关于例如图2所述的任何方法的步骤或上述详细算法以及推导出的算法和它们的组合中的任一种的装置。
根据某些实施例,提供了一种用于与诸如软件源代码之类的代码进行交互的机制,由此代码被表示为诸如与代码对应的有限状态机表示之类的图,使得用户可以例如凭借手势或光标移动来定义通过代码的路径,并且重构图的表示以突出显示属于定义路径的节点及其在路径中定义的它们的序列。与每个节点相关联的底层代码可以与每个相对应的节点一起呈现,使得路径中的节点的代码被对齐,并且可以作为连续文本被通读。对所呈现的代码进行的修改可以重新整合,并根据需要对表示进行调整。
软件实施例包括但不限于应用、固件、常驻软件、微代码等。本发明可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,所述计算机可用或计算机可读介质提供供计算机或指令执行系统使用或与计算机或指令执行系统相结合的程序代码。
计算机可用或计算机可读的可以是能够包含、存储、传送、传播或传输供指令执行系统、装置或设备使用或与其结合使用的程序的任何装置。介质可以是电子、磁性、光学、电磁、红外或半导体系统(或装置或设备)或传播介质。
在一些实施例中,本文描述的方法和过程可以全部或部分地由用户设备来实现。这些方法和过程可以通过计算机应用或服务、应用编程接口(API)、库和/或其他计算机程序产品或这些实体的任何组合来实现。
用户设备可以是诸如智能电话或平板电脑之类的移动设备、无人机、计算机或具有处理能力的任何其他设备,诸如包括IoT(物联网)设备的机器人或其他连接设备。
图8示出了适用于实现本发明的实施例的通用计算系统。
如图8所示,系统包括逻辑设备801和存储设备802。系统可以可选地包括显示子系统811、输入/输出子系统803、通信子系统820和/或未示出的其他组件。
逻辑设备801包括被配置为执行指令的一个或多个物理设备。例如,逻辑设备801可以被配置为执行作为一个或多个应用、服务、程序、例程、库、对象、组件、数据结构或其他逻辑构造的一部分的指令。这样的指令可以被实现为执行任务,实现数据类型,变换一个或多个组件的状态,实现技术效果或以其他方式达到期望的结果。
逻辑设备801可以包括被配置为执行软件指令的一个或多个处理器。附加地或可选地,逻辑设备可以包括被配置为执行硬件或固件指令的一个或多个硬件或固件逻辑设备。逻辑设备的处理器可以是单核或多核,并且其上执行的指令可以被配置用于顺序、并行和/或分布式处理。逻辑设备801的各个组件可选地可以分布在两个或更多个分开的设备中,该两个或更多个分开的设备可以远程定位和/或被配置用于协调处理。逻辑设备801的各方面可以通过以云计算配置而配置的可远程访问的、联网计算设备来虚拟化和执行。
存储设备802包括一个或多个物理设备,其被配置为保存能由逻辑设备可执行以实现本文描述的方法和过程的指令。当实现这样的方法和过程时,可以变换存储802设备的状态,例如以保存不同的数据。
存储设备802可以包括可移动设备和/或内置设备。存储设备可以本地或远程存储(例如在云中)。存储设备802可以包括一种或多种类型的存储设备,包括光存储器(例如,CD、DVD、HD-DVD、蓝光盘等)、半导体存储器(例如,闪存、RAM、EPROM、EEPROM等)和/或磁存储器(例如,硬盘驱动器、软盘驱动器、磁带驱动器、MRAM等)等等。存储设备可以包括易失性、非易失性、动态、静态、读/写、只读、随机存取、顺序存取、位置可寻址、文件可寻址和/或内容可寻址的设备。
在某些布置中,系统可以包括适用于支持逻辑设备801和其他系统组件之间的通信的接口803。例如,附加的系统组件可以包括可移动和/或内置的扩展存储设备。扩展存储设备可以包括一种或多种类型的存储设备,包括光存储器832(例如CD、DVD、HD-DVD、蓝光盘等)、半导体存储器833(例如RAM、EPROM、EEPROM、闪存等)和/或磁存储器831(例如,硬盘驱动器、软盘驱动器、磁带驱动器、MRAM等)等等。这种扩展存储设备可以包括易失性、非易失性、动态、静态、读/写、只读、随机存取、顺序存取、位置可寻址、文件可寻址和/或内容可寻址的设备。
应该意识到的是,存储设备包括一个或多个物理设备,并且本身不包括传播信号。然而,与存储在存储设备上相反,本文描述的指令的各方面可以通过通信介质(例如,电磁信号、光信号等)传播。
逻辑设备801和存储设备802的各方面可以被一起集成到一个或多个硬件逻辑组件中。例如,这些硬件逻辑组件可以包括现场可编程门阵列(FPGA)、程序和专用集成电路(PASIC/ASIC)、程序和应用专用标准产品(PSSP/ASSP)、片上系统(SOC)和复杂可编程逻辑器件(CPLD)。
术语“程序”可以用来描述被实现为执行特定功能的计算系统的方面。在一些情况下,可以经由以下逻辑设备来对程序实例化,所述逻辑设备执行由存储设备802持有的机器可读指令。将理解,可以从相同的应用、服务、代码块、对象、库、例程、API、函数等来实例化不同的模块。同样,相同的程序可以由不同的应用、服务、代码块、对象、例程、API、函数等来实例化。术语“程序”可以包括单个或一组可执行文件、数据文件、库、驱动程序、脚本、数据库记录等。
特别地,图8的系统可以用于实现本发明的实施例。
例如,实现关于图2描述的步骤的程序或上面提出的算法可以被存储在存储设备802中并且由逻辑设备801执行。单元711或712中的任何或全部单元的功能可以类似地通过执行所需功能的程序来实现,必要时与附加专用硬件单元进行通信,并且代码721和/或图722可以被存储在存储设备802中。显示器811可以显示图的图形表示和/或路径,并且可以通过触摸屏界面或者通过如本文所述的鼠标、相机其他接口设备接收定义路径的用户输入。相应地,本发明可以以计算机程序的形式来实施。
应该意识到的是,本文使用的“服务”是跨多个用户会话可执行的应用程序。服务可以对一个或多个系统组件、程序和/或其他服务可用。在一些实现方式中,服务可以在一个或多个服务器计算设备上运行。
当被包括时,显示子系统811可以用于呈现由存储设备保持的数据的可视表示。该可视表示可以采用图形用户界面(GUI)的形式。由于本文描述的方法和过程改变由存储设备802保存的数据并且因此变换存储设备802的状态,所以显示子系统811的状态可以同样地被变换以可视地表示底层数据中的改变。显示子系统811可以包括实际上利用例如上面讨论的任何类型的技术的一个或多个显示设备。这样的显示设备可以与共享外壳中的逻辑设备和/或存储设备组合,或者这种显示设备可以是外围显示设备。还可以提供诸如扬声器814之类的音频输出。
当被包括时,输入子系统可以包括诸如键盘812、鼠标813、触摸屏811或游戏控制器(未示出)之类的一个或多个用户输入设备或与其接合。在一些实施例中,输入子系统可以包括选择的自然用户输入(NUI)组件或与其接合。这样的组件可以是集成的或外围的,并且输入动作的转导和/或处理可以在板上或板外处理。示例NUI组件可以包括用于语言和/或语音识别的麦克风815;用于机器视觉和/或手势识别的红外、彩色、立体和/或深度相机816;用于运动检测和/或意图识别的头部跟踪器、眼动跟踪器、加速度计和/或陀螺仪;以及用于评估大脑活动的电场感测组件。输入/输出接口803可以类似地与本领域技术人员可能想到的任何其他换能器设备接合。例如,该系统可以与打印机817接合。
当被包括时,通信子系统820可以被配置为将计算系统与一个或多个其他计算设备通信地耦合。例如,通信模块将计算设备通信地耦合到远程服务,该远程服务经由例如包括例如个域网、局域网、广域网或因特网的任何大小的网络被托管在远程服务器876上。通信子系统可以包括与一个或多个不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可以被配置用于经由无线电话网络874或有线或无线局域网或广域网进行通信。在一些实施例中,通信子系统可以允许计算系统经由诸如因特网875之类的网络向其他设备发送消息和/或从其他设备接收消息。通信子系统可以另外支持与无源或有源设备(NFC、RFID、UHF等)的短程感应通信。
图8的系统旨在反映广泛的不同类型的信息处理系统。可以意识到的是,关于图8描述的许多子系统和特征对于本发明的实现并不是必需的,而是包括在内以反映根据本发明的可能的系统。可以意识到的是,系统架构变化很大,并且图8的不同子系统之间的关系仅仅是示意性的,并且可能根据系统中的布局和角色分布而变化。应该意识到的是,实际上,系统可能包含关于图8描述的各种特征和子系统的不同子集。
应该理解,本文描述的配置和/或方法本质上是示例性的,并且这些具体实施例或示例不应被认为是限制性的,因为许多变化是可能的。本文描述的具体例程或方法可以表示任何数量的处理策略中的一个或多个。这样,所示出和/或描述的各种动作可以以所示出和/或描述的顺序、以其他顺序、并行执行或省略。类似地,可以改变上述过程的顺序。
本公开的主题包括本文公开的各种过程、系统和配置以及其他特征、功能、动作和/或特性及其任何和所有等价物的所有新颖和非显而易见的组合和子组合。
Claims (15)
1.一种用于处理代码的装置,所述装置包括:
编码器,其适于将所述代码的表示生成为图,并且使得呈现所述图的图形表示,
输入接口,其适于接收用户输入,所述用户输入通过所述图的一系列选择的节点来指定序列;以及
所述编码器进一步适于引起呈现被重构以便表示邻近另一个相应的所述选择的节点的每个相应的所述选择的节点的所述图的图形表示,使得所述选择的节点以与响应于所述用户输入的所述序列相对应的顺序进行布置。
2.如权利要求1所述的装置,其中,所述代码是软件代码,所述图是与所述软件代码相对应的有限状态机,并且每个所述节点是所述有限状态机的状态。
3.一种处理易于图形表示的代码的方法,所述方法包括以下步骤:
将所述代码的表示准备为图,
呈现所述图的至少一部分的图形表示,
接收用户输入,所述用户输入通过所述图的一系列选择的节点来指定序列,以及
呈现被重构以便表示每个相应的所述选择的节点的所述图的至少一部分的图形表示,使得所述选择的节点以与所述序列相对应的顺序进行布置。
4.如权利要求3所述的方法,其中,所述代码是软件代码,所述图是与所述软件代码相对应的有限状态机,并且每个所述节点是所述有限状态机的状态。
5.如权利要求3或4所述的方法,其中,所述选择的节点是以与响应于所述用户输入的所述序列相对应的顺序垂直地进行布置的。
6.如权利要求3至5中任一项所述的方法,其中,所述图的所述图形表示包括将所述图的节点表示为显示空间中的离散实体,并且其中,所述用户输入采取通过所述显示空间的路径的形式。
7.如权利要求3至5中任一项所述的方法,其中,所述序列被取为包括与位于所述路径的预定邻近度内的离散实体相对应的所有节点。
8.如权利要求7所述的方法,包括进一步的步骤:将所述序列与所述图中定义的节点的合法序列进行比较,并且采用所述合法序列中的与指定的序列最接近匹配的合法序列。
9.如权利要求8所述的方法,其中,所述比较的步骤包括附加步骤:确定所述合法序列中的每个所述节点与所述路径的距离,以及采用所述合法序列中的表示距所述路径最小平均距离的合法序列作为所述指定的序列。
10.如权利要求3至9中任一项所述的方法,包括进一步的步骤:取回被选择用于显示和/或属于所述序列的节点中的一些或全部节点的文本表示,以及显示所述文本表示。
11.如权利要求3至10中任一项所述的方法,包括进一步的步骤:取回与被选择用于显示和/或属于所述序列的状态中的一些或全部状态相对应的所述代码的所述部分,以及显示所述代码。
12.如权利要求3至11中任一项所述的方法,其中,所述序列另外指定所述图中的与一个或多个所述选择的节点之间的选择的边相对应的一个或多个转变。
13.如权利要求12所述的方法,包括进一步的步骤:接收进一步的用户输入,所述进一步的用户输入指定对所述代码的修改,并且将所述代码的所述表示适配为图和所述图的所述图形表示以反映所述修改。
14.一种适于实施权利要求3至13中任一项所述的步骤的装置。
15.一种适于实施权利要求3至13中任一项所述的步骤的计算机程序。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP17305550.0A EP3404535A1 (en) | 2017-05-15 | 2017-05-15 | Method and apparatus for processing code |
EP17305550.0 | 2017-05-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108874382A true CN108874382A (zh) | 2018-11-23 |
Family
ID=58994872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810459144.1A Pending CN108874382A (zh) | 2017-05-15 | 2018-05-15 | 用于处理代码的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10579508B2 (zh) |
EP (1) | EP3404535A1 (zh) |
CN (1) | CN108874382A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110211453A (zh) * | 2019-05-26 | 2019-09-06 | 韶关市启之信息技术有限公司 | 一种结合环境隐私辅助远程结对编程的方法 |
WO2020220184A1 (zh) * | 2019-04-29 | 2020-11-05 | 深圳市大疆创新科技有限公司 | 可视化编程控制装置、可编程控制的设备及其控制方法、计算机可读存储介质以及编程控制系统 |
CN113126976A (zh) * | 2021-04-08 | 2021-07-16 | 复旦大学 | 基于语法制导编辑器生成器的跨界服务长尾变化应变方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10866997B2 (en) * | 2018-03-26 | 2020-12-15 | Kapow Technologies, Inc. | Determining functional and descriptive elements of application images for intelligent screen automation |
US10564940B2 (en) * | 2018-05-03 | 2020-02-18 | International Business Machines Corporation | Systems and methods for programming drones |
US10740371B1 (en) * | 2018-12-14 | 2020-08-11 | Clinc, Inc. | Systems and methods for intelligently configuring and deploying a machine learning-based dialogue system |
US11334326B2 (en) * | 2019-02-27 | 2022-05-17 | Adrian Andres Rodriguez-Velasquez | Systems, devices, and methods of developing or modifying software using physical blocks |
US11880668B2 (en) | 2022-06-13 | 2024-01-23 | International Business Machines Corporation | Dynamically altering a code execution workflow during development using augmented reality |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140115566A1 (en) * | 2012-10-19 | 2014-04-24 | Microsoft Corporation | State machine control of a debugger |
US20140189652A1 (en) * | 2013-05-21 | 2014-07-03 | Concurix Corporation | Filtering and Transforming a Graph Representing an Application |
CN104484308A (zh) * | 2014-11-18 | 2015-04-01 | 瑞昱半导体股份有限公司 | 应用于操作模式有限状态机的控制方法以及计算机可读媒体 |
CN105117575A (zh) * | 2015-06-17 | 2015-12-02 | 深圳市腾讯计算机系统有限公司 | 一种行为处理方法及装置 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7493544B2 (en) * | 2005-01-21 | 2009-02-17 | Microsoft Corporation | Extending test sequences to accepting states |
US9129038B2 (en) * | 2005-07-05 | 2015-09-08 | Andrew Begel | Discovering and exploiting relationships in software repositories |
US8266584B2 (en) * | 2007-04-20 | 2012-09-11 | National Instruments Corporation | Statechart development environment with a plurality of user-selectable event modes |
US9177041B2 (en) * | 2010-09-03 | 2015-11-03 | Robert Lewis Jackson, JR. | Automated stratification of graph display |
US9411558B2 (en) * | 2012-10-20 | 2016-08-09 | Luke Hutchison | Systems and methods for parallelization of program code, interactive data visualization, and graphically-augmented code editing |
US8966438B2 (en) * | 2013-06-02 | 2015-02-24 | Mark Spencer Chamberlain | System and methods for end-users to graphically program and manage computers and devices |
CN103559122B (zh) * | 2013-10-14 | 2016-04-27 | 西安交通大学 | 基于程序行为切片的测试案例约减方法 |
JPWO2016079962A1 (ja) * | 2014-11-17 | 2017-08-31 | 日本電気株式会社 | モデル検査装置、モデル検査方法、および、モデル検査プログラム |
US9678724B2 (en) * | 2015-05-29 | 2017-06-13 | Intentional Software Corporation | System and method for combining text editing and tree encoding for computer programs |
US9886230B2 (en) * | 2015-06-07 | 2018-02-06 | Apple Inc. | Device, method, and graphical user interface for collaborative editing in documents |
EP3106990A1 (en) * | 2015-06-19 | 2016-12-21 | Ecole Nationale de l'Aviation Civile | A method, software and processing unit for verifying properties of interactive components |
US9727313B2 (en) * | 2015-08-26 | 2017-08-08 | Ross Video Limited | Systems and methods for bi-directional visual scripting for programming languages |
US20170109933A1 (en) * | 2015-10-14 | 2017-04-20 | Prime Software Systems, Inc. | Visualizing the structure and execution of a program |
US10528328B2 (en) * | 2015-12-08 | 2020-01-07 | Microsoft Technology Licensing, Llc | Learning from input patterns in Programing-By-Example |
US9858045B2 (en) * | 2016-03-28 | 2018-01-02 | Microsoft Technology Licensing, Llc | Designer tool for managing cloud computing services |
US10509634B2 (en) * | 2016-03-30 | 2019-12-17 | International Business Machines Corporation | Data flow analysis for dynamic application, skipping views |
US10255043B2 (en) * | 2016-07-08 | 2019-04-09 | Board Of Trustees Of Western Michigan University | Field programmable block system delivering context-aware services in resource-challenged environments |
US10802945B2 (en) * | 2016-12-07 | 2020-10-13 | Ab Initio Technology Llc | Differencing of executable dataflow graphs |
US10606565B2 (en) * | 2017-01-31 | 2020-03-31 | Stackery, Inc. | Visual devops systems and methods |
US20180173503A1 (en) * | 2017-02-19 | 2018-06-21 | Mehrdad Ghasmizadeh | System and method for graphical programming |
US10754623B2 (en) * | 2017-04-26 | 2020-08-25 | Johnson Controls Technology Company | Building management system with graphical programming tool |
-
2017
- 2017-05-15 EP EP17305550.0A patent/EP3404535A1/en not_active Withdrawn
-
2018
- 2018-05-08 US US15/974,128 patent/US10579508B2/en not_active Expired - Fee Related
- 2018-05-15 CN CN201810459144.1A patent/CN108874382A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140115566A1 (en) * | 2012-10-19 | 2014-04-24 | Microsoft Corporation | State machine control of a debugger |
US20140189652A1 (en) * | 2013-05-21 | 2014-07-03 | Concurix Corporation | Filtering and Transforming a Graph Representing an Application |
CN104484308A (zh) * | 2014-11-18 | 2015-04-01 | 瑞昱半导体股份有限公司 | 应用于操作模式有限状态机的控制方法以及计算机可读媒体 |
CN105117575A (zh) * | 2015-06-17 | 2015-12-02 | 深圳市腾讯计算机系统有限公司 | 一种行为处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
KARL-ERIK: "grahpical languages for intelligent process control applications", 《IEEE》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020220184A1 (zh) * | 2019-04-29 | 2020-11-05 | 深圳市大疆创新科技有限公司 | 可视化编程控制装置、可编程控制的设备及其控制方法、计算机可读存储介质以及编程控制系统 |
CN110211453A (zh) * | 2019-05-26 | 2019-09-06 | 韶关市启之信息技术有限公司 | 一种结合环境隐私辅助远程结对编程的方法 |
CN110211453B (zh) * | 2019-05-26 | 2021-06-08 | 深圳市天天来玩科技有限公司 | 一种结合环境隐私辅助远程结对编程的方法 |
CN113126976A (zh) * | 2021-04-08 | 2021-07-16 | 复旦大学 | 基于语法制导编辑器生成器的跨界服务长尾变化应变方法 |
CN113126976B (zh) * | 2021-04-08 | 2022-06-21 | 复旦大学 | 基于语法制导编辑器生成器的跨界服务长尾变化应变方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3404535A1 (en) | 2018-11-21 |
US20180329804A1 (en) | 2018-11-15 |
US10579508B2 (en) | 2020-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874382A (zh) | 用于处理代码的方法和装置 | |
US11386303B2 (en) | Procedural language and content generation environment for use in augmented reality/mixed reality systems to support laboratory and related operations | |
CN106471476B (zh) | 用于对经优化代码的编辑并继续以及增强的经优化调试的技术 | |
CN104572067B (zh) | 用于存储屏幕快照的方法和系统 | |
US20130120280A1 (en) | System and Method for Evaluating Interoperability of Gesture Recognizers | |
CN104428750A (zh) | 代码片段的泛化和/或特化 | |
Sereshkeh et al. | VASTA: a vision and language-assisted smartphone task automation system | |
EP3215981B1 (en) | Nonparametric model for detection of spatially diverse temporal patterns | |
WO2010006087A9 (en) | Process for providing and editing instructions, data, data structures, and algorithms in a computer system | |
CN104239158A (zh) | 用于自动分析和链接错误日志的分析引擎 | |
KR102438784B1 (ko) | 데이터를 난독화 및 복호화 하는 전자 장치 및 그의 제어 방법 | |
CN108700994A (zh) | 用于数字墨水交互性的系统和方法 | |
CN110442515B (zh) | 应用测试方法、装置、设备及可读存储介质 | |
US10664454B2 (en) | Fill in the blanks word completion system | |
CN106133684A (zh) | 支持静态编译程序中的动态行为 | |
CN105335282A (zh) | 用于应用的跨平台测试的方法和系统 | |
CN108027721A (zh) | 用于使用控件来配置通用程序的技术 | |
CN106575231A (zh) | 具有对操作的跨用户会话撤销支持的自动保存 | |
CN107168705A (zh) | 图形界面语义描述系统及其建立方法和操作路径生成方法 | |
Chu et al. | Wordgesture-GAN: modeling word-gesture movement with generative adversarial network | |
US11727005B2 (en) | Fill in the blanks word completion system | |
Cheng et al. | YOLOv5‐MGC: GUI Element Identification for Mobile Applications Based on Improved YOLOv5 | |
Brückner et al. | Learning GUI completions with user-defined constraints | |
KR102560042B1 (ko) | 기계 학습 모델의 초매개변수(hyperparameter) 최적화 과정의 분석과 조정을 위한 튜닝 알고리즘 인식 시각화 방법 | |
Castelo-Branco et al. | Inside the matrix: immersive live coding for architectural design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181123 |
|
WD01 | Invention patent application deemed withdrawn after publication |