مقارنة كود كتبته بشكل ثابت مع رمز كتبته حيوي - التكاليف والفوائد

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

سؤال

مهما كانت مزاياه، أكشن أدوبي 3 يقدم ما يمكن أن يكون فرصة فريدة لاستكشاف عواقب كتبته مقابل اللغات مصنف، لأنه هو الى حد كبير شاملة الصارم للجافا سكريبت، مع كل الفوائد النحوية / النفقات العامة للتعريفات نوع صارمة، صب التعريفي، الخ.

وهذا ما يجعل من الممكن يقارن نفسه قانون مكتوب في كلا الاتجاهين، في حين العوملة من تركيب اللغة الأساسية.

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

ولقد قضيت وقتا كبيرا مع كل من اللغات، ولكن لم تكن قد قررت بشكل قاطع الطريق الذي أنا أفضل، وأنا أفضل أن لا تضيف إلى الأدلة القولية - أنا أبحث عن معلومات موضوعية

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

المحلول

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

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

وماذا في كثير من الأحيان يحصل المهملة في هذه الحالات، رغم ذلك، هو أن اللغات كتبته بشكل ثابت عموما منافذ الخروج (مثل typecasts)، وعلى ما يبدو اللغات الديناميكية يمكن استخدام نوع الاستدلال الاستدلال، وعلاج المطبوعة كما ثابت، وأنواع التعبير على ما يبدو الديناميكي .

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

نصائح أخرى

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

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

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

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

ووOP وfelipecsl يتم الخلط حول المصطلحات المستخدمة عند الحديث عن كتابة التخصصات.

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

وليس هناك "كتابة الصارمة"، بقدر ما أعرف.

والآن لشخص آخر للإجابة على السؤال الفعلي؛ -)

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

وإحصائيا typd انج. هل لديك المتغيرات وxpressions عن أنواع الثابتة التي تنص صراحة من قبل مبرمج أو infered التي كتبها. وcompiler.using هذا. معلومات، وسيتم تنفيذ نوع الاختيار هنا خارج في وقت compile-. في حين كتبته انج حيوي لديهم قيمهم ثابتة، ولكن المتغيرات وxxpressions تخلخل fixed..due إلى facct أن أي وقت مضى عندما يتم احتساب معامل، فمن المرجح أن يعود قيم مختلفة، ثم يتم perfomed الاختيار نوع بعد أن كان المعامل computed.ie بعد حساب ولكن قبل تنفيذ العملية في وقت التشغيل

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