我读了几篇文章提到转换器从一种语文到另一个。

我多一点持怀疑态度的利用这类工具。没有人知道或有经验让我们说一些基本Java或vs转换器?只是一个例子来接

http://www.tvobjects.com/products/products.html, 、权利要求是"世界的领导者"或因此,在这方面,然而,如果这样说的:

http://dev.mysql.com/tech-resources/articles/active-grid.html

有的作者指出:

"协商一致的MySQL用户是自动转换的工具,为MS Access不工作。例如,工具翻译现有的应用程序访问要Java,通常的结果,在80%的完整解决方案,其中整理最近20%的工作需要更长的时间比从头开始。"

嗯,我们知道我们需要80%的时间来执行第80%的功能和另一个80%的时间用于其它的20%。...

所以有人试过这样的工具并发现他们是值得的?

有帮助吗?

解决方案

在我看来,因为几乎总是与具有吸引更广泛的StackOverflow人口标签MS-ACCESS问题的情况下,该人回答在这里失踪的关键问题,这是我读作:

有没有能够成功转换Access应用到任何其他平台的任何工具?

和答案是

绝对不

其原因很简单,就是在同一个家庭的工具,使用类似型号为UI对象(例如,VB6)缺乏很多事情Access提供默认(你如何转换Access连续子窗体到VB6,而不是丧失功能?)。和其他平台甚至不共享相同的核心模型,VB6和访问,因此那些有更多的障碍清除。

在MySQL的引用文章是挺有意思的,但它确实混淆来与无能开发与应用来与正在使用的开发工具的问题的问题。糟糕的数据模式是不是固有的访问 - 这是固有的[最]新手数据库用户。但文章似乎认为这问题访问。

和完全俯瞰固定的模式,它大型化到MySQL,并保持在Access,这是迄今为止的问题最简单的方法前端的可能性。

这正是我的人谁只是没有得到期望的访问 - 他们甚至不考虑Access作为前端为一个安全,大容量的服务器数据库引擎是一款卓越的解决问题的办法。

这条甚至没有真正考虑访问应用程序的转换,并有很好的理由。所有我见过的工具,要求转换Access应用程序(到任何平台)或者转换只是数据(在这种情况下,他们不转换应用程序在所有 - !白痴),或盲目地转换前端结构,用1:UI之间1对应对象在访问应用程序和在目标应用

这是行不通的。

访问的应用程序的设计是针对自身和其他平台不支持相同的功能集。因此,必须有接入的翻译功能将在转换后的应用程序的原始功能工作的替代品。这是不是可以以自动的方式来完成,在我看来。

其次,考虑将访问应用程序在Web浏览器中展开时,整个应用模式是不同的,即,从状态到无状态的,所以它不只是一个几个接入功能,是不支持的问题,而是一个完全不同的UI如何与数据进行交互的对象的基本模型。也许一个100%的未绑定应用程序的访问,可以相对容易地被转换成一个基于浏览器的实现,但如何将这些的有多少人?这将意味着,不使用任何子窗体(因为它们不可能是未绑定)访问应用程序,以及一个应用程序(它的工作只与结合形式/控制大部分的)只使用从丰富的事件模型事件屈指可数。总之,100%的未绑定应用程序的访问将是一个针对整个接入的发展模式的战斗。谁以为他们希望建立在访问未绑定的应用程序确实不应该使用在第一位访问,因为获得的整点是绑定的形式/控制!如果您消除,你抛出的多数访问的RAD优于其他开发平台,并获得了回报几乎没有(除了巨大的代码复杂度等)。

要建立在完成相同的任务,访问应用程序的Web浏览器部署的应用程序需要来自该地面行动重新设计应用程序的用户界面和工作流程。没有转换或翻译,将工作,因为成功访问应用程序模型是对立的成功的网络应用模式。

当然,所有这些变化与Access 2010和SharePoint丝氨酸版本2010接入服务。在这种情况下,您可以在Access构建应用程序(使用Web对象)和部署在SharePoint为用户在浏览器中运行它。结果在功能上是100%当量(和90%的视觉上),并运行在所有浏览器(在这里没有具体的IE-依赖性)。

所以,从这个6月,为将Access应用程序部署在浏览器中最便宜的方式很可能是升级到A2010,转换设计中使用的所有网页对象,然后与SharePoint部署。这不是一个简单的项目,如访问的Web对象在比较客户端对象一组有限的功能(没有VBA,比如,让你不得不学习新的宏,其远比旧的更强大,更安全,所以这不是可怕的困难,它可能看起来对于那些熟悉与访问的遗产宏),但它可能比一个全面的重新设计,在网络上部署的工作要少得多。

的另一件事是,它不需要任何重新训练为最终用户(只要该web的对象版本是相同的原始客户端版本),因为这将是在所述访问客户机与在幅材浏览器。

因此,总之,我会说转换是嵌合体,而且几乎总是不值得。我所引用的情绪同意,其实(即使我有很多与该来源的其他意见的问题)。但我也想告诫说,对于转换的欲望往往误入歧途,错过了,不需要大规模更换访问应用程序的从上到下更便宜,更方便,更好的解决方案。很多时候与Jet / ACE不满的数据混淆人们存入认为他们必须更换接入应用也是如此。而且这是真的,很多用户开发的应用程序的访问充满了可怕的,不可维护的妥协和口香糖与脱困线固定在一起。但一个严重设计的访问应用程序可以与数据模式的后端大型化andrevision一起提高。 - 它没有被丢弃

这并不意味着它的容易的 - 这是非常往往不是。当我告诉客户所有的时间,它通常是更容易建立一个新的房子,而不是改造旧的。而我们改造的老房子的原因之一是因为他们有不可替代的特性,我们不希望失去。它的情况是非常往往是一个Access应用程序隐含了大量的业务规则和模型不应该在一个新的应用程序(旧网景难题,步伐乔尔斯波斯基)丢失的工作流程。这些东西可能不是很明显外开发商试图移植到不同的平台,但是对于最终用户来说,如果应用程序产生的结果是关闭的一分钱相比于旧的应用程序,他们会不高兴(可能应,因为这可能意味着该应用的其它方面并不产生可靠的结果,无论是)。

不管怎样,我洋洋洒洒太长,但我的观点是,转换从不工作,除了最微不足道的应用程序(或设计转换,例如,一个100%的未绑定的访问的应用程序,那些)。我所有的修改到位replacment的。

但是,当然,这就是如何使我的生活,即固定接入应用。

其他提示

试过吗?不,实际上建造的(超过一个)语言转换器。

这里有一个I(和同事)建造的 B2灵隐形轰炸机 转换特派团软件编码的遗产语言、愉快,成为维护C码,拥有100%的自动转换。其中一个要求是,我们不能看到的实际来源的代码。没有开玩笑。

你是对的:如果你得到的只是一个介质转化率高(例如,70%至80%),将努力完成转换仍然是非常重要,如果实际上你可以这样做的。我们的目标是95%+并做的更好时告知要更加努力就是这种情况对于B2。唯一的理由的人接受中等高速率转换器是因为他们不能找到(或不愿基金!) 一个更好的,坚持在开始 现在, 和接受这样的事实,将它转换这种方式可能是痛苦的(通常是他们不知道多大),但是实际上减少痛苦于重建它从头开始。(我同意这样的评估:在一般情况下,项目,尽量重新编写大型系统从头通常会失败和转换,使用的媒介高的转换率的工具,不具有尽可能高的失败率。)

有很多的坏转换的工具,在那里,什么东西打在一起的山PERL码做regex上的文字符串或一些YACC基析代码生成的基本上一对一对每个声明在编制单元。前者是建立由的人有一个换掉他们的天空。后者往往是建立由意图良好的工程师没有像样的编译器的背景。

对于一个非常不好的例子,请参阅我的响应,这使问题有关的COBOL迁移: 经验迁移的遗产Cobol/PL1Java, 这正是一个直接的声明翻译...生产的东西,产生了术语"JOBOL".

要获得这种高精度的换算率,需要高质量的分析程序,以及建立高质量的翻译的规则,保留的语义,并优化用目标语言的特性和特殊情况。在本质上,你需要什么数额配置的编译器的技术。我们之所以成功,恕我直言,是我们的 DMS软件的再设计工具包, ,其目的是要做这个工作。(我是建筑师;看看我这样的图标/生物).

很多小心测试有帮助。

DMS"知道"什么的编译器知道有关代码,由于具有一个编译器等前端的语言的兴趣,并具有能力建立Ast、符号表格、控制和数据流动,呼吁图表。它使用太多的编译技术,编译社会在过去的半个世纪的发明, 因为那东西已经被证明是有用的,在翻译!

DMS知道 更多 比大多数编纂者知道,因为它可以读取/分析/变换整个应用程序;大多数编纂者坚持单个编译单位。因此,可以代码翻译的规则,这取决于整个应用而不只是对当前发言。我们经常添加问题,或具体应用知识提高翻译。这往往显示,当转换的特殊特征的语言,或呼吁图书馆,其中一个必须认识到图书馆的电话为特殊的习惯用语,并将其翻译他们呼吁组的目标图书馆和语言结构。

这种能力是用来建立翻译人员(例如,快活的翻译),或特定领域代码的发电机。

更多的时候,我们建立复杂的自动化的软件工程工具,解决具体问题的客户,例如程序的分析工具(死亡代码,重复代码,作风的破码、标准、建筑的抽取,...),质量变化的工具(平台[不语言]迁移,数据层插入,API更换,...)

影响跨语言转换成败的几个问题是语言的相对语义丰富度及其语义模型。

  • 从 C++ 到 C 的翻译应该相对容易,但是从 C 到 C 的翻译 惯用语 C++ 几乎是不可能的,因为它几乎不可能自动将过程性程序转变为面向对象程序。

  • Java 到 C 的转换相对简单,但处理存储管理会很混乱。如果 C 程序执行时髦的指针算术或在整数和不同类型的指针之间进行转换,那么将 C 语言翻译成 Java 几乎是不可能的。

  • 将函数式语言翻译成命令式语言会很容易,尽管结果可能效率低下、不符合习惯。将命令式语言翻译为函数式语言可能超出了现有技术水平......除非你用函数式语言实现命令式语言的解释器。

这意味着有些译者 一定 在以下方面将比其他人更成功:

  • 翻译的完整性和准确性,以及
  • 生成的代码的可读性和可维护性。

我使用的工具转换VB6项目到VB.Net - 你会希望是也许这样的事情比较简单的例子之一。我的经验是,一切都必须进行检查,在精致的细节,以及一半的东西是缺少/错误的。

当然,我会建议迁移用手,或者根据语言你打靶,我会考虑一个完全重写,如果这让你有机会做出重大改进你的代码。

马丁

我只试图免费和基本支付转换器。但主要的问题是,它是非常非常难有信心,转化为完全成功。

一般它们最好在一个时间,在这里检查每段代码用于手转换代码部分。常在我的经验重写,而不是转换被证明是一个更好的选择。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top