Joelの Microsoftの重大な変更に関する記事 (非下位互換性)とdotnetの紹介を読んだばかりです。それは興味深いものであり、当時の状況を明確に反映しています。しかし、今ではほぼ10年が経過しました。
これは主に、Microsoftがすでに広く使用されているasp classicまたはVB6を改善する代わりに、ドットネットなどの下位互換性のない開発ツールを導入することがどれほど悪いかということです。よく知られているように、ドットネットはWindowsにネイティブに埋め込まれていませんXP(Vistaまたは7では可能)。したがって、.netアプリを使用するには、の.netフレームワークをインストールする必要があります。 300mb以上(その日は大きいです)。
ただし、最近では、多くの企業が.netを主要な開発ツールとして使用し、asp.netまたはmvcをWebベースのアプリケーションとして使用しています。 C#は最近、トップのプログラミング言語の1つです(stackoverflowで最も多くの質問があります)。さらに興味深いのは、win32apiは、新しいテクノロジーが世の中に出回っていても(そしてまだ広く使用されていても)まだ生きているということです。
Microsoftが重大な変更を導入しなかった場合、多くの企業がまだaspクラシックまたはvbベースのアプリケーションを使用していると想像してください(まだありますが、それほど多くはありません)。多くの企業がAzureやSharePointなどの追加サービスを使用しています(費用がどれだけ高いかは別として)。
また、多くのフラッグシップアプリケーション(AdobeやBlizzardなど)がまだCベースまたは古い言語を使用しており、新しい高級言語に移植していないことも知っています。
マイクロソフトは、古いアプリケーションをドットネットに移行するようにユーザーをどのように説得できますか?私たちが知っているように、それは非常に難しく、アプリケーションを書き直すときにすぐに価値がない(ネットスケープストーリー)、そしてそれは非常に危険です。 「ドットネットはOOPなので、ドットネットはdll埋め込み可能だから」などの意見ではなく、マイクロソフトのやり方に興味があります。
テクノロジーは最近時間とともに大きく変化しているため、この質問は建設的なものになる可能性があります。ご覧のとおり、MicrosoftはAsp.Net WebフォームをMVCに変更し、winformは現在レガシーであり、基本インストール、タッチスクリーンではなくWindowsストアを使用するように変更され始めており、後でgoogleクラスなどのシースルーアプリケーションが登場します。そして、それは大きな変化になります。
今日の問題として、移植性を考慮する必要があります。単なるテクノロジーの選択だけでなく、移行計画も必要になります。 Joel's Wasabi がアプローチしたように、マルチプラットフォーム言語コンパイラが必要になるほど重要かもしれません。 (ねえ、私は彼の記事を読みすぎました!)
技術的な進歩は別として、マイクロソフトは開発者が非常に使いやすいようにすることでDot Netフレームワークを販売したため、新しいアプリケーションの開発を求められたときに最初の選択肢となりました。 MicrosoftがVisualStudioで開発者を台無しにするのが大好きだということを見てください。マイクロソフトは最初にアイデアを開発者に販売し、次にそれを企業に販売しました。これにより開発者の生産性が向上することを企業が理解すると、企業はそれをさらに活用し始めました。時々壊れた変化を経験した後にマイクロソフトを避けている人々がいるので、それはバラの分野ではありませんでしたが。
では、「BreakingChanges」の方法に戻りましょう。
マイクロソフトが.NETFrameworkに投資したのは、JVMでのJavaの成功を見て、市場がどこに向かっているのかを認識し、その市場の一部を望んでいるからです。このようにして、.NETが誕生しました。マイクロソフトはこれらの重大な変更を行って、市場を前進させ、市場の停滞を防ぎます。競合他社も着実に改善しており、関連性を維持するために、意思決定を行う必要があります。重大な変更はこれらの決定の結果です。MSが当時のJava脅威を無視し、.NETを作成しなかった場合、M $はずっと前に忘却に巻き込まれた可能性があります。そして、これらの変更はM $がそれをしなかった場合、彼らのタブレット市場シェアは、ipadとAndroidタブレットの猛攻撃から回復することはできません。
最後に、移行計画とすべてのプラットフォームで実行する言語。これに対するMicrosoftのソリューションは、.NETFrameworkです。 Windowsデバイスのみに限定されていますが。しかし、ご覧のとおり、彼らはJavaからアイデアを借りて、一度コンパイルしてからどこでも実行します。それらの大きな違いは、下位互換性の処理方法です。 .NETを使用すると、複数のバージョンを保持して、古いアプリケーションが破損しないようにすることができます。また、Microsoftは、この下位互換性を維持するために、新しいプラットフォームで古い.NETFrameworkバージョンをある程度サポートし続けます。
それはマーケティングではなく現実についてです。 Microsoftは、既存のVB6アプリケーションを.Netに簡単に移植できるようにした可能性があります。
大規模なアプリケーションを移植するのは 非常に困難で費用がかかる です。多くの企業は、新しい機能がないためにそのようなお金を使うことを正当化できませんでした。
ポートを簡単にする自動ツールを作成することは可能です-ほぼ完全に自動です。サードパーティ企業は、そのようなツールを販売して生計を立てています( Artinsoft、Code Architects) 。組み込みのMicrosoftアップグレードウィザードは哀れだった-- それを書いた人によると -もちろん彼はArtinsoft出身なので、もっと良いものを売りたいと思っています。 Microsoft UKも 承認済み ArtinsoftおよびCodeArchitectsツールは、組み込みのアップグレードウィザードよりも優れています。
Microsoftは、より優れた移植ツールを作成するか、サードパーティ企業からこれらのツールを購入して無料にする必要がありました。
私は、Microsoftが悪いプログラミング動作を許可するのに素晴らしいと言っているように見える記事に混乱しています。しかし、私がWeb開発市場への最初の一歩を踏み出したのと同じ時期に、彼ら自身のソフトウェアとの下位互換性を壊すことに巻き込まれました。私は、Microsoftが更新したときに、そのアプリケーション全体を炎上させたアプリケーションの開発に多くのお金と時間を費やしました。
欲求不満から、私はFreeBSDとLinuxに移行し、それ以来Windowsマシンに触れていません。私の会社は28人の従業員を擁しており、マイクロソフトを信頼することはありません。