الربط المبكر مقابلالربط المتأخر:ما هي المقارنة مزايا وعيوب ؟

StackOverflow https://stackoverflow.com/questions/367411

سؤال

عند مناقشة تطور لغات الكمبيوتر آلان كاي يقول أن أهم سمة من Smalltalk في وقت متأخر ملزمة ؛ أنه يعطي اللغة تطويع لها والتمدد ، ويسمح غير مناسبة اقتران إلى ريفاكتوريد مع مرور الوقت.هل توافق على ذلك ؟ هل هناك تعويض مزايا الربط المبكر أن يفسر لماذا يبدو أن المهيمن من اثنين من النماذج المجالات حيث يمكن استخدامها.

تجربتي الشخصية (التي ليست واسعة أو عميقة بما فيه الكفاية لتكون موثوقة) ، على أساس تنفيذ تطبيقات الويب مع جافا سكريبت, مسج, jsext, أكشن, php, java, RoR ، asp.net يبدو أن تشير إلى وجود علاقة إيجابية بين الربط المتأخر و سخام الحد.الربط المبكر أنا متأكد يساعد على كشف ومنع بعض typesafety الأخطاء ، ولكن كذلك تكملة جيدة IDE و البرمجة الجيدة الممارسات العامة.لذلك أنا أميل إلى قبض نفسي تأصيل الربط المتأخر الجانب ، قبل أن خطر لي-تجنب الجانب يعيد إلي الرشيد نظر.

ولكن أنا حقا لم يكن لديك شعور جيد لكيفية تحقيق التوازن بين المفاضلات.

هل كانت مفيدة؟

المحلول

وتقليديا ميزة كبيرة من الربط المبكر هو الإنجاز: لغة ملزمة أواخر ديها للقيام نوع من المعلومات عن جميع البيانات الخاصة به في وقت التشغيل، ويفقد فرصة للقيام ببعض التحسينات في وقت الترجمة. وقد أصبح هذا الفرق أقل أهمية بكثير، على الرغم، كما الحصول على أجهزة الكمبيوتر بشكل أسرع، وكما رصد السفن الحصول على أكثر ذكاء حول تحسين على الطاير.

نصائح أخرى

في تجربتي كل من عالية الأداء البرمجيات (مثلألعاب, عدد الطحن) والأداء محايدة برنامج (المواقع الأكثر كل شيء آخر) ، كان هناك واحد ضخمة ميزة الربط المتأخر:على الطواعية/الصيانة/التمدد لقد ذكرت لك.

لقد كان هناك اثنين من أهم فوائد الربط المبكر.الأولى:

  • وقت الأداء

هو عادة مقبولة ، ولكن عموما لا صلة لها بالموضوع لأنه في معظم الحالات فإنه من الممكن رمي الأجهزة في المشكلة ، الذي هو أرخص.هناك بالطبع استثناءات (مثلا ، إذا كنت لا تملك الأجهزة أنت تعمل على).

الفائدة الثانية من الربط المبكر:

  • سهولة التطوير

يبدو أن الاستخفاف.في المشاريع الكبيرة حيث المطورين يعملون مع الآخرين مكونات ايديس يمكن قراءة أوائل الارتباطات إلى إبلاغ المطور (مع تكملة, مستندات, الخ).هذا هو أقل العملية مع أواخر ملزم لأن الارتباطات التي تم إنشاؤها في وقت التشغيل.فإنه لا يزال من الممكن مع أواخر ملزمة لغة إذا IDE يمكن استنتاج هيكل التعاريف من رمز ، ولكن منذ هيكل يمكن دائما أن تتغير في وقت التشغيل, انها ليست موثوقة جدا.

سهولة التطوير هو صفقة كبيرة.فإنه يقلل تكلفة مبرمج الوقت-و أكبر فريق التطوير ، أكثر أهمية يصبح.كنت بحاجة إلى التوازن ضد المرونة تحصل مع أواخر ملزمة لغة.

والربط المبكر مقابل الربط المتأخر هو في الحقيقة وظيفة العمارة اللغة. في وقت مبكر يعني ملزمة يمكن أن يبنى هذا الرمز حيث تعليمات الجهاز يقفز فقط إلى عنوان ويبدأ تنفيذ من هناك (ربما من خلال جدول بحث). الربط المتأخر يتطلب رمز ونوع إشارة إلى أن نظرت إلى أعلى (عادة ما يكون بحث جدول تجزئة) لكل الوصول، مما يؤدي إلى إبطاء اللغة أسفل.

وبينما بعض اللغات على أساس VM-مثل جافا لا بد في وقت مبكر رمز الجهاز الأصلي يمكن القيام بذلك إلا حقا الربط المبكر مباشرة. للقيام الربط المتأخر عليها أن تفعل نفس النوع من البحث تجزئة شأنها في ذلك شأن مترجم لغة ديناميكية. ثم يتطلب الربط المتأخر جزءا من التعليمات البرمجية ليتم تنفيذها للحصول على عنوان (هذه هي الطريقة أتمتة OLE يعمل). ولا يمكن أن يتم ذلك مباشرة من قبل وحدة المعالجة المركزية - رمز لابد من تنفيذها.

لاحظ أن رمز تفعل الربط المتأخر سيكون لها أهداف فرع المنضم المبكر الخاصة بها فعلا في وظيفة تجزئة بحث وهكذا دواليك. لذلك، من هذا المنظور، الربط المبكر هو ضروري لأية تعليمات برمجية غير ليتم تنفيذها مباشرة من قبل وحدة المعالجة المركزية. الربط المتأخر يجب القيام به في مجال البرمجيات.

وملزم في وقت مبكر أمر ضروري أيضا لفترة طائفة واسعة من تحقيق أمثلية التعليمات البرمجية.

والبنى مثل C لديها بقعة الحلو في كتابة التعليمات البرمجية بالقرب من المعدن، كما انها كانت. أين تريد أن تفعل هذا الجانب ملزم المبكر جدا المتأصلة كبيرا لبنية اللغة. بلغة المربوطة في وقت متأخر مثل بايثون والربط المتأخر هو أيضا الأصيل. بعض اللغات العرض على حد سواء، ولكن نوع معين يستخدم سيتم مرتبطة يجري تنفيذ بناء معين.

والمتأخر نهم يسمح نظام التشغيل لتمديد نفسها. على سبيل المثال، يبدأ النظام حتى يعرف عن الذئاب. مع مرور الوقت وسيلة evolveDomesticate ()، في وولف (؟)، يدور فئة جديدة تسمى الكلب وinstantiates ذلك ولدينا الكلاب الآن. سيكون من Smalltalk حفظ صورة النظام بأكمله حتى إذا كنت إغلاقها وإعادة تشغيله، فإن الكلاب لا تزال موجودة بعد إعادة التشغيل. بمجرد أن تتطور إلى كائنات التي تعمل على أجهزة معينة ومرتبطة في شبكة متداخلة لا يوجد اغلاق الحقيقي من النظام البيئي بأكمله (وليس حتى الشمس يفجر). وأعتقد أن هذا هو ما كان آلان كاي نتحدث عن ميزة في وقت متأخر من الملزمة، تصبح الله.

وأعتقد أن هناك طرق أفضل / أنماط لتجنب اقتران غير مناسب، مثل انعكاس عن نطاق السيطرة، حقن التبعية والمصانع و...

ولكن، وأنا أحب "سهلة الاستخدام" نسخة الاستقلال من
ملزم الراحل مجرد استخدام

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

ووالربط المتأخر سوف معرفة أي نوع من Excel.Application، ومكان الحصول عليه من ...

وتجميع الوقت ملزم التي يتم تنفيذ الربط خلال وقت تجميع كما هو معروف الربط المبكر

ودينامية ملزمة فيها الربط بين وظيفة يؤديها أثناء تنفيذ عندما يتم استدعاء الدالة كما هو معروف الربط المتأخر

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top