質問

について議論する場合におけるコンピューターの進歩は言語、アラン-ケイのような単一の最も重要な属性のSmalltalkレbinding;また、言語、展延性、拡張性、不適切な結合する整理に出ます。これに同意するか。あ補償可能性に関する見方との結合とその理由を説明できたようで、主に二つのパラダイムのための領域のいずれかが利用されますか?

私個人の経験ではないですが広いのではの深いもの権威に基づき実施webアプリケーションでは、javascript、jQuery、jsext,actionscript、php、java、RoRとasp.net かに正の相関関係が遅いとの結合および膨張を削減したい。早結合いを検知-防止にもtypesafety誤りがない自動補完とIDEおよびプログラムの実践です。しかないのでチに自分を応援のための結合、前のリスク回避の側に回復する私の合理的な視点です。

がないんですけものためのバランスなどのトレードオフ.

役に立ちましたか?

解決

伝統的に、事前バインディングの大きな利点は、パフォーマンスのためにある:遅延バインディング言語は、実行時にすべてのデータについての型情報を運ぶ必要があり、コンパイル時にいくつかの最適化を行うための機会を失います。この違いは、コンピュータが速くなるにつれて、しかし、それほど重要になる、とVMとしてその場で最適化について賢く取得しています。

他のヒント

私の経験と高性能のソフトウェアなどゲーム番号-延)および性能-中性ソフトウェア(ウェブサイト、最もあて 巨大 の遅binding:の展延性/保守性/拡張性ました。

あっては主に二つの早期発見に結合する。最初の:

  • 実行時の性能

一般的に受け入れが、一般的には無関係でほとんどの場合することが可能であるスローハードウェアに問題が安くなります。もちろん、例外(例えばない場合は、ハードウェアだけ走行します。

第二の成果の早期binding:

  • 開発のしやすさ

も過小評価.大型プロジェクトの開発者が従事している他人の部品は、Ideを読むことができ早期にバインディングしていきたいと考えておりま通知、開発者(自動補完、ドキュメントです。ここでは実践と結合でのバインディングの作成を行います。る可能性があり、遅結合の言語の場合には、IDEを推測す構造体の定義からコードするのかな構造でも変更できま実行時に、そうではない。

開発のしやすさが大きます。Itを最小限に高価なプログラマ時間--大きなお客様の開発チームは、より重要となります。する必要のバランスに対する柔軟性だと結合す。

レイトバインディング

初期の結合対は本当に言語アーキテクチャの関数です。事前バインディングは、機械語命令だけで(おそらく、ルックアップテーブルを経由して)アドレスにジャンプし、そこから実行が開始どこコードを構築することができることを意味しています。遅延バインディングは、言語を遅く各アクセスのために(通常ハッシュテーブルルックアップ)ルックアップするシンボルとタイプの参照を必要とする。

JavaなどのいくつかのVMベースの言語が早期にネイティブのマシンコードをバインドしている間だけは本当に直接事前バインディングを行うことができます。後半、それは動的言語の通訳としてハッシュ・ルックアップの同じ種類を行う必要があります結合することができません。遅延バインディングは、(これはどのように働くかOLEオートメーションである)アドレスを取得するために実行されるコードの塊を必要とします。これは、CPUによって直接実行することはできません - コードが実行されなければなりません。

のコードは実際にハッシュルックアップ機能などで、独自のアーリーバインド分岐ターゲットを持つことになります遅延バインディングをやっていることに注意してください。だから、このような観点から、早期の直接CPUによって実行される任意のコードのために必要な結合です。レイトバインディングはソフトウェアで行う必要があります。

アーリーバインディングは、コード最適化の非常に広範囲のためにも必要である。

それがあったように、

Cのようなアーキテクチャは、金属に近いコードを書くことでスイートスポットを持っています。あなたがこれを行うにしたい場合は、事前バインディングの側面は、かなり多くの固有言語のアーキテクチャにあります。 Pythonのような遅延バインディングの言語で遅延バインディングも固有のものです。一部の言語では両方を提供していますが、使用される特定のタイプは、実行されている特定の構造に縛られます。

後期bingingが実行システム自体を拡張することを可能にします。例えば、システムはオオカミについて知る起動します。時間はウルフに、evolveDomesticate()メソッドを通過すると(?)、犬と呼ばれる新しいクラスを回転し、我々は今、犬を持っていることをインスタンス化します。あなたはそれをシャットダウンして再起動した場合、犬はまだ再起動後に存在することになるので、Smalltalkのは、全体のシステムイメージを保存します。あなたは、特定のハードウェア上で実行されているオブジェクトに進化し、メッシュネットワークに接続したら、生態系全体の本当のシャットダウンがない(ない日が吹くまでまで)。私は、これはアラン・ケイが神となり、後期バインディングの利点と話していたものだと思います。

私は、不適切な制御の反転のようなカップリング、依存性注入、工場を回避するためのより良い方法/パターンがあると思います...

しかし、私は遅延バインディング
の「使いやすい」バージョンの独立性を好みます ただ、使用

var excel = CreateObject("Excel.Application");

と遅延バインディングは、まずExcel.Applicationの種類、そしてどこ...

からそれを得るために把握します

ここでリンクが事前バインディングとして知られてコンパイル時間中に行われる結合時間をコンパイル

関数が呼び出されると実行中に機能のリンクが

遅延バインディングとして知られている

動的結合

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top