Probabilistic programming
امکانی پروگرامنگ (پی پی) ایک پروگرامنگ نمونہ ہے جس میں امکانی ماڈلز کی وضاحت کی جاتی ہے اور ان ماڈلز کا اندازہ خود بخود انجام دیا جاتا ہے۔ یہ ممکنہ ماڈلنگ اور روایتی عام مقصد کے پروگرامنگ کو متحد کرنے کی کوشش کی نمائندگی کرتا ہے تاکہ سابقہ کو آسان اور زیادہ وسیع پیمانے پر قابل اطلاق بنایا جا سکے۔ اسے ایسے نظام بنانے کے لیے استعمال کیا جا سکتا ہے جو غیر یقینی صورتحال کے پیش نظر فیصلے کرنے میں مدد کرتے ہیں۔ ممکنہ پروگرامنگ کے لیے استعمال ہونے والی پروگرامنگ زبانوں کو "ممکنہ پروگرامنگ زبانیں" (پی پی ایل) کہا جاتا ہے۔ ایپلی کیشنز ممکنہ استدلال کو مختلف قسم کے کاموں کے لیے استعمال کیا گیا ہے جیسے اسٹاک کی قیمتوں کی پیش گوئی کرنا، فلموں کی سفارش کرنا، کمپیوٹر کی تشخیص کرنا، سائبر دراندازی کا پتہ لگانا اور تصویر کا پتہ لگانا۔ تاہم، حال ہی تک (جزوی طور پر محدود کمپیوٹنگ طاقت کی وجہ سے)، امکانی پروگرامنگ دائرہ کار میں محدود تھی، اور زیادہ تر انفریشن الگورتھم کو ہر کام کے لیے دستی طور پر لکھنا پڑتا تھا۔ اس کے باوجود، 2015 میں، ان چہروں کی 2 ڈی تصاویر کی بنیاد پر انسانی چہروں کے 3 ڈی ماڈل تیار کرنے کے لیے ایک 50 لائن کا ممکنہ کمپیوٹر وژن پروگرام استعمال کیا گیا تھا۔ پروگرام نے الٹا گرافکس کو اپنے تخمینہ کے طریقہ کار کی بنیاد کے طور پر استعمال کیا، اور اسے جولیا میں پکچر پیکیج کا استعمال کرتے ہوئے بنایا گیا تھا۔ اس سے "کوڈ کی 50 لائنوں میں جو ہزاروں لیتے تھے" ممکن ہو گیا۔ جنرل امکانی پروگرامنگ لائبریری (جولیا میں بھی لکھی گئی ہے) کا اطلاق بصارت اور روبوٹکس کے کاموں پر کیا گیا ہے۔ حال ہی میں، ممکنہ پروگرامنگ سسٹم Turing.jl کا اطلاق مختلف دواسازی اور معاشیات کی ایپلی کیشنز میں کیا گیا ہے۔ جولیا میں ممکنہ پروگرامنگ کو جولیا پیکیج Zygote.jl کو Turing.jl کے ساتھ ملا کر تفریق پذیر پروگرامنگ کے ساتھ بھی جوڑا گیا ہے۔ امکانی پروگرامنگ زبانیں عام طور پر بایسیائی علمی سائنس میں ادراک کے نمونوں کو تیار کرنے اور ان کا جائزہ لینے کے لیے بھی استعمال ہوتی ہیں۔ ممکنہ پروگرامنگ زبانیں پی پی ایل اکثر بنیادی زبان سے پھیلتی ہیں۔ بنیادی زبان کا انتخاب بنیادی زبان کی آنٹولوجی کے ساتھ ماڈل کی مماثلت کے ساتھ ساتھ تجارتی تحفظات اور ذاتی ترجیح پر منحصر ہے۔ مثال کے طور پر، ڈمپل اور چمپل جاوا پر مبنی ہیں، Infer.NET. NET فریم ورک پر مبنی ہے، جبکہ PRISM پرولاگ سے پھیلا ہوا ہے۔ تاہم، کچھ پی پی ایل جیسے کہ ونبگس ایک خود مختار زبان پیش کرتے ہیں، جو شماریاتی نمونوں کی ریاضیاتی نمائندگی کے قریب سے نقشہ بناتی ہے، جس کا کسی دوسری پروگرامنگ زبان میں کوئی واضح ماخذ نہیں ہے۔ گبز سیمپلنگ (اور متعلقہ الگورتھم) کا استعمال کرتے ہوئے بایسیئن کمپیوٹیشن انجام دینے کے لیے ونبگس کی زبان کو لاگو کیا گیا تھا۔ اگرچہ اسے نسبتا پرانی پروگرامنگ زبان (پاسکل) میں لاگو کیا گیا ہے، لیکن یہ زبان لچکدار کمپیوٹیشنل نقطہ نظر کا استعمال کرتے ہوئے مختلف قسم کے شماریاتی ماڈلز کے لیے بایسیئن تخمینے کی اجازت دیتی ہے۔ ایک ہی BUGS زبان کو مختلف کمپیوٹیشنل انتخاب ("نمونے لینے والے") اور کنونشن یا ڈیفالٹ کے ذریعے تخمینے کے لیے بایسیئن ماڈلز کی وضاحت کے لیے استعمال کیا جا سکتا ہے، جس میں اسٹینڈ لون پیکیج ون BUGS (یا متعلقہ R پیکیجز، rbugs اور r2winbugs) اور JAGS (بس ایک اور گبز سیمپلر، ایک اور R پیکیج) کا استعمال کیا جا سکتا ہے۔ حال ہی میں، بیسیئن ماڈل کی تفصیلات اور تخمینے کی حمایت کرنے والی دیگر زبانیں بنیادی بیسیئن حساب کے لیے مختلف یا زیادہ موثر انتخاب کی اجازت دیتی ہیں، اور آر ڈیٹا تجزیہ اور پروگرامنگ ماحول سے قابل رسائی ہیں، جیسے۔ : اسٹین، نبل اور نٹس۔ BUGS زبان کا اثر ان بعد کی زبانوں میں واضح ہے، جو ماڈل کی تفصیلات کے کچھ پہلوؤں کے لیے بھی ایک ہی نحو کا استعمال کرتی ہیں۔ کئی پی پی ایل فعال ترقی میں ہیں، جن میں سے کچھ بیٹا ٹیسٹ میں ہیں۔ دو مقبول ٹولز اسٹین اور پی آئی ایم سی ہیں۔ ایک ممکنہ رشتہ دار پروگرامنگ زبان (پی آر پی ایل) ایک پی پی ایل ہے جسے خاص طور پر ممکنہ رشتہ دار ماڈلز (پی آر ایم) کے ساتھ بیان کرنے اور اندازہ لگانے کے لیے ڈیزائن کیا گیا ہے۔ ایک پی آر ایم عام طور پر متعلقہ تقسیم کو کم کرنے، اس کے بارے میں اندازہ لگانے اور دریافت کرنے کے لیے الگورتھم کے ایک سیٹ کے ساتھ تیار کیا جاتا ہے، جو متعلقہ پی آر پی ایل میں سرایت ہوتے ہیں۔ ممکنہ پروگرامنگ زبانوں کی فہرست یہ فہرست پی پی ایل کی مختلف اقسام کا خلاصہ کرتی ہے جو اس وقت دستیاب ہیں، اور ان کی اصل کو واضح کرتی ہے۔ امکانات کی تقسیم کے طور پر متغیرات کے بارے میں استدلال کرنا نوسکھیا پروگرامرز کے لیے مشکلات کا باعث بنتا ہے، لیکن ان مشکلات کو بیسین نیٹ ورک کے تصورات اور سورس کوڈ ایڈیٹر کے اندر سرایت شدہ متغیر تقسیم کے گراف کے استعمال کے ذریعے حل کیا جا سکتا ہے۔ یہ بھی دیکھیں شماریاتی رشتہ دار سیکھنے انڈکٹو پروگرامنگ بایسیئن پروگرامنگ پلیٹ نوٹیشن نوٹ بیرونی لنکس ممکنہ ماڈل منی لینگویج ٹول کٹس کی فہرست ممکنہ پروگرامنگ وکی ممکنہ ماڈل ممکنہ سافٹ ویئر پروگرامنگ پیراڈائمز