4

私は現在、Microsoft .NET C# で作成されたプログラムの第 2 版の開発を担当しています。実際のプログラミングはしていませんが、プログラマー向けの仕様を書いています。私はそれを .NET コードベースから外したいと思いますが、Joel がブログでコードを書き直してはいけないと述べており、彼は正当な理由を提供しているので、慎重に検討する傾向があります。

だから私の質問は、

(1) 簡単に移行する方法はありますか? (.NET C# のような言語)
(2) .NET から外しますか?
(3) もしそうなら、あなたは何語を使いますか?

.NET から外したい理由は、.NET に関する私の理解では、クライアントにインストールする必要があるからです。もっと良い方法があるのに、顧客に迷惑をかけたくありません。

4

15 に答える 15

23

これは失礼に聞こえるかもしれませんし、私は反対票を投じられる危険がありますが、許してください、正直に言うと...あなたは、「[あなたは]で作成されたプログラムの2番目のバージョンの開発を担当しています。 Microsoft .NET C# ... 実際のプログラミングを行っていない ... [.NET コードベースから削除したい]. あなたは自分自身を聞いていますか?質問 1 と 3 からもわかるように、あなたにはその決定を下すための知識や経験がないことは明らかです。「簡単な言語」などありません。強力な言語は「簡単」ですか? 弱い言語は「簡単」ですか?別のものへの簡単な移行はどうすればよいでしょうか? コードを自動翻訳するものがあっても、ランタイム、プラットフォーム、およびライブラリの違いにより、重要なアプリケーションの移植は容易ではありません。労力と知識が必要です。おそらく、ある人にとっては簡単です多くの時間はかかりますが、締め切りや現実に直面するほとんどの人にとってはそうではありません。

于 2009-06-26T02:15:50.313 に答える
22

C# から別の言語への企業全体の移行の一環として C# から離れない限り、またはC#/.NET が満たすことができない何らかの有効な技術的要件がない限り、私は既存の言語から移行しません。コードベース。

クライアントが.NETを必要としているという理由を述べています。あなたのプログラムはクライアント/サーバーですか、それとも Web アプリケーションですか? Web ベースの場合は間違っています。クライアントには .NET は必要なく、ブラウザーのみが必要です。

プログラムがクライアント/サーバーであり、既に C# で記述されている場合、移行先の言語でも、何らかの形式のランタイム インストールが必要になる可能性があります。.NET は、XP 以降の Windows のすべての新規インストールおよびサービス パックに付属しています。

もちろん、OSX および Linux ユーザーをターゲットにしようとしている場合を除きます。その場合、コードベースを放棄する決定を下す前に、これらの市場の価値を真剣に検討することを検討します。そこでは Java が役立つかもしれませんが、Mono プラットフォームでは非常に多くのことができるので、それらのプラットフォームを対象としている場合でも、C# コードを保存できる可能性があります。

編集:

waiwai933 さんが書きました:

私が決定を下すべきではないことは承知していますが、誰が決定を下すかについて私が決定したわけではありません。「簡単な言語」とは、移行が容易になるように、C# に非常に似た言語を意味しました。

残念ながら、あなたは運が悪いです。C# に最も近い言語は Java ですが、2 つの言語の違いは非常に大きいため、完全に書き直す必要があります。ポートは機能しません。あなたが持っている C# コードがデリゲートとイベントを使用していない可能性はほとんどありません。WinForms GUI フレームワーク (おそらく WinForms だと思います) は Swing とは大きく異なるため、どの構成も簡単に移植できません。イベントやデリゲートが散らばっています。

プラットフォームを切り替えるための労力は、少なくとも最初の労力と同じか、それ以上になる可能性があります。さらに、Java に移行することは、C# から切り替えたい理由に違反します。Java では、クライアントにランタイムをインストールする必要があります。

前に述べたように、この決定を下す前に、プラットフォームを切り替えることで得られる可能性のある実際のメリットをじっくりと検討してください。

于 2009-06-26T00:19:28.490 に答える
9

.NET フレームワークのインストールを要求して顧客に「不便」を与えたくないという唯一の理由で、なぜ C# と .NET から離れたいのか、私にはよくわかりません。

1 つには、最近では .NET が Windows に含まれています。XP (現在のサービス パック) では、.NET 2.0 を取得します。Vista では、.NET 3.0 を取得します。実際には .NET 3.5 の機能をまったく使用しておらず、C# 3.0 の機能も必要ないと仮定すると、「顧客に不便を与える」という議論はまったく意味がありません。何もダウンロードしたり、余分なものをインストールしたりする必要はありません...既にそこにあります。

実際に .NET 3.5 や C# 3.0 が必要な場合、すべてを処理するパッケージ済みのインストーラーを顧客向けに作成するのは簡単ではありません。いずれにせよプログラムをインストールする必要があるため、顧客にとって実際の「不便」はありません。1 回のインストールで、プログラムとそのすべての依存関係の両方を、1 回のシームレスで透過的なインストール プロセスで処理できます。顧客にとってさらに簡単な時間をお望みの場合は、.NET、C#、および Visual Studio を使用したクリック 1 回の展開のオプションがあります。これにより、顧客が簡単かつ迅速にアプリケーションをダウンロードしてインストールし、将来の更新が公開されたときに更新できるようにするシンプルなサイトが作成されます。

他の人が述べたように、C# と .NET には多くの機能があります。Microsoft は、膨大な量のリソース、ツール、ドキュメント、およびコミュニティの支援を利用して、.NET プラットフォームでの開発のための広範なエコシステムを構築しています。C# は非常にクリーンで最新の先進的な言語であり、開発者が問題をできるだけ迅速、簡単、かつ効率的に解決するのに役立つ多くのツールを提供します。C++ に移行すると、これらの便利な進歩が失われるだけでなく、手動のメモリ管理の悪夢を受け継ぐことになります。Java に移行するということは、これらの便利な進歩を失うことを意味しますが、一般的には実際に役立つこともありません。他の .NET 言語に移行することもできますが、そうすると、あなたが言及した唯一の問題、つまりクライアントが .NET フレームワークに依存するという問題を解決できなくなります。

C# で開発されたシステムを既に導入している場合は、何も変更しないでください。多くを失うことになり、顧客に大きな影響を与えるものは何も得られません。長期的には、どのような変更も、会社と開発者により大きな影響を与える可能性が高くなります。コードの書き直しや変換に費用がかかり、開発者を新しい言語や場合によっては新しい開発プラットフォームでトレーニングするのに費用がかかり、現在のコード ベースでおそらく既に修正されている可能性が高いバグを見つけて修正するのに費用がかかります。リストは続きます...

.NET が顧客にとって不便すぎると判断する前に、.NET が提供するものについてもっと学ぶ必要があります。そして、そのような抜本的で費用のかかる変更を行うことを決定する前に、それが本当に顧客にとって不便であることを確認する必要があります.

于 2009-06-26T00:40:53.673 に答える
7

C# よりも他のものが優れていると考える理由は何ですか? .NET の何が問題になっていますか? 会社の使命を妨げる正当な理由がある場合は、書き直すことを検討する必要があります。

しかし、ただやるためだけにやる意味はあると思います。C# は非常にシンプルで簡単で、最近のバージョンのランタイムはかなり安定しています。私はまだそれで OS を構築するつもりはありませんが、エンドユーザー アプリケーションの場合は、私の頼りになる言語です。

それを C++ で書き直すことは、メモリ/リソース管理の悪夢になるだけであり、Java への移行はあまり意味を成さない横道な動きです。

アプリ、クライアント、サーバーなどの詳細をお知らせいただければ、より具体的にお答えできる場合があります。

しかし覚えておいてください、TANSTAAFL。

編集:

ランタイムをクライアントにインストールする必要があることについては、あまり心配しません。すべてのユーザーが Windows ユーザーであると仮定すると、Vista と Win7 の両方に、デフォルトで非常に最近のバージョンのランタイムが既にインストールされています。ランタイム上に構築されるアプリが増えるにつれて、他のアプリ用にすでにそれを使用しているユーザーが増え、いつでも自分のアプリでランタイムを再配布することができます。

于 2009-06-26T00:16:58.683 に答える
4

(1) 簡単に移行する方法はありますか? (.NET C# などの言語)

いいえ

(2) .NET から外しますか?

非常にやむを得ない理由がないわけではありません (お客様に迷惑をかけているわけではありません!)。

(3) もしそうなら、簡単な言語はありますか?

Java は C# に最も近いものであり、得るものよりも失うものの方が多く、顧客に迷惑をかけなければなりません。

.NET から外したい理由は、.NET についての私の理解では、クライアントにインストールする必要があるからです。もっと良い方法があるのに、顧客に迷惑をかけたくありません。

他の人が言ったように、これはあなたが思っている不便さではなく、それがあなたの唯一の理由である場合、おそらく時間、リソース、お金を無駄にしているだけです. 要するに、それが支払われ、それが機能する場合は、ミットをオフにしてください.

于 2009-06-26T01:27:34.750 に答える
2

C# から .NET 以外のものへの自動変換はありません。

これを Boo や VB.NET などの .NET 言語に簡単に変換できますが、たとえば C++ (非 CLI) に変換する場合、ライブラリ (.NET フレームワーク) は使用できません。

これが最大の頭痛の種になります。

于 2009-06-26T00:15:30.683 に答える
2

C# からの唯一の簡単な移行は、それを別の .NET 言語に翻訳することです。それ以外は、すべての構文とライブラリが変更されるため、とにかくアプリケーションを書き直すことを検討しています。

C# から離れたい理由をお聞きしてもよろしいですか? あなたが提供した Joel on Software リンクの精神で、現在動作しているコードベースに固執することの利点を理解していただけることを願っています (その価値のために)。このプロジェクトのために .NET から移行する非常に説得力のある理由はありますか?

于 2009-06-26T00:15:31.383 に答える
1

答えは簡単です。アプリケーションをWebに移動します。したがって、クライアントに必要なのはブラウザのみです。

于 2010-05-23T07:06:02.583 に答える
1

多くの質問への答えであるように、それは異なります。以下の私の回答では、Windowsフォームアプリケーションについて話していると仮定しました。もちろん、Webベースの製品について話している場合、これはすべて問題にならないからです。

.NETを「離陸」することを(ほぼ)決定したようです。その決定について非常に慎重に考えることを強くお勧めします。特に、理由を見てください。その理由は .NETランタイムの依存関係が問題を引き起こしたくないということです。少数の人々によって提示されたように、これに対する反論は、ランタイム標準のないWindowsプラットフォームが不足しているということです。それにもかかわらず、50Mbのダウンロードに依存しない無駄のないプログラムには満足のいくものがあります。

しかし、最終的には、理由としてあなたが述べたことが有効であるかどうかは、以下に依存します。

  1. 製品のクライアント数。
  2. それらの地理的位置;
  3. 製品がインストールされる一般的なプラットフォーム(ハードウェアとソフトウェア)。
  4. ランタイムが存在しないために製品がインストールされない場合の潜在的な影響。
  5. 大規模なダウンロードの影響、または実行時の依存関係による面倒なインストール。

結局のところ、クライアントの99%が最新のプラットフォームを使用していることが判明した場合、他の人が指摘しているように、これは問題になりません。

上記を分析した結果、推論が有効であることが判明した場合は、製品の書き換えコストを、書き換えによる顧客満足度/製品売上の予測改善と比較する必要があります書き直しを正当化するには、後者は絶対に驚異的でなければなりません。もちろん、私はそれを言います、以下を含むすべての種類のことを知らない:

  1. コードベースのサイズ。
  2. 製品の複雑さ;
  3. コードベースの状態(保守可能?)。

一般的なプログラミング言語/プラットフォームに関する限り、最近ではC#/。NETよりも優れたものはほとんどありません。したがって、すべてのデューデリジェンスの後でも、「移動」したいと仮定すると、ランタイムを必要としないものを選択することを余儀なくされます-考えられる唯一のオプションはC/C++またはDelphiです。

于 2009-06-26T10:40:21.387 に答える
1

(1)移行する簡単な方法はありますか?(.NET C#のような言語)

簡単に言うと、似ているという意味であれば、構文ではJavaは似ていますが、.NETFrameworkクラスをJavaライブラリに一致させるのは簡単ではありません。

(2).NETから外しますか?

いいえ。

(3)もしそうなら、簡単な言語はありますか?

(1)の回答を参照してください

なぜあなたがこれをしたいかをさらに理解するのに役立ついくつかの質問。これはあなたの顧客にとってどのように不便ですか?(.NET Frameworkのインストールだけですか?)クライアントアプリについて話している場合は、クライアントにもアプリをインストールする必要があります。これが不便であるとは理解していません。

C ++で書き直したいと提案した他の同様の質問から、これは不便さのレベルをどのように変えますか?

Windows以外のユーザーベースをターゲットにしますか?

于 2009-06-26T04:05:14.930 に答える
1

企業が、.NET などの安定したコード ベースから別のコード ベースに移行することを決定する理由がわかりません。OS アプリから Web アプリへの移行など、他のプラットフォームを検討している場合は、Ruby on Rails が適しているかもしれません (その MVC プラットフォームは強力です)。しかし、別の OS アプリに?行きは厳しくなります。

于 2009-06-26T00:25:35.093 に答える
1

場合によっては、C# から C++ に移行することが理にかなっているため、アンマネージ コードの能力 (つまり、パフォーマンス) を得ることができます。しかし、努力する価値がない可能性があります。

于 2009-06-26T06:27:25.897 に答える
1

C# から Java への移行は、非常によく似た言語であるため、おそらく最も簡単です。ただし、すべてのコードを調べて、有効なコードにするために多くのものを変更する必要があります。Java には同様の機能がないため、LINQ などの C# の最新機能を使用している場合は、さらに困難になります。

.NET から外す正当な理由はありますか? そうでない場合は、しないでください。ただし、いつか .NET から外したい場合は、(コードが大きくなりすぎる前に) 早い方がよいでしょう。

于 2009-06-26T00:16:17.263 に答える
0

.NETFrameworkはWindowsUpdateの一部であるため、おそらくすべてのクライアントが自分のマシンに.NETFrameworkを持っています。または、Linux / Mac OSを実行していますが、製品のバージョン1がすでに.NETで実行されているため、そうではないと思います。

と。他のほとんどすべての主流言語には、個別のランタイムをインストールする必要があります(Java、PHPなど)。

そのため、移行する正当な理由がわかりません。

于 2009-06-26T10:45:55.650 に答える
0

これまでのほとんどの回答は、C# と「その他」の特定の質問に答えていますが、私はあなたが尋ねる必要がある質問に答えます:

実際のプログラミングはしていませんが、プログラマー向けの仕様を書いています。それを行う最も効果的な方法は何ですか?

すぐに、すべきでないこと: 使用する言語など、実装の詳細を指定します。

何をすべきか:必要なものとその理由を特定するユーザー ストーリーまたはユース ケースを作成します。例えば:

ユーザーとして、インターネットから 1 つのファイルをダウンロードするだけでソフトウェアをインストールして実行できるようにしたいと考えています。これにより、他のソフトウェアを見つけてインストールする必要がなくなります。

そして、これをメトリクスでバックアップしたいかもしれません:

プロダクト マネージャーとして、特定の期間のソフトウェア ダウンロード数と同じ期間のソフトウェア アクティベーション数を表示できるようにしたいと考えています。これにより、潜在的な顧客の何人がインストールと実行に成功したかを判断できます。ソフトウェア。

あなたが何を望んでいるのか、そしてその理由をチームに伝えれば、チームはそれを実現してくれます。

于 2010-06-30T20:15:23.697 に答える