4

編集: 明確にするために、動的言語用の IDE を作成することが不可能である可能性があると示唆するつもりはありませんでした。/編集

私の特定の経験では、JavaScript に関する何年にもわたる会話/コメントについて考えています。その多くはスタックにありますが、時々誰かがこれを言います。やるには難しい。

私はJSのパーサーを書くという観点からこれについて考えましたが、タイプがオートコンプリートのような機能と何の関係があるのか​​ 、またはものの定義に直行するのか理解できません。動的言語で渡されたパラメーターを介したスコープと可用性は、型チェックの懸念なしに確立するのがかなり簡単になると思います。特に、ほとんどの場合、ルールが実際には非常に単純な JS では。

人々が動的型を技術的なブロックの問題であるかのように引用するのを耳にするまで、私は、ほとんどの動的スクリプト言語ではコンソールから実行でき、冗長性が減り、ライブ実行環境でのテストが容易になることでデバッグが容易になると思っていました。 IDE の需要を減らします。

それで、それはどれですか?スコープ/可用性を確立するためのコードの解析を容易にする静的型に関する何か、または需要の減少について正しいですか?

4

2 に答える 2

7

IDE は動的言語で発明されました。リファクタリングは動的言語で発明されました。自動リファクタリング ツールは、動的言語で発明されました。

動的言語には、ネットワーク経由のペア プログラミングをサポートするグラフィカル IDE が組み込まれていましたが、静的言語にはグラフィックさえありませんでした。またはIDE。またはネットワーキングのサポート。

たとえば、Smalltalk および Lisp IDE は、Java や C# で利用できるものよりも優れています。実際、Eclipseかつて Smalltalk IDE でした。

IDE の品質は、それを改善するためにどれだけの労力が費やされたかによって決まります。Smalltalk と Lisp のコミュニティは、何十年にもわたる研究、何十人もの博士号取得、そして大量の資金を費やして強力な IDE を構築してきました。Java コミュニティも同様です。(実際、彼らは Smalltalk 企業を買収するためにトラックいっぱいのお金を費やしました…)

JavaScript コミュニティはそうしませんでした。それが全体の違いです。

両者の間で異なるアプローチが必要なものがいくつかあります。たとえば、IntelliSense / Content Assist / Autocompletion のようなものを考えてみましょう。動的言語でどの識別子がスコープ内にあるかを静的に判断しようとすることは、基本的に停止問題を解決することと同じであるため、それを行うことはできません。IDE も動的である必要があり、静的分析を行う必要はありません。実行中のコードをて、どの識別子がスコープ内にあるかを確認するだけで済みます。

于 2012-10-13T00:31:56.427 に答える
1

Smalltalkは動的言語であり、リファクタリングのサポートを含む最も初期のグラフィックベースのIDEの1つを備えていました。また、動的言語用のより最新のIDEの例については、JetbrainのRubyMineを参照してください。

それは不可能ではありません。それはもっと難しいです...しかし、それでも、一般的な開発者向けのツールを書くことはそうです。

于 2012-10-13T00:32:47.027 に答える