16

如果创建一个需要现在运行的应用程序(主要进行数据处理),也许(也许不是)10 年或 25 年后,这些应用程序有哪些设计技巧?

一般规则适用:依赖开源软件和经过验证的平台和故障安全数据格式。

出于可读性原因,该语言必须是高级语言(也许唯一的选择是由对原始代码知之甚少的人在 15 年内重新编写应用程序)。

我会选择 UNIX(Linux)+Python+YAML/JSON(/CSV/plaintext),这个选择的任何提示或替代工具集?Scheme/lisp 已经存在了很长时间,而且真的很难搞砸语言基础,因为一切都是独立的。

编辑:请不要忘记有关实际设计和代码的提示,例如2038 年的问题

4

4 回答 4

6

实际上,#1 要求是“使用具有国际标准组织正式规范的流行语言”。这比你提到的任何其他事情都重要得多。(“开源”?拜托……有成千上万的 80 年代和 90 年代的公共领域程序在今天几乎不可能运行。)

例如,如果您严格按照 C99 或 C++98 或 C++03 甚至 C++0x 规范进行编码,那么在 10、20 和 50 年后,您的平台上存在编译器的几率大约为 99.9999%现在可以零更改处理您的代码。可以说,这对于流行语言的正式规范来说是最有用的。

严格按照这样的规范进行编码可能并不容易,因为许多重要的程序(例如任何带有 GUI 的程序)都不能 100% 可移植地编写。

但这仍然是我要开始的地方。在 100% 符合标准的代码中尽可能多地实现,然后在依赖于平台的模块中隔离其余部分(如 GUI)。最小化后者的规模,您将最小化您的继任者必须执行的工作。

免费的 3rd-party 工具——无论是 Boost 还是 Python 之类的工具——都可以很好地回答一些问题,但不是这个。

于 2011-08-18T06:49:43.183 回答
3

考虑到您将提供有据可查的源代码,如果出现与您当前代码兼容的任何新技术,他们总是可以优化代码。否则,他们只需要自己移植即可。

于 2011-08-18T06:30:26.627 回答
3

了解已部署应用程序的半衰期会很有趣。我的猜测是 10 年一点也不稀奇,一个企业的核心应用程序很可能已经超过 25 年了——那里有很多大型机/CICS 应用程序。

因此,我认为任何重大的开发都必须预期该应用程序将使用至少 10 年。大型企业很可能有“常青”的政策——即将他们的应用程序迁移到更高版本的操作系统、数据库等。

实际上不可能事后猜测任何平台的寿命,所以只需选择一些被广泛采用并且在某种意义上(事实上或正式)标准的东西。

您建议的堆栈是合理的,Java 和 Spring 或 Java EE 也会很好。

我会注意应用程序的模块化和“开放性”。当我说许多应用程序已有 10 多年的历史时,这并不意味着它们在那个时候就已经僵化了。这些应用程序在内部发生变化并与越来越多的系统集成。这些 CICS 应用程序现在生成的数据可以在 20 年前闻所未闻的移动设备上查看。

因此,查看应用程序的接口,选择分层和模块化架构,允许内部结构发展并适应新的集成。

于 2011-08-18T06:42:45.767 回答
1

Java 可能是一种很好的编写语言。java 具有出色的向后兼容性,是一个大型标准库,也具有良好的向后兼容性,并且足够流行,很可能会在 25 年后出现。即使 java 失宠,也有足够多的 jvm 语言,如 scala 和 clojure,它们可能会变得足够流行,以确保作为副产品的 jvm 和 java 的生存。

Python 可能不是一个好的选择,因为它们偶尔会破坏兼容性(python 3 与 python 2 不兼容)。

于 2011-08-18T06:28:18.730 回答