# دراكون

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 كلغة نمذجة / "ترميز" (والتي تعتبر برنامج "دراكون خالص" ) وكلغة برمجة (كجزء من لغة هجينة).
يضيف دمج لغة "أكاديمية" أكثر صرامة ومتغيرًا للغة الترميز في البرمجة ، مثل المقدمة من دراكون ، سكرًا نحويًا يسمح لمستخدمي لغات البرمجة المختلفة بفهم مساهمات بعضهم البعض في المشروع ككل وحتى في تقديم التعليقات إذا لزم الأمر.

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

دراكون ( (بالروسية: ДРАКОН)‏ ؛ تم تصميم معنى " التنين dragon" باللغة الإنجليزية) بهدف السماح بسهولة الفهم والوضوح ، حيث أن استخدام لغات متعددة في مشروع واحد يمكن أن يؤدي إلى ارتباك.
إن دراكون هي عائلة من اللغات الهجينة ، مثل DRAKON-C و DRAKON-ASM و DRAKON-Java وما إلى ذلك. تشترك جميع لغات عائلة دراكون في بناء جملة رسومية موحدة تعتمد على المخططات الانسيابية. يوفر التركيب الرسومي القياسي تشابهًا بين مخططات دراكون للغات الهجينة المختلفة. تستخدم لغة النص تركيبها الخاص.
أساس التركيب الرسومي هو الأبجدية الرسومية. تسمى العناصر الرسومية ("الحروف") لأبجدية درا كون وتسمى أيقونات (وليس الرموز). لدى دراكون أيضًا الماكرو أيقونس Macroicons أي الأقونات الكبيرة ، و هي كلمات رسومية للغة دراكون ؛ فهي تتكون أيضا من أيقونات. وهناك توجد 27 أيقونة و 21 ماكرو أيقونة في لغة دراكون.
يتم إنشاء مخططات دراكون بالرموز والماكرو أيقونات .
الأجزاء المهمة من الماكرو (الأيقونات الكبيرة) ا هي نقاط التكافؤ (في الرسم التوضيحي تظهر على شكل دوائر سوداء). في هذه النقاط ، يمكن إدخال الرموز أو الأيقونات على التوالي وترتيبها بواسطة محرر دراكون في أعمدة.

## التصميم

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

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

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

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

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

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

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

#### clearRow

تقوم وظيفة 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 في مركز الفضاء الألماني لتنفيذ بعض الوظائف الحرجة التي تمليها لوائح السلامة الخاصة باختبارات الطيران ، حيث تكون الأتمتة مهمة بسبب المسافة القصوى إلى المحطة الأرضية وتحتاج العملية إلى تنفيذ تلقائي سريع.
تم استخدام برنامج محرر دراكون لبرمجة المخططات الانسيابية رسوميًا والتي تم فحصها خصيصًا. تم إنشاء كود C من مخططات دراكون ، على سبيل المثال ، تمثيل لرمز الكشف عن الإطلاق.

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

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

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

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