پروگرامنگ کیا چیز پے؟
کمپیوٹر پروگرامنگ ایک ایسا طریقہ یا عمل ہے جس میں آپ کمپیوٹر کیلئے ہدایات لکھتے ہیں۔ کمپیوٹر ان ہدایات کو فالو کرکے کوئی کام سرانجام دیتا ہے۔ یعنی جس طرح آپ کسی بچے کو کچھ پڑھاتے ہیں اور بچہ وہ چیزیں سمجھ کر اس پر عمل کرتا ہے۔ تو آپ کہہ سکتے ہیں کہ آپ نے بچے کی پروگرامنگ کی۔ بچے کی مثال اس لئے دے رہا ہوں کہ جیسے بچے کو پہلے سے چیزوں کی سمجھ نہیں ہوتی۔ پھر دھیرے دھیرے ہم اسکو پڑھاتے ہیں سمجھاتے ہیں۔ بلکل اسی طرح کمپیوٹر بھی ایک بچہ ہے جسکو پہلے سے کسی چیز کی سمجھ نہیں۔ وہ صرف لوہے اور پلاسٹک کا ایک ڈبہ ہے۔ اس کو آپ چیزیں سیکھاینگے۔ اس کے بعد وہ کوئی کام کر سکے گا۔ عام طور پر تو دیکھا جاتا ہے کہ ہم کمپیوٹر کو کچھ نہیں سکھاتے۔ ہم تو نیا نیا کمپیوٹر لیتے ہیں اور اس میں سب چیزیں پہلے سے موجود ہوتی ہے۔ لیکن ایسا نہیں ہے۔ وہ پہلے سے موجود چیزیں بھی لوگوں نے کمپیوٹر کو سکھائی ہوتی ہیں۔ ان لوگوں کو سافٹ وئیر ڈیولپر کہا جاتا ہیں۔
اور جو چیزیں کمپیوٹر کو سکھائی گئی ہیں اس کو ہم پروگرام یا سافٹ وئیر کہتے ہیں۔
لیکن اب سوال یہ پیدا ہوتا ہے کہ کمپیوٹر کو سکھائیں کیسے؟ اس کو پروگرامنگ کہتے ہیں۔
دیکھئے جسے ہم انسان آپس میں باتیں کرتے ہیں اور ایک دوسرے کے ساتھ معلومات شیئر کرتے ہیں۔
اسی طرح ہم کمپیوٹر سے بھی بات کرسکتے ہیں اور اسکو سمجھا سکتے ہیں کہ بھئی آپ نے کیا کرنا ہے۔ کیسے کرنا ہے۔
دو اور دو کو کیسے جمع کرنا ہے۔ تصویر کیسے ڈسپلے کرنی ہے۔ ویڈیو کیسے چلانی ہے۔ انٹرنیٹ کے ساتھ کیسے کنیکٹ ہونا ہے وغیرہ۔
یہی باتیں ہم کمپیوٹر میں لکھتے ہیں(کوڈ کرتے ہیں)۔ اور کمپیوٹر اس کو پڑھ کر بلکل اس کے مطابق عمل کرتا ہے۔
کمپیوٹر کو انسانوں والی زبانوں کی سمجھ نہیں ہوتی۔ جسے اردو، عربی، انگلش وغیرہ۔ اس کیلئے مخصوص طرح کی زبانیں بنائی گئی ہیں۔ مطلب یہ کہ کمپیوٹر ماہرین یا سافٹ وئیر انجنیئرز نے سر جوڑ کہ ایسے کوڈ ورڈز بنائیں ہیں جس میں بات لکھ کر کمپیوٹر سمجھتا ہے اور فالو کرتا ہے۔ ان کوڈ ورڈز کو پروگرامنگ لینگویجز کہا جاتا ہے۔
بہت سارے پروگرامنگ لینگویجز بنائے گئے ہیں۔ ہر ایک پروگرامنگ لینگویج کا اپنا ایک سکوپ اور مقصد ہوتا ہے۔ مطلب موبائل ایپ کے الگ لینگویج ہوگی۔ ویب سائٹ کیلے الگ وغیرہ
البتہ کچھ لینگویجز جنرل پرپز بھی ہوتی ہے۔ جس میں ایک سے زیادہ کام ہوسکتے ہیں۔
دنیا میں کچھ ٹاپ کے پروگرامنگ لینگویجز مندرجہ ذیل ہیں۔
Java, python, javascript, C, C++, C#, swip, kotlin, dart ... etc
آپ کے موبائل میں کیلکولیٹر ایپ ہے یا کوئی ویڈیو پلیئر ہے یا کوئی گیم ہے۔ ان ساروں کے پیچے یہی پروگرامنگ لینگویجز ہوتے ہیں جس کو آپکا موبائل فالو کرکے کیلکولیش، ویڈو یا کوئی گیم چلاتا ہے۔
نیچھے ایک سادہ سا پراگرام ہے جو بنیادی طور پر سارے پروگرامنگ لینگویجز میں ایسا ہی لکھا جاتا ہے۔ لکھنے کے انداذ میں تھوڑی بہت تبدیلی ہوگی لیکن آپ اس سے ایک پروگرام کا آئڈیا لے سکتے ہیں
یہ پروگرام دو نمبروں کو جمع کرکے سکرین پر دیکھاتا ہے۔
number1 = 10;
number2 =20;
result = number1 + number2;
Print(result)
اس کے بعد پروگرامنگ کے کچھ مختلف دیکھتے ہیں۔ مطلب جیسے کئی سارے پروگرامنگ لینگویجز موجودہ ہیں اس طرح پروگرامنگ بھی مختلف طریقوں سے کی جاتی ہے۔
مثلا ایک پرابلم ہے اور اس کو آپ کمپیوٹر سے حل کرنا چاہتے ہیں یعنی اس کیلئے کوئی سافٹ وئیر سلوشن بنانا چاہتے ہیں تو اس کیلئے پروگرامنگ کی مختلف طریقے استعمال کئے جاتے ہیں۔
۔1۔ Procedural Programming
پروسیجرل پروگرامنگ میں کوڈ لکھے جاتے ہیں۔ مثال کے طور پر اگر آپ ایک ایسا پروگرام لکھنا چاہتے ہیں جو دو نمبروں کو جمع کریں اور اسکا ریزلٹ سکرین پر دیکھائے۔ تو اس کیلئے کوڈ کچھ اس طرح ہوگا۔
number1 = 10;
number2 = 20;
result = number1 + number2;
Print(result)
یہ کوڈ اس طرح کام کرے گا۔
پہلے لائن میں ایک نمبر لے گا جس میں 10 کی ویلیو ڈالے گا
دوسرے لائن میں دوسرا نمبر لے گا جس میں 20 کی ویلیو ڈالے گا
تیسرے لائن میں ریزلٹ کے نام سے ایک تیسرا نمبر لے گا جس میں نمبر1 اور نمبر2 کا جمع ڈال دے گا۔
چھوتے لائن میں ریزلٹ نام کے نمبر کی ویلیو سکرین پر پرینٹ کرے گا۔
اس ٹائپ کے پروگرامنگ میں ہم ایک سیریز میں کوڈ لکھتے ہیں جسکو کمپیوٹر سٹیپ بائے سٹیپ فالو کرکے پرابلم حل کرتا ہے۔ یہ پروگرامنگ کی پرانے طریقوں میں سے ایک ہے۔ اسکو ہم سٹریٹ فارورڈ پروگرامنگ بھی کہہ سکتے ہیں۔ یہ ایسے پرابلمز کیلئے اچھا ہوتا ہے جہاں کام سادہ اور سیدھا ایک ترتیب سیکونس میں ہوتا ہے۔ لیکن جیسے جیسے برابلم بڑا ہوتا جاتا ہے تو پروسیجرل پروگرامنگ مشکل ہوجاتی ہے اور کوڈ کو مینیج کرنا بھی انتہائی مشکل ہوتا ہے۔ اس لئے بڑے بڑے سافٹ وئیر بنانے میں پروسیجر پروگرامنگ بہت کم ہی استعمال ہوتی ہے۔
پروسیجر پروگرامنگ کیلئے
C, Pascal, BASIC
پروگرامنگ لینگویجز استعمال ہوتے ہیں۔
۔2۔ Functional Programming
پروگرامنگ میں مسئلہ یہ آتا ہے کہ بعض جگہوں پر ایک کام بار بار کرنا پڑتا ہے۔ مثلا اوپر والی مثال ہی لیں۔ اگر آپ ایسے سیچویشن میں ہیں جس میں آپ کو یہ دو نمبر بار بار جمع کرنے پڑ رہے ہو تو اس کیلئے بار بار ایک جیسا کوڈ لکھنا پڑے گا۔ جو کہ زیادہ ٹائم بھی لے گا اور محنت بھی۔ تو اس کیلئے فنکشنل پروگرامنگ ایک ایسا طریقہ ہے جس میں ہم اس کوڈ کا ایک الگ بلاک بنائینگے اور اس کو ایک نام دینگے۔ اس بلاک کو فنکشن کہتے ہیں۔ پھر جب بھی ہمیں اس کوڈ کی ضرورت ہوگی تو ہم اس پورے کوڈ کو لکھنے کی بجائے صرف اس فنکشن کے نام کو لکھیں گے
اوپر والی مثال ہم فنکشن کے ذریعے کچھ اس طرح سے کرسکتے ہیں۔
addNumbers(num1, num2)
result = num1 + num2;
Print(result)
یہ ایک فنکشن بن گیا۔ اب جب بھی ہم دو نمبر جمع کرنا چاہیں گے تو ہم صرف اس فنکشن کا نام لکھیں گے نام کے ساتھ اس کو وہ دو نمبر بھی بتائیں گے جس کو جمع کرنا ہے۔ باقی جمع کرنا اور سکرین پر دیکھانا فنکشن سنبھالے گا۔
addNumbers(10, 20)
addNumbers(7, 2)
addNumbers(11, 28)
اب ہمیں جمع کرنے کیلئے بار بار زیادہ کوڈ لکھنے کی ضرورت نہیں۔ صرف ایک لائن سے وہی کام ہوسکتا ہے۔
فنکشنل پروگرامنگ کیلئے
Haskell, Scala, Clojure
جیسے لینگویجز استعمال ہوتے ہیں۔ لیکن آپ
java, python, C,
وغیرہ لینگویجز میں بھی فنکشنل پروگرامنگ کرسکتے ہیں۔
۔3۔ Object Oriented Programming OOP
اس ٹائپ کے پروگرامنگ میں ہم چیزوں کو حقیقی دنیا کے ابجیکٹ کی طرح ٹریٹ کرتے ہیں۔ پروگرامنگ کا یہ سٹائل یا طریقہ بڑے بڑے سافٹ وئیر بنانے میں استعمال ہوتا ہے۔ آج کل کے دور میں تقریبا ہر بڑے سافٹ وئیر میں یہ طریقہ استعمال ہوتا ہے۔ چاہے موبائل ایپ ہو یا ویب سائٹ ہو یا کوئی گیم ہو۔
اس میں کوڈ کا ایک الگ بلاک بنایا جاتا ہے۔ جسکو ہم کلاس کہتے ہیں۔ پھر اس کلاس کے اندر ابجیکٹ کا ڈیٹا لیا جاتا ہے۔ اس کے بعد اسی کلاس میں ابجیکٹ کے مطابق فینکشنز بنائے جاتے ہیں۔ اوپر والی مثال کو ہم ابجیکٹ اور کلاس کی شکل میں کچھ اسطرح کرسکتے ہیں۔ اس میں جمع کرنے کے ساتھ ساتھ ضرب کی فنکشنلٹی بھی ڈالیں گے تاکہ تھوڑی سی ابجیکٹ کی سمجھ آجائیں۔
class Calculator
Number1 = 10;
Number2 = 20;
addNumbers()
result = number1 + number2;
Print(result)
multiplyNumbers(){
result = number1 * number2;
Print(result)
یہاں پر ہم نے کیلکولیٹر کلاس بنا لیا۔ کیلکولیٹر ایک حقیقی ابجیکٹ ہے۔ اس طرح ہم پروگرامنگ میں اس کا ایک ابجیکٹ بناتے ہیں۔ نیچھے کوڈ میں ہم اسکا ابجیکٹ بناتے ہیں۔
Calculator calcObj = Calculator();
اب
calcObj
کو استعمال کرکے ہم جمع یا ضرب کے فنکشن کو استعمال کرسکتے ہیں۔
calcObj.addNumbers();
calcObj.multiplyNumbers();
بہر حال
Object oriented programming
ایک بہت بڑا کنسیپٹ ہے اور ایک پوسٹ کی شکل میں اسکا سمجھانا مشکل ہے۔ لیکن امید ہے آپ کو تھوڑا بہت آیڈیا ہوا ہو۔
اس کے علاوہ اور بھی پروگرامنگ ہیں۔ جیسے
Event Driven Programming, Declarative Programming ... etc
آخر میں ایک بات یہ کہ آج کل کے سافٹ وئیر ڈیولپمنٹ میں ایک سے زیادہ پیراڈیگم استعمال ہوتے ہیں۔ ایک ہی سافٹ وئیر میں پروسیجرل، ابجیکٹ اوریئنٹڈ، فنکشنل اور ایونٹ ڈریون ساتھ ساتھ استعمال ہوتے ہیں۔
Comments
Post a Comment