سؤال
ما هي لغة برمجة بيانات البيانات؟ لماذا تستخدمه؟ وهل هناك فوائد لذلك؟
المحلول
في لغة تدفق التحكم ، لديك دفق من التعليمات التي تعمل على البيانات الخارجية. التنفيذ الشرطي والقفزات ومكالمات الإجراءات قم بتغيير دفق التعليمات المراد تنفيذه. يمكن اعتبار ذلك بمثابة تعليمات تتدفق عبر البيانات (على سبيل المثال ، تعمل الإرشادات على السجلات التي يتم تحميلها بالبيانات حسب التعليمات - البيانات ثابتة ما لم يحركها دفق التعليمات). يقفز عبارة تدفق التحكم "إذا كان" إلى الفرع الصحيح في دفق التعليمات ، ولكن لا يتم نقل البيانات.
في لغة تدفق البيانات ، لديك دفق من البيانات التي يتم تمريرها من التعليمات إلى التعليمات التي سيتم معالجتها. التنفيذ الشرطي والقفزات والإجراءات توجيه البيانات إلى تعليمات مختلفة. يمكن اعتبار ذلك على أنه بيانات تتدفق من خلال تعليمات ثابتة مثل كيفية تدفق الإشارات الكهربائية عبر الدوائر أو تدفق الماء عبر الأنابيب. سيؤدي عبارة Dataflow "if" إلى توجيه البيانات إلى الفرع الصحيح.
بعض الأمثلة على ميزات وميزات تدفق البيانات:
- جداول البيانات هي أساسا تدفق البيانات
- أنابيب يونيكس
- العقود الآجلة والوعود هي بنيات تشبه البيانات أو تشبه البيانات الموجودة في العديد من اللغات الحديثة
- المراسلة في نموذج الممثل هو البيانات
- تحتوي بعض اللغات على ميزات تدفق البيانات:
- أوز لديها متغيرات تدفق البيانات
- رائع لديها gpars
- clojure لديها clojure.contrib.dataflow, ريغي و الرمح
اللغات النصية
- VHDL, Verilog وغيرها لوصف الأجهزة اللغات هي أساسا تدفق البيانات
- تشاك
- cunieform
- بريق, ، تستخدم في صناعات الدفاع والفضاء ونطاقات الطاقة
- بطليموس الثاني
- نيكويست
اللغات البصرية
- لابفيو (لقطة شاشة [مصدر])
- ماكس/MSP (لقطة شاشة [مصدر])
- بيانات نقية (لقطة شاشة [مصدر])
- Reaktor (لقطة شاشة [مصدر])
- Scade (لقطة شاشة [مصدر]) ، بيئة البرمجة الرسومية للبريق
- Synthmaker (لقطة شاشة [مصدر]) و حجر التدفق
- VVVV (لقطة شاشة [مصدر])
- Expecco (لقطة شاشة [مصدر])
- هزة (لقطة شاشة [مصدر])
- بلوك (لقطة شاشة [مصدر])
- كوارتز الملحن (لقطة شاشة [مصدر])
- Audiomulch (لقطة شاشة [مصدر])
المنتجات التي تضمنت لغة مرئية للاشتعال:
نصائح أخرى
لغات برمجة بيانات البيانات هي تلك التي تركز على حالة البرنامج وتتسبب في حدوث العمليات وفقًا لأي تغيير في الدولة. لغات برمجة البيانات البيانات متوازية بطبيعتها ، لأن العمليات تعتمد على المدخلات التي ستتسبب في تنفيذ العملية. هذا يعني بخلاف البرنامج العادي حيث تتبع عملية واحدة العملية التالية ، سيتم تنفيذ عمليات برنامج DataFlow طالما تم استيفاء المدخلات وبالتالي لا يوجد ترتيب محدد.
غالبًا ما تستخدم لغات برمجة بيانات البيانات علامة تجزئة كبيرة حيث تكون المفاتيح هي بيانات البرنامج وقيم الجدول هي مؤشرات لعمليات البرنامج. هذا يجعل إنشاء البرامج متعددة الأوساخ أسهل في لغة برمجة DataFlow ، لأن كل جوهر سيحتاج فقط إلى علامة التجزئة للعمل.
مثال شائع على لغة برمجة بيانات البيانات هو برنامج ورقة انتشار يحتوي على أعمدة من البيانات التي تتأثر بأعمدة البيانات الأخرى. إذا تغيرت البيانات في عمود واحد ، فمن المحتمل أن تتغير بيانات أخرى في الأعمدة الأخرى. على الرغم من أن برنامج SPECTION SHOEP هو المثال الأكثر شيوعًا للغة برمجة تدفق البيانات ، إلا أن معظمها يميل إلى أن يكون لغات رسومية.
نوع واحد من برمجة تدفق البيانات البرمجة التفاعلية. عندما يتم استخدام هذا النمط من البرمجة بلغة وظيفية ، يطلق عليه البرمجة التفاعلية الوظيفية. مثال على لغة البرمجة التفاعلية الوظيفية للويب flapjax.
ايضا، أنيك هي لغة تدفق البيانات مؤخرًا ناقش على أخبار المتسلل.
مثال آخر هو مارتليت من أكسفورد.
لغات برمجة بيانات البيانات اقترح عزل بعض السلوكيات المحلية في ما يسمى "ممثلين"، من المفترض أن يتم تشغيلها بشكل متوازي وتبادل البيانات من خلال القنوات من نقطة إلى نقطة. لا توجد فكرة عن الذاكرة المركزية (سواء للرمز والبيانات) على عكس نموذج فون نيومان لأجهزة الكمبيوتر.
هذه الجهات الفاعلة تستهلك رموز البيانات على مدخلاتهم و ينتج بيانات جديدة عن مخرجاتهم.
هذا التعريف لا يفرض الوسائل لتشغيل هذا في الممارسة العملية. ومع ذلك ، يجب تحليل إنتاج/استهلاك البيانات بعناية: على سبيل المثال ، إذا لم يستهلك الممثل B بنفس سرعة الممثل A الذي ينتج البيانات ، فإن الذاكرة المحتملة غير المحدودة (FIFO) مطلوبة بينهما . العديد من المشكلات الأخرى يمكن أن تنشأ مثل deadlocks.
في كثير من الحالات ، سيفشل هذا التحليل لأن تشابك السلوكيات الداخلية أمر مستعق (بعيدًا عن متناول اليوم الأساليب الرسمية).
على الرغم من هذا، لا تزال لغات برمجة تدفق البيانات جذابة في العديد من المجالات:
- على سبيل المثال ، لتحديد النماذج المرجعية لترميز الفيديو: لن يقوم برنامج C Pure C بالمهمة لأنه يجعل افتراض أن كل شيء يعمل كسلسلة من العمليات ، وهو غير صحيح في أجهزة الكمبيوتر (خط الأنابيب ، VLIW ، Moterlicores ، و VLSI) . ربما يمكنك إلقاء نظرة على هذا: أطروحة الدكتوراه الأخيرة. تقترح لغة CAL DataFlow كلغة موحدة للجيل القادم من مرجع الترميز/فك التشفير.
- المهمة الحرجة عند الحاجة إلى السلامة: إذا أضفت بعض الافتراضات القوية حول إنتاج/استهلاك البيانات ، فستحصل على لغة ذات إمكانات قوية من حيث توليد الكود ، والبراهين ، وما إلى ذلك (انظر اللغات المتزامنة)
Excel (وغيرها من جداول البيانات) هي لغات البيانات في الأساس. تشبه لغات تدفق البيانات إلى حد كبير لغات البرمجة الوظيفية ، باستثناء أن القيم الموجودة في أوراق الرسم البياني للبرنامج بأكمل .
العديد من أدوات ETL هي أيضا في هذا المجال. تعد مهام تدفق البيانات في MS SSIS مثالًا جيدًا. أداة رسومية في هذه الحالة.
إنه في الواقع مفهوم قديم - في السبعينيات ، كان هناك حتى آلة + لغة تم تصميمها لبرمجة وتنفيذ تدفق البيانات الفعال (مانشستر DataFlow آلة).
الشيء العظيم في ذلك هو ازدواجية اللغات الوظيفية الكسول مثل هاسكل. لذلك ، إذا كانت خطوات المعالجة الخاصة بك وظيفية خالصة ، وبالنظر إلى أن لديك ما يكفي من وحدات المعالجة لتقييمها ونقل النتائج حولها ، فستحصل على أقصى قدر من التوازي مجانًا - تلقائيًا ودون أي جهد برمجة!
هناك بعض المجالات التي تكون فيها برمجة تدفق البيانات أكثر منطقية. تعتبر الوسائط الحقيقية على سبيل المثال ، وتركز كلاهما على كلاهما على كلاهما على برمجة الوسائط في الوقت الفعلي. أفترض أن طبيعتها البصرية تقوم أيضًا بتعيين بشكل جيد لبرمجة بيانات البيانات.
بامكانك ان تحاول كاميليون: www.shinoe.org/cameleon الذي يبدو أنه بسيط للاستخدام. إنها لغة رسومية للبرمجة الوظيفية التي تحتوي على نهج البيانات (العمل).
إنه مكتوب في C ++ ، ولكن يمكنه استدعاء أي نوع من البرامج المحلية أو البعيدة المكتوبة في أي لغة برمجة.
لديها نهج متعدد النطاق ويبدو أنه تورينج كاملة (هذا ال بيتري شبكة امتداد).