سؤال

تشترك العديد من لغات البرمجة في ميزات عامة وحتى عالمية إلى حد ما. على سبيل المثال ، إذا قارنت Java و VB6 و .NET و PHP و Python ، فستجد وظائف مشتركة مثل هياكل التحكم ، والمعالجة الرقمية والسلسلة ، إلخ.

ما الذي تم فعله لتحديد هذه الميزات على مستوى اللغة التعويضية (أو اللغوية)؟

تقدم UML مرجعًا وصفيًا للبرامج في كل جانب ، ولكن يبدو أن التركيز في العالم الحقيقي هو عمليات بيانات. هل UML ذات صلة؟

أنا لا أسأل "لماذا ليس لدينا لغة واحدة تحل محل العدد الكبير." نحتاج إلى العديد من الأدوات المختلفة (على الأقل في هذا EON).

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

ومع ذلك ، أتوقع أنه يمكن استخدام مثل هذا النموذج لتبديل لغة إلى أخرى (بأهداف محدودة - فكر في ترجمة JIST).

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

المحلول

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

هناك الكثير من العمل هنا من الصعب اختيار مرجع محدد. لكنني آمل أن أعطيك بعض الكلمات الرئيسية المفيدة لمواصلة البحث.

نصائح أخرى

كانت هناك العديد من المحاولات في هذا ، لكن لم يكن أي منها ناجحًا للغاية. الأقدم الذي أدركه هو غير مألوف منذ أكثر من 50 عامًا.

لقد أعطيت قائمة باللغات المشتركة بينها لأنها متشابهة إلى حد ما - إنها جميع اللغات الإجرائية ذات الجذور الشائعة وبعض ملحقات OO التي تم إلقاؤها ، بحيث لا تكون مفاجئة للغاية. إذا بدأت في النظر إلى لغات مختلفة مثل Lisp أو Haskell أو Erlang أو Prolog أو حتى SQL ، فستبدأ في رؤية أشياء مختلفة جدًا.

عادة ما يتم استخدام UML لتحديد الخوارزميات/الكود بعبارات أبسط قبل الانتقال إلى رمز حقيقي.

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

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

أعتقد أن MOF هي اللغة الشاملة. يمكنك على سبيل المثال إنشاء مخططات UML من MOF عبر Metamodel UML. إذا قمت بحفظ معلومات metamodel هذه في XMI ، فيمكنك حفظ المعلومات التي تحتاجها وأكثر من أي لغة. XMI الدلالي غني لدرجة أنه لا يوجد حد لاستخدامه. إذا قمت بتخطيط UML إلى XMI في الجزء العلوي من metamodel live متزامن مع MOF ، فهذه هي اللغة العالمية بالنسبة لي.

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

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