سؤال

أحاول تحديد حالة فنية سابقة للفكرة التالية:

1) يقوم المستخدم بكتابة بعض الأكواد بلغة تسمى (insert_name_here)؛

2) يختار المستخدم لغة الوجهة من قائمة مرشحي الإخراج المعروفين (javascript، Ruby، Perl، python)؛

3) يقوم المعالج بترجمة Insert_name_here إلى كود قابل للتشغيل باللغة الوجهة؛

4) يقوم المعالج بعد ذلك بتشغيل الكود باستخدام استدعاء النظام ذي الصلة بناءً على اللغة المختارة

السبب وراء نجاح ذلك هو وجود تعيين مسبق من 1 إلى 1 بين جميع بنيات اللغة من Insert_name_here إلى جميع لغات الوجهة المدعومة.

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

هل هذا موجود بالفعل؟

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

المحلول

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

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

نصائح أخرى

تم تصميم .NET CLR بحيث يتم ترجمة كل من C++.Net وC#.Net وVB.Net إلى نفس لغة الآلة، ويمكنك "إلغاء ترجمة" سطر الأوامر هذا مرة أخرى إلى أي واحدة من تلك اللغات.

لذا، نعم، أود أن أقول إنه موجود بالفعل ولكن ليس تمامًا كما تصفه.

نعم برنامج يحول برنامج من تمثيل إلى آخر يفعل يخرج.يطلق عليه "المترجم".

وأما سؤالك هل هذا ممكن دائما:طالما أن لغتك المستهدفة لا تقل قوة عن لغة المصدر، فهذا ممكن.لذا، إذا كانت لغتك المستهدفة هي لغة تورينج كاملة، فهي كذلك دائماً ممكن، لأنه لا يمكن أن تكون هناك لغة أقوى من لغة تورينج الكاملة.

ومع ذلك، ليس من الضروري أن يكون هناك رسم خرائط غبي بنسبة 1:1.

على سبيل المثال:يواجه برنامج التحويل البرمجي Microsoft Volta الذي يقوم بترجمة كود CIL الثانوي إلى كود مصدر JavaScript مشكلة:يحتوي .NET على سلاسل رسائل، بينما لا يحتوي JavaScript على ذلك.ولكن يمكنك تنفيذ المواضيع مع الاستمرارية.حسنًا، جافا سكريبت لا تحتوي على استمرارية أيضًا، ولكن يمكنك تنفيذ الاستمرارية مع الاستثناءات.لذلك، يقوم فولتا بتحويل CIL إلى CPS ثم يقوم بتنفيذ CPS مع الاستثناءات.(تحتوي الإصدارات الأحدث من JavaScript على عناصر شبه كوروتين على شكل مولدات؛يمكن استخدام هذه أيضًا، ولكن الغرض من Volta هو العمل عبر نطاق واسع من إصدارات JavaScript، بما في ذلك JScript في Internet Explorer.)

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

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

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

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

ومع ذلك، يجب أن تكون الأفكار القابلة للبراءة جديدة ومفيدة وغير واضحة.أعتقد أن فكرتك لن تمر على الثلث من هذه نظرًا لأنك تصف مترجم لغة يتمتع بالتقنية السابقة للعديد من محولات pascal-to-c وfortran-to-c الموجودة هناك.

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

تمتلك شركة IBM منتجًا يسمى Visual Age Generator والذي يمكنك من خلاله كتابة التعليمات البرمجية بلغة واحدة (خاصة) ويتم تحويلها إلى COBOL/C/Java/أخرى للتشغيل على منصات مستهدفة مختلفة بدءًا من أجهزة الكمبيوتر الشخصية وحتى الحواسيب الكبيرة System z الكبيرة، لذا فهذه هي أول منتجاتك المشكلة (التفكير في تسجيل براءة اختراع لفكرة تستخدمها بالفعل شركة IBM، أكبر شركة حاصلة على براءات اختراع في العالم).

طن منهم.p2c وf2c والتنفيذ الأصلي لـ C++ وObjective C أذهلني على الفور.أبعد من ذلك، من الصعب تمييز ما تصفه عن أي مترجم، خاصة بالنسبة لنا نحن الرجال القدامى الذين قام مترجمونا بإنشاء كود ASM لإعادة التعيين المتوسط ​​على أي حال.

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