کمپیوٹر کی دنیا دلکش ہے، اور اس دنیا کے مرکز میں دو اہم تصورات ہیں: بائنری اور مشین لینگوئج۔ یہ تصورات نہ صرف ہر ایپلیکیشن اور ڈیوائس کو طاقت دیتے ہیں بلکہ یہ ایک ونڈو بھی فراہم کرتے ہیں کہ کمپیوٹر ڈیٹا کو کیسے پروسیس اور سمجھتا ہے۔ آئیے کمپیوٹر کے اندرونی کاموں کی بہتر تعریف کرنے کے لیے ان عنوانات پر غور کریں۔
بائنری کمپیوٹر کی بنیادی زبان ہے۔ یہ ایک بیس-2 عددی نظام ہے جو صرف دو ہندسوں کا استعمال کرتا ہے: 0 اور 1۔ بائنری نمبر میں ہر ہندسے کو بٹ کے نام سے جانا جاتا ہے، جو کہ کمپیوٹنگ میں ڈیٹا کی سب سے چھوٹی اکائی ہے۔
کیوں بائنری؟ کمپیوٹر لاکھوں چھوٹے الیکٹرانک اجزاء کا استعمال کرتے ہوئے کام کرتے ہیں جنہیں ٹرانجسٹر کہتے ہیں۔ ٹرانزسٹر یا تو 'آن' یا 'آف' حالت میں ہو سکتے ہیں، بالترتیب 1 یا 0 کی نمائندگی کرتے ہیں۔ یہ کمپیوٹر کے لیے بائنری کو قدرتی زبان بناتا ہے۔
بائنری سسٹم میں، بائنری نمبر میں ہر پوزیشن 2 کی طاقت کی نمائندگی کرتی ہے، جس میں سب سے کم اہم بٹ (دائیں طرف) \(2^0\) کی نمائندگی کرتا ہے، اگلی نمائندگی کرتا ہے \(2^1\) ، اور اسی طرح آگے۔ مثال کے طور پر، بائنری نمبر 1011 کو اعشاریہ میں تبدیل کیا جا سکتا ہے (ہمارا عام نمبر دینے کا نظام، جو کہ بیس-10 ہے) مندرجہ ذیل ہے:
\( 1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 = 8 + 0 + 2 + 1 = 11 \)یہ واضح کرتا ہے کہ بائنری نمبرز کمپیوٹنگ کے لیے کس طرح بنیادی ہیں، اعداد سے لے کر کریکٹرز اور حتیٰ کہ پیچیدہ ملٹی میڈیا فائلوں تک تمام قسم کے ڈیٹا کو اسٹور اور پروسیس کرنے کی بنیاد کے طور پر کام کرتے ہیں۔
جبکہ بائنری کمپیوٹر کی زبان ہے، مشینی زبان کو اصل پروگرامنگ زبان سمجھا جا سکتا ہے۔ یہ بائنری ہندسوں یا بٹس کا مجموعہ ہے جسے کمپیوٹر پڑھتا ہے اور کارروائیاں انجام دینے کے لیے تشریح کرتا ہے۔ مشینی زبان ہر کمپیوٹر کے فن تعمیر کے لیے مخصوص ہوتی ہے، یعنی ایک قسم کے کمپیوٹر کے لیے مشینی زبان میں لکھا گیا پروگرام ممکنہ طور پر بغیر کسی ترمیم کے دوسری قسم پر کام نہیں کرے گا۔
مشینی زبان مشینی ہدایات پر مشتمل ہوتی ہے، جو کمپیوٹر کے CPU (سینٹرل پروسیسنگ یونٹ) کے ذریعے سمجھی جانے والی سب سے بنیادی کمانڈز ہیں۔ ان ہدایات میں میموری کے مقامات کے درمیان ڈیٹا کو منتقل کرنے، ریاضی کی کارروائیوں کو انجام دینے، اور پروگراموں کے عمل کے بہاؤ کو کنٹرول کرنے جیسے کام شامل ہو سکتے ہیں۔
آئیے ایک سادہ مثال پر غور کریں تاکہ یہ واضح ہو سکے کہ بائنری اور مشینی زبان کس طرح آپس میں تعامل کرتی ہے۔ فرض کریں کہ ہم ایک بہت ہی سادہ (اور فرضی) مشین میں دو نمبر، 2 اور 3 شامل کرنا چاہتے ہیں جو اپنی ہدایات کے لیے بائنری استعمال کرتی ہے۔
"ایڈ" کے لیے مشین کی ہدایات کو بائنری میں 0001 کے طور پر دکھایا جا سکتا ہے۔ بائنری میں نمبر 2 اور 3 بالترتیب 0010 اور 0011 ہیں۔ ان دو نمبروں کو شامل کرنے کی پوری مشینی زبان کی ہدایات کچھ اس طرح نظر آسکتی ہیں:
\( \textrm{آپریشن (شامل کریں)}: 0001 \ \textrm{آپرینڈ 1 (2)}: 0010 \ \textrm{آپریشن 2 (3)}: 0011 \ \)جب سی پی یو بائنری ہندسوں کی اس ترتیب کو پڑھتا ہے، تو یہ ان کو نمبر 2 اور 3 کو شامل کرنے کی ہدایت کے طور پر تشریح کرتا ہے۔ نتیجہ، 5، پھر ذخیرہ کیا جائے گا یا مزید کارروائی کے لیے استعمال کیا جائے گا۔
ثنائی اور مشینی زبان بہت سے فوائد فراہم کرتی ہے، بشمول رفتار اور کارکردگی۔ چونکہ یہ زبانیں کمپیوٹر ہارڈویئر کی سب سے بنیادی سطح پر کام کرتی ہیں، اس لیے وہ کمپیوٹر کے اجزاء میں تیزی سے اور براہ راست ہیرا پھیری کی اجازت دیتی ہیں۔
تاہم، مشینی زبان میں پروگرام لکھنا انتہائی پیچیدہ اور غلطیوں کا شکار ہے۔ یہ مختلف قسم کے کمپیوٹر فن تعمیر کے درمیان پورٹیبل بھی نہیں ہے۔ ان حدود کو دور کرنے کے لیے، اعلیٰ سطح کی پروگرامنگ زبانیں، جیسے ازگر، جاوا، اور C++، تیار کی گئیں۔ یہ زبانیں پروگرامرز کو زیادہ انسانی پڑھنے کے قابل فارمیٹ میں کوڈ لکھنے کے قابل بناتی ہیں، جس کا پھر کمپائلرز یا ترجمان کے ذریعے مشینی زبان میں ترجمہ کیا جاتا ہے۔
ثنائی اور مشینی زبان کمپیوٹنگ کے مرکز میں ہیں، جو بنیادی فریم ورک فراہم کرتی ہے جس پر کمپیوٹر کے تمام آپریشنز کی بنیاد ہوتی ہے۔ ان بنیادی تصورات کو سمجھنا اس بات کی بصیرت پیش کرتا ہے کہ کمپیوٹر پروگراموں کو کیسے چلاتے ہیں اور ڈیٹا پر کارروائی کرتے ہیں۔ ان کی پیچیدگی اور اعلی درجے کی زبانوں کی ترقی کے باوجود، بائنری اور مشینی زبان ہر اس شخص کے لیے ضروری ہے جو کمپیوٹر سائنس اور پروگرامنگ میں گہرائی میں جانا چاہتا ہے۔