CN100461101C - 更新计算机程序的方法及系统 - Google Patents
更新计算机程序的方法及系统 Download PDFInfo
- Publication number
- CN100461101C CN100461101C CNB2007100920583A CN200710092058A CN100461101C CN 100461101 C CN100461101 C CN 100461101C CN B2007100920583 A CNB2007100920583 A CN B2007100920583A CN 200710092058 A CN200710092058 A CN 200710092058A CN 100461101 C CN100461101 C CN 100461101C
- Authority
- CN
- China
- Prior art keywords
- computer program
- version
- program
- master file
- updating
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
Abstract
一种更新计算机程序的方法,用以更新计算机程序的第一版本。于至少一实施例中,该计算机程序的第一版本以第一格式撰写,且该方法包括:接收该计算机程序的更新版本。于其它实施例中,则包括:取得该计算机程序的第一版本、及逻将该计算机程序的更新版本由第二格式转译至该第一格式。于其它实施例中,尚包括:利用至少一卷标,以比较该计算机程序的第一版本及该计算机程序的转译更新后版本。
Description
技术领域
本发明是关于微芯片设计,且特别是有关于于计算环境中,更新计算机程序的方法及系统。
背景技术
于微芯片设计领域中,有许多的程序语言。依据程序设计者不同的要求,不同的程序设计语言有着不同的优势。尽管每个程序语言具有相似的结构以及/或者相似的语法,每一程序语言会具备其特有的细微差异,这些差异是其它语言所没有的。同样地,取决于程序预期的使用方式,每个程序语言拥有其特有的优势,不同的程序设计者,基于各自对某一程序语言的流畅使用,通常会较喜欢某一程序语言更胜于另一种。
一般来说,问题可能发生于,当第一程序设计者想要以一种程序语言撰写程序,而另一程序设计者想要使用不同程序设计语言来浏览(或者执行)该程序。相似的问题也会发生于当程序设计者以第一种程序语言撰写程序,但是希望以不同的程序语言来执行该程序。目前的方法为包括许多由软件程序驱动的格式,但这些方法于程序版本更新以及/或者改变时会有许多缺点。
为了解决这些问题,程序设计者预期程序以不同程序语言撰写或执行时,可以人工转换至所需格式。人工转译该程序至不同程序语言,需要对每一程序语言熟稔流畅,而且,往往需要大量逻辑推理,以将该程序由第一语言改写至第二程序语言。同时,假如第三程序设计者想要该程序转译至第三种程序语言,就须要执行相似的步骤,以满足第三程序设计者。
发明内容
本发明是揭露一种用于计算机程序设计的样本环境的方法。于至少一实施例中,包括一个以第一格式撰写的计算机程序的第一版本。该第一格式为通用格式。于此实施例中,该方法包括接收该计算机程序的更新版本。于其它实施例中,则包括得到该计算机程序的第一版本、及将该计算机程序的更新版本由第二格式转译至该第一格式。该第二格式为专有格式。于其它实施例中,尚包括利用至少一卷标来比较转译后更新的计算机程序及该计算机程序的第一版本。
本发明还揭露一种于计算环境中用以更新计算机程序的方法。于该方法的至少一实施例中,包括提供一种使用者接口,包括使用者选择,用以改变该计算机程序的第一版本,该计算机程序的第一版本是由主文件取得。于其它实施例中,则包括经由该使用者接口,以接收该计算机程序的第二版本,该计算机程序的第二版本包括来自于该计算机程序的第一版本的至少一改变,该计算机程序的第二版本更进一步包括至少一标签。于其它实施例中,尚包括自动更新该主文件,用以反应于该计算机程序的第二版本中的至少一改变。
本发明还揭露一种更新计算机程序的系统,用于计算环境中,该系统包括:使用者接口,被配置以提供使用者选择,以改变计算机程序的第一版本,该计算机程序的第一版本由主文件取得;被配置以由该使用者接口接收该计算机程序的第二版本的装置,该计算机程序的第二版本至少包括该计算机程序的第一版本的改变,而该计算机程序的第二版本更进一步地包括至少一标签;以及被配置以自动更新该主文件的装置,以反应该计算机程序的第二版本的至少一改变。
其它系统、方法、特征、和本发明揭露的优点经由检视下述图表及详细说明,将为本领域技术人员所显而易见。于说明中所包括额外的系统、方法、特征、和优点皆于本发明所揭露的范畴中。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附图示,详细说明如下。
附图说明
图1是显示与多个的输入相关的示范输出的真值表;
图2是显示程序设计者可以示范逻辑码来描述图1真值表的电路图;
图3是显示描述图1真值表的示范硬件描述语言程序;
图4是显示图3的硬件描述语言程序的示范测试流程;
图5是显示依据图1真值表以C++撰写的示范计算机程序;
图6是显示一方块图,利用主文件用于转换至/从任何多个的不同程序语言,例如图3和图5的Verilog程序和C++程序;
图7是显示图6的该主文件可以实现的网络架构;
图8是显示客端装置的示范实施例方块图;
图9是显示产生如图6所示的流程图的示范样本转译软件接口图;
图10是显示用以产生与图9类似的状态机的示范样本转译软件接口图;
图11是显示用以产生与图9相似的C++程序的示范样本转译软件接口图;
图12是显示用以产生与图9相似的硬件描述语言程序程序的示范样本转译软件接口图;
图13是显示与图5类似使用样本格式以产生逻辑表示式的示范样本转译软件接口图;
图14是显示于图6配置中用以产生主文件的示范步骤流程;
图15是显示用以更新如图6所示主文件的示范步骤流程;
图16是显示储存和接收与程序相关的请求的示范步骤流程;以及
图17是显示提供程序设计者用以存取依据图6完成的储存程序的示范步骤流程。
[主要元件标号说明]
706~客端装置; 882~处理器;
884~易失性或非易失性存储器;
890~操作系统控制开关;
892~区域接口; 894~显示接口;
896~系统输入/输出(I/O)接口;
899~转译软件。
具体实施方式
一般而言,工程师和程序设计者常常面对一个可轻易地以计算机程序或者数字逻辑码来解决的问题。当程序设计者尝试解决问题,有时以行为化逻辑方式来描述逻辑运算较容易,其它时候则以架构方式来描述答案较容易。依据手边的问题,程序设计者会期望设计逻辑表示式来决定希望的架构,或期望写计算机程序来解决问题。
图1是显示与多个的输入相关的示范输出的真值表。显示的输出,是依据状态机,或可决定合理解答的其它工具来产生。工程师、程序设计者、或者设计者依据问题和期望的解答来决定希望的输出。如图1所示的真值表,对应逻辑“1”输出的输入,是以101-102行表示之。这些行的输入,可以卡诺图(Karnaugh Map)产生逻辑表示式,来描述图1的真值表输出。
图2是显示程序设计者可以示范逻辑码来描述图1真值表的电路图。如图所示,图1的电路,包括三个与非门102a、102b、及102c。该第一个与非门102a,接收两输入A及B。同样的,该第二个与非门102b,接收两输入C及D。该与非门102a及该与非门102b的结果,经由内部信号S1及S2传送至该与非门102c。该输出结果表示为“RESULT”。值得一提的是,将图2的逻辑表示为一逻辑电路时,图1的真值表可以等式RESULT=AB+CD,或以等式 表示之。同样的,计算机程序、晶体管结构、以及/或者可编程芯片,可以用来产生多个的不同解答,以表示图1的真值表。
图3是显示描述图1真值表的示范硬件描述语言程序。更明确地,非常高速集成电路硬件描述语言(简称VHSIC-HDL或者VHDL)是一种提供设计(再设计)计算机芯片能力的程序语言。如图3所示的硬件描述语言程序,于302定义输入端口“A”、“B”、“C”、和“D”,而于304定义输出端口“RESULT”,就如图1和图2所示。在306部分,此硬件描述语言程序更进一步定义内部信号“S1”和“S2”。S1定义为将信号A以逻辑“及”信号B。同样的,S2定义为将信号C逻辑“及(ANDed)”信号D。RESULT定义为将内部信号S1逻辑“或(ORed)”内部信号S2。值得一提的是,如图2所示的电路,改变逻辑执行可以用于表示期望的输出。当图2所示的电路为与非门时,则图3的硬件描述语言程序使用逻辑运算子“及”和“或”,以描述电路(电路的行为)。
图4是显示图3的硬件描述语言程序的示范测试流程。如图所示,该等输入A、B、C、和D显示不同逻辑状态,如波形402、404、406、和408所示。根据波形402-408,当输入处于特定状态,根据图3的硬件描述语言程序,RESULT具有对应的逻辑状态。更明确地,波形A、B、C、和D所选择的部分以及RESULT 412,对应至图1的列112。值得一提的是,依据图4产生的程序,程序设计者可以使用图5的测试方法仿真以及/或者合成逻辑码。当使用多样的测试数据,于图5中,有关输入A、B、C、和D的测试数据,与于图1中,有关输入A、B、C、和D的测试数据必须相互关联。
图5是显示依据图1真值表以C++撰写的示范计算机程序。如图所示,该等变量A、B、C、D、和RESULT定义为布尔运算子,如行502所示。行504,提供接收该等变量A、B、C、和D的输入方法。行506,定义RESULT为具有A、B、C、和D的逻辑表示式。逻辑表示式,用C++语法定义为A(及)B(或)C(及)D。行508,提供RESULT输出。值得一提的是,如图4和图5所示的程序,虽以不同的程序语言撰写,并且具有不同的实现方式,却具有相同的结果。然而,这些程序的相互沟通(或者缺乏),会使得这些程序间的转译变得困难。
当程序设计者想要以不同形态的程序语言实现图1和图2的逻辑码时,考虑以特定程序语言撰写程序间的转译和相互沟通往往非常困难。于一非限定的实施例中,假定使用者以硬件描述语言撰写程序,通常很难将此程序转译为C++。同样地,当转译完成后,程序设计者会期望任何补充、修正、及更新可以硬件描述语言产生,亦可转换至C++程序。
图6是显示一方块图,利用主文件用于转换至/从任何多个的不同程序语言,例如图3和图5的Verilog程序和C++程序。如图所示,主文件608以通用格式产生,以转译至任何多个的程序语言。如图6所示,该主文件608可被配置以转译程序至/从C++602、硬件描述语言(VHDL)604、Verilog 606、RTL 612、SYSTEMC 610、以及其它程序614。以下更详细地来讨论,该主文件由储存于计算机或网络的使用者接口产生。使用者呼叫该主文件608,以转译至希望的程序语言。被呼叫后,将该主文件608的备份储存为要求的程序语言,假使使用者希望呼叫同一程序语言的该主文件608,则没有转译的需求。此外,在转译该主文件608至如图6所示的程序语言后,程序设计者可以更新、修改、和改善转译后的该主文件608。当更新完成后,使用者可以储存修改的程序。当更新完成后,则使用者可储存修改的程序。该主文件608会依据修订版本来更新。另外,该主文件608任何的转译备份也可依据新的修订版本来更新。
更明确地,于至少一实施例中,使用者以某一特定格式(例如C++)呼叫程序。接着,该使用者更新以及/或者改变其程序。该程序的更新版本可以加上标签,因此该主文件可以更新。通过加上卷标于更新的程序,及更新该主文件,可以达到正确记录正在进行的设计目的。
图7是显示图6的该主文件可以实现的网络架构。如上所述,该主文件608可以储存于任一使用者装置706a、706b、706c、或者其任意组合中。另外,于某些实施例中,是揭露提供该主文件储存于服务器702或者数据存储器704中。于一非限定的实施例中,该主文件608储存于该数据存储器704中,可包括数据库或其它数据储存逻辑装置。操作该使用者设备706a的第一使用者,可由该使用者设备706a提出请求至该服务器702,以存取该主文件608。该服务器702可以从该数据存储器704呼叫该主文件608。根据实施方式,该服务器702的软件可以将该主文件608转译至使用者所要求的程序语言。以这样的方式,转译的程序可以与该使用者装置706a相互沟通。此外,一旦转译该程序,额外备份会被传送至该数据存储器704。该程序的储存备份可以减少该服务器702的重复转译。因此,假使操作该使用者装置706b的使用者,希望观看该使用者于该使用者装置706a具有相同程序语言的该主文件,该服务器702仅需从该数据存储器704呼叫先前的转译程序,然后传送至该使用者装置706b。
于附加的实施例中,可配置使转译逻辑码放置于该使用者装置中,例如使用者装置706c。于此架构下,假使于该使用者装置706c的使用者,希望用硬件描述语言格式观看该主文件608,该使用者可以联系该服务器702。该服务器702会从该数据存储器704获取该主文件608的备份,然后传送至该使用者装置706c。接着,该使用者装置706c会完成期望的转译。于完成观看、执行、或者更新该主文件608的硬件描述语言版本后,该使用者装置706c的逻辑码,会将目前该主文件的硬件描述语言版本传送至该服务器702。该服务器702,会将该主文件的硬件描述语言版本储存至数据存储器704。
于其它实施例中,也可配置以提供该主文件608的所有人控制权,以由其它使用者更新该主文件608。更具体地,于该使用者装置706a的使用者产生程序,并且产生主文件608,则该使用者具有该文件的控制权。假使该主文件608储存于该数据存储器704中,则其它使用者,如操作于该使用者装置706b的使用者,可以任何多个的程序语言存取及观看该主文件608例如Verilog。然而,为了更新或者改变该尚未转译的主文件,于该使用者装置706b的使用者必须得到该主文件608所有人的同意。同意的请求可以通过转译逻辑码轻易地传送至该主文件所有人。假使该主文件所有人同意更新,该Verilog程序可以转换成通用格式,然后储存为该主文件608。此外,该程序的Verilog备份同样地可以保留以及储存于数据存储器中。此外,假使该主文件608已经用不同的程序语言储存,该等备份也可根据认可的最新状况来更新。
于某些实施例中,包括更新现存该主文件608的所有版本,于其它实施例中,则只包括更新由该主文件所有人认可的该主文件608。已转译成各种程序语言的该主文件608的现存备份不会更新,直至被一使用者呼叫。于一非限定的实施例中,假使操作该使用者装置706b的使用者使用C++更新该主文件,而该主文件的所有人认可其更新,该C++程序就会传递至该服务器702。接着于该服务器的逻辑码将更新合并至该主文件608。该C++程序的更新版本会保留,并与该主文件608且储存于该数据存储器704中。此时,现存SYSTEMC版本的主文件将不会更新。假使操作使用者装置706c的使用者决定要用SYSTEMC格式观看该主文件608,现存的SYSTEMC程序会被呼叫,并且和该主文件608比对,然后对应地进行更新。
图8是显示客端装置的示范实施例方块图,该客端装置可被配置以通过通讯网路与如图7的网络沟通。一般而言,就硬件架构而论,如图8所示,该客端装置706包括:处理器882、易失性或非易失性存储器(volatile andnonvolatile memory)884、以及一个或多个输入以及/或者输出(I/O)装置接口896,是通过区域接口892耦接在一起。于一非限定的实施例中,该区域接口892可以是一或多个总线,或者其它有线或无线的连接。该区域接口892会有额外的元件,例如:控制器、缓冲器(快取存储器)、驱动器、中继器(repeaters)、和接收器,用以沟通,此处为了简化而省略。再者,该区域接口892可包括地址、控制、以及/或者数据连接,用以允许于上述元件间适当的传递。该处理器882,为硬件装置,用以执行软件,特别是储存于易失性或非易失性存储器884的软件。
该处理器882可为客制或者商业上可取得的处理器、中央处理单元(CPU)、与该客端装置706结合的数个处理器间的辅助处理器、半导体微处理器(为微芯片或芯片组的型式)、巨指令处理器、或者概括来说,任何可执行软件指令的装置。商业上可取得的合适微处理器举例如下: PA-RISC系列的微处理器、 80x86或者系列的微处理器、微处理器、Sun 微处理器、或者 68xxx系列的微处理器。
该易失性或非易失性存储器884,包括任一易失性存储器元件或者其组合(例如,随机存取存储器(RAM,例如:动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)等等))和非易失性存储器(例如,只读存储器(ROM)、硬盘、磁带、光驱等等)。此外,该存储器814可为电、磁、光、以及/或者其它种类的储存媒介。值得注意的是,该易失性或非易失性存储器884可具有分布式架构,其中,许多元件彼此距离很远,但可以被该处理器882存取。
该易失性或非易失性存储器884的软件,包括一或多个独立的程序,每一程序包括可执行命令的顺序列,用以完成逻辑工作。于图8的非限定实施例中,该易失性或非易失性存储器884的软件,包括转译客端软件899,以及操作系统890。下列一些可取得的合适商业操作系统的例子:(a)的窗口操作系统;(b)的网络操作系统;(c)的麦金塔操作系统;(d)许多厂商贩售的UNIX操作系统,例如、Sun 、以及AT&;(e)由网络可取得的免费软件LINUX操作系统;(f)WindRiver 的实时操作系统;或者(g)以装置为基础的操作系统,例如:应用于手持式计算机或者个人数字助理(PDAs)(例如, Computing的、和的Windows )。操作系统必须控制其它计算机程序的执行、和提供调度、输入输出控制、文件及数据管理、存储器管理、以及通讯管理及相关服务。
系统元件可以软件体现,亦可建构为原始程序、可执行程序(对象码)、手稿程序(Script)、或者其它由执行指令构成集合的实体。当建构为原始程序时,该程序通过编译器、组译器、解译器等转译,可包括或不包括于该易失性或非易失性存储器884中,以正确地操作与操作系统连接。
耦接系统输入/输出接口896的输入/输出装置可包括输入装置,举例但非用以限定,如键盘、鼠标、扫描器、和麦克风等等。再者,该输入/输出装置可包括输出装置,举例但非用以限定,如打印机和显示器等等。最后,该输入/输出装置可更进一步包括输入与输出的传递装置,举例但非用以限定,如调制器/解调器(调制解调器;用以存取另一装置、系统、或者网络)、射频装置(RF)、或者其它无线电收发机、电话接口、桥接器、以及路由器等等。
假使该客端装置706为个人计算机、工作站等,则该易失性或非易失性存储器884中的软件,可更进一步包括基本输入输出系统(BIOS)(为了简化而省略)。该基本输入输出系统为必要软件子程序的集合,用以初使化以及于启动时测试硬件、启动操作系统,和协助硬件装置间的数据传输。该基本输入输出系统储存于只读存储器中,以于该客端装置706启动后执行。
当该客端装置706于工作中时,该处理器882被配置,以执行储存于该易失性或非易失性存储器884中的软件、以于该易失性或非易失性存储器884间传送数据、以及根据该软件控制该客端装置706的操作。于存储器中的全部或一部分软件,可通过该处理器882被读取,或可暂存于该处理器882中,然后被执行。
值得一提的是,上述图8的叙述中,有关客端装置706的元件,亦可以服务器表示某些或者该等全部元件,如图7的服务器702。更具体地,当该转译软件899(和主文件)存于该客端装置706的易失性或非易失性存储器884时,于其它实施例中,该转译软件899可存于该服务器702或于数据存储器704中。因此,有关图8说明的元件,根据所需的配置,可以适用于客端装置706、或者服务器702、或者同时两者。
图9是显示产生如图6所示的流程图的示范样本转译软件接口图。如此非限定的实施例所示,显示窗口970,包括多个的栏标976,以使程序设计者可以用任一的多个的程序语言撰写程序。更明确地说,该程序设计者通过流程图、通过状态机、通过C++、通过硬件描述语言、以及/或者通过格式样本,以撰写程序。如任一本领域技术人员所了解,其它语言和逻辑格式,如Verilog、SYSTEMC、和其它亦可包括于此列表中。
如窗口972所示,程序设计者可用多个的流程图形状产生逻辑表示式。于此非限定实施例中,显示:方块“处理(PROCESS)”、方块“决定(DECISION)”、方块“输入(INPUT)”、方块“启动/结束(START/END)”、方块“流程(FLOW)”、及方块“是(YES)”。从窗口972取得的方块,程序设计者可于窗口974产生逻辑表示式。该逻辑表示式包括窗口972的任意项目,以产生所需的功能。
根据配置,一旦程序设计者依据图9产生所需的流程图,该程序设计者可储存该流程图。储存流程图后,该转译软件899会从该储存流程图产生主文件608。该主文件608可以通用格式撰写,亦可以使用现存的格式。于一非限定的实施例中,程序设计者产生如窗口974所示的流程图后,该使用者可以执行储存功能。该转译软件899可将流程图储存于该易失性或非易失性存储器884。此外,该转译软件899可以通用格式产生主文件608。该主文件608可以是或不需为使用者所认识的格式。该主文件608,可为简单数据配置,用以容易地转译至各种程序语言。
于其它非限定的实施例中,与其以通用格式产生主文件608,该转译软件899将该流程图转译至既定格式,如硬件描述语言。接着,该转译软件899可将该流程图和硬件描述语言一起储存至该易失性或非易失性存储器884。而于其它实施例中,则允许产生的程序,可以目前的状态储存,不需以既定格式产生第二文件。当使用者以不同程序格式请求该程序时,才转译该流程图。
图10是显示用以产生与图9类似的状态机的示范样本转译软件接口图。如图所示,窗口1070,包括栏标1076,并且选择栏标“状态机(STATEMACHINE)”。与图9相似,窗口1076的左边包括窗口1072,其具有各式各样的状态机元件。程序设计者使用窗口1072的图形,于窗口1074中产生状态机。如图9所详述,该状态机完成后,该转译软件会依据该状态机储存主文件608,用以作为之后转译至任一多个程序语言。此外,亦可取得该状态机的仿真逻辑码,以确定所产生的状态机的正确运作。
图11是显示用以产生与图9相似的C++程序的示范样本转译软件接口图。如窗口1170所示,栏标1176,包括选取的C++栏标。选取C++栏标后,会提供程序设计者文字区域和编译器,用来产生和执行C++程序。产生该C++程序后,该程序设计者储存该程序为主文件608。然后该程序设计者要求控制该主文件608,以同意该程序的任何变动。此外,该主文件608连同该程序的原始C++版本,会储存至该易失性或非易失性存储器884。
图12是显示用以产生与图9相似的硬件描述语言程序程序的示范样本转译软件接口图。如图所示,选取硬件描述语言程序栏标1276后,图4的该硬件描述语言程序显示于窗口1270。如上述关于图11的说明,窗口1270包括文字区域和仿真器,用以产生和仿真硬件描述语言程序。如上所述,一旦产生硬件描述语言程序,该程序设计者可将该硬件描述语言程序储存成主文件608,并且指定他或她自己成为主文件的所有人。根据特定的配置,该主文件608(连同该程序的硬件描述语言版本)会储存于服务器702,以便其它使用人可以存取该主文件608。当使用者希望以特定的程序语言观看该主文件608时,该转译软件会确认于该程序语言中是否存在该主文件608的更新版本。假使存在,该服务器会将该主文件608的版本传递至发出请求的使用者。假使所需程序语言的该主文件608更新版本并不存在,该转译软件接着会产生此文件,然后将新产生程序传递至发出请求的使用者。
图13是显示与图5类似使用样本格式以产生逻辑表示式的示范样本转译软件接口图。如图窗口1370所示,选择格式栏标1376以提供程序设计者多个选择来产生逻辑表示式。值得注意的是,该等格式提供检查盒和其它使用者选择项目,选择所需逻辑表示式的各种功能,有助于程序(或芯片结构)的产生。此外,该等格式窗口也提供文字区域,用以输入与所需程序结构相关的逻辑表示式。
依据特定的配置,该格式窗口包括程序设计者可选取的“程序语言”检查盒。该程序设计者可以依据选取的程序语言,输入所需的逻辑表示式。其它配置则可以通过样本格式,以提供程序设计者所需的程序功能,而不须程序设计者产生文字程序。该样本格式包括一系列的选择,以便程序设计者可产生所需的逻辑表示式。
一旦样本格式选定后,程序设计者会以目前格式储存已产生的逻辑表示式,并且储存成如上述的主文件608。如上所述,该程序设计者可指定所有人状态,且将该主文件608储存于易失性或非易失性存储器884。
图14是显示于图6配置中用以产生主文件的示范步骤流程。于图14中,该第一步骤用以接收程序设计者的程序(区块1430)。如上所述,该程序可以第一程序语言撰写。于此非限定实施例的下一步骤中,将该第一程序转译成通用格式(区块1432)。所产生的第二程序,包括以第二语言转译的该第一程序转译格式。该第二语言可以通用格式撰写,然而这并非必要条件。当该第二程序产生时,该第二程序可以通用格式储存(区块1434)。于某些实施例中,上述步骤可以通过如图7的服务器来完成。于使用者装置706的程序设计者可产生程序,然后传送至服务器702。然而于某些实施例中,该使用者装置706可以完成上述各步骤。
图15是显示用以更新如图6所示主文件的示范步骤流程。参考如图14的说明,使用者装置706或者服务器702执行该等步骤。图15的第一步骤为接收使用程序语言格式的更新程序(区块1530)。该程序语言可包括任何程序语言,例如,但非用以限定,如C++、硬件描述语言、Verilog、SYSTEMC、RTL、流程图、状态机、和样本格式等等。于一非限定的实施例中,存取主文件的程序设计者,可要求该主文件的程序语言兼容于硬件描述语言。该程序设计者接收该程序后,该程序设计者改变该程序的硬件描述语言版本。该程序的硬件描述语言更新版本会被贴上卷标,以标记改变的位置。区块1530包括从程序设计者接收更新的硬件描述语言版本。然后,转译软件产生主文件,该主文件包括已更新程序的转译版本(区块1532)。该更新程序,包括至少一卷标,以更清楚定义改变之处,也因此保留该程序正在处理的内容。已接收程序的已转译版本可以通用格式撰写,然而这并非必要条件。一旦该主文件产生(例如以通用格式),随即比对该主文件608的储存版本(区块1534)。假使该主文件608的储存版本,与所产生的主文件(区块1535)之间具有实质差异,该转译软件899会提醒该主文件608的所有人接受这些改变(区块1538)。假使这两份文件之间并无实质差异,则该已储存的主文件608维持不变。
根据所需的配置,于区块1538中,假使该主文件所有人并没有接受改变,则该做出改变的程序设计者,可以选择产生与已储存主文件之间有所区别的新主文件。于其它实施例中,包括选择,以储存该改变的程序,成为该主文件的衍生。此架构可以维持该主文件的连接,仍保留该主文件及该新产生程序两者的功能。
图16是显示储存和接收与程序相关的请求的示范步骤流程,该程序是依据图6的配置而产生。如图所示,于图16的流程中,第一步骤是接收程序设计者的程序(区块1630)。如上所述,程序设计者可使用程序语言,如C++、硬件描述程序等,以产生程序。当该程序完成时,该程序设计者将该程序传送至远程服务器、至该使用者装置、或两者。一旦从程序设计者接收到程序,便储存该程序(区块1632)。值得注意的是,虽未于此非限定实施例中讨论,但该程序设计者,亦执行如上所述指定“所有人”状态的步骤。
一旦储存该程序后,存取该储存程序的请求会被允许(区块1634)。该请求来自于某一程序设计者希望观看、执行、以及/或者更新该储存程序。接着,判断该请求程序的格式是否与该程序产生或储存的格式相同(区块1636)。于一非限定的实施例中,第一程序设计者产生C++程序,并且储存于服务器。为了响应第二程序设计者期望用SYSTEMC存取该程序,该流程图需判断该程序是否用SYSTEMC产生或储存。假使该程序以请求格式储存,便将该程序传送至发出请求的程序设计者(区块1638)。然而,假使该程序并非以请求格式储存,产生新程序,该新程序包括该程序的转译后版本(区块1640)。然后将该新程序以请求格式传送至发出请求的程序设计者(区块1642)。
值得一提的是,于此非限定实施例中,该原始产生程序并非第一个以通用格式储存的主文件608。相反地,该程序以产生时的格式储存,并且不会产生通用格式的主文件608,直到提出请求者希望以不同于已储存的程序语言观看该程序(区块1640)。即使此时,以通用格式产生主文件608并非必要。于某些实施例中,区块1640会使已用原始产生文件储存的主文件608更容易产生。此外,该程序的版本是依据请求的程序语言而产生。于此情况下,可储存该程序的所有版本以供未来使用。
于其它实施例中,当程序设计者,以不同于储存的程序语言请求程序时,该储存的程序只需要转译至请求的格式。于这些实施例中,毋需产生第一格式(例如通用格式)的主文件。该原始产生的文件可被视为该主文件608,因此,减少不必要的转译。
图17是显示提供程序设计者用以存取依据图6完成的储存程序的示范步骤流程。如图所示,于图17的流程中,该第一步骤为接收请求,使用程序语言格式(区块1730)观看程序。如上所述,第一程序设计者以程序语言产生程序(或者以通用格式),并且储存(以该程序语言格式、该通用格式、或者两者)。区块1730的步骤,是接收来自第二程序设计者(或其它使用者)的对该程序的请求。该第二程序设计者,可以提出与现有储存程序不同的程序语言来请求程序,但此非必要条件。
接者,判断该请求的程序是否以请求的格式储存(区块1732)。假使该程序以请求的格式储存,该流程存取该请求程序的储存备份(区块1738)。然而,假使该请求程序并非以请求的格式储存,将该主文件608(以通用格式撰写)转换至请求的程序语言(区块1734)。然后,储存该程序新产生的版本(区块1736)。一旦取得该程序的请求版本,将该程序传送至发出请求的程序设计者(区块1740)。
值得注意的是,文中所列的任何程序,包括用以实现逻辑化函数的可执行指令的顺序列,并且以任何计算机可判读媒体来实现,用以使用或者连接至指令执行系统、设备、或者装置,例如:计算机系统、处理器控制系统、或者其它可以由该指令执行系统、设备、或者装置读取指令,并且执行指令的系统。于此文件内容中,“计算机可判读媒体”可以是任何方法,具有可以容纳、储存、传递、传播、或者运送该程序,以使用或者连接至该指令执行系统、设备、或者装置。于一非限定实施例中,该计算机可判读媒体可以是电子式的、具有磁性的、光学的、电磁式的、红外线的、或者半导体系统、设备、以及装置。该计算机可判读媒体的更明确实施例(非详尽的列表)包括具有一或多条电线的电性连接(电子式的)、可携式计算机磁盘(具有磁性的)、随机存取存储器(RAM)(电子式的)、只读存储器(ROM)(电子式的)、可抹除可编程只读存储器(EPROM或者Flash memory)(电子式的)、光纤(光学的)、以及可携式光盘只读存储器(CDROM)(光学的)。另外,本发明实施例的范围,包括以硬件或软件配置的媒体来描述逻辑码的功能。
附带一提,此处的流程图表示该架构、功能、以及软件之一可能实施方式的操作。就此而言,每一区块可用以表示程序的模块、片段、和一部分,包括一或多个为实现特定逻辑功能的可执行指令集。值得注意的是,于若干实施例中,区块中所提到的功能有可能发生失序。例如,所显示的两连续区块实际上可同时执行,或者有时该等区块会依据相关的功能以反次序执行。
值得注意的是,于此所列的任何程序,包括用以实现逻辑化函数的可执行指令的顺序列,并且以任何计算机可判读媒体来实现,用以使用或者连接至指令执行系统、设备、或者装置,例如:计算机系统,处理器控制系统、或者其它可以由该指令执行系统、设备、或者装置来读取指令,并且执行指令的系统。于此文件内容中,“计算机可判读媒体”可以是任何方法,具有可以容纳、储存、传递、传播、或者运送该程序,以使用或者连接至该指令执行系统、设备、或者装置。
特别强调的是,上述的实施例仅是实现方法的可能范例,提出仅为了对本发明的实施法则有更清楚的认识。上述实施例的差异及变动并不违背本发明的法则和其精神。所有此类的变动和差异都包含于本发明的范围内。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。
Claims (21)
1.一种更新计算机程序的方法,用以更新计算机程序的第一版本,其中,该计算机程序的第一版本以第一格式撰写,该方法包含:
接收该计算机程序以第二格式转译后的第二版本,其中,该计算机程序的第二版本,至少包括来自于该计算机程序的第一版本的修改,其中,该计算机程序的第二版本包括至少一标签,以及该第二格式不同于该第一格式;
接收该计算机程序的第一版本;
利用该至少一标签,来比较该计算机程序的第一版本和该计算机程序转译后的第二版本;以及
更新该程序的第一版本,以反应该计算机程序的第一版本与该计算机程序转译后的第二版本间的至少一差异。
2.根据权利要求1所述的更新计算机程序的方法,还包含:
将该计算机程序的第二版本由第二格式转译至第一格式。
3.根据权利要求2所述的更新计算机程序的方法,其中该第一格式为通用格式,该第二格式为专有格式。
4.根据权利要求1所述的更新计算机程序的方法,更进一步包括:
储存至少下列之一:该计算机程序的第一版本、第一格式的该计算机程序的第二版本。
5.根据权利要求1所述的更新计算机程序的方法,更进一步包括:
以不同格式储存该计算机程序的第二版本,其中,该不同格式与第一格式不同,并且该不同格式与第二格式不同。
6.根据权利要求1所述的更新计算机程序的方法,还包括:
将授权请求传送至储存该计算机程序的所有人。
7.根据权利要求6所述的更新计算机程序的方法,还包括:
接收授权,用以更新储存的该计算机程序。
8.一种更新计算机程序的方法,用于计算环境中,该方法包括:
提供使用者接口,使用者通过该接口进行选择,以改变计算机程序的第一版本,该计算机程序的第一版本由主文件取得;
经由该使用者接口接收该计算机程序的第二版本,该计算机程序的第二版本,包括来自于该计算机程序的第一版本的至少一改变,该计算机程序的第二版本还包括至少一标签;以及
自动更新该主文件,以反应该计算机程序的第二版本的至少一改变。
9.根据权利要求8所述的更新计算机程序的方法,更进一步地包括储存该计算机程序的第二版本。
10.根据权利要求8所述的更新计算机程序的方法,更包括储存该主文件的更新版本。
11.根据权利要求8所述的更新计算机程序的方法,其中,该主文件与第一格式相关。
12.根据权利要求11所述的更新计算机程序的方法,其中,该第一格式包括至少下列之一:Verilog、硬件描述语言、C++、RTL、SYSTEMC。
13.根据权利要求8所述的更新计算机程序的方法,其中,该使用者接口进一步被配置以显示至少下列之一:该计算机程序的第一版本、该计算机程序的第二版本、该主文件。
14.根据权利要求8所述的更新计算机程序的方法,更进一步包括:利用至少一标签,以判断于该计算机程序的第二版本中的至少一改变。
15.一种更新计算机程序的系统,用于计算环境中,该系统包括:
使用者接口,使用者通过该使用者接口进行选择,以改变计算机程序的第一版本,该计算机程序的第一版本由主文件取得;
被配置以由该使用者接口接收该计算机程序的第二版本的装置,该计算机程序的第二版本至少包括该计算机程序的第一版本的改变,而该计算机程序的第二版本更进一步地包括至少一标签;以及
被配置以自动更新该主文件,以反应该计算机程序的第二版本的至少一改变的装置。
16.根据权利要求15所述的更新计算机程序的系统,进一步地包括:被配置来储存该计算机程序的第二版本的装置。
17.根据权利要求15所述的更新计算机程序的系统,更进一步包括:被配置来储存该主文件的更新版本的装置。
18.根据权利要求15所述的更新计算机程序的系统,该主文件与第一格式相关。
19.根据权利要求18所述的更新计算机程序的系统,该第一格式至少与下列之一相关:Verilog、硬件描述语言、C++、RTL、SYSTEMC。
20.根据权利要求15所述的更新计算机程序的系统,其中,该使用者接口更进一步被配置以显示至少下列之一:该计算机程序的第一版本、该计算机程序的第二版本、该主文件。
21.根据权利要求15所述的更新计算机程序的系统,还包括:被配置以利用至少一卷标判断于该计算机程序的第二版本中的至少一改变的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/530,043 | 2006-09-08 | ||
US11/530,043 US8079027B2 (en) | 2006-09-08 | 2006-09-08 | Programming language translation systems and methods |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101025688A CN101025688A (zh) | 2007-08-29 |
CN100461101C true CN100461101C (zh) | 2009-02-11 |
Family
ID=38744017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100920583A Active CN100461101C (zh) | 2006-09-08 | 2007-04-04 | 更新计算机程序的方法及系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8079027B2 (zh) |
CN (1) | CN100461101C (zh) |
TW (1) | TWI341993B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008110411A1 (en) * | 2007-03-14 | 2008-09-18 | International Business Machines Corporation | Automatic formatting of computer program source code |
US8572589B2 (en) * | 2009-06-30 | 2013-10-29 | Agilent Technologies, Inc. | Programming language translator and enabling translation of machine-centric commands for controlling instrument |
DE112010005023B4 (de) * | 2009-12-28 | 2023-11-30 | Mitsubishi Electric Corporation | Verwendung einer programmerstellungsunterstützungsvorrichtung zum erstellen von programmen für zu steuernde anlagen |
CN103198011B (zh) * | 2012-01-09 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 一种探测java程序文件扰动的方法及装置 |
TWI484413B (zh) * | 2012-04-03 | 2015-05-11 | Mstar Semiconductor Inc | 基於功能性的程式比較方法 |
US10456686B2 (en) | 2012-09-05 | 2019-10-29 | Zynga Inc. | Methods and systems for adaptive tuning of game events |
US10561944B2 (en) | 2014-09-10 | 2020-02-18 | Zynga Inc. | Adjusting object adaptive modification or game level difficulty and physical gestures through level definition files |
US9675889B2 (en) | 2014-09-10 | 2017-06-13 | Zynga Inc. | Systems and methods for determining game level attributes based on player skill level prior to game play in the level |
US10089288B2 (en) * | 2015-12-04 | 2018-10-02 | Ca, Inc. | Annotations management for electronic documents handling |
CN110096268A (zh) * | 2019-04-26 | 2019-08-06 | 北京知感科技有限公司 | 将vr/ar/mr装置的可执行程序活态化二次编辑的系统及方法 |
US11334591B2 (en) * | 2019-08-14 | 2022-05-17 | Palantir Technologies Inc. | Multi-language object cache |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5333315A (en) * | 1991-06-27 | 1994-07-26 | Digital Equipment Corporation | System of device independent file directories using a tag between the directories and file descriptors that migrate with the files |
JPH11146365A (ja) * | 1997-11-05 | 1999-05-28 | Matsushita Electric Ind Co Ltd | データ放送受信装置 |
EP1139231A1 (en) * | 2000-03-31 | 2001-10-04 | Fujitsu Limited | Document processing apparatus and method |
US20030056203A1 (en) * | 2001-07-24 | 2003-03-20 | Micco John T. | Function call translation |
US20060129520A1 (en) * | 2004-12-10 | 2006-06-15 | Hon Hai Precision Industry Co., Ltd. | System and method for automatically updating a program in a computer |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5768564A (en) * | 1994-10-07 | 1998-06-16 | Tandem Computers Incorporated | Method and apparatus for translating source code from one high-level computer language to another |
JPH11259284A (ja) * | 1998-03-12 | 1999-09-24 | Fujitsu Ltd | オンラインプログラム更新システム及びプログラム更新用プログラムを記録したコンピュータ読み取り可能な記録媒体 |
US6442516B1 (en) * | 1999-01-29 | 2002-08-27 | International Business Machines Corporation | Software tool to perform concurrent national language translation builds |
US7165243B1 (en) * | 1999-06-25 | 2007-01-16 | Sun Microsystems, Inc. | Multi-lingual tag extension mechanism |
US6931623B2 (en) * | 1999-08-30 | 2005-08-16 | Touchnet Information Systems, Inc. | Method of accessing data and logic on existing systems through dynamic construction of software components |
US6748584B1 (en) * | 1999-12-29 | 2004-06-08 | Veritas Operating Corporation | Method for determining the degree to which changed code has been exercised |
JP2001331324A (ja) * | 2000-05-19 | 2001-11-30 | Sony Corp | 情報処理方法および装置、ならびに、記録媒体 |
US6836883B1 (en) * | 2000-06-21 | 2004-12-28 | Microsoft Corporation | Method and system for compiling multiple languages |
US6792580B2 (en) * | 2001-01-31 | 2004-09-14 | Kabushiki Kaisha Toshiba | Method and computer program product for software/hardware language model conversion |
JP2002244927A (ja) * | 2001-02-16 | 2002-08-30 | Matsushita Electric Ind Co Ltd | データ配布システム |
US7516441B2 (en) * | 2001-06-04 | 2009-04-07 | Microsoft Corporation | Method and system for program editing and debugging in a common language runtime environment |
US20030088857A1 (en) * | 2001-11-06 | 2003-05-08 | Alexander Balva | Method for facilitating application development |
US20030172368A1 (en) * | 2001-12-26 | 2003-09-11 | Elizabeth Alumbaugh | System and method for autonomously generating heterogeneous data source interoperability bridges based on semantic modeling derived from self adapting ontology |
JP2004038876A (ja) * | 2002-07-08 | 2004-02-05 | Hitachi Ltd | プログラム等のデータ形式変換方法及び装置、並びにそのデータ形式変換装置を用いたコントローラ管理システム |
JP4100156B2 (ja) * | 2002-12-06 | 2008-06-11 | 株式会社日立製作所 | データ変換システム |
WO2004088549A2 (de) * | 2003-04-01 | 2004-10-14 | Siemens Aktiengesellschaft | Verfahren und anordnung zur veränderung von software oder quellcode |
US7322029B2 (en) * | 2003-05-08 | 2008-01-22 | American Megatrends, Inc. | Method and system for recovering program code in a computer system |
US7707566B2 (en) * | 2003-06-26 | 2010-04-27 | Microsoft Corporation | Software development infrastructure |
US7155703B2 (en) * | 2003-07-18 | 2006-12-26 | Microsoft Corporation | Virtual method protection |
US20050132357A1 (en) * | 2003-12-16 | 2005-06-16 | Microsoft Corporation | Ensuring that a software update may be installed or run only on a specific device or class of devices |
US7814415B2 (en) * | 2004-11-19 | 2010-10-12 | Red Hat, Inc. | Bytecode localization engine and instructions |
US7844958B2 (en) * | 2005-03-11 | 2010-11-30 | Aptana, Inc. | System and method for creating target byte code |
US20060271920A1 (en) * | 2005-05-24 | 2006-11-30 | Wael Abouelsaadat | Multilingual compiler system and method |
US7752651B2 (en) * | 2005-09-26 | 2010-07-06 | Bea Systems Inc. | System and method for propagating security information in a web portal system |
US7774746B2 (en) * | 2006-04-19 | 2010-08-10 | Apple, Inc. | Generating a format translator |
-
2006
- 2006-09-08 US US11/530,043 patent/US8079027B2/en active Active
-
2007
- 2007-03-19 TW TW096109302A patent/TWI341993B/zh active
- 2007-04-04 CN CNB2007100920583A patent/CN100461101C/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5333315A (en) * | 1991-06-27 | 1994-07-26 | Digital Equipment Corporation | System of device independent file directories using a tag between the directories and file descriptors that migrate with the files |
JPH11146365A (ja) * | 1997-11-05 | 1999-05-28 | Matsushita Electric Ind Co Ltd | データ放送受信装置 |
EP1139231A1 (en) * | 2000-03-31 | 2001-10-04 | Fujitsu Limited | Document processing apparatus and method |
US20030056203A1 (en) * | 2001-07-24 | 2003-03-20 | Micco John T. | Function call translation |
US20060129520A1 (en) * | 2004-12-10 | 2006-06-15 | Hon Hai Precision Industry Co., Ltd. | System and method for automatically updating a program in a computer |
Also Published As
Publication number | Publication date |
---|---|
TW200813832A (en) | 2008-03-16 |
TWI341993B (en) | 2011-05-11 |
US20080127163A1 (en) | 2008-05-29 |
CN101025688A (zh) | 2007-08-29 |
US8079027B2 (en) | 2011-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100461101C (zh) | 更新计算机程序的方法及系统 | |
Spivey | An introduction to Z and formal specifications | |
US6651240B1 (en) | Object-oriented software development support apparatus and development support method | |
CN101542457B (zh) | 事务变换 | |
US6611946B1 (en) | Method and system for automatic generation of DRC rules with just in time definition of derived layers | |
US5642504A (en) | Method of testing an application on a server which accesses a database | |
US7231627B2 (en) | Merging a hardware design language source file with a separate assertion file | |
US20050039114A1 (en) | Spreadsheet to SQL translation | |
CN102902839A (zh) | 管理集成电路设计的装置和方法 | |
US9400836B2 (en) | External evaluation processes | |
KR102220932B1 (ko) | 다양한 챗봇과 rpa 및 레거시 연계를 지원하는 시스템 및 방법 | |
US20220179918A1 (en) | Just-In-Time Front End Template Generation Using Logical Document Object Models | |
Cheung et al. | DIY bootstrapping: Getting the nonparametric bootstrap confidence interval in SPSS for any statistics or function of statistics (when this bootstrapping is appropriate) | |
WO2021041052A1 (en) | Conversational design bot for system design | |
CN110222047A (zh) | 一种动态表单生成方法和装置 | |
CN116450107A (zh) | 低代码平台二次开发软件的方法、装置、电子设备 | |
CN113822002B (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
JP4820654B2 (ja) | サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ | |
Ponsard et al. | Assessment of EMF Model to Text Generation Strategies and Libraries in an Industrial Context. | |
KR101798867B1 (ko) | 업무 시스템 개발 방법 및 장치 | |
Ellis | An information engineering approach to unified object-oriented design and analysis | |
CN115639985A (zh) | 一种数据库操作方法、系统、装置和可读存储介质 | |
Weaver | Semiparametric methods for continuous outcome regression models with covariate data from an outcome-dependent subsample | |
CN116331232A (zh) | 车辆控制器的代码集成方法、装置、设备、介质和产品 | |
Csuhaj-Varjú et al. | Variants of distributed reaction systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |