我一直在阅读有关Cobol代码仍在生产中的数量。并且它没有被更新为现代语言的主要原因是它需要太长时间/成本太多。
我的问题是:如果有一个工具将Cobol转换为Java,那么任何组织都会发现它有用吗?或者他们宁愿继续保持他们已知的工作吗?
答案 0 :(得分:7)
目前,大量的COBOL代码(我估计超过90%)是不可测试的。
没有人知道真正的作用。
他们知道 - 最低限度 - 它在大多数时间完成了预期的工作。如果没有,那就知道错误了。
更糟糕的是,COBOL的某些百分比只是COBOL其他部分中的错误的解决方法。
因此,如果你对它进行任何审查,你会发现你不知道到底发生了什么。您无法创建测试用例。
事实上,你会发现大多数组织甚至不能就什么是“正确”达成一致。但是他们愿意在可用的东西上妥协。
检查核心业务处理的成本和风险是不可想象的。
答案 1 :(得分:4)
总会找到将一种语言转换为另一种语言的工具 - 它们通常用“编译器”这个术语来表示。
编译器总是存在一个缺点,即必须执行将语言X中的代码转换为语言Y的任务,尤其是当所述代码由人编写时。这个缺点恰好是翻译过程中可读性经常丢失的事实。无法保证任何程序员都能理解从COBOL编译到Java的代码,因此实际上翻译的成本实际上已经增加。事实上,在这样的背景下很难定义可读性。
缺乏可读性和可理解性意味着缺乏对已翻译代码的运行时行为的了解。此外,无法保证人们完全理解原始代码;他们确实理解它的各个部分。
答案 2 :(得分:4)
任何转换工具都会有与之相关的风险,并且生成的代码必须进行批次测试。
鉴于每天都有很多这样的系统用于经营业务,很多都依赖于持续运营。所以它不仅仅是“多长时间”或“多么昂贵”,而且我们可以信任它100%相同的工作。
答案 3 :(得分:3)
可能两者兼而有之。有些公司使用自动和手动技术提供转换工具和服务。
然而,许多公司遵循“没有破产”的理念,这可能与任何事情一样明智。特别是因为许多转换导致尝试“改进”现有系统或尝试引入现代软件设计/构造哲学并导致混乱。
答案 4 :(得分:3)
许多用Cobol编写的系统都有许多交易。它们在运行的大型机平台上运行良好。仅仅为了改变而改变它们将是危险的。
答案 5 :(得分:2)
我认为有些组织可能会发现它很有用,特别是与遗留代码接口/设计相比,将代码转换为Java(或其他语言)变得更加昂贵和成问题的组织
while ( (CostToPortToJava > CostOfNotPortingOverTime++) && DoesLegacyCodeStillWork() )
{
StayWithLegacyCode();
}
PortCodeToJava();
答案 6 :(得分:1)
这里有几个因素:
这将花费很长时间 - 每隔一段时间,其中一个程序的一部分停止工作或无法做某事,它就会被取代。在其中一个项目中,我没有看到很多高级管理人员对所有FUD感到厌烦,而且花在回报上的时间表相当长。
答案 7 :(得分:1)
COBOL实际上是一种极好的DSL(域专用语言)。
它的域是嵌入(主要)后端应用程序中的业务规则。
找另一种语言......
....您将拥有后端业务应用程序的杀手级应用程序。
答案 8 :(得分:0)
除了语言差异之外,要了解旧COBOL应用程序的一点是,在这些应用程序中构建的大量数据结构不符合任何后来的RDBMS结构,所以你真的要谈论重新思考很多底层架构和设计,不仅仅是改变语言语法,而且一旦它达到真实世界的负载,替换它会产生很大的性能风险,即使它可以充分进行QA。
最重要的是,在现代语言中使用新功能比重写它更经济。只要情况继续如此,COBOL将继续存在。
答案 9 :(得分:0)
Cobol具有 fast 用于移动数据的优势,这就是那种应用程序倾向于做很多事情。这些机器也是为I / O而设计的,而不是处理速度。因此,任何对另一种语言的翻译很可能比相同或类似硬件上的Cobol对应物慢,没有理由这样做。
让我问一个反问题:为什么转换它,如果你有适当的地方有效?
(类似于拆掉桥梁10年后只是为了之后再重建它 - 通常总是更便宜,只是为了保持你拥有的东西)。
答案 10 :(得分:0)
有些翻译人员可以以很低的成本进行修改,使其在特定的机器或操作系统上运行,有些可以从英格兰购买,可以在那里或在现场运行。主要型号存在标准版本(任何人都可以与我联系)。 Cobol到另一种语言源代码或脚本相对容易自动执行,并且会生成一个文本文件,以便导入到目标机器上的源文件中,代码兼容性达到95%或更高。在运行编译器或JIT软件以实现新程序之前,只需进行简单的手动修改即可 - 在测试或上线时不要忘记修改作业命令语言或宏用于大型机作业。新的cobol编译器存在于ICT / ICL大型机和一个或两个其他大型机中,这些编译器比旧软件编译得更快,有时新编译的程序运行速度可以快几倍。