CN110554861A - 具有编译和读取-评估-打印-循环操作的软件开发环境 - Google Patents

具有编译和读取-评估-打印-循环操作的软件开发环境 Download PDF

Info

Publication number
CN110554861A
CN110554861A CN201910470930.6A CN201910470930A CN110554861A CN 110554861 A CN110554861 A CN 110554861A CN 201910470930 A CN201910470930 A CN 201910470930A CN 110554861 A CN110554861 A CN 110554861A
Authority
CN
China
Prior art keywords
source code
results
repl
development environment
integrated development
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.)
Granted
Application number
CN201910470930.6A
Other languages
English (en)
Other versions
CN110554861B (zh
Inventor
A·B·布朗
K·S·奥尔
M·M·帕特奥德
M·N·科纳
P·R·霍利
S·C·佩奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of CN110554861A publication Critical patent/CN110554861A/zh
Application granted granted Critical
Publication of CN110554861B publication Critical patent/CN110554861B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04817Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Abstract

本发明题为“具有编译和读取‑评估‑打印‑循环操作的软件开发环境。”本发明公开了用于开发软件的方法和系统,这些方法和系统可对源代码执行编译操作和读取‑评估‑打印‑循环(REPL)操作两者。在一个实施方案中,集成开发环境可以包括源代码编辑器和编译器,并且可以执行以下操作:接收源代码以及在接收源代码时执行REPL操作;接收已执行REPL操作的源代码中的编辑,并由编译器编译所编辑的源代码;以及存储执行所述所编辑的源代码的结果以用于后续REPL操作。

Description

具有编译和读取-评估-打印-循环操作的软件开发环境
本专利申请要求2018年6月3日提交的美国临时专利申请No.62/679,877的优先权,该专利申请据此以引用方式并入本文。
背景技术
许多现代编程语言需要高级的编辑和编译软件以便编辑、调试及编译源代码。在一些开发环境中,软件开发人员在测试新的代码之前通常执行若干手动步骤。例如,在典型的开发生命周期中,在调试可开始之前源代码必须被分别地编辑、编译及执行。为了加强软件开发的任务,软件开发人员可以使用集成开发环境开发软件应用。集成开发环境(IDE)是一种软件应用,通常包括源代码编辑器、编译器和/或解释器、构建自动化工具和调试器。集成开发环境的示例包括来自Apple Inc.(Cupertino,California)的Xcode和来自华盛顿州雷德蒙德微软公司的Visual Studio。集成开发环境的编辑器可以包括帮助在文件之间移动和访问相关参考材料(例如,应用编程接口(API)定义)的功能。集成开发环境的源代码编辑器还可以包括帮助查看和编辑文本数据(诸如源代码或XML)以及检查文本数据的功能。
在使用Xcode的情况下,计算机程序员可将源代码输入到源代码编辑器中,然后将源代码提交至编译器,然后编译器可显示编译并随后执行的计算机程序的输出结果,并且这些结果可显示在集成开发环境中。例如,这些结果可显示在源代码编辑器的某个区域中。
一些软件开发工具还提供基于逐个语句的输出。例如,一些软件开发工具提供读取-评估-打印-循环(REPL)功能。REPL功能通过评估语句并执行语句,然后打印语句的执行结果,在源代码中显示语句的结果。这可允许程序员确定该语句是否生成预期或期望的结果。Basic解释器是提供REPL功能的软件开发工具的一个示例。来自Jupyter Project的Jupyter Notebook是可以提供REPL功能的软件开发工具的另一个示例。
发明内容
本文所述的实施方案包括用于开发可对源代码执行编译操作和读取-评估-打印-循环(REPL)操作的软件的方法和系统。在一个实施方案中,集成开发环境可以包括源代码编辑器和编译器,并且可以执行以下操作:接收源代码以及在接收源代码时执行REPL操作;接收已执行REPL操作的源代码中的编辑,并由编译器编译所编辑的源代码;以及存储执行已编辑源代码的结果,以便用于后续REPL操作。在该集成开发环境中,系统可以在IDE中显示来自REPL操作的执行以及已编译和已执行程序段的执行的结果。
在一个实施方案中,方法可以包括以下操作:接收第一组源代码;计算表示来自执行第一组源代码的输出的第一组结果,以及存储第一组结果,以在执行读取-评估-打印-循环(REPL)操作时供后续添加的源代码使用;接收第二组源代码,第二组源代码后续被添加在第一组源代码之后;计算表示来自执行第二组源代码的输出的第二组结果,第二组结果基于存储的第一组结果(不必重新编译并执行第一组源代码);接收在第一组源代码中编辑源代码的请求;编译所编辑的第一组源代码,并计算表示来自执行所编辑的第一组源代码的输出的第三组结果,以及存储第三组结果,以在执行REPL操作时供后续添加的源代码使用。在一个实施方案中,源代码编辑器可以在集成开发环境中接收第一组源代码和第二组源代码,用于开发和编译一个或多个计算机程序。在一个实施方案中,该方法还可以包括:基于第三组结果计算表示来自执行第二组源代码的输出的第四组结果。在一个实施方案中,在不编译第二组源代码的情况下计算第四组结果,并且在存储第一组结果后不执行第一组源代码中的编译代码而计算第二组结果。在一个实施方案中,集成开发环境执行REPL操作和编译,并显示第一组结果、第二组结果、第三组结果和第四组结果。此外,在一个实施方案中,IDE允许编辑已执行REPL操作的源代码,而不必重新键入整个源代码。
在一个实施方案中,该方法还可以包括在集成开发环境中显示指示器,指示哪些源代码已经或尚未被提交至编译器进行编译。该方法还可以包括在源代码编辑器中接收选择,以便在源代码编辑器中仅编译源代码的一部分。在一个实施方案中,指示器可以是指示哪些源代码尚未被编译的编译状态指示器。
本文所述的实施方案和系统可以包括存储可执行计算机程序指令的非暂态机器可读介质,可执行计算机程序指令可在该计算机程序指令被一个或多个数据处理系统执行时使得一个或多个数据处理系统执行本文描述的一个或多个方法。该指令可以存储在非易失性存储器中,诸如闪存存储器或其他形式的存储器(诸如DRAM)。
以上概述不包括本公开的所有实施方案的详尽列表。所有系统和方法可根据以上概述的各个方面和实施方案以及以下具体实施方式中所公开的那些的所有合适的组合来实践。
附图说明
在附图的图示中通过举例而非限制的方式例示了实施方案,其中类似的附图标号指示类似的元素。
图1是例示了根据一个实施方案的方法的流程图。
图2以框图形式示出了根据一个实施方案的集成开发环境的示例。
图3是例示了根据一个实施方案的方法的流程图。
图4示出了在源代码开发期间编辑了源代码的一部分之后执行代码的示例。
图5示出了源代码开发的示例,并且还示出了编译状态指示器。
图6示出了在编辑了源代码的一部分之后的编译状态指示器的示例。
图7A、图7B、图7C、图7D、图7E、图7F、图7G、图7H、图7I和图7J示出了一种集成开发环境的一个实施方案的示例。
图8A和图8B示出了一种集成开发环境的一个实施方案的示例。
图9以框图形式示出了可与本文所述的一个或多个实施方案一起使用的数据处理系统的示例。
具体实施方式
将参考以下论述的细节来描述各种实施方案和方面,并且附图将对各种实施方案进行说明。以下说明书和附图为例示性的,并且不应被理解为限制性的。描述了许多具体细节,以提供对各个实施方案的全面理解。然而,在某些实例中,熟知的或常规的细节并未被描述,以便提供对实施方案的简明论述。
在本说明书中提到的“一个实施方案”或“实施方案”是指结合该实施方案所述的特定特征、结构或特性可被包括在至少一个实施方案中。在本说明书中的各个位置出现短语“在一个实施方案中”不一定都是指同一个实施方案。在随后的附图中所描绘的过程由包括硬件(例如,电路、专用逻辑部件等等)、软件或这两者的组合的处理逻辑部件来执行。虽然下文按照某些顺序操作来描述该过程,但应当理解,所描述的某些操作可以不同的顺序执行。此外,某些操作也可并行执行而非按顺序执行。
本专利申请描述了例如在集成开发环境中的各种实施方案,该集成开发环境在通过使用REPL操作输入每条语句时提供对计算机程序代码的每个语句的评估,并且还在同一集成开发环境中提供对计算机程序代码的编译。这允许交互式开发计算机程序,从而使得能够在标准开发环境中对算法和系统提供的应用编程接口(API)进行实验。
本文例示和描述了与Swift编程语言中的计算机程序指令一致的示例性源代码。然而,实施方案不限于使用Swift编程语言。本文所述的构思也可应用于支持诸如C、Objective-C、C++、Java和/或任何其他编程语言的源代码编辑器和集成开发环境。
为了提供对各种实施方案的详细解释,本文阐述了许多具体细节。然而,本领域的普通技术人员将理解,可在没有这些具体细节的情况下实践实施方案。在一些情况下,未详细示出熟知的部件、结构和技术,以免模糊本说明中的细节。本文中对“一个实施方案”或“实施方案”的引用是指相关或关联实施方案中描述的特定特征、结构或特性可以被包括在至少一个此类实施方案中。
以下附图中所描绘的过程由包括诸如电路、专用逻辑部件、处理系统等硬件的处理逻辑部件来执行,并且可包括软件,例如存储在非暂态机器可读存储介质上的软件。虽然下文按照某些顺序操作来描述该过程,但应当理解,所描述的某些操作可以不同的顺序执行或并行执行。
本文附图中的图形用户界面图像的例示包括受版权保护的材料。本发明的版权所有人,包括本发明的受让人,据此保留其在这些材料中的权利,包括版权。由于本专利文档或本专利公开内容出现在专利与商标局文件或记录中,因此版权所有人不反对任何人对本专利文档或本专利公开内容的拓制,但会以其他方式保留任何形式的所有版权。版权所有,Apple,Inc.2018。
现在将参考图1描述一个实施方案中的方法。此方法可在集成开发环境中执行。该集成开发环境可在操作101中接收源代码,诸如由程序员输入到源代码编辑器中的源代码。在操作103中,系统可评估源代码中的语句并且可保存由评估生成的状态信息以供稍后使用。例如,系统可以使用REPL功能来评估源代码中的语句,并且可以保存(由已执行的REPL评估操作生成的)状态信息,以便在添加更多的源代码时用于后续REPL操作。例如,程序员可能添加一行源代码,并且系统可在操作103中使用REPL功能来做出响应,该REPL功能在一个实施方案中在源代码编辑器的结果面板或某一部分中显示语句的结果(其可被称为REPL结果)。此外,系统可以保存关于由程序员输入的语句的状态信息(例如,变量、常量等的值),该状态信息可用于后续添加的源代码的后续REPL操作中。当后续添加的源代码被添加时,可执行操作105;在操作105中,使用所保存的状态信息(例如,来自先前执行的REPL操作)来对后续添加的源代码执行REPL操作。在一个实施方案中,操作101、103和105可在循环中重复,直至在一个实施方案中在集成开发环境中执行编译操作时执行操作107。当这些操作在循环中重复时,程序员可重复添加一行接一行的源代码,并在可能的时候被提供以每行源代码的REPL结果。通常,如果编程语言的语法允许对单行源代码进行评估,那么REPL评估操作会评估该行。程序员可通过按下回车键或被指定为结束一行的另一个键来指示该行结束,并开始新行。在一些情况下,在能够评估一个语句或一组源代码之前,可能需要有多行。通常,可以在源代码语句完成时,诸如在指定了操作和操作的输入时,执行REPL评估操作。
在图1所示的方法中输入源代码时,程序员可能会意识到需要编辑先前在源代码编辑器中输入的源代码。该源代码可能已被评估或编译。例如,需要编辑的源代码可能先前已被评估为先前执行的REPL操作的一部分。在一个实施方案中,程序员然后可指示系统编译源代码,系统可从源代码的开头编译源代码并且还保存新的状态信息,以在针对后续添加的源代码的后续REPL操作中使用。在一个实施方案中,该编译可在无需重新键入先前源代码的情况下进行,而只是在先前源代码中输入编辑。因此,程序员可返回并编辑先前评估(例如,通过一个或多个REPL操作进行评估)或编译的源代码部分,然后重新编译源代码并同时使得保存新的状态信息,以便在后续添加的源代码被添加时用于后续REPL操作。保存新的状态信息还可提高使用系统的速度,因为后续REPL操作可在不重新编译先前源代码的情况下被执行;因此,程序员在系统上等待处理新代码行所花费的时间更少。
现在参考图3描述根据另一个实施方案的方法。在操作301中,系统可接收第一组源代码,诸如一行源代码;例如,源代码编辑器可从程序员接收文本的输入(例如,一行源代码),其中文本表示计算机程序的源代码。在操作303中,系统随后可通过执行REPL评估操作来做出响应,并且可保存关于REPL评估操作的状态信息,以在对后续添加的源代码执行REPL操作时在后续添加的源代码中使用。操作301和303可在程序员输入新的源代码时随时间推移在循环中重复,并且系统通过对新的源代码执行REPL操作来做出响应,每次都使用来自先前的REPL操作的所保存的状态信息来对后续添加的源代码执行REPL操作。在某个时刻,程序员可能希望编译程序,并且在这样做时可请求系统在操作305中编译程序。在操作307中,系统通过编译计算机程序(其包括第一组源代码)并通过保存状态信息以用于在操作307中编译计算机程序之后添加的后续添加的源代码的REPL操作而做出响应。在一个实施方案中,在操作307中编译计算机程序可产生显示在集成开发环境内的一组结果;例如,结果可显示在集成开发环境中的源代码编辑器的结果面板或窗格中。在操作307中编译计算机程序之后,计算机程序员然后可添加更多源代码,这导致操作309,在该操作中系统接收后续添加的源代码,该源代码可为例如第二组源代码。然后系统可以使用来自先前的REPL操作的所保存的信息来对在操作309中接收的后续添加的源代码执行REPL操作。使用来自先前的REPL操作的所保存的状态信息允许显示新源代码的结果的输出,而不必从源代码的开头重新编译源代码。此时,在图3所示的方法中,程序员可能意识到需要对第一组源代码(先前已编译)进行编辑,并且因此系统在操作311中从程序员接收对第一组源代码的编辑。然后,程序员可请求系统再次编译程序,这导致操作313,在该操作中系统的编译器重新编译第一组源代码。在一个实施方案中,编译器可编译第一组源代码,而不是自执行上一组REPL操作以来未被更改的第二组源代码。在一个实施方案中,在操作311中输入对第一组源代码的编辑可在不重新键入整个源代码的情况下执行,并且因此仅需要将编辑本身输入到源代码中,而不是重新键入整个源代码。在操作313中重新编译第一组源代码可提供可执行代码,该可执行代码可生成关于针对所编辑的第一组源代码的REPL操作的状态信息,并且可在操作315中保存该状态信息以用于在第一组源代码之后添加的源代码的操作中。在一个实施方案中,状态信息可作为在操作313中重新编译已编译的计算机程序之后执行该编译的计算机程序的结果而生成。在另一个实施方案中,作为系统的一部分的解释器可在重新编译过程期间产生REPL操作,并保存来自REPL操作的状态信息。在一个实施方案中,来自操作315的所保存的状态信息可用于之后添加的代码,而无需重新编译先前提交的代码并且无需编译新代码并且无需重新执行从第一组源代码导出的代码。
图2示出了集成开发环境的示例,诸如集成开发环境201,其可用于执行本文所述的实施方案中的任一个,诸如图1和图3中所示的方法。集成开发环境201可在软件中实现,该软件在诸如来自Apple Inc.(Cupertino,California)的计算机的数据处理系统上执行。数据处理系统也可以是不同类型的计算机系统。集成开发环境201可以是(例如)Xcode集成开发环境,该环境提供软件开发者可用于创建、执行和调试计算机程序代码的功能。在一个或多个实施方案中,集成开发环境201作为应用进程在数据处理系统上执行,并且与通过使用集成开发环境201开发的交互式开发程序208协同存储在数据处理系统上的存储器中。在一个实施方案中,集成开发环境201和交互式开发的计算机程序208都存储在数据处理系统上的存储器(诸如DRAM)中或存储在数据处理系统的虚拟存储器空间中。在一个实施方案中,交互式开发的应用或计算机程序208可在与集成开发环境201的应用进程不同的存储器地址空间中作为应用进程执行,但在一些具体实施中,交互式开发的计算机程序201和集成开发环境201的应用进程可在同一存储器地址空间中在单个过程或单独过程中进行组合。在一个实施方案中,集成开发环境201可呈现用户界面,该用户界面可包括由源代码编辑器203提供的源代码编辑器。源代码编辑器203可被配置为接收源代码输入,诸如使用集成开发环境201从计算机程序员接收的源代码输入209。源代码编辑器203可提供各种功能,诸如拼写检查和本领域所公知的用于源代码编辑器的其他功能。源代码编辑器的用户界面的示例在图7A-图7J中示出,并且也在图8A和图8B中示出。源代码编辑器可耦接至一个或多个编译器,诸如一个或多个编译器205。一个或多个编译器205可被配置为编译来自源代码编辑器203的源代码并提供可执行代码,诸如交互式开发的计算机程序208。当被执行时,交互式开发的计算机程序208可生成用于显示的结果,诸如结果204,该结果可在一个实施方案中显示在窗口,诸如源代码编辑器203的结果窗格或面板中。在一个实施方案中,当指令被输入到源代码编辑器203中时,集成开发环境201可动态地编译和执行附加计算机程序指令,使得以交互方式对交互式开发的计算机程序208进行编码、执行、调试和重新编码。在一个实施方案中,一个或多个编译器205可包括前端编译器和后端编译器。在一个实施方案中,集成开发环境201使用基于LLVM(低级别虚拟机)编译器基础结构的编译系统,但也可使用其他编译系统。在一个实施方案中,前端编译器分析程序代码以构建程序的内部表示或中间表达式。后端编译器可进一步编译中间表达式或内部表示以创建可在特定处理系统上执行的表达式。在另一个实施方案中,一个或多个编译器205可以是产生可执行代码的单个编译器,从而导致交互式开发的计算机程序208被存储在存储器中以便在运行时执行。在一个实施方案中,一个或多个编译器205还可生成用于将来REPL操作的所保存的状态信息并将该所保存的状态信息存储为如图2所示的所保存的状态信息206。在一个实施方案中,一个或多个编译器205可生成用于显示的结果,诸如在一个实施方案中由于编译计算机程序或执行REPL操作而生成的结果204。
在一个实施方案中,集成开发环境201还可包括可对所接收的源代码逐个语句执行REPL操作的REPL操作处理逻辑部件207。换句话讲,在接收每个语句或源代码行时,如果语句可被评估并产生REPL操作的结果(REPL结果),在一个实施方案中,可使用REPL操作处理逻辑部件207评估语句并可以将结果打印或显示为结果204的一部分。在一个实施方案中,REPL操作处理逻辑部件207可耦接到源代码编辑器203以逐行接收源代码语句并产生表示根据一个实施方案的REPL操作的输出的输出。可与从REPL操作产生结果的源代码的对应行或源代码段相关联地,逐行将这些输出显示为结果204。REPL操作处理逻辑部件207还可生成并提供所产生的每个REPL操作的状态信息,并且使得该信息被保存为每个REPL操作的所保存的状态信息206。该已保存信息用于后续REPL操作,方法是保存变量信息数据、常量数据信息和用于为后续输入的源代码导出值的其他信息。换句话讲,所保存的状态信息206可用于后续输入的源代码的后续REPL操作,使得不需要重新编译或重新执行先前输入的源代码。在一个实施方案中,REPL操作处理逻辑部件207可生成结果204并生成要作为所保存的状态信息206的一部分进行保存的状态信息。在另一个实施方案中,REPL操作处理逻辑部件207可在没有一个或多个编译器205辅助的情况下执行这些操作。在另一个实施方案中,除了来自REPL操作处理逻辑部件207的结果之外,一个或多个编译器205还可生成用于显示的结果,诸如结果204,并提供所保存的状态信息206。
在一个实施方案中,集成开发环境201可使用图1或图3中的方法来生成图4、图5和/或图6中所示的示例。在图4所示的实施例中,在源代码编辑器中按顺序输入一组源代码段,并且集成开发环境被配置为通过一组REPL操作来提供所输入的源代码段的所显示结果。在一个实施方案中,代码段可以是单行源代码,而在其他实施方案中,代码段可以是多行源代码,这取决于何时可以从源代码生成REPL结果。现在参考图4,可以看出,从代码段401开始,可随时间推移输入三个源代码段,该段是源代码的一部分,该部分可以是源代码的一行或多行。在源代码段401被输入源代码编辑器之后,程序员输入源代码段403,然后输入源代码段405。在一个实施方案中,集成开发环境可包括REPL操作处理逻辑部件,该逻辑部件可使得执行源代码的每段以使得显示来自源代码的每段的输出,可在输入源代码的对应段之后立即在源代码编辑器中显示该输出。例如,源代码段401(其可以状态信息400开始)的输入可通过经由REPL处理逻辑部件(诸如REPL处理逻辑部件207)的执行402产生所显示的结果417,所显示的结果可在输入源代码段403之前在源代码编辑器内显示;执行402还可产生用于后续REPL操作的状态信息410。相似地,输入源代码段403可以(通过经由REPL处理逻辑部件的执行404)产生所显示的结果419,所显示的结果也可以在输入源代码段405之前显示于源代码编辑器中。经由REPL处理逻辑部件的执行404还可生成用于后续REPL操作的状态信息412和基于描述执行404之前的变量和其他数据的状态的一组状态信息的状态信息412。经由REPL处理逻辑部件的执行404的结果基于从执行源代码段401导出的状态信息410。计算机程序员输入源代码段405可使用状态信息412通过REPL操作基于来自先前REPL操作的状态信息412来计算所显示的结果421。在一个实施方案中,产生所显示的结果421的REPL操作通过基于所保存的状态信息412的执行406来产生。
在开发包括源代码段401、403和405的计算机程序期间,程序员可能意识到他们需要编辑源代码段403。编辑源代码段403获得源代码段430。在一个实施方案中,程序员可决定从源代码段401开始仅重新编译和执行源代码的一部分并且以源代码段430结束,以导出可用于后续REPL操作(诸如源代码段405的REPL操作)的状态信息433。执行437可以是使用那些先前保存的状态信息的REPL操作,诸如基于图4中所示的执行431的状态信息433。在一个实施方案中,执行431可以是由被编译程序执行的,该被编译程序至少从代码段401的开始到代码段430的结束编译,其中代码段430的结束表示在对该源代码段403进行修改之后从源代码段403导出的经修改的源代码段430的结束。在一个实施方案中,集成开发环境能够基于被示为图4中的源代码段430的代码段B中的修改,显示所显示的结果417以及显示修改后的显示结果420和422。因此,对源代码一部分的修改可以被重新编译或进行第一次编译,并导出被显示的编译结果(诸如结果420)以及导出可用于后续REPL操作的所保存的状态信息(诸如状态信息433),后续REPL操作可以是诸如执行437,该执行可以是基于状态信息433计算在集成开发环境中显示的结果422的REPL操作。在一个实施方案中,如果编译器可确定自从导致代码段430的代码段403的编辑之后,代码段405保持不变,则执行431能够在源代码段430的末尾结束。在这种情况下,IDE可通过不必编译整个源代码并且可在代码段430的末尾停止编译和执行新编译的代码来节省时间,然后IDE可使用所保存的状态信息433通过REPL操作来计算源代码的后续代码段的REPL结果。因此,执行437可以是源代码段405的REPL操作,该操作使用所保存的状态信息433来导出源代码段405的结果422。
图5和图6示出了根据一个实施方案,可在集成开发环境中的源代码编辑器的用户界面的示例。该用户界面可使用图2中所示的集成开发环境201来实现,并且该用户界面可由实施图1或图3所示的方法之一而产生。用户界面中的列501是一列行号,用于为每一行显示源代码中特定语句的行编号。列503示出了在该示例中包括六个语句507、509、511、515、517和519的输入源代码。每个语句都与图5中所示的特定行号相关联。结果列505示出了图5中所示示例中的三个语句的REPL操作的结果。具体地讲,结果列505示出了结果508、510和512。结果508是语句507的REPL操作的结果。结果510是语句509的REPL操作的结果。结果512是语句511的REPL操作的结果。结果可能不可用于语句515、517和519,因为这些语句可能没有足够的信息供REPL处理逻辑部件产生REPL结果。用户界面还包括编译状态指示器521和编译命令图标523。编译状态指示器521可指示在计算机程序的开发中迄今已编译或尚未编译的内容。在图5所示的实施例中,编译状态指示器521示出了编译器尚未编译的源代码;因此,语句507、509和511已被编译器编译,而语句515、517和519尚未被编译器编译。开发者可通过选择编译命令图标523来使得系统编译语句515、517和519。在一个实施方案中,可通过触摸命令图标523或通过将光标诸如鼠标光标定位在图标523上方并选择图标来进行该选择。在另选的实施方案中,编译状态指示器可指示在计算机程序的开发中迄今已编译的源代码,而不是显示尚未编译的源代码。在计算机程序的开发期间,程序员可能意识到应该编辑语句509。如图6所示,编辑的结果使得系统接收所编辑的源代码,该所编辑的源代码现在是语句529,并且还使得系统通过显示由于创建语句529的修改而未将源代码的所有行提交至编译器来修改编译状态指示器521。在图6所示的实施例中,REPL处理逻辑部件可产生图6所示的REPL结果,其包括由于修改语句529中的源代码而修改的REPL结果531和533。通过选择编译命令图标523,程序员可使系统从头到尾编译计算机程序,如图6所示。在图6所示的实施例中,集成开发环境发现,将需要修改先前基于语句509生成的源代码,因此将需要再次重新编译本示例中的整个计算机程序以捕获在语句509中所做的更改,以生成语句529。
图7A、图7B、图7C、图7D、图7E、图7F、图7G、图7H、图7I和图7J示出了根据一个实施方案,可在集成开发环境中的源代码编辑器的用户界面的示例。该用户界面可使用图2中的集成开发环境201来实现,并且该用户界面可由实施图1或图3所示的方法之一而产生。图7A示出,程序员已经输入了一行源代码,即源代码的行1中所示的语句701。该用户界面还包括可由鼠标或本领域所公知的其他控制设备控制的光标703。图7B示出,程序员已添加了另外三行代码。具体地讲,已添加行3、4和5,并且系统已在结果面板709中显示结果,其中示出了来自REPL操作和/或执行已编译的计算机程序的结果。在图7B所示的实施例中,尚未编译整个源代码,这由编译状态指示器705指示。用户界面还包括编译命令图标707,该编译命令图标可类似于图5和图6所示的编译命令图标523。此外,编译状态指示器705可类似于图5和图6所示的编译状态指示器521。如图7B所示,在输入另外三行源代码之后,程序员已将鼠标的光标定位在编译命令图标707上方,然后可选择编译命令图标707以使得编译在计算机程序开发期间迄今已输入的源代码。选择编译命令图标707导致图7C中所示的用户界面,其中系统已编译程序员迄今为止给出的所有源代码。编译状态指示器705未出现在图7C中,因为在计算机程序的开发中迄今已编译所有源代码。然后,如图7D所示,程序员又添加了两行代码。然后,如图7E中所示,程序员添加了额外行的代码,获得图7E中所示被显示的14行代码。编译状态指示器705显示,行6至14尚未被编译,而行1至5已被编译。然后,程序员可通过选择图7E所示的编译命令图标707来使得编译行6至14,产生图7F所示的结果,其中源代码的所有行都已被再次编译。图7F所示的结果面板709已被更新,以显示作为整个计算机程序的编译结果的更新结果。在开发计算机程序的此时,程序员意识到需要编辑行10,以更改在特定循环中运行该执行的次数。图7G和图7H示出了由程序员执行的编辑的结果,以将行10中的值1000更改为值20,如图7G和图7H所示。该更改的结果在图7I中示出,并且编译状态指示器705重新出现在图7I中以示出整个计算机程序可再次被重新编译并且由于该更改需要再次重新编译。程序员可选择编译命令图标707以使得重新编译整个计算机程序,这导致图7J中所示的显示,其中,整个计算机程序已被重新编译并且结果面板709已被更新,以反映来自执行重新编译的计算机程序的更新结果。
图8A和图8B示出了根据一个实施方案,可在集成开发环境中的源代码编辑器的用户界面的另一示例。该用户界面可使用图2中所示的集成开发环境201来实现,并且该用户界面可由实施图1或图3所示的方法之一而产生。图8A和图8B表示集成开发环境允许程序员在任何一个时间仅选择计算机程序的一部分进行编译的实施方案。在图8A所示的实施例中,编译状态指示器705示出,尚未编译所有源代码,但计算机程序员已决定仅编译计算机程序的前五行,而留下计算机程序的其余部分不编译。计算机程序员可选择图8A中所示的编译命令图标707,使得仅编译计算机程序的前五行,从而在编译前五行之后产生图8B所示的用户界面。在一个实施方案中,计算机程序员可在编译状态指示器705上上下移动光标703,以选择使得部分编译计算机程序的点。例如,计算机程序员可在编译状态指示器上上下移动光标703以挑选进行部分编译的不同点,诸如行8而不是行5。可将计算机程序的部分编译和执行的结果提供给REPL处理逻辑部件,以针对在计算机程序的编译部分之后的REPL操作产生REPL保存的状态信息。选择程序的某些部分进行编译并使这些部分为后续源代码的REPL处理操作提供保存的信息的能力在面向计算机程序员的集成开发环境中提供了更大的灵活性,并且还可通过限制在任何时间编译的代码量来减少编译时间。
图9为根据一个实施方案的数据处理系统900的框图。需注意,虽然图9示出了可结合到移动或手持设备的数据处理系统的各种部件,但这并不旨在表示将这些部件互连的任何特定的构造或方式,因为此类细节与本发明并无密切关系。还应理解,还可将具有比所示更少部件或更多部件的其他类型的数据处理系统用于各种实施方案中。
数据处理系统900包括用于将系统的各种部件互连的一条或多条总线909。一个或多个处理器903如本领域中所公知地耦接到一条或多条总线909。存储器905可以是易失性DRAM或非易失性RAM,诸如NOR闪存或其他类型的高速非易失性就地执行存储器。该存储器可使用本领域所公知的技术耦接到一条或多条总线909。数据处理系统900还可以包括明确非易失性存储器907,诸如数据存储设备,包括一个或多个硬盘驱动器、闪速存储器设备或在电力从系统移除之后保持数据的其他类型的存储器系统。非易失性存储器907和存储器905均可使用已知的接口及连接技术耦接到一条或多条总线909。显示器控制器922可耦接到一条或多条总线909,以接收可显示在显示设备923上的显示数据。在一个实施方案中,显示设备923包括集成式触摸输入以提供触摸屏。
数据处理系统900还可包括一个或多个输入/输出(I/O)控制器915,控制器915为一个或多个I/O设备提供接口,一个或多个I/O设备可以是诸如一个或多个鼠标、触摸屏、触控板和其他输入设备(包括本领域所公知的那些),以及输出设备(例如,扬声器)。输入/输出设备917如本领域中所公知地通过一个或多个I/O控制器915耦接。
虽然数据处理系统900示出存储器905和非易失性存储器907直接耦接到一条或多条总线,但在一个实施方案中,非易失性存储器907可远离数据处理系统900,诸如在通过网络接口诸如调制解调器、无线LAN或以太网接口耦接到数据处理系统的网络存储设备中。如本领域所熟知的,一条或多条总线909可通过各种网桥、控制器和/或适配器彼此连接。在一个实施方案中,I/O控制器915包括用于控制USB外围设备的USB(通用串行总线)适配器,或用于控制Thunderbolt外围设备的Thunderbolt控制器中的一者或多者。在一个实施方案中,一个或多个网络设备925可耦接到一条或多条总线909。一个或多个网络设备925可为有线网络设备(例如,以太网)或无线网络设备(例如,WI-FI、蓝牙)。
通过本描述将显而易见的是,本发明的实施方案和各方面可至少部分地在软件中体现。也就是说,响应于处理器执行存储介质(诸如非暂态机器可读存储介质(诸如非易失性DRAM或非易失性闪存存储器))中存储的指令序列而可在一个数据处理系统或一组数据处理系统中执行这些技术和方法。在各种实施方案中,可将硬连线的电路与软件指令结合使用来实施本文描述的实施方案。因此,这些技术和方法不限于硬件电路与软件的任何指定组合,亦不限于由一个或多个数据处理系统执行的指令的任何特定源。
在上述说明书中,已描述特定示例性实施方案。显而易见的是,可在不脱离以下权利要求所给出的更广泛的实质和范围的情况下对那些实施方案作出各种修改。相应地,说明书和附图被视为是例示性意义而不是限定性意义。

Claims (21)

1.一种存储可执行指令的非暂态机器可读介质,所述可执行指令当由数据处理系统执行时使得所述数据处理系统执行方法,所述方法包括:
接收第一组源代码;
计算表示来自执行所述第一组源代码的输出的第一组结果,并存储所述第一组结果,以在执行评估操作时供后续添加的源代码使用;
接收第二组源代码,所述第二组源代码后续被添加在所述第一组源代码之后;
计算表示来自执行所述第二组源代码的输出的第二组结果,所述第二组结果基于所存储的第一组结果;
接收在所述第一组源代码中编辑源代码的请求;
编译所编辑的第一组源代码,并计算表示来自执行所述所编辑的第一组源代码的输出的第三组结果,并存储所述第三组结果,以在执行后续评估操作时供后续添加的源代码使用。
2.根据权利要求1所述的介质,其中所述第一组源代码和所述第二组源代码由源代码编辑器在集成开发环境中接收以用于开发和编译一个或多个计算机程序,并且其中所述第一组源代码是一行源代码。
3.根据权利要求1所述的介质,其中所述方法还包括:
基于所述第三组结果来计算第四组结果,所述第四组结果表示来自执行所述第二组源代码的输出,并且其中所述评估操作是读取-评估-打印-循环(REPL)操作,并且所述后续评估操作是REPL操作。
4.根据权利要求3所述的介质,其中计算所述第四组结果而不编译所述第二组源代码。
5.根据权利要求4所述的介质,其中计算所述第二组结果而在存储所述第一组结果之后不执行所述第一组源代码。
6.根据权利要求5所述的介质,其中所述第一组源代码和所述第二组源代码由作为集成开发环境的一部分的源代码编辑器接收,所述集成开发环境还包括编译所述所编辑的第一组源代码的编译器,并且所述集成开发环境执行所述REPL操作并且显示所述第一组结果、所述第二组结果、所述第三组结果和所述第四组结果。
7.根据权利要求6所述的介质,其中所述方法还包括:
在所述集成开发环境中显示指示哪些源代码已经或尚未被提交至所述编译器进行编译的指示器。
8.根据权利要求7所述的介质,其中所述方法还包括:
在所述源代码编辑器之内接收选择以在所述源代码编辑器中仅编译源代码的一部分。
9.一种方法,所述方法包括:
接收第一组源代码;
计算表示来自执行所述第一组源代码的输出的第一组结果,并存储所述第一组结果,以在执行评估操作时供后续添加的源代码使用;
接收第二组源代码,所述第二组源代码后续被添加在所述第一组源代码之后;
计算表示来自执行所述第二组源代码的输出的第二组结果,所述第二组结果基于所存储的第一组结果;
接收在所述第一组源代码中编辑源代码的请求;
编译所编辑的第一组源代码,并计算表示来自执行所述所编辑的第一组源代码的输出的第三组结果,并存储所述第三组结果,以在执行后续评估操作时供后续添加的源代码使用。
10.根据权利要求9所述的方法,其中所述第一组源代码和所述第二组源代码由源代码编辑器在集成开发环境中接收以用于开发和编译一个或多个计算机程序,并且其中所述第一组源代码是一行源代码。
11.根据权利要求9所述的方法,其中所述方法还包括:
基于所述第三组结果来计算第四组结果,所述第四组结果表示来自执行所述第二组源代码的输出,并且其中所述评估操作是读取-评估-打印-循环(REPL)操作,并且所述后续评估操作是REPL操作。
12.根据权利要求11所述的方法,其中计算所述第四组结果而不编译所述第二组源代码。
13.根据权利要求12所述的方法,其中计算所述第二组结果而在存储所述第一组结果之后不执行所述第一组源代码。
14.根据权利要求13所述的方法,其中所述第一组源代码和所述第二组源代码由作为集成开发环境的一部分的源代码编辑器接收,所述集成开发环境还包括编译所述所编辑的第一组源代码的编译器,并且所述集成开发环境执行所述REPL操作并且显示所述第一组结果、所述第二组结果、所述第三组结果和所述第四组结果。
15.根据权利要求14所述的方法,其中所述方法还包括:
在所述集成开发环境中显示指示哪些源代码已经或尚未被提交至所述编译器进行编译的指示器。
16.根据权利要求15所述的方法,其中所述方法还包括:
在所述源代码编辑器之内接收选择以在所述源代码编辑器中仅编译源代码的一部分。
17.一种用于开发计算机程序的集成开发环境中的方法,所述方法包括:
接收源代码并且在接收到所述源代码时执行读取-评估-打印-循环(REPL)操作;
接收已执行REPL操作的源代码中的编辑,并且由编译器编译所编辑的源代码;
存储执行所述所编辑的源代码的结果以用于后续REPL操作。
18.根据权利要求17所述的方法,其中所述方法还包括:
在所述集成开发环境中显示指示哪些源代码已经或尚未被提交至所述编译器进行编译的指示器。
19.一种用于开发计算机程序的集成开发环境中的方法,所述方法包括:
接收第一组源代码;
编译所述第一组源代码并存储来自执行所述第一组源代码的第一组结果,以在执行读取-评估-打印-循环(REPL)操作时供后续添加的源代码使用;
接收第二组源代码并且使用所述第一组结果对所述第二组源代码执行REPL操作,而不再次执行所述第一组源代码。
20.根据权利要求19所述的方法,其中所述方法还包括:
在所述集成开发环境中显示指示哪些源代码已经提交或尚未提交至所述编译器进行编译的指示器,并且其中所述集成开发环境(IDE)包括所述编译器和源代码编辑器,并且所述IDE执行一个或多个REPL操作。
21.一种存储可执行指令的非暂态机器可读介质,所述可执行指令当由数据处理系统执行时使得所述数据处理系统执行方法,所述方法包括:
显示源代码编辑器,所述源代码编辑器是用于开发和编译一个或多个计算机程序的集成开发环境的一部分;
接收第一行源代码;
计算表示来自执行所述第一行源代码的输出的第一组结果,以及存储所述第一组结果,以在执行读取-评估-打印-循环(REPL)操作时供后续添加的源代码使用;
接收第二行源代码,所述第二行源代码后续被添加在所述第一行源代码之后;
计算表示来自执行所述第二行源代码的输出的第二组结果,所述第二组结果基于所存储的第一组结果;
接收在所述第一行源代码中编辑源代码的请求;
编译所编辑的第一行源代码,并计算表示来自执行所述所编辑的第一行源代码的输出的第三组结果,以及存储所述第三组结果,以在REPL操作时供后续添加的源代码使用;
其中计算所述第二组结果而在存储所述第一组结果之后不执行所述第一行源代码;并且其中所述第一行源代码和所述第二行源代码由作为集成开发环境的一部分的源代码编辑器接收,所述集成开发环境还包括编译所述所编辑的第一行源代码的编译器,并且所述集成开发环境执行所述REPL操作并且显示所述第一组结果、所述第二组结果和所述第三组结果;
在所述集成开发环境中显示指示哪些源代码已经或尚未被提交至所述编译器进行编译的指示器,其中所述指示器是沿所述源代码一侧的竖直条;
沿所述指示器显示编译图标,所述编译图标响应于竖直光标移动沿所述指示器上下移动,所述编译图标允许程序员仅选择所述源代码的一部分进行编译。
CN201910470930.6A 2018-06-03 2019-05-31 具有编译和读取-评估-打印-循环操作的软件开发环境 Active CN110554861B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862679877P 2018-06-03 2018-06-03
US62/679,877 2018-06-03
US16/423,452 2019-05-28
US16/423,452 US11256481B2 (en) 2018-06-03 2019-05-28 Software development environment with compilation and read-evaluate-print-loop operations

Publications (2)

Publication Number Publication Date
CN110554861A true CN110554861A (zh) 2019-12-10
CN110554861B CN110554861B (zh) 2023-08-04

Family

ID=68693061

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910470930.6A Active CN110554861B (zh) 2018-06-03 2019-05-31 具有编译和读取-评估-打印-循环操作的软件开发环境

Country Status (2)

Country Link
US (1) US11256481B2 (zh)
CN (1) CN110554861B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124425A (zh) * 2019-12-31 2020-05-08 黎剑猛 一种监控插件修改方法及系统
CN111580826A (zh) * 2020-04-30 2020-08-25 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10002163B2 (en) * 2016-08-18 2018-06-19 Palantir Technologies Inc. Managing sharable cell-based analytical notebooks

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1991765A (zh) * 2005-12-29 2007-07-04 北京金远见电脑技术有限公司 手持终端应用程序的开发装置和方法
US20080172660A1 (en) * 2007-01-17 2008-07-17 International Business Machines Corporation Method and System for Editing Source Code
US20100070516A1 (en) * 2008-09-15 2010-03-18 Dustin Kurt Adler Instance Management of Code in a Database
US20110307872A1 (en) * 2010-06-15 2011-12-15 Microsoft Corporation Script debugging
US20130024837A1 (en) * 2006-12-27 2013-01-24 The Mathworks, Inc. Continuous evaluation of program code and saving state information associated with program code
US20130080506A1 (en) * 2011-09-28 2013-03-28 Microsoft Corporation Remotely-hosted interactive client-server session
US20140380272A1 (en) * 2013-06-21 2014-12-25 Sap Ag Business application inspection and modification
CN105144088A (zh) * 2012-12-13 2015-12-09 微软技术许可有限责任公司 元数据与源代码的关联以及基于其的应用和服务
CN106471476A (zh) * 2014-06-25 2017-03-01 微软技术许可有限责任公司 用于对经优化代码的编辑并继续以及增强的经优化调试的技术

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150347094A1 (en) * 2014-05-30 2015-12-03 Apple Inc. Interactive learning tool using playground
US10255045B2 (en) 2015-10-28 2019-04-09 Apple Inc. Graphical representation of data in a program code editor

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1991765A (zh) * 2005-12-29 2007-07-04 北京金远见电脑技术有限公司 手持终端应用程序的开发装置和方法
US20130024837A1 (en) * 2006-12-27 2013-01-24 The Mathworks, Inc. Continuous evaluation of program code and saving state information associated with program code
US20080172660A1 (en) * 2007-01-17 2008-07-17 International Business Machines Corporation Method and System for Editing Source Code
US20140201236A1 (en) * 2008-07-31 2014-07-17 Group-A Autosports, Inc. Instance Management of Code in a Database
US20100070516A1 (en) * 2008-09-15 2010-03-18 Dustin Kurt Adler Instance Management of Code in a Database
US20110307872A1 (en) * 2010-06-15 2011-12-15 Microsoft Corporation Script debugging
US20130080506A1 (en) * 2011-09-28 2013-03-28 Microsoft Corporation Remotely-hosted interactive client-server session
CN105144088A (zh) * 2012-12-13 2015-12-09 微软技术许可有限责任公司 元数据与源代码的关联以及基于其的应用和服务
US20140380272A1 (en) * 2013-06-21 2014-12-25 Sap Ag Business application inspection and modification
CN106471476A (zh) * 2014-06-25 2017-03-01 微软技术许可有限责任公司 用于对经优化代码的编辑并继续以及增强的经优化调试的技术

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124425A (zh) * 2019-12-31 2020-05-08 黎剑猛 一种监控插件修改方法及系统
CN111124425B (zh) * 2019-12-31 2022-04-26 重庆正大华日软件有限公司 一种监控插件修改方法及系统
CN111580826A (zh) * 2020-04-30 2020-08-25 腾讯科技(深圳)有限公司 机器学习模型的编译优化方法和装置

Also Published As

Publication number Publication date
US11256481B2 (en) 2022-02-22
CN110554861B (zh) 2023-08-04
US20190369968A1 (en) 2019-12-05

Similar Documents

Publication Publication Date Title
US9459988B2 (en) Dynamic code switching in debugging process
CN108351764B (zh) 数据处理方法和系统
US8621435B2 (en) Time debugging
CN110554861B (zh) 具有编译和读取-评估-打印-循环操作的软件开发环境
US5687375A (en) Debugging of High Performance Fortran programs with backup breakpoints
US5905894A (en) Meta-programming methods and apparatus
Wu et al. Grammar‐driven generation of domain‐specific language debuggers
US20040153825A1 (en) Device and method for monitoring a program execution
EP3244306A1 (en) A computer-implemented method for allowing modification of a region of original code
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
CN112306481A (zh) 图形化编程场景的代码展示方法、系统、装置及存储介质
EP3511827A1 (en) Executable program creation device, executable program creation method, and executable program creation program
US8762974B1 (en) Context-sensitive compiler directives
US9342276B1 (en) Optimization tracing
KR20090004210A (ko) 통합 개발 환경을 이용한 소프트웨어 프로그램을 개발하기위한 장치 및 통합 개발 환경을 이용한 소프트웨어프로그램 개발 시스템
US20170206068A1 (en) Program optimization based on directives for intermediate code
US11256479B2 (en) Dynamic updates in an interactive programming environment
US10761820B2 (en) Assisting parallelization of a computer program
US11573787B1 (en) Hot reloading a running application with an unsaved source code change
JP6812861B2 (ja) プログラム作成装置およびプログラム
Mayerhofer et al. xMOF: A Semantics Specification Language for Metamodeling.
Gotti et al. Toward IFVM virtual machine: a model driven IFML interpretation
JPH11110256A (ja) プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体
Randak et al. Extending ATL for Native UML Profile Support: An Experience Report.
Grimm Debugging SCCharts

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
GR01 Patent grant
GR01 Patent grant