プログラミング言語の後方互換性とその欠陥の修正を維持する
まず、いくつかのコンテキスト(ほとんどの人が知っているもの): すべての一般的なプログラミング言語には明確な進化があり、ほとんどの場合バージョンによってマークされます。Java5、6、7など、PHP 5.1、5.2、5.3などがあります。新しいバージョンをリリースすると、新しいAPIが利用可能になり、バグが修正され、追加されます新しい機能、新しいフレームワークなどです。全体として:それは良いことです。 しかし、言語(またはプラットフォーム)の問題はどうでしょうか?言語に何か問題がある場合、開発者はそれを回避するか(可能であれば)、それと共存することを学びます。 現在、これらの言語の開発者は、それらの言語を使用するプログラマーから多くのフィードバックを得ています。そのため、時間(およびバージョン番号)が経過するにつれて、これらの言語の問題はゆっくりと、しかし確実に消えていくことになります。まあ、そうでもない。どうして?下位互換性、それが理由です。しかし、これはなぜですか?より具体的な状況については、以下をお読みください。 私の質問を説明できる最善の方法は、PHPを例として使用することです。 PHPは何千人もの人々に愛され、嫌われています。すべての言語には欠陥がありますが、明らかにPHPは特別です。このブログ投稿をご覧ください。PHPのいわゆる欠陥の非常に長いリストがあります。今、私はPHP開発者ではありません(まだ)が、すべてを読み通しており、そのリストの大きな部分が実際の問題であると確信しています。(潜在的に主観的であるため、すべてではありません)。 さて、もし私がPHPを積極的に開発している人の1人であれば、これらの問題を1つずつ解決したいと思っています。ただし、それを行うと、言語の特定の動作に依存するコードが新しいバージョンで実行されると壊れます。2語で要約すると、後方互換性です。 私が理解していないのは、なぜPHPの下位互換性を保つ必要があるのかということです。これらの問題をすべて修正したPHPバージョン8をリリースした場合、「このバージョンでは古いコードを実行しないでください!」という大きな警告を出すことはできませんか? 非推奨と呼ばれるものがあります。私たちは何年もそれを持っていて、それはうまくいきます。PHPのコンテキスト:最近の人々がどのようにmysql_*関数の使用を積極的に推奨していないか(そして代わりにmysqli_*PDO を推奨するか)を見てください。廃止は機能します。使用できます。それを使うべきです。関数で機能する場合、言語全体で機能しないのはなぜですか? 私(PHPの開発者)がこれを行うとしましょう: これらのすべての欠陥を修正した新しいバージョンのPHP(たとえば8)を起動します 新しいプロジェクトは、そのバージョンの使用を開始します。これは、はるかに優れた、より明確な、より安全なものだからです。 ただし、古いバージョンのPHPを放棄しないように、更新プログラムをリリースし続け、セキュリティの問題、バグなどを修正します。これは、ここにリストしていない理由から理にかなっています。これは一般的な習慣です。たとえば、バージョン5.5.xに主に焦点を合わせていたにもかかわらず、OracleがMySQLのバージョン5.1.xを更新し続けた方法を見てください。 約3〜4年後、古いバージョンのPHPの更新を停止し、それらを消滅させます。この3年か4年で、ほとんどのプロジェクトはとにかくPHP 8に切り替えられるので、これは問題ありません。 私の質問は次のとおりです。これらの手順はすべて理にかなっていますか?それはとても難しいでしょうか?それができれば、どうしてできないのですか? はい、欠点は後方互換性を破ることです。しかし、それは支払う価値がありませんか?良い点として、3、4年後には、その問題の90%が修正された言語になります。その名前はその人気を保証します。 編集:OK新しい計画。