دراكون

تصغير| الجزء الخارجي من خوارزمية الفرز السريع في مخطط DRAKON-C
تصغير|مخطط DRAKON يصف نقل مريض cryonics
DRAKON (  ' لغة خوارزمية روسية صديقة توفر الوضوح ' ) هي لغة برمجة ونمذجة حسابية حرة ومفتوحة المصدر تم تطويرها كجزء من برنامج بوران الفضائي للاتحاد السوفيتي في عام 1986 بعد الحاجة إلى زيادة إنتاجية تطوير البرمجيات. توفر اللغة المرئية طريقة موحدة لتمثيل العمليات في المخططات الانسيابية .
هناك عدة تطبيقات لمواصفات لغة البرمجة التي يمكن استخدامها لرسم المخططات الانسيابية المتخصصة واصدارها . تشمل الأمثلة المعطاة مخطط '''  دراكون  '''المجاني والمفتوح المصدر (سبتمبر 2011).

 التاريخ 
بدأ تطوير دراكون في عام 1986 لمعالجة المخاطر الناشئة لسوء الفهم - والأخطاء اللاحقة - بين مستخدمي لغات البرمجة المختلفة في برنامج الفضاء الروسي. فقد تم تطويره من قبل فلاديمير باروندجانوف بمشاركة وكالة الفضاء الفيدرالية الروسية ( مركز الأكاديمي بيليوجين ، موسكو ) والأكاديمية الروسية للعلوم ( معهد كيلديش للرياضيات التطبيقية ).

تم إنشاء لغة البرمجة من خلال تعييين الطابع الرسمي والهيكلة غير الكلاسيكية للمخططات الانسيابية الموضحة في معيار الجودة الدولي ISO 5807-85 والمعيار الروسي «Гост 19.701-90».Окулова Л. П. Проектирование образовательного процесса в соответствии с требованиями педагогической эргономики // Вестник. Наука и практика. Материалы конференции «Инновации и научные исследования, а также их применение на практике \ Innowacje i badania naukowe, jak rowniez ich zastosowanie w praktyce. — 29.05.2012- 31.05.2012. Варшава \ Warszaw». Parondzhanov V. D. Visual Syntax of the DRAGON Language // Programming and Computer Software, 01 / 1995; Volume 21 (Issue 3): p. 142 - 153. (Here is an incorrect translation. This should be read as "DRAKON language.")

كان الهدف هو استبدال اللغات المتخصصة المستخدمة في مشروع بوران بلغة برمجة عالمية واحدة. وهي PROL2 ، وتستخدم لتطوير برامج أنظمة الطيران لنظام الكمبيوتر و Biser-4 (Бисер-4) ، Штурманы ракет / Под общей редакцией Е. Л. Межирицкого. — М.: БЛОК-Информ-Экспресс, 2008. — 384 с. — C. 192. —  DIPOL (ДИПОЛЬ) ، وتستخدم لتطوير برامج أنظمة الكمبيوتر الخاصة بالصيانة الأساسية )  و LAKS ( ЛАКС) المستخدمة للنمذجة.

تم الانتهاء من العمل في عام 1996 (بعد 3 سنوات من إغلاق مشروع بوران رسميًا) ، عندما تم تطوير نظام من برمجة CASE الآلي إلى نظام جديد يسمى "Grafit-Floks".

تستخدم نظام CASE منذ عام 1996 في: مشروع دولي للـ إطلاق من البحر ، المرحلة العليا لإدخال المدار الروسي Fregat (بالروسية: Фрегат ، فرقاطة) لأنظمة التحكم والاختبارات على متن المركبة ، Морозов В.В., Трунов Ю.В., Комиссаров А.И., Пак Е.А., Жучков А.Г., Дишель В.Д., Залихина Е.Е., Паронджанов В.Д. Система управления межорбитального космического буксира «Фрегат» // Вестник НПО имени С.А. Лавочкина: Космонавтика и ракетостроение. — 2014, №1 (22). — С. 16–25. (In Russian) Morozov V.V., Trunov Yu.V., Komissarov A.I., Pak E.A., Zhuchkov A.G., Dishel V.D., Zalihina E.E., Parondzhanov V.D. Control System of "Fregat" Versatile Space Tug // Vestnik NPO imeni S.A. Lavochkina. Cosmonautics and Rocket Engineering — 2014, 1 (22). — P. 16–25.  مركبة الإطلاق الثقيلة المطورة (الصاروخ الحامل) Proton-M .

 نظرة عامة 
الاسم دراكون DRAKON هو اختصار ااتعبير الروسي "Дружелюбный Русский Алгоритмический [язык] ، Который Обеспечивает Наглядность" ، والتي تُترجم إلى "مفهوم أو فكرة يسهل تخيلها وفهمها " ، ويمكن ترجمتها على أنها "برمجة توضيح ".

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

يمكن استخدام لغة DRAKON كلغة نمذجة / "ترميز" (والتي تعتبر برنامج "دراكون خالص" ) وكلغة برمجة (كجزء من لغة هجينة).

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

 عائلة لغات دراكون 
تصغير|أيقونات لغة DRAKON
تصغير|الأيقونات الكبيرة للغة دراكون .
دراكون (  ؛ تم تصميم معنى " التنين dragon" باللغة الإنجليزية) بهدف السماح بسهولة الفهم والوضوح ، حيث أن استخدام لغات متعددة في مشروع واحد يمكن أن يؤدي إلى ارتباك.

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

أساس التركيب الرسومي هو الأبجدية الرسومية. تسمى العناصر الرسومية ("الحروف") لأبجدية درا كون وتسمى أيقونات (وليس الرموز). لدى دراكون أيضًا الماكرو أيقونس Macroicons أي الأقونات الكبيرة ، و هي كلمات رسومية للغة دراكون ؛ فهي تتكون أيضا من أيقونات. وهناك توجد 27 أيقونة و 21 ماكرو أيقونة في لغة دراكون.

يتم إنشاء مخططات دراكون بالرموز والماكرو أيقونات .

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

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

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

تم تحسين قواعد دراكون لإنشاء الرسوم البيانية معرفيًا لسهولة الفهم ، مما يجعلها أداة لزيادة الذكاء .Bezel Ja. V. Is it possible to improve the workings of the mind? A new look at the problem.— Herald of the Russian Academy of Sciences. Volume 73, Issue 4, 2003. вузов". Учись писать, читать и понимать алгоритмы. Алгоритмы для правильного мышления. Основы алгоритмизации. М.: ДМК Пресс. p. 520. .

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

 التركيب البصري 
النص الكامل للمقالة التي يحتوي على وصف للبنية المرئية للغة دراكون توجد باللغة الإنجليزية ، 12 صفحة ، مجانية للتنزيل ، في هيئة pdf.

 أمثلة 

 مثال تتريس 
مثال بسيط لبرنامج بلغة دراكون

هذه الأمثلة هي رمز حقيقي من تنفيذ لعبة Tetris . الأمثلة بلغة DRAKON-JavaScript. تحدد الأيقونات (العناصر الأولية المرئية) بلغة دراكون التي تعرّف الهيكل العام للخوارزميات. وتوجد مقتطفات التعليمات البرمجية داخل الرموز (الأساسية) في JavaScript.

 خطوة تقدم 
تنفذ وظيفة الخطوات المتقدمة المنطق الأساسي للعبة. إن "خطوة التقدم" AdvanceStep هي آلة حالة يتم تمثيلها على شكل شجرة قرارات .Митькин С.Б. Автоматное программирование на языке ДРАКОН // Программная инженерия. Том 10, № 1, 2019 (in Russian). Mitkin Stepan B. Automata-Based Programming in DRAKON Language. Programmnaya Ingeneria, 2019, vol. 10, no. 1, pp. 3—13. DOI: 10.17587/prin.10.3-13  يستدعي محرك اللعبة تطبيق التقدم بشكل دوري. آلة الحالة هذه لديها ثلاث حالات "تشغيل" ، و "إسقاط" ، و "منتهي". تتخذ اللعبة إجراءات مختلفة حسب الحالة الواقعة حالية. على سبيل المثال ، في حالة "التشغيل" ، عندما يكون هناك قذيفة ساقطة ويمكن للقذيفة أن تتحرك لأسفل ، يتم تحريكها لأسفل خطوة واحدة.
تصغير|المنطق الأساسي للعبة Tetris بلغة DRAKON-JavaScript
باستخدام DRAKON ، يمكن لقارئ الخوارزمية أن يتتبع بصريًا جميع المسارات الممكنة في شجرة القرار.
 كود JavaScript تم إنشاؤه من مخطط DRAKON:function advanceStep() {
  var _sw_8;
  _sw_8 = module.state;
  if (_sw_8 === "playing") {
    if (module.projectile) {
      if (canMoveDown()) {
        moveDown()
        return getStepPeriod()
      } else {
        freezeProjectile()
        return noProjectile()
      }
    } else {
      return noProjectile()
    }
  } else {
    if (_sw_8 === "dropping") {
      if (canMoveDown()) {
        moveDown()
        return DropPeriod
      } else {
        freezeProjectile()
        module.state = "playing"
        return getStepPeriod()
      }
    } else {
      if (_sw_8 === "finished") {
      } else {
        throw new Error("Unexpected Choice value: " + _sw_8);
      }
      return undefined
    }
  }
}

 noProjectile 
تصغير|وظيفة noProjectile للعبة Tetris بلغة DRAKON-JavaScript
تتعامل وظيفة noProjectile مع الموقف المحدد عندما لا يكون هناك مقذوف ساقط. Projectile إذا كان هناك صف ممتلئ ، فسيتم إزالة هذا الصف من الشبكة. خلاف ذلك ، تحاول اللعبة إدخال قذيفة جديدة. إذا لم يكن هناك مكان للقذيفة ، فستخسر اللعبة.
 كود JavaScript تم إنشاؤه من مخطط DRAKON:function noProjectile() {
  if (clearRow()) {
    return getStepPeriod()
  } else {
    createProjectile()
    if (isGameLost()) {
      gameOver()
      module.state = "finished"
      return undefined
    } else {
      return getStepPeriod()
    }
  }
}

 clearRow 
تصغير|الخوارزمية التي تزيل خطًا من شبكة Tetris بلغة DRAKON-JavaScript
تقوم وظيفة clearRow بمسح جميع الصفوف من أسفل إلى أعلى حتى تصل إلى صف بدون فجوات. في مثل هذه الحالة ، يتم إزالة الصف من الشبكة ، وتزداد النتيجة ، وترتفع وتيرة اللعبة.
 كود JavaScript تم إنشاؤه من مخطط DRAKON:function clearRow() {
  var row, rows;
  rows = module.glass.rows
  row = rows.length - 1;
  while (true) {
    if (row >= 0) {
      if (rowHasHoles(row)) {
        row--;
      } else {
        deleteRow(row)
        increaseScore()
        increaseSpeed()
        return true 
      }
    } else {
      module.addedScore = 0
      return false 
    }
  }
}

 الرسوم المتحركة لتنفيذ دراكون 
توضح الصورة أدناه تنفيذ خوارزمية DRAKON الظلية (الشكل العام) . يتم تحريك تنفيذ الخوارزمية من خلال تمييز عناصر الرسم التخطيطي بترتيب التشغيل.

تتكون صورة "الصيد" Fishing من أربع أشجار:

 التحضير للصيد.
 في انتظار لدغة.
 عمل الصيد.
 طريق العودة.

يظهر المسار الرئيسي لكل شجرة من خلال إبراز خط عمودي سميك يسمى سيخ skewer .

يحتوي الرسم البياني الانسيابي دائمًا على مسار من رمز العنوان إلى كل رأس (عقدة) في الرسم البياني للتحكم في التدفق. وبالتالي ، لا يمكن أن تحتوي الصورة الظلية على كود لا يمكن الوصول إليه في أي ظروف.
مركز|تصغير=DRAKON thumbprint.gif| يتم تحريك تنفيذ خوارزمية DRAKON من خلال تمييز عناصر الرسم التخطيطي بترتيب التشغيل.

 الاستخدام الحديث 

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

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

 نمذجة العمليات التجارية 
يمكن استخدام لغة دراكون كلغة لنمذجة وتصوير العمليات التجارية. "تم تطبيق لغة DRAKON كلغة أساسية لبناء نماذج العمليات التجارية ، مما يجعل من الممكن الحصول على نموذج أولي لآلة الحالة المحدودة عند بناء نماذج العمليات التجارية. يسمح تصوير العمليات التجارية في مساحة الحالة (أيقونة الحالة) لصانع القرار بتحسين كفاءة اتخاذ القرار ".Valeev S.S., Kondratyeva N.V. Analysis of business processes in a distributed organizational and technical system based on snapshots // Computational technologies. 2023. V. 28. № 1. P. 41-47. 

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

في محرر دراكون يمكن إضافة الصور إلى أيقونات دراكون. تُستخدم هذه القدرة في بعض الحقول لإنشاء رسوم بيانية بسهولة "شبه مخطط انسيابي " . في روسيا يُعرف محرر دراكون باستخدامه في المجال الطبي كأداة لعمل مخططات "تعليمية" للمرضى أو العاملين في المجال الطبي. Example of medical program for reducing body fat (in Russian) →

 المراجع 

 مصادر 

 في باروندجانوف. كيف تحسن عمل عقلك. خوارزميات بدون مبرمجين - إنها بسيطة للغاية! ( ак улучшить работу ума. Алгоритмы без программистов - то очень просто! ело، 2001. - 360с. )
 إس ميتكين. دراكون: الثورة البشرية في فهم البرامج

تصنيف:الحوسبة في الاتحاد السوفيتي
تصنيف:برنامج بوران
تصنيف:لغات برمجة مرئية
تصنيف:مخطط التطوير
تصنيف:مخطط تطورات الصناعية