22

開示

これは「一般的な」質問であり、おそらく具体的な答えはありませんが、炎上戦争を意図したものではありません。プロジェクトに着手する前に、いくつかの情報が本当に欲しいです。

Jが提供するデータ構造と抽象化から本当に恩恵を受ける特定のプロジェクトを実装する必要があります。これは大規模な(ソフトリアルタイム)Webアプリケーションの中心的なコンポーネントとして機能することを目的とした大規模なプロジェクトです。したがって、パフォーマンスは非常に重要です。

大規模な商用プロジェクトまたはオープンソースプロジェクトでのJの使用法に関する情報を見つけようとしていますが、前進するための決定の基礎となる情報を見つけることができません。私は持っています:

  • Googleトレンドを検索しましたが、次の応答がありました。「あなたの用語-jプログラミング言語-には、グラフを表示するのに十分な検索ボリュームがありません。」
  • free(code)で検索しましたが、Jを使用して単一のプロジェクトが見つかりませんでした
  • Sourceforgeで検索しましたが、Jを使用しているプロジェクトが1つ見つかりませんでした
  • Lambda the Ultimateで検索したところ、APLを斜めに参照している次のディスカッションのみが見つかりました
  • GoogleとBingで一般的に検索されましたが、Jを使用する展開中の大規模プロジェクトの例は見つかりませんでした

プロジェクトでJを使用するのを間違えますか?特にデータ構造、抽象化、簡潔さの点で、私が望むすべてのものがあるようです。確かに、F#、C#、またはC ++でこれらすべてのプロパティをシミュレートするのに時間を費やすことができますが、Jにはすでにそれらがあるので...

重要なプロジェクトにJ(またはあいまいな言語)を使用することのいくつかの欠点を教えてもらえますか?十分なパフォーマンスではありませんか?図書館はありませんか?他に知っておくべきことはありますか?

よろしくお願いします。

4

4 に答える 4

20

Jは、大規模で重要なプロジェクトでの重要な使用に適していると思います。しかし、私はまた、Jがそのようなプロジェクトにとって非常に冒険的な選択(読む:ハイリスク)になると思います。

主要なソフトウェアシステムの中心的なテクノロジーとしてJを使用していることを私が知っている2つの適切な企業は、CognosとLuenThaiです。(CognosはIBMによって購入されました。)これらのシステムに関するいくつかの議論、または少なくともそれらに関連するいくつかの経験は、Jチャットフォーラムに表示されています。ただし、そこには多くの情報はありません。

Jに依存している他の大きなソフトウェアシステムがあるかもしれませんが、私はそれらを特定していません(そして私は何年も目を光らせていました)。

Dmitri Chubarovは、適切なスキルを持つ開発者を見つけるのが難しいことが重大な問題になる可能性があると考えるのは正しいことです。さらに、配列言語のスキルをまだ十分に身につけていない人にとって、Jでプログラミングが上手になるまでにどれだけの労力がかかるかを見積もるのは難しいと思います。個人的には、Jをから学ぶことが特に重要だと思います。うれしそうな興奮の態度、そしてこの態度は、ソフトウェアプロジェクトの生産圧力によって危険にさらされる可能性があります。(仕事でJを学び、それを愛すること可能ですが、プログラマーがそれを「学ばなければならない」ためにそれを嫌うリスクは無視されるべきではありません。)

もう1つの考えられる問題は、統合の取り組みです。Jにはさまざまなライブラリがあり、他のさまざまなソフトウェアシステムに接続されていますが、より一般的な言語で実現されたものとの対比は劇的です。私の経験によれば、Jは非常に簡単にインターフェースできます。これは、外の世界とどのように連携するかについてのいくつかの良い選択によるものです。(これには、DLL、メモリマップトファイル、ソケット、およびテキストファイルスクリプトが含まれます。)それでも、大規模なプロジェクトでは、周囲のサポートソフトウェアに接続するときに、通常よりもはるかに頻繁に革新を行います。

私の考えでは、最大の要因は、コア製品を引き受けるための適切なチームがあったかどうかです。これは、現実的には、ほとんどの「大規模な」プロジェクトが依存するよりもはるかに小さなチームである可能性があります。配列言語は、フィールドで一般的なものよりも大幅に小さいチームに関連付けられています。これは、利点の1つであると私は考えています。必要な同僚の参加を手配した場合は、すばらしいです。そうでない場合は、コミットするまでそのようなプロジェクトにコミットしないでください。

次に重要なことは、Jの主なメリットとして何を期待できるか、そしてプロジェクトを進めながらそれらのメリットを享受していることを確認する方法を知ることです。私はこれを行う方法をアドバイスするのにふさわしい人物ではありませんが、このようなリスクの高い選択が期待される報酬を生み出しているかどうかを追跡せずに投資資本を投入したくないと確信しています。

Paul Grahamは、いくつかの言語は秘密の利点として信頼されていると書いています。Jは間違いなくそのような言語である可能性があります。ただし、Jを使用するだけでは、彼が念頭に置いていたような利点が得られることを保証するのに十分ではありません。Jの魅力的な側面としてあなたが説明したことは、そのような利点があなたの手の届くところにあるかもしれないことを示唆しています。もしあなたがそれに頼ることを選ぶなら、すべての主要な参加者に、なぜこの言語がその仕事のために選ばれたのかを強く、そして冷静に理解させることが重要かもしれません。

于 2012-06-07T04:22:57.350 に答える
13

すでに受け入れられている回答にもかかわらず、私はこれに答えています。

  • 移植性: 私は J で構築された大規模なコード ベースの保守を担当していますが、そのほとんどは J6 に移植できません (移植するのは本当に危険です)。そのため、J5 に行き詰まっています。J は下位互換性をあまり持たないように意図されています。実際、ほとんどのバージョンで重大な変更が導入されています。バージョン 7 はフロントエンドに Java を使用するため、Windows ドライバー ( wd) を使用するインターフェイスとすべてが機能しません。バージョン 8 では、フロントエンドにQT を使用することが約束されているため、新しい Java インターフェイスはおそらく移植されません。公正警告。

  • IDE: 私にとって、大規模なプロジェクトは信頼できる IDE と連携する必要があります。J'sはテキストエディタです。

  • ライブラリ: 多くの J ライブラリがありますが、J はそのまま知られているため、より豊富なライブラリとフレームワークを備えた言語がいくつか存在します。

  • コード構造: それは完全にあなた次第であり、実際には J を否定するものではありません。J は、他の言語と同じくらい明確に、または難読化して書くことができます。標準的なプログラミング手法が適用され、可能な限り明示的に文書化し、説明する必要があります。あるセットの「検閲された罵り言葉」が別のセットよりもうまく機能することがわかった場合、これは J で 2 倍にカウントされます。

  • 最後に、J の一部の機能のみが必要な場合は、J をコンポーネントとして使用できます。.NET 統合は残念ながら J7 では手放されました (特に 64 ビット フレーバーでは、J6 でも 100% の互換性はありませんでした)。たとえば、 KDBはJの疎遠な兄弟であるKに基づいており、基本的にマップされたファイルを高速アクセス用にラップします.Jにも機能があります。

于 2012-06-26T13:04:03.320 に答える
3

重要なプロジェクトで J (またはあいまいな言語) を使用することの欠点を教えてください。

マネージャーやプロジェクト リーダーの役割を担っている人にとって、ミッション クリティカルなプロジェクトにあいまいな言語を使用することの最大の欠点は、人とスキルに関するものです。

  1. 潜在的なチームメンバーのスキルと言語の適性をどのように見つけて評価しますか?
  2. 誰かが去った場合、知識のギャップを埋めるのにどれくらいの時間がかかりますか?
  3. 追加の支援が必要な場合、開発チームを迅速に拡張できますか?

重要なプロジェクトでは、言語の経験が豊富で、学習中だけではない人材を求めています。

于 2014-02-11T13:21:27.313 に答える