خوارزمية بحث Dijkstra في دراكون DRAKON
 الجزء الخارجي من خوارزمية الفرز السريع في مخطط DRAKON-C
 مخطط DRAKON يصف نقل مريض cryonics
**DRAKON** ( (بالروسية: Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность)‏ ' لغة خوارزمية روسية صديقة توفر الوضوح ' ) هي لغة برمجة ونمذجة حسابية مجانية ومفتوحة المصدر تم تطويرها كجزء من برنامج Buran الفضائي للاتحاد السوفيتي البائد  في عام 1986 بعد الحاجة إلى زيادة إنتاجية تطوير البرمجيات. توفر اللغة المرئية طريقة موحدة لتمثيل العمليات في المخططات الانسيابية .
هناك عدة تطبيقات لمواصفات لغة البرمجة التي يمكن استخدامها لرسم المخططات الانسيابية المتخصصة واصدارها. تشمل الأمثلة المعطاة مخطط ''' دراكون '''المجاني والمفتوح المصدر (سبتمبر 2011).

التاريخ
-------

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

تم إنشاء لغة البرمجة من خلال تعييين الطابع الرسمي والهيكلة غير الكلاسيكية للمخططات الانسيابية الموضحة في معيار الجودة الدولي ISO 5807-85 والمعيار الروسي «Гост 19.701-90».  

كان الهدف هو استبدال اللغات المتخصصة المستخدمة في مشروع بوران بلغة برمجة عالمية واحدة. وهي PROL2 ، وتستخدم لتطوير برامج أنظمة الطيران لنظام الكمبيوتر و Biser-4 (Бисер-4) ،  DIPOL (ДИПОЛЬ) ، وتستخدم لتطوير برامج أنظمة الكمبيوتر الخاصة بالصيانة الأساسية )  و LAKS ( ЛАКС) المستخدمة للنمذجة.

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

تستخدم نظام CASE منذ عام 1996 في: مشروع دولي للـ إطلاق من البحر ، المرحلة العليا لإدخال المدار الروسي Fregat (بالروسية: Фрегат ، فرقاطة) لأنظمة التحكم والاختبارات على متن المركبة ،  مركبة الإطلاق الثقيلة المطورة (الصاروخ الحامل) Proton-M .

نظرة عامة
---------

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

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

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

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

عائلة لغات دراكون
-----------------

 أيقونات لغة DRAKON
 الأيقونات الكبيرة للغة دراكون .
دراكون ( (بالروسية: ДРАКОН)‏ ؛ تم تصميم معنى "التنين dragon" باللغة الإنجليزية) بهدف السماح بسهولة الفهم والوضوح ، حيث أن استخدام لغات متعددة في مشروع واحد يمكن أن يؤدي إلى ارتباك.

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

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

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

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

التصميم
-------

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

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

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

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

### التركيب البصري

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

أمثلة
-----

### مثال تتريس

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

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

#### خطوة تقدم

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

 المنطق الأساسي للعبة 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 من خلال تمييز عناصر الرسم التخطيطي بترتيب التشغيل.

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

### دراكون في مركز الفضاء الألماني

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

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

### نمذجة العمليات التجارية

يمكن استخدام لغة دراكون كلغة لنمذجة وتصوير العمليات التجارية. "تم تطبيق لغة DRAKON كلغة أساسية لبناء نماذج العمليات التجارية ، مما يجعل من الممكن الحصول على نموذج أولي لآلة الحالة المحدودة عند بناء نماذج العمليات التجارية. يسمح تصوير العمليات التجارية في مساحة الحالة (أيقونة الحالة) لصانع القرار بتحسين كفاءة اتخاذ القرار ". 

### استخدامات خارج البرمجة

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

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

المراجع
-------

1. ↑  "Stepan-mitkin/Drakon\_editor". *غيت هاب*. 28 سبتمبر 2022. مؤرشف من الأصل في 2023-06-01.
2. 1 2  Окулова Л. П. Проектирование образовательного процесса в соответствии с требованиями педагогической эргономики // Вестник. Наука и практика. Материалы конференции «Инновации и научные исследования, а также их применение на практике \ Innowacje i badania naukowe, jak rowniez ich zastosowanie w praktyce. — 29.05.2012- 31.05.2012. Варшава \ Warszaw». نسخة محفوظة 2022-07-09 على موقع واي باك مشين.
3. ↑  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.")*
4. 1 2  Штурманы ракет / Под общей редакцией Е. Л. Межирицкого. — М.: БЛОК-Информ-Экспресс, 2008. — 384 с. — C. 192. — (ردمك 978-5-93735-008-4)
5. ↑  "Technique of development of algorithms and programms "Grafit-Floks."" (PDF). مؤرشف من الأصل (PDF) في 2012-12-27. اطلع عليه بتاريخ 2012-12-27.
6. ↑  Морозов В.В. Трунов Ю.В. Комиссаров А.И. Пак Е.А. Жучков А.Г. Дишель В.Д. Залихина Е.Е. Паронджанов В.Д. Система управления межорбитального космического буксира «Фрегат» // Вестник НПО имени С.А. Лавочкина: Космонавтика и ракетостроение. — 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. نسخة محفوظة 2022-08-10 على موقع واي باك مشين.
7. ↑  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.
8. ↑  Созоров Н. Г. Трошин М. В. *Дракон-редактор как основное звено в формализации целевых дидактических ресурсов для проектирования интерактивного учебного курса*. Материалы региональной научно-методической конференции ИДНО Томского политехнического университета «Электронные дидактические материалы в инженерном образовании» 11-12 октября 2009 г. مؤرشف من الأصل في 2022-03-30.
9. ↑  Паронджанов В. Д. (2012). "Учебное пособие по языку ДРАКОН для вузов". *Учись писать, читать и понимать алгоритмы. Алгоритмы для правильного мышления. Основы алгоритмизации*. М.: ДМК Пресс. ص. 520. ISBN:978-5-94074-800-7. вузов". *Учись писать, читать и понимать алгоритмы. Алгоритмы для правильного мышления. Основы алгоритмизации*. М.: ДМК Пресс. p. 520. (ردمك 978-5-94074-800-7).
10. ↑  Parondzhanov V.D. (1995). *Visual Syntax of the DRAKON Language*. PROGRAMMING AND COMPUTER SOFTWARE. Official English Translation of Programmirovanie. ج. 21. ص. 142–153.
11. ↑  Митькин С.Б. Автоматное программирование на языке ДРАКОН // Программная инженерия. Том 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 نسخة محفوظة 2023-01-08 على موقع واي باك مشين.
12. ↑  "Marc Schwarzbach, Sven Wlach, Maximilian Laiacker. Modifying a Scientific Flight Control System for Balloon Launched UAV Missions // German Aerospace Center DLR // IEEE, 2015" (PDF). *drakon.su*. مؤرشف من الأصل (PDF) في 2023-06-01. اطلع عليه بتاريخ 2017-12-03.
13. ↑  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. نسخة محفوظة 2023-04-21 على موقع واي باك مشين.
14. ↑  Example of medical program for reducing body fat (in Russian)

* أيقونة بوابةبوابة تقانة المعلومات
* أيقونة بوابةبوابة علم الحاسوب

مصادر
-----

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

|  |
| --- |
| **دراكون** في المشاريع الشقيقة: |
|  | 
* صور وملفات صوتية من كومنز.
 |