مترجم MSH

MSH مترجم


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

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

إذا تجاهلنا الزخارف البسيطة للغات ، فهناك العديد من هذه المفاهيم.

  • برمجة الكائنات
  • إدارة البيانات ، الكتابة.
  • تمرير عدد متغير من المعلمات إلى الإجراءات والوظائف.
  • إدارة عملية التنفيذ.

من حل هذه المشاكل ، يتم إضافة خصائص لغة البرمجة.

برمجة الكائنات


في رأيي ، هذا مفهوم مهم ويجب أن يكون حاضرًا في اللغة. بالطبع ، حتى لو كانت اللغة لا تحتوي على فئات وكائنات ، فلا شيء يمنعك من التفكير وكتابة البرامج في نمط الكائن ، ولكن لا يزال وجود هذه الآليات يجعل من الممكن تبسيط هذه المهمة.

إدارة البيانات ، الكتابة


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

تمرير عدد متغير من المعلمات إلى الإجراءات والوظائف


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

إدارة العمليات


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

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

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

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

تم تنفيذ نظام التشغيل Linux x64.

من المهتمين بعملي ، الكتابة على البريد ، سأرسل التوزيع.
PS.
MSH ليست فقط لغة غير مطبوعة ، إنها غير معلن عنها. من حيث المبدأ ، لا توجد أوصاف متغيرة في ذلك. في الحالة العامة ، ليس للمتغير نوع فحسب ، بل له هيكل أيضًا. المصفوفات والقوائم و HASH والمكدسات والإعلان مطلوب لوصف كل بنية. في MUMPS ، لا توجد لغات إعلان من هذا القبيل من حيث المبدأ ؛ أي متغير هو شجرة. لا توجد مساحة مخصصة لهذه الشجرة. يتم إنشاء عقدة شجرة في وقت كتابة البيانات إليها ، وتوجد فقط هذه العقد التي تم فيها التسجيل. لا توجد قيود على نوع الفهرس. لذلك ، تعد مقارنة MUMPS مع PHP و Java Script واللغات الأخرى غير صحيحة. MUMPS هو عالم منفصل ، مع مشاكلها ومزاياها. لفهم ذلك ، تحتاج إلى إعادة بناء التفكير. من المستحيل فهم MUMPS من خلال قراءة المراجعات المسيئة. يجب علينا أن نغرق في ذلك. قراءة الوثائق. تثبيت نظام MUMPS. العمل على ذلك. حقيقة أنهم لا يفهمونني هنا أمر طبيعي تمامًا. نحن نتحدث عن عوالم مختلفة. في عالم MUMPS ، لا توجد مناقشات نجريها هنا حول الأنواع والهياكل. قليل من MUMPSists مهتمون بكيفية ومكان تخزين بياناتهم. تحتوي أي بيانات في MUMPS دائمًا على تمثيلين: رقم وسلسلة. واعتمادًا على العملية ، يتم أخذ هذا التمثيل أو ذاك. أعرف دائمًا النتيجة الدقيقة اعتمادًا على العملية التي قدمتها. MUMPS يفرض المبرمج على العمل من حيث شجرة. يمكن أن توجد الأشجار في كل من الوسائط الخارجية: globals (التناظرية لقواعد البيانات) ، وفي الذاكرة: الإعدادات المحلية (التناظرية للمتغيرات في البرامج). بشكل أساسي ، عند تصميم نظام معلومات ، فإنني أعمل مباشرةً مع البيانات الموجودة على قرص من البيانات المحلية الوسيطة ، ولدي حد أدنى ولا يخلقون أي مشاكل بالنسبة لي. لذلك ، لن تجد في منتديات MUMPS مناقشات حول أنواع المتغيرات في مواقعها. طريقة التصميم النموذجية هي تصميم أشجار المدخلات وعطلات نهاية الأسبوع. وبعد ذلك ، حسب الضرورة ، تكتب برامج لتشكيل المدخلات والمخرجات الأشجار. البيانات في MUMPS أساسية ، والبرامج ثانوية. مع مقالاتي ، أهدف إلى تقديم أكبر عدد ممكن من المبرمجين لهذا العالم الآخر من MUMPS. أعتقد أن هذا العالم أكثر صحة. أنا معجب بهذه اللغة البسيطة والقوية والأنيقة. يسعدني أن أكتب عليها. لأسفي العميق ، ليس لدي الكثير للقيام بذلك. أريد إنشاء لغة يمكن فيها كتابة كل شيء دون تجاوز حدود هذه اللغة. اكتب خادمًا ، اكتب عميل سطح المكتب ، أضف لغة إلى المتصفحات.

Source: https://habr.com/ru/post/ar447668/


All Articles