Data-driven programming
کمپیوٹر پروگرامنگ میں، ڈیٹا پر مبنی پروگرامنگ ایک پروگرامنگ کا نمونہ ہے جس میں پروگرام کے بیانات ڈیٹا کو مماثل کرنے اور ضروری پروسیسنگ کو بیان کرتے ہیں بجائے اس کے کہ اقدامات کے سلسلے کی وضاحت کی جائے۔ ڈیٹا پر مبنی زبانوں کی معیاری مثالیں ٹیکسٹ پروسیسنگ زبانیں سیڈ اور اے ڈبلیو کے، اور دستاویز کی تبدیلی کی زبان ایکس ایس ایل ٹی ہیں، جہاں ڈیٹا ان پٹ اسٹریم میں لائنوں کا ایک سلسلہ ہے-اس طرح انہیں لائن پر مبنی زبانوں کے نام سے بھی جانا جاتا ہے-اور پیٹرن کا ملاپ بنیادی طور پر باقاعدہ تاثرات یا لائن نمبروں کے ذریعے کیا جاتا ہے۔ متعلقہ نمونے ڈیٹا پر مبنی پروگرامنگ ایونٹ پر مبنی پروگرامنگ سے ملتی جلتی ہے، اس میں دونوں کو پیٹرن میچنگ اور نتیجے میں پروسیسنگ کے طور پر تشکیل دیا جاتا ہے، اور عام طور پر ایک مرکزی لوپ کے ذریعے نافذ کیا جاتا ہے، حالانکہ وہ عام طور پر مختلف ڈومینز پر لاگو ہوتے ہیں۔ کنڈیشن/ایکشن ماڈل بھی پہلو پر مبنی پروگرامنگ سے ملتا جلتا ہے، جہاں جب جوائن پوائنٹ (کنڈیشن) تک پہنچ جاتا ہے تو پوائنٹ کٹ (ایکشن) پر عمل درآمد ہوتا ہے۔ اسی طرح کا نمونہ کچھ ٹریسنگ فریم ورک جیسے ڈی ٹریس میں استعمال کیا جاتا ہے، جہاں کوئی تحقیقات (انسٹرومینٹیشن پوائنٹس) اور متعلقہ اعمال کی فہرست دیتا ہے، جو شرط پوری ہونے پر انجام دیتے ہیں۔ خلاصہ ڈیٹا ٹائپ ڈیزائن کے طریقوں کو آبجیکٹ پر مبنی پروگرامنگ میں ڈھالنے کے نتیجے میں ڈیٹا پر مبنی ڈیزائن ہوتا ہے۔ اس قسم کا ڈیزائن بعض اوقات سافٹ ویئر کے کسی ٹکڑے کے تصور کے دوران کلاسوں کی وضاحت کے لیے آبجیکٹ پر مبنی پروگرامنگ میں استعمال ہوتا ہے۔ ڈیٹا پر مبنی پروگرامنگ کا اطلاق عام طور پر ساختہ ڈیٹا کے سلسلے پر، فلٹر کرنے، تبدیل کرنے، جمع کرنے (جیسے کمپیوٹنگ کے اعداد و شمار)، یا دوسرے پروگراموں کو کال کرنے کے لیے کیا جاتا ہے۔ عام اسٹریمز میں لاگ فائلیں، حد سے الگ کردہ اقدار، یا ای میل پیغامات شامل ہیں، خاص طور پر ای میل فلٹرنگ کے لیے۔ مثال کے طور پر، ایک اے ڈبلیو کے پروگرام لاگ اسٹیٹمنٹ کے ایک سلسلے کو ان پٹ کے طور پر لے سکتا ہے، اور مثال کے طور پر سب کو کنسول پر بھیج سکتا ہے، وارننگ سے شروع ہونے والے "وارننگ" فائل پر لکھ سکتا ہے، اور اگر کوئی لائن "ایرر" سے شروع ہوتی ہے تو sysadmin کو ای میل بھیج سکتا ہے۔ یہ یہ بھی ریکارڈ کر سکتا ہے کہ روزانہ کتنے انتباہات درج کیے جاتے ہیں۔ متبادل طور پر، کوئی بھی حد بندی سے الگ کردہ اقدار کے سلسلے پر کارروائی کر سکتا ہے، ہر لائن یا مجموعی لائنوں پر کارروائی کر سکتا ہے، جیسے کہ جمع یا زیادہ سے زیادہ۔ ای میل میں، پروک میل جیسی زبان کچھ ای میلز پر ملنے کے لیے شرائط کی وضاحت کر سکتی ہے، اور کیا اقدامات کرنے ہیں (ڈیلیور، باؤنس، ڈسکارڈ، فارورڈ وغیرہ)۔ کچھ ڈیٹا پر مبنی زبانیں ٹورنگ سے مکمل ہیں، جیسے اے ڈبلیو کے اور یہاں تک کہ سیڈ، جبکہ دیگر جان بوجھ کر بہت محدود ہیں، خاص طور پر فلٹرنگ کے لیے۔ مؤخر الذکر کی ایک انتہائی مثال پی کی پی ہے، جو صرف فلٹرنگ پر مشتمل ہے، جس میں واحد عمل "کیپچر" ہے۔ کم انتہائی، چھلنی میں فلٹر اور ایکشن ہوتے ہیں، لیکن بنیادی معیار میں کوئی متغیر یا لوپس نہیں ہوتے ہیں، جو صرف بے ریاست فلٹرنگ بیانات کی اجازت دیتے ہیں: ہر ان پٹ عنصر کو آزادانہ طور پر پروسیس کیا جاتا ہے۔ متغیرات ریاست کی اجازت دیتے ہیں، جو ان کارروائیوں کی اجازت دیتے ہیں جو ایک سے زیادہ ان پٹ عنصر پر منحصر ہوتے ہیں، جیسے کہ جمع (ان پٹ کا خلاصہ) یا تھروٹلنگ (ہر بھیجنے والے سے فی گھنٹہ زیادہ سے زیادہ 5 میلز کی اجازت دیتے ہیں، یا بار بار لاگ پیغامات کو محدود کرتے ہیں)۔ ڈیٹا سے چلنے والی زبانوں میں اکثر ڈیفالٹ ایکشن ہوتا ہے: اگر کوئی شرط مماثل نہیں ہے تو، لائن پر مبنی زبانیں لائن کو پرنٹ کر سکتی ہیں (جیسا کہ سیڈ میں)، یا پیغام پہنچا سکتی ہیں (جیسا کہ چھلنی میں)۔ کچھ ایپلی کیشنز میں، جیسے فلٹرنگ، مماثلت خصوصی طور پر کی جا سکتی ہے (اس لیے صرف پہلا مماثلت بیان)، جبکہ دیگر معاملات میں تمام مماثلت والے بیانات کا اطلاق ہوتا ہے۔ دونوں صورتوں میں، کسی بھی نمونے سے ملنے میں ناکامی "ڈیفالٹ رویے" ہو سکتی ہے یا اسے ایک غلطی کے طور پر دیکھا جا سکتا ہے، جسے آخر میں کیچ آل بیان سے پکڑا جا سکتا ہے۔ فوائد اور مسائل اگرچہ نفاذ کے درمیان فوائد اور مسائل مختلف ہو سکتے ہیں، لیکن اس نمونے کے ساتھ کچھ بڑے ممکنہ فوائد اور مسائل ہیں۔ فنکشنلٹی کے لیے صرف یہ ضروری ہے کہ وہ ان متغیرات کے تجریدی ڈیٹا کی قسم کو جان لے جن کے ساتھ وہ کام کر رہا ہے۔ افعال اور انٹرفیس کو ایک ہی ڈیٹا فیلڈز والی تمام اشیاء پر استعمال کیا جا سکتا ہے، مثال کے طور پر آبجیکٹ کی "پوزیشن"۔ ڈیٹا کو ترجیح کے مطابق اشیاء یا "اداروں" میں گروپ کیا جا سکتا ہے جس کا کوئی نتیجہ نہیں ہوتا ہے۔ اگرچہ ڈیٹا پر مبنی ڈیزائن ڈیٹا اور فعالیت کے جوڑے کو روکتا ہے، کچھ معاملات میں، ڈیٹا پر مبنی پروگرامنگ کو ناقص آبجیکٹ پر مبنی ڈیزائن کا باعث بننے کا استدلال کیا گیا ہے، خاص طور پر جب زیادہ تجریدی ڈیٹا سے نمٹا جائے۔ اس کی وجہ یہ ہے کہ خالصتا ڈیٹا سے چلنے والی چیز یا ہستی کی وضاحت اس کی نمائندگی کے طریقے سے کی جاتی ہے۔ شے کی ساخت کو تبدیل کرنے کی کوئی بھی کوشش اس پر انحصار کرنے والے افعال کو فوری طور پر توڑ دے گی۔ مثال کے طور پر، کوئی بھی گاڑی چلانے کی سمتوں کو چوراہوں کے سلسلے (دو چوراہوں والی گلیوں) کے طور پر پیش کر سکتا ہے جہاں ڈرائیور کو دائیں یا بائیں مڑنا چاہیے۔ اگر کسی چوراہے (ریاستہائے متحدہ میں) کی نمائندگی ڈیٹا میں زپ کوڈ (5 ہندسوں کا نمبر) اور دو گلیوں کے ناموں (متن کے تار) کے ذریعے کی جاتی ہے، تو کیڑے اس وقت ظاہر ہو سکتے ہیں جب ایک شہر جہاں سڑکیں متعدد بار آپس میں ٹکرا جاتی ہیں۔ اگرچہ اس مثال کو زیادہ آسان بنایا جا سکتا ہے، لیکن سافٹ ویئر انجینئرنگ میں ڈیٹا کی تنظیم نو ایک کافی عام مسئلہ ہے، یا تو کیڑے کو ختم کرنے، کارکردگی بڑھانے، یا نئی خصوصیات کی حمایت کرنے کے لیے۔ زبانیں اے ڈبلیو کے اوز پرل-ڈیٹا پر مبنی پروگرامنگ جیسا کہ اے ڈبلیو کے اور سیڈ میں ہے ایک نمونہ ہے جس کی حمایت پرل سیڈ لوا کلوجر ٹیب (زبان) ایف ڈی ایم میل ڈراپ پروک میل سیو بیسک ایکس ایس ایل ٹی بھی دیکھیں صف پروگرامنگ بیکس-نور فارم بیرونی حوالہ جات لنک "اہم حصہ پروگرام منطق کو ہارڈ وائرڈ کنٹرول ڈھانچے سے دور اور ڈیٹا میں منتقل کر رہا ہے"۔ پروگرامنگ کے نمونے