如果要创建一个现在需要运行的应用程序(主要是数据处理),也许(或许不是)10年或25年后,这些应用程序有哪些设计技巧?
一般规则适用:依赖开源软件和经过验证的平台以及故障安全数据格式。
出于可读性原因,语言必须是高级语言(可能唯一的选择是在15年内由对原始代码知之甚少的人重写应用程序。)
我会选择UNIX(Linux)+ Python + YAML / JSON(/ CSV / plaintext),这个选择或替代工具集的任何提示? Scheme / lisp已经存在了很长时间,并且很难搞砸语言基础知识,因为一切都是自成一体的。
编辑:请不要忘记有关实际设计和代码的提示,例如2038 year issue!
答案 0 :(得分:6)
实际上,#1要求是“使用符合国际标准组织正式规范的流行语言”。这比你提到的任何其他事情都重要得多。 (“开源”?请... 80年代和90年代有成千上万的公共领域程序,今天几乎不可能运行。)
例如,如果您严格按照C99或C ++ 98或C ++ 03甚至C ++ 0x规范进行编码,那么编译器将为您的平台10,20添加的概率大约为99.9999%,并且从现在起50年后,可以零变化处理您的代码。对于流行语言来说,这是一个关于正式规范的最有用的东西。
严格地编码这样的规范可能并不容易,因为许多非平凡的程序(例如任何带有GUI的程序)都不能100%便携地编写。
但这仍然是我开始的地方。在100%符合标准的代码中尽可能多地实现,然后在依赖于平台的模块中隔离其余部分(如GUI)。最大限度地减小后者的规模,您将最大限度地减少继任者必须完成的工作。
免费的第三方工具 - 无论是像Boost这样的东西还是像Python这样的东西 - 都是一些问题的绝佳答案,但不是这个问题。
答案 1 :(得分:3)
考虑到您将提供详细记录的源代码,如果出现与您当前代码兼容的任何新技术,他们可以始终优化代码。否则,他们只需要自己移植它。
答案 2 :(得分:3)
了解已部署应用程序的半衰期会很有趣。我的猜测是,10年并不罕见,企业的核心应用程序可能已经超过25年了 - 那里有很多大型机/ CICS应用程序。
因此,我声称任何严肃的发展都必须预计该申请将被使用至少10年。大型企业可能有一个“常青树”政策 - 即将其应用程序迁移到更高版本的操作系统,数据库等。
实际上不可能再次猜测任何平台的寿命,所以只需选择一种广泛采用的东西,这在某种意义上(事实上或正式)是一种标准。
您建议的堆栈是合理的,Java和Spring或Java EE也会很好。
我会关注应用程序的模块性和“开放性”。当我说许多应用程序超过10年时,并不意味着它们在那段时间内化石化了。应用程序在内部进行更改,并与越来越多的系统集成。这些CICS应用程序现在可以生成在20年前闻所未闻的移动设备上查看的数据。
因此,请查看应用程序中的接口,选择分层和模块化架构,以允许内部发展并适应新的集成。
答案 3 :(得分:1)
Java可能是一种很好的语言.java具有出色的向后兼容性,大型标准库也具有良好的向后兼容性,并且很受欢迎,很可能在25年左右。即使java不受欢迎,也有足够的jvm语言,如scala和clojure,人们可能会变得非常受欢迎,以确保jvm和java作为副产品的生存。
Python可能不是一个好选择,因为它们偶尔会破坏兼容性(python 3与python 2不兼容)。