هل هناك لغة برمجة* مع ديناميكية ، وربما حتى الكتابة الضعيفة؟

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

سؤال

لقد تساءلت عما إذا كانت هناك لغة برمجة تجمع رمز/ثنائي الجهاز (وليس بويتيكود ثم تنفذه بواسطة VM ، وهذا شيء مختلف تمامًا عند التفكير في الكتابة) التي تتميز بكتابة ديناميكية و/أو ضعيفة ، على سبيل المثال:

فكر في لغة مجمعة حيث:

  • لا تحتاج المتغيرات إلى الإعلان
  • يمكن إنشاء المتغيرات أثناء وقت التشغيل
  • يمكن للوظائف إرجاع قيم أنواع مختلفة

أسئلة:

  • هل هناك لغة برمجة؟
  • (لما لا؟

أعتقد أن اللغة المترجمة ديناميكيًا ولكنها تم تجميعها ستشعر حقًا ، لكن هل هي ممكنة؟

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

المحلول

أعتقد أن lisp يناسب هذا الوصف.

http://en.wikipedia.org/wiki/Common_Lisp

نصائح أخرى

قد يكون لـ Objective-C بعض الخصائص التي تبحث عنها. يمكن فتح الفصول الدراسية وتغييرها في وقت التشغيل ، ويمكنك إرسال أي نوع من الرسائل إلى كائن ، سواء كان يستجيب له عادة أم لا. وبهذه الطريقة ، يمكنك تنفيذ كتابة البط ، كما هو الحال في روبي. نوع id, يعادل تقريبا أ void*, ، يمكن منحها مع واجهات تحدد العقد الذي سيلتزم به نوع (غير معروف).

C# 4.0 لديه العديد من هذه الخصائص ، إن لم يكن كل هذه الخصائص. إذا كنت تريد حقًا رمز الجهاز الأصلي ، فيمكنك قم بتجميع رمز BYTECOND لأسفل إلى رمز الجهاز باستخدام الأداة المساعدة.

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

تحقق من فيديو Anders Hejlsberg ، مستقبل C#، من أجل التمهيدي:

http://channel9.msdn.com/pdc2008/tl16/

يحتوي Objective-C على العديد من الميزات التي تذكرها: يتم تجميعها إلى رمز الجهاز ويتم كتابتها بشكل فعال فيما يتعلق بمثيلات الكائن. ال id يمكن لـ Type تخزين أي مثيل فئة ويستخدم Objective-C تمرير الرسائل بدلاً من مكالمات وظائف الأعضاء. يمكن إنشاء الطرق/إضافتها في وقت التشغيل. يمكن لوقت التشغيل الهدف-C أيضًا توليف متغيرات مثيل الفئة في وقت التشغيل ، ولكن لا يزال يتعين الإعلان عن المتغيرات المحلية (كما في C).

يحتوي C# 4.0 على العديد من هذه الميزات ، باستثناء أنه تم تجميعه إلى IL (Bytecode) وتفسيره باستخدام جهاز افتراضي (CLR). هذا يثير نقطة مثيرة للاهتمام ، ومع ذلك: إذا تم تجميع رمز BYTECODE في الوقت المناسب إلى رمز الجهاز ، فهل هذا مهم؟ إذا كان الأمر كذلك ، فإنه يفتح على الباب ليس فقط لأي من لغات .NET ، ولكن بيثون (انظر Pypy أو ابتلاع غير مألوف أو Ironpython) وروبي (انظر ماكروبي أو Ironruby) والعديد من اللغات الأخرى المكتوبة ديناميكيا ، لا تذكر العديد من المتغيرات lisp.

نعم هذا ممكن. يرى جوليا. إنها لغة ديناميكية (يمكنك كتابة البرامج بدون أنواع) لكنها لا تعمل أبدًا على VM. يقوم بتجميع البرنامج إلى الكود الأصلي في وقت التشغيل (مجموعة JIT).

في سياق مماثل إلى LISP ، هناك عامل, ، لغة* متسلسلة مع لا متغيرات بشكل افتراضي ، الكتابة الديناميكية ، ونظام كائن مرن. يمكن تشغيل رمز العوامل في المترجم التفاعلي ، أو تم تجميعه إلى مواطن قابل للتنفيذ باستخدامه deploy وظيفة.

* قائم على المكدس الوظيفي الخالي من النقاط

VB 6 لديه معظم ذلك

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

  • د لديه نوع الاستدلال ، وجمع القمامة ، ومرافق metaprogramming قوية ، ومع ذلك يجمع رمز الجهاز الفعال. ليس لديها كتابة ديناميكية.
  • ج# يمكن تجميعها مباشرة إلى رمز الجهاز عبر مشروع Mono. يحتوي C# على ميزة مماثلة ل D ، ولكن مرة أخرى بدون كتابة ديناميكية.

ربما يحتاج بيثون إلى C إلى هذه المعايير.

  1. اكتب في بيثون.

  2. تجميع Python إلى التنفيذ. يرى عملية لتحويل البرنامج النصي البسيط إلى Windows قابل للتنفيذ. انظر أيضا كتابة مترجم رمز من بيثون إلى ج؟

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