September 16, 2024

یہ سوال وہ طالب علم جو کمپیوٹر کی فیلڈ میں قدم رکھنا چاہتے ہیں اکثر پوچھتے ہیں۔کمپیوٹر کی یہ تین بنیادی فیلڈز کچھ ایسی ہے کہ جن میں بی ایس کمپیوٹر میں داخلہ چاہنے والے طالب علم اکثر فرق نہیں کر پاتےاور مس گائیڈنگ اور نامکمل معلومات ہونے کی وجہ سے اکثر ان تینوں میں سے کسی ایک کو بغیر سوچے سمجھے منتخب کرلیتے ہیں۔
“سافٹ وئیر انجینرنگ اور کمپیوٹر سائنس میں یکسانیت”
یہاں یہ سمجھ لینا ضروری ہے کہ ان تینوں فیلڈز میں فرق تو ہے لیکن ان میں بعض مقامات پر یکسانیت بھی پائی جاتی ہے جیسے سافٹ وئیر انجینرنگ اور کمپیوٹر سائنس “کمپیوٹر سافٹ وئیر” اور اس کے متعلق تمام دوسری چیزوں کو ٹارگٹ کرتی ہیں۔مثال کے طور پر ان دونوں ڈگریوں میں آپ کو پروگرامنگ لینگویج ڈویلیپمینٹ،سسٹم سافٹ وئیر،سافٹ وئیر آرکیٹیکچر اور ایپلیکشن ڈویلیپمینٹ کے بارے میں سکھایا جائے گا۔سافٹ وئیر انجینرنگ اورکمپیوٹر سائنس میں اوپر بیان کردہ موضوعات اس لیے پڑھائے جاتے ہیں کہ طالب علموں کو کمپیوٹر سافٹ وئیر اور کمپیوٹر ایپلیکشنز کے بارے میں کچھ بنیادی معلومات ہوں تاکہ وہ “کمپیوٹر “کے تصور کو ہی پوری طرح سمجھ لیں۔
“سافٹ وئیر انجینرنگ اور کمپیوٹر سائنس میں فرق”
سافٹ وئیر انجینرنگ اور کمپیوٹر سائنس میں جوفرق ہے،اس فرق کو سمجھنے کا ایک طریقہ تو یہ ہے کہ ہم ان دونوں کے لیے جو ٹرمز ” سافٹ وئیر انجینرنگ” اور” کمپیوٹر سائنس” استعمال ہوتی ہیں انہیں علیحدہ علیحدہ ڈسکس کریں۔پہلا فرق تو یہ ہے کہ “سافٹ وئیر انجینرنگ “میں لفظ “انجینرنگ”استعمال ہوا ہے جبکہ “کمپیوٹر سائنس” میں انجینرنگ کی بجائے لفظ “سائنس “استعمال ہوا ہے۔ایسا کیوں ہے؟”کمپیوٹر انجینرنگ”بھی توکہا جا سکتا تھا۔اس لیے اب یہ ضروری ہے کہ پہلے ‘انجینرنگ ‘ اور ‘سائنس ‘ کا فرق جان لیا جائے۔”انجینرنگ” اپنی فطرت میں ایک ایسا پروسس ہے جس میں پہلے سے موجودہ ٹولزکی مدد سے پرابلمز کو حل کیا جاتا ہے۔یہاں میں نے ایک بات کی ہے کہ ‘پہلے سے موجود ٹولز’کو استعمال کیا جاتا ہے۔وہ ٹولزضروری نہیں کہ کوئی فزیکل نیچر ہی رکھتے ہوں وہ تجریدی بھی ہوسکتے ہیں جیسے ریاضیاتی ٹولز۔
اگر مجھے کوئی کمپنی کہتی ہے کہ مجھے ایک ایسا سافٹ وئیر بنا کہ دو جہاں میں اپنی کمپنی کا سارا ریکارڈ محفوظ کرسکوں،چاہے وہ اکاؤنٹنگ کا ہو،کیش کا ہو،ٹرانزیکشنز کا ہو یا اس کمپنی میں کام کرنے والے لوگوں کا ہو،تو میں وہ سافٹ وئیر پہلے سے موجود پروگرامنگ لینگویجز ،الگورتھمز اور ٹولز کو استعمال کر کے بناؤں گا۔مجھے وہ ٹولز یا الگورتھمز خود نہیں بنانے پڑیں گے۔کوئی بھی کسی بھی قسم کاسافٹ وئیر تیار کرنے کے لیے چند پروگرامنگ لینگویجز کی ضرورت پڑتی ہے ۔
پروگرامنگ لینگویجز ہی مختلف ٹولز ہیں جنہیں ہم استعمال کر کے ایک سافٹ وئیر تیار کرتے ہیں۔ہمیں ایسا نہیں کرنا پڑتا کہ پہلے ہم کوئی پروگرامنگ لینگویج بنانے بیٹھ جائیں اور پھر ایک سافٹ وئیر تیار کریں۔سافٹ وئیر انجینرنگ میں پہلے سے موجود پروگرامنگ لینگویجز اور الگورتھمز کو استعمال کرتے ہوئے مختلف قسم کے سافٹ وئیرز تیار کیے جاتے ہیں۔آگے سے سافٹ وئیرز کی بھی مختلف اقسام ہیں لیکن ان کی تفصیل مزید کسی آرٹیکل میں لکھوں گا۔
اب بات آتی ہے “سائنس ” کی کہ سائنس میں سائنٹسٹ کیا کرتے ہیں؟سائنٹسٹ اس بات پر ریسرچ کرتے ہیں کہ نئی پروگرامنگ لینگویجز اور نئے الگورتھم کیسے ڈویلپ کیے جائیں؟وہ نئی لینگویجز اور الگورتھمز کو ڈویلپ کرنے کے لیے نئے نئے تصورات اور آئیڈیاز پیش کرتے ہیں جو پہلے سے موجود نہیں ہوتے۔مطلب کمپیوٹر سائنٹسٹ نئی پرواگرامنگ لینگویجز اور الگورتھمز تخلیق کرتے ہیں اور سافٹ وئیر انجنیر ان لینگویجز اور الگورتھمز کو استعمال کر کے مختلف قسم کے سافٹ وئیر بناتے ہیں۔ کمپیوٹر سائنٹسٹ کافی تخلیقی صلاحیتوں کے حامل لوگ ہوتے ہیں۔تاریخ کی پہلی کمپیوٹر پروگرامنگ لینگویج “ٖفورٹران”تھی جو ‘فارمولہ ٹرانسلیشن’ بھی کہلاتی ہے۔یہ 1954 میں “جان بکس”نے لکھی تھی۔ٖپروگرامنگ لینگویجز سے پہلے1710کی دہائی میں مینویلی کیلکولیشنز کے لیے پیپر ٹیپس اور پنچ کارڈز کو استعمال کیا جاتا تھا۔ایک صدی بعد “چارلس بابیج” نے ایک مکینکل مشین ایجاد کی جسے ‘اینالیٹکل مشین’کہا جاتا تھا۔یہ مکینکل طریقے سے ریاضیاتی حساب کتاب کرتی تھی۔اس کے بعد سے لے کے اب یعنی 2017 تک کمپیوٹر لینگویجز میں جتنی بھی جدت آئی ہے وہ کمپیوٹر سائنس کی بدولت آئی ہے ۔آنے والا دور “کوانٹم کمپیوٹنگ ” کا ہے جو کوانٹم مکینکس کے اصولوں پر قائم ہے۔کوانٹم کمپیوٹرز آج کے کمپیوٹرز سے انتہائی تیز اور طاقت ور ہوں گے جو انفارمیشن کو پراسس کرنے کے لیے بلکل نئے الگورتھمز پر مشتمل ہوں گے۔کلاسیکل کمپیوٹرز انفارمیشن کو ‘بٹس’ میں لکھتے ہیں۔ایک بٹ کی قیمت یا تو زیرو ہوتی ہے یا ایک۔یہ 0 اور 1 اربوں کی تعداد میں مل کےکمپیوٹر کے فنکشنز کو چلانے کے لیے آن یا آف کا کام کرتے ہیں۔جبکہ دوسری طرف کوانٹم کمپیوٹرز کی بنیاد “کیوبٹس”ہیں جو’ کوانٹم فزکس’ کے دو بنیادی اصولوں پر چلتے ہیں۔یہ دو بنیادی اصول’سپر پوزیشن ‘ اور ‘انٹیگلمینٹ’ کے ہیں۔سپر پوزیشن کا مطلب ہے کہ ایک ‘کیوبٹ’ ایک ہی وقت میں دونوں ویلیوز یعنی ‘زیرو’ اور ‘ون’ پر مشتمل ہوسکتی ہے۔جبکہ ‘انٹیگلمینٹ ‘کا مطلب ہے کہ’کیوبٹس’ سپر پوزیشن پر ایک دوسرے سے ایک ہی وقت میں ایک مخصوص تعلق قائم کر سکتی ہیں۔مثال کے طور پہ ایک ‘کیوبٹ ‘کی قیمت سپر پوزیشن پر چاہے وہ زیرو ہے یا ون وہ سپر پوزیشن پر موجود دوسری کیوبٹ کی قیمت چاہے وہ زیرہو یا ون پر منحصر کر سکتی ہے بغیر کسی طبعی تعلق کے۔بڑی عجب بات ہے کہ دو’ کیوبٹس’ کے درمیان کوئی بھی کسی قسم کا فزیکل ریلشن بھی نا ہو لیکن وہ پھر بھی ایک دوسرے پر اپنا اثر ڈال سکتی ہیں۔کوانٹم کمپیوٹنگ کی یہ دنیا ہی بہت عجیب ہے۔کوانٹم کمپیوٹنگ پہ کمپیوٹر سانٹسٹ کافی ریسرچ کر رہے ہیں اور امید ہے کہ مستقبل میں انسان کوانٹم کمپیوٹرز استعمال کر رہے ہوں گے۔بیسویں صدی میں کمپیوٹر کی ایجاد نے ایک طاقت ور انقلاب برپا کیا تھا،لیکن کوانٹم کمپیوٹنگ آنے والے وقت میں اس سے بھی بڑا انقلاب برپاکرے گی۔کوانٹم کمپیوٹنگ کی وجہ سے قدرت کے چھپے ان رازوں پر بھی پردہ اٹھانے میں مدد ملے گی جو آج بھی صرف راز ہی سمجھے جاتے ہیں۔یہ سارا کام کمپیوٹر سائنس کا ہے۔ کمپیوٹر سائنس تھوڑا بہت کمپیوٹر آرکیٹیکچر پر بھی فوکس کرتی ہے۔