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 など) をプラットフォームに依存するモジュールに分離します。後者のサイズを最小限に抑えると、後継者が実行する必要のある作業を最小限に抑えることができます。

無料のサードパーティ ツール (Boost や Python など) は、いくつかの質問に対する優れた回答ですが、この質問には当てはまりません。

于 2011-08-18T06:49:43.183 に答える
3

展開されたアプリケーションの半減期を知ることは興味深いでしょう。私の推測では、10 年はまったく珍しいことではなく、企業のコア アプリケーションは 25 年以上経過している可能性があります。メインフレーム/CICS アプリはたくさんあります。

したがって、本格的な開発では、アプリケーションが少なくとも 10 年間使用されることを想定する必要があります。大企業は、アプリケーションを新しいバージョンのオペレーティング システムやデータベースなどに移行する「エバーグリーン化」のポリシーを持っている可能性があります。

プラットフォームの寿命を推測することは実質的に不可能なので、かなり広く採用されていて、ある意味で (事実上または形式的に) 標準になっているものを選択してください。

提案されたスタックは合理的です.JavaとSpringまたはJava EEも良いでしょう.

アプリケーションのモジュール性と「オープン性」に注意を払います。多くのアプリが 10 年以上前のものであると言っても、それらがその時代に化石化したという意味ではありません。アプリは内部的に変更され、ますます多くのシステムと統合されます。これらの CICS アプリは、20 年前には前代未聞だったモバイル デバイスで表示されるデータを生成します。

したがって、アプリケーションへのインターフェースを見て、内部が進化し、新しい統合に対応できる階層化されたモジュラー アーキテクチャを選択してください。

于 2011-08-18T06:42:45.767 に答える
3

十分に文書化されたソース コードを提供することを考えると、現在のコードと互換性のある新しいテクノロジが登場した場合、常にコードを最適化できます。それ以外の場合は、自分で移植する必要があります。

于 2011-08-18T06:30:26.627 に答える
1

Java はそれを書くのに適した言語かもしれません。Java は後方互換性に優れており、後方互換性も良好な大規模な標準ライブラリであり、25 年以内に登場する可能性が高いほど人気が​​あります。Java が支持されなくなったとしても、scala や clojure などの十分な数の jvm 言語があり、副産物として jvm と java の存続を保証するのに十分なほど普及するでしょう。

Python は互換性を損なう場合があるため、適切な選択ではない可能性があります (python 3 は python 2 と互換性がありません)。

于 2011-08-18T06:28:18.730 に答える