レガシーコードのモダナイゼーション:ケーススタディ
今日のテクノロジーに合わせて古いプログラミング言語を更新することについて。
― 1 分で読む
目次
多くの会社はまだ古いプログラミング言語を使ってシステムを動かしてるんだ。この言語たちは時代遅れって言われるけど、意外とよく機能するし、時間が経つにつれてその価値が証明されてるんだよね。これが問題で、テクノロジーが変わると、これらの古いシステムもアップデートしないといけないんだけど、新しい言語やプラットフォームに移行するのは大変なんだ。
古いコードの課題
古いプログラミング言語の主な問題の一つは、ソースコードの理解や解釈が難しいこと。ソースコードを解析するのが、明確な表現を作るための第一歩なんだ。これは現代のソフトウェア開発ツールにとって特に重要で、古い言語を正しく解釈できれば、より良いサポートを受けられるんだよ。
移行の必要性
私たちのグループは、特殊な拡張を使った古いコードを移行する手助けをFramatomeという会社に提供したんだ。特に、もっとモダンなFortranに変換することに集中したんだ。この移行は、原子力エネルギーなどの重要な分野で活動するFramatomeにとって重要なんだよね。
Fortranの理解
Fortranは長い間存在するプログラミング言語なんだ。性能や数値計算の能力が評価されて、科学計算の分野で強い存在感を持ってる。でも、Fortranで書かれたプログラムは、昔作られたものが多くて、現代のコーディングスタンダードを使ってないから、メンテナンスが難しくなってるんだ。
古い言語の特徴
古いプログラミング言語は、いくつかの理由で扱いづらいんだ:
- 限られたモダンサポート:品質チェックやテスト、ドキュメント作成を助けるツールが不足してることが多い。
- 低い抽象度:これらの言語は、パソコンの性能が今より全然低かった時代に作られてるから、開発者はメモリやパフォーマンスを厳密に管理しないといけなかった。
- 動的機能の欠如:多くの古い言語は柔軟なデータ処理ができず、複雑な解決策が必要になることがある。
- 学習の減少:新しい世代のプログラマーがこれらの言語を学んでないから、スキルのある開発者が見つからない。
- 古いハードウェア:この古いコードを動かすコンピューターも時代遅れになってきてて、アップデートが複雑になってる。
Fortranの具体的な問題
Fortranには異なるバージョンや拡張があって、管理がさらに難しくなってる。一部の科学や工学のアプリケーションではまだ主流だけど、バージョンの複雑さが問題を引き起こしてるんだ。
専門的な言語
Fortranの限界に対する解決策として、いくつかの拡張が作られたんだ。Parametric FortranやFortran-Sみたいに、新しい機能を追加したりしてるんだけど、理解やサポートが広がってないのが課題なんだよね。
パースの課題
パースっていうのは、コードの構造を理解するために分析するプロセスなんだけど、Fortranの特許拡張があると、さらに複雑になるんだ。広く使われてる言語とは違って、こういう特別なバージョンには使えるパーサーが一つしかないことが多くて、既存のツールを適応させるのが難しいんだ。
移行へのアプローチ
Framatomeを助けるために、古いコードを解析してモダンな形に変換するシステムを作ったんだ。私たちのソリューションには:
- ピュアFortranの作成:最初に、特許拡張を標準Fortranコードに変換して、特別な項目を示す注釈を付けた。
- パースツールの利用:次に、その注釈付きコードを解析するためにパーサーを使って、コードの構造を表す抽象構文木(AST)を作った。
- 特殊な構造の復元:最後に、ASTを処理して特許言語によって追加された専門的な構造を適切に管理した。
コメントの重要性
古いコードを変換する時、元のコメントを保つことがめっちゃ重要だったんだ。これが元の開発者の思考過程を示してくれて、将来のプログラマーがコードを理解しやすくなるんだよね。
評価プロセス
私たちの移行プロセスが効果的かどうかを確認するために、いろんな機能が含まれた小さなコードライブラリでテストしたんだ。これで、私たちの方法が元のコードの構造や意味を正確に表せるか確認できた。
今後の改善
私たちは、変換に使った注釈のマーカーに問題があるかもしれないことに気づいた。普通のコードと衝突しないように、私たちのシステムを適用する前にチェックを追加することを提案したよ。
さらに、Fortranを解析する新しいツールが出てきたら、最初からやり直すことなくプロセスを洗練できるんだ。この柔軟性が、プログラミングの環境が進化する中で重要なんだよね。
結論
古いプログラミング言語は多くの組織にとって重要な存在のままなんだ。独特な課題があるけど、理解してアップデートすることが、現代の要求に応えるためには必要なんだ。Framatomeとの作業は、レガシーシステムを機能させつつ、よりモダンなプログラミングプラクティスに移行しようとする努力を示してるんだよ。
タイトル: Parsing Fortran-77 with proprietary extensions
概要: Far from the latest innovations in software development, many organizations still rely on old code written in "obsolete" programming languages. Because this source code is old and proven it often contributes significantly to the continuing success of these organizations. Yet to keep the applications relevant and running in an evolving environment, they sometimes need to be updated or migrated to new languages or new platforms. One difficulty of working with these "veteran languages" is being able to parse the source code to build a representation of it. Parsing can also allow modern software development tools and IDEs to offer better support to these veteran languages. We initiated a project between our group and the Framatome company to help migrate old Fortran-77 with proprietary extensions (called Esope) into more modern Fortran. In this paper, we explain how we parsed the Esope language with a combination of island grammar and regular parser to build an abstract syntax tree of the code.
著者: Younoussa Sow, Larisa Safina, Léandre Brault, Papa Ibou Diouf, Stéphane Ducasse, Nicolas Anquetil
最終更新: 2023-09-05 00:00:00
言語: English
ソースURL: https://arxiv.org/abs/2309.02019
ソースPDF: https://arxiv.org/pdf/2309.02019
ライセンス: https://creativecommons.org/licenses/by/4.0/
変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。
オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。
参照リンク
- https://fingfx.thomsonreuters.com/gfx/rngs/USA-BANKS-COBOL/010040KH18J/index.html
- https://fftw.org/doc/Allocating-aligned-memory-in-Fortran.html
- https://permalink.lanl.gov/object/tr?what=info:lanl-repo/lareport/LA-UR-23-23992
- https://www.framatome.com/en/
- https://www.cea.fr
- https://gcc.gnu.org/wiki/GFortran
- https://www.intel.com/content/www/us/en/developer/tools/oneapi/fortran-compiler.html
- https://lfortran.org
- https://lfortran.org/blog/2023/05/lfortran-breakthrough-now-building-legacy-and-modern-minpack/
- https://github.com/flang-compiler/flang
- https://github.com/camfort/fortran-src
- https://github.com/OpenFortranProject/open-fortran-parser
- https://www.antlr.org
- https://hackage.haskell.org/package/BNFC
- https://rosecompiler.org/ROSE_HTML_Reference/index.html
- https://kursjan.github.io/petitparser2/
- https://www.gnu.org/software/diffutils/manual/html_node/White-Space.html
- https://fr.wikipedia.org/wiki/SYNTAX