GoGPT Best VPN GoSearch

OnWorks فافيكون

PDL :: Dataflowp - عبر الإنترنت في السحابة

قم بتشغيل PDL :: Dataflowp في مزود الاستضافة المجاني OnWorks عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

هذا هو الأمر PDL :: Dataflowp الذي يمكن تشغيله في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة على الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

برنامج:

اسم


PDL :: Dataflow - وصف فلسفة تدفق البيانات

موجز


pdl> $ a = أصفار(10)
pdl> $ b = $ a-> شريحة ("2: 4: 2") ؛
pdl> $ b ++ ؛
pdl> طباعة $ a ؛
[0 0 1 0 1 0 0 0 0]

تحذير


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

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

$ a = بعض العبث
$ b = $ a-> شريحة ("بعض الأجزاء") ؛
$ ب-> مجموعة (3,3,10،XNUMX،XNUMX) ؛

يغير أيضًا العنصر المقابل في $ a. أصبح $ b نافذة فعالة للبعض
العناصر الفرعية لـ $ a. يمكنك أيضًا تحديد إجراءاتك الخاصة التي تقوم بأنواع مختلفة من
مجموعات فرعية. إذا كنت لا تريد أن يكون $ b نافذة على $ a ، فيجب عليك فعل ذلك

$ b = $ a-> شريحة ("بعض الأجزاء") -> نسخ ؛

يؤدي النسخ إلى إيقاف تدفق كل البيانات بين اللغتين.

ترتبط الصعوبات في تدفق البيانات أحادي الاتجاه بتسلسلات مثل

$ ب = $ a + 1 ؛
++ ب دولار ؛

حيث توجد العديد من النتائج المحتملة وتصبح الدلالات غامضة بعض الشيء.

الوصف


تدفق البيانات جديد على PDL2.0. الفلسفة الأساسية وراء تدفق البيانات هي أن

> $ a = pdl 2,3,4،XNUMX،XNUMX ؛
> $ b = $ a * 2 ؛
> طباعة $ ب
[2]
> $ a-> set (0,5،XNUMX) ؛
> طباعة $ b ؛
[10]

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

> $ a = pdl 2,3,4،XNUMX،XNUMX ؛
> $ a-> doflow () ؛
> $ b = $ a * 2 ؛


ينتج عن نتيجة غير متوقعة. توضح بقية هذه المستندات ميزات و
تفاصيل تنفيذ تدفق البيانات.

كسول تقييم


عندما تحسب شيئًا مثل ما سبق

> $ a = pdl 2,3,4،XNUMX،XNUMX ؛
> $ a-> doflow () ؛
> $ b = $ a * 2 ؛

لن يتم حساب أي شيء في هذه المرحلة. حتى الذاكرة لمحتويات $ b
لم يتم تخصيصها. فقط الأمر

> طباعة $ ب

سيؤدي في الواقع إلى حساب $ b. من المهم أن تضع في اعتبارك عند القيام بذلك
قياسات ومعايير الأداء وكذلك عند تتبع الأخطاء.

هناك تفسير لهذا السلوك: قد ينقذ الدورات ولكن الأهم من ذلك ،
تخيل ما يلي:

> $ a = pdl 2,3,4،XNUMX،XNUMX ؛
> $ b = pdl 5,6,7،XNUMX،XNUMX ؛
> $ c = $ a + $ b ؛

> $ a->تغيير حجم(4)
> ب->تغيير حجم(4)
> طباعة $ c ؛

الآن ، إذا تم تقييم $ c بين تغيير الحجم ، فإن شرط الخطأ غير متوافق
قد تحدث الأحجام.

ما يحدث في الإصدار الحالي هو أن تغيير حجم $ a يرفع علامة في $ c:
رفع "PDL_PARENTDIMSCHANGED" و $ b نفس العلامة مرة أخرى. عندما يتم تقييم $ c بعد ذلك ،
يتم فحص العلامات ووجد أن هناك حاجة إلى إعادة الحساب.

بالطبع ، قد يجعل التقييم البطيء تصحيح الأخطاء في بعض الأحيان أكثر إيلامًا لأن الأخطاء قد تكون كذلك
تحدث في مكان لا تتوقعه. يوجد تتبع مكدس أفضل للأخطاء في ملف
يعمل مع PDL ، ربما بحيث يمكنك تبديل مفتاح PDL $ :: traceevals والحصول على
تتبع مكان الخطأ في الواقع.

أسر


هذا هو أحد المفاهيم الأكثر تعقيدًا لتدفق البيانات أحادي الاتجاه. ضع في اعتبارك
الكود التالي ($ a و $ b هما pdls بهما تدفق بيانات ممكّن):

$ c = $ a + $ b ؛
$ e = $ c + 1 ؛
$ d = $ c-> قطري () ؛
++ د $ ؛
$ f = $ c + 1 ؛

ما الذي يجب أن يحتوي عليه $ e و $ f الآن؟ ماذا عن وقت تغيير $ a وإعادة الحساب
أثار.

من أجل جعل تدفق البيانات يعمل كما تتوقع ، يجب أن يكون هناك مفهوم غريب إلى حد ما
قدم: العائلات. دعونا نقوم بعمل رسم تخطيطي:

أب
\ /
c
/|
/ |
إد

هذا ما تمتلكه PDL بالفعل في الذاكرة بعد الأسطر الثلاثة الأولى. عندما يتم تغيير $ d ،
نريد تغيير $ c لكننا لا نريد تغيير $ e لأنه موجود بالفعل على الرسم البياني. هو - هي
قد لا يكون واضحًا الآن سبب عدم رغبتك في تغييره ولكن إذا كان هناك 40 سطرًا من التعليمات البرمجية
بين السطر الثاني والرابع ، ستفعل ذلك. لذلك نحتاج إلى عمل نسخة من $ c و $ d:

أب
\ /
ج '. . . ج
/ | | \
/ | | \
إد '. . . مدافع

لاحظ أننا قمنا بإعداد الحرفين c و d الأصليين ، لأنهما لا يتوافقان مع العناصر
في $ c و $ d أي أكثر. لاحظ أيضًا الخطوط المنقطة بين الكائنين: عندما يكون $ a
تم تغيير هذا المخطط وأعيد تقييمه ، يحصل $ c بالفعل على قيمة c 'مع
زيادة قطرية.

للتعميم على ما سبق ، كلما تم تحور البيدل ، أي عندما تكون قيمته * الفعلية
تم تغييره قسرا (وليس فقط المرجع:

$ d = $ d + 1

ستنتج نتيجة مختلفة تمامًا (لن يكون $ c و $ d مرتبطين بعد الآن بينما

$ د = $ d + 1

سيحقق نفس الشيء مثل $ d ++) ، "عائلة" تتكون من جميع ألعاب piddles الأخرى المنضمة إلى
يتم إنشاء لغز متحور من خلال تحول ثنائي الاتجاه ويتم نسخ كل هؤلاء.

كل الشرائح أو التحويلات التي تحدد ببساطة مجموعة فرعية من pdl الأصلي ذات اتجاهين.
يجب أن يكون معكوس المصفوفة. لا توجد عوامل حسابية.

مصادر


ما قيل لك في القسم السابق ليس صحيحًا تمامًا: السلوك الموصوف هو
ليس * دائما * ما تريد. قد ترغب أحيانًا في الحصول على "مصدر" بيانات:

$ a = pdl 2,3,4،5,6,7،XNUMX ؛ $ ب = pdl XNUMX،XNUMX،XNUMX ؛
$ c = $ a + $ b ؛
السطر ($ ج) ؛

الآن ، إذا كنت تعلم أن $ a سيتغير وأنك تريد أن يتغير أطفاله معه
يمكنك التصريح عنه في مصدر بيانات (XXX غير مطبق في الإصدار الحالي):

$ أ->مصدر بيانات(1)

بعد ذلك ، $ a ++ أو $ a. = لن يؤدي شيء ما إلى إنشاء عائلة جديدة ولكنه سيغير $ a ويقطع
علاقتها بوالديها السابقين. سيتبع جميع أبنائه قيمته الحالية.

لذلك إذا تم الإعلان عن $ c في القسم السابق كمصدر ، فسيظل $ e و $ f
مساو.

تجليد


لن تكون آلية تدفق البيانات مفيدة جدًا بدون القدرة على ربط الأحداث بها
البيانات المتغيرة. لذلك ، نقدم مثل هذه الآلية:

> $ a = pdl 2,3,4،XNUMX،XNUMX
> $ ب = $ a + 1 ؛
> $ c = $ b * 2 ؛
> $ c-> bind (sub {print "A now: $ a، C now: $ c \ n"})
> PDL :: dowhenidle () ؛
أ الآن: [2,3,4،6،8] ، ج الآن: [10 XNUMX XNUMX]
> $ a-> set (0,1،XNUMX) ؛
> $ a-> set (1,1،XNUMX) ؛
> PDL :: dowhenidle () ؛
أ الآن: [1,1,4،4،4] ، ج الآن: [10 XNUMX XNUMX]

لاحظ كيف يتم استدعاء عمليات الاسترجاعات فقط أثناء PDL :: dowhenidle. طريقة سهلة للتفاعل
هذا إلى آليات حلقة حدث Perl (مثل Tk) قيد التخطيط.

هناك العديد من الاستخدامات لهذه الميزة: الرسوم البيانية ذاتية التحديث ، على سبيل المثال.

بلاه بلاه بلاه XXX المزيد من الشرح

القيود


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

البيانات
حجم البيانات
نوع البيانات
عمليات

في الوقت الحالي لدينا أول اثنين فقط (مهلاً ، 50٪ في غضون شهرين ليست سيئة ؛) ولكن
حتى هذا مفيد بحد ذاته. ومع ذلك ، وخاصة الأخيرة أمر مرغوب فيه منذ ذلك الحين
من شأنه أن يضيف إمكانية تدفق الإغلاق من مكان إلى آخر وسيؤدي إلى العديد
أشياء أكثر مرونة.

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

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

استخدم PDL :: Dataflowp عبر الإنترنت باستخدام خدمات onworks.net


خوادم ومحطات عمل مجانية

قم بتنزيل تطبيقات Windows و Linux

أوامر لينكس

Ad




×
الإعلانات
❤️تسوق أو احجز أو اشترِ هنا - بدون تكلفة، مما يساعد على إبقاء الخدمات مجانية.