# کمپیوٹر

**کمپیوٹر** (اردو: کمپیوٹر) ایک مشین ہے جسے اس طرح پروگرام کیا جا سکتا ہے کہ وہ خودکار طور پر حسابی یا منطقی آپریشنز (حساب کتاب) کے سلسلے انجام دے سکے۔ جدید ڈیجیٹل الیکٹرانک کمپیوٹر عمومی نوعیت کے آپریشنز کر سکتے ہیں جنھیں پروگرامز کہا جاتا ہے۔ یہ پروگرام کمپیوٹرز کو مختلف قسم کے کام انجام دینے کے قابل بناتے ہیں۔ کمپیوٹر سسٹم کی اصطلاح ایک مکمل کمپیوٹر کی طرف اشارہ کر سکتی ہے جس میں ہارڈ ویئر، آپریٹنگ سسٹم، سافٹ ویئر اور بیرونی آلات شامل ہوتے ہیں جو مکمل آپریشن کے لیے ضروری ہوتے ہیں؛ یا ایسے کمپیوٹرز کے گروپ کو بیان کر سکتی ہے جو آپس میں منسلک ہوں اور ایک ساتھ کام کرتے ہوں، جیسے کہ کمپیوٹر نیٹ ورک یا کمپیوٹر کلسٹر۔

کمپیوٹرز کنٹرول سسٹمز کے طور پر وسیع پیمانے پر صنعتی اور صارف مصنوعات میں استعمال ہوتے ہیں، جن میں خاص مقصد کے سادہ آلات جیسے مائیکروویو اوون اور ریموٹ کنٹرول اور صنعتی مشینیں جیسے کہ صنعتی روبوٹ شامل ہیں۔ کمپیوٹرز عمومی مقصد کے آلات کے مرکز میں ہیں جیسے کہ ذاتی کمپیوٹرز اور موبائل آلات جیسے اسمارٹ فونز۔ کمپیوٹرز انٹرنیٹ کو تقویت دیتے ہیں، جو اربوں کمپیوٹرز اور صارفین کو آپس میں جوڑتا ہے۔

ابتدائی کمپیوٹرز کا مقصد صرف حساب کتاب کرنا تھا۔ سادہ دستی آلات جیسے اباکس قدیم زمانے سے لوگوں کو حساب کتاب میں مدد دیتے رہے ہیں۔ صنعتی انقلاب کے آغاز میں، کچھ میکانی آلات طویل اور مشکل کاموں کو خودکار کرنے کے لیے بنائے گئے تھے، جیسے کہ لومز کے لیے پیٹرن گائیڈ کرنے کے لیے۔ بیسویں صدی کے اوائل میں زیادہ جدید برقی مشینیں مخصوص اینالاگ حسابات کرنے کے لیے بنائی گئیں۔ دوسری جنگ عظیم کے دوران پہلے ڈیجیٹل الیکٹرانک حسابی آلات تیار کیے گئے، جو الیکٹرو مکینیکل اور تھرمونک والو (ٹرمک پلگ) استعمال کرتے تھے۔ 1940 کی دہائی کے آخر میں پہلے سیمی کنڈکٹر ٹرانزسٹرز کی ایجاد کے بعد 1950 کی دہائی کے آخر میں سلیکان پر مبنی MOSFET (MOS ٹرانزسٹر) اور مونو لیتھک انٹیگریٹڈ سرکٹ چپ ٹیکنالوجیز کی ترقی ہوئی، جس نے 1970 کی دہائی میں مائیکرو پروسیسر اور مائیکرو کمپیوٹر انقلاب کو جنم دیا۔ تب سے کمپیوٹرز کی رفتار، طاقت اور ورسٹیلٹی میں ڈرامائی اضافہ ہوا ہے، جس میں ٹرانزسٹرز کی تعداد تیزی سے بڑھتی رہی (مور کے قانون کے مطابق یہ تعداد ہر دو سال میں دوگنی ہوتی ہے)، جس سے بیسویں اور اکیسویں صدی کے اوائل میں ڈیجیٹل انقلاب برپا ہوا۔

روایتی طور پر، ایک جدید کمپیوٹر میں کم از کم ایک پروسیسنگ عنصر ہوتا ہے، جو عام طور پر ایک مائیکرو پروسیسر کی شکل میں مرکزی پروسیسنگ اکائی (م.پ.ا) ہوتا ہے، اس کے ساتھ کسی قسم کی کمپیوٹر میموری ہوتی ہے، جو عام طور پر سیمی کنڈکٹر میموری چپس پر مشتمل ہوتی ہے۔ پروسیسنگ عنصر ریاضیاتی اور منطقی آپریشنز انجام دیتا ہے اور ایک ترتیب اور کنٹرول یونٹ محفوظ شدہ معلومات کے مطابق آپریشنز کے ترتیب کو تبدیل کر سکتا ہے۔ اضافی آلات میں ان پٹ ڈیوائسز (کی بورڈز، ماؤس، جوئے اسٹکس وغیرہ)، آؤٹ پٹ ڈیوائسز (مانیٹرز، پرنٹرز وغیرہ) اور ان پٹ/آؤٹ پٹ ڈیوائسز شامل ہیں جو دونوں کام انجام دیتی ہیں (مثال کے طور پر ٹچ اسکرینز)۔ اضافی آلات بیرونی ذرائع سے معلومات کو حاصل کرنے کی اجازت دیتے ہیں اور آپریشنز کے نتائج کو محفوظ اور دوبارہ حاصل کرنے کے قابل بناتے ہیں۔

## تعریف

ادارۂ فروغِ قومی زبان آن لائن قومی انگریزی اُردو لُغت کے مطابق کمپیوٹر کی تعریف یوں ہے:

> **کمپیوٹر**؛ ایک برقیاتی آلہ جو حساب کے سوال اور پیچیدہ شماریاتی مسئلے، مقررہ اور پروگرامی ہدایات کے مطابق، آسانی سے حل کر لیتا ہے، پھر ان حسابات کے نتائج یا تو ظاہر کر دیتا ہے یا اپنے پاس محفوظ کر لیتا ہے۔
>
>

## تعارف

کمپیوٹر یونانی زبان کا لفظ ہے جس کا مطلب کمپیوٹ کرنا یا حساب کرنا ہوتا ہے۔ ماضی میں اس لفظ کو حسابگر (انگریزی: Calculator) کے لیے بھی استعمال کیا جاتا تھا لیکن حالیہ دور میں یہ اصطلاح ایک ایسے آلہ (انگریزی: Machine) کے لیے اختیار کی جاتی ہے جو معلومات کو اپنے اندر داخل کرنے کے بعد، ایک مقرر شدہ حکمت عملی کے مطابق انکا تجزیہ کر سکتا ہو۔ یعنی اس کا مطلب دوسرے الفاظ میں یہ ہوا کہ عموماً کمپیوٹر بذاتِ خود كچھ نہیں كرسكتا، بلكہ اسے بتانا اور سمجھانا پڑتا ہے كہ وہ ہماری بہم پہنچائی گئی معلومات اور ہدایات پر كیا اور كیسے كام كرے۔

کمپیوٹر ہماری جانب سے بہم پہنچائی گئی معلومات کو اکھٹا کرتا ہے، انھیں ذخیرہ کرتا ہے اور آپس میں مربوط و ہم بستہ (انگریزی: correlate) کرتا ہے۔ حسابگر اور کمپیوٹر میں اہم ترین فرق یہ ہے کہ کمپیوٹر پیچیدہ کمپیوٹر پروگرام کو اپنے اندر ذخیرہ کر سکتا ہے اور اسی خصوصیت کے باعث انسان کی مدد کے بغیر منطقی تجزیات (logical analysis) انجام دینے کی اہلیت کا حامل ہوتا ہے۔

لیپ ٹاپ (laptop) کمپیوٹر وں نے کمپیوٹروں کے مانیٹر، کی بورڈ اور کیس کے تصور کو یکسر بدل دیا ہے۔

اگر اوپر کے بیان کو مختصر بیان کرکہ لب لباب پیش کرنے کی کوشش کی جائے تو کمپیوٹر کی دو اہم خصوصیات یوں بیان کی جا سکتی ہیں کہ

* یہ مخصوص انداز و ترتیب میں بہم پہنچائی گئی  **ہدایات یا پروگرامز**  پر اپنا رد عمل ظاہر کرتا ہے
* یہ ان ہدایات کی فہرست (یعنی ایک کمپیوٹر پروگرام) پر نتیجہ خیز طور پر کارموثر  **انجام** دیتا ہے

## مثالی کمپیوٹر کے اجزاء

ایک مثالی کمپیوٹر میں بہت سے اجزاء ہوتے ہیں اور ان کو مختلف انداز میں ترتیب دے کر مطالعہ کیا جا سکتا ہے، مثلاً ساخت کے لحاظ سے اور افعال کے لحاظ سے، دو ایسے طریقۂ مطالعہ ہیں کہ جن کی مدد سے ایک نئے شخص کے لیے کمپیوٹر کی ساخت و فعل کا ایک خاصا بہتر خاکہ ذہن میں آ سکتا ہے لہذا یہ دونوں ترتیب ذیل میں دی جا رہی ہیں۔

### ساخت کے لحاظ سے

ظاہری ساخت کے لحاظ سے جو اجزاء ایک کمپیوٹر میں ہوتے ہیں ان کو بھی پھر دو گروہوں میں تقسیم کیا جا سکتا ہے۔ ایک وہ جو اندرونی میں شمار ہوتے ہیں اور دوسرے وہ جو بیرونی شمار کیے جاتے ہیں۔

#### بیرونی اجزاء

1. کمپیوٹر ڈسپلے، یہ ٹیلی وژن نما حصہ ہے جو مانیٹر (Monitor) بھی کہلاتا ہے (شکل ا: 1)
2. صندوقچہ (case)، جو مانیٹر کے ساتھ ایک چھوٹے ڈبے یا صندوق کی شکل میں لیٹا یا ایستادہ ہوتا ہے
3. کلیدی تختہ (keyboard) جو کمپیوٹر میں اطلاعات کو داخل (input) کرنے کے لیے استعمال کیا جاتا ہے (شکل ا: 9)
4. ماؤس (Mouse) یہ ایک چھوٹی سی اختراع ہے جو کمپیوٹر کے ساتھ تفاعل یا انٹرایکشن کے لیے کام میں لائی جاتی ہے (شکل ا: 10)

#### اندرونی اجزاء

|  |
| --- |
| 1. تختۂ ام (انگریزی: motherboard) یہ ایک ایسا تختہ ہوتا ہے جس پرکمپیوٹر کے اہم ترین اجزاء یعنی سی پی یو اور یاداشت واقع ہوتے ہیں۔ (شکل ا: 2) شکل ب: این ویڈیا شرکہ کا تیار کردہ ایک تخطیطی بطاقہ (انگریزی: graphics card) جو GeForce 6600GT کہلاتا ہے۔
2. عامل (انگریزی: processor) اسے مرکزی عملی اکائی اور مختصراً CPU بھی کہا جاتا ہے۔ (شکل ا: 3)
3. یاداشت (انگریزی: memory)، یہ کمپیوٹر میں کیے جانے والے کام کو ذخیرہ کرنے کے لیے ایک برقی یاداشت کے طور پر کام آتی ہے۔
4. تخطیطی بطاقہ (انگریزی: graphics card)، یہ ایک ایسی اختراع ہوتی ہے کہ جو تخطط (انگریزی: graphics) کے ساتھ ساتھ متن کو بھی ظاہر کرنے کی صلاحیت رکھتی ہے، آج کل تقریباً تمام منظرہ بطاقات (video cards) اسی نوعیت کے ہوتے ہیں۔ (شکل ب:)
5. قرص کثیف (انگریزی: hard drive)، یہ زیادہ گنجائش (انگریزی: capacity) والا ایسا واسطہ (انگریزی: medium) ہوتا ہے کہ جو ڈیٹا (انگریزی: data) کو ذخیرہ کرنے کے کام میں لایا جاتا ہے۔ (شکل ا: 8)
6. قرص مدمج (انگریزی: Compact Disc)، یہ ایک ایسی بصری قرص (انگریزی: optical disk) ہوتی ہے جس کی مختلف اقسام ہوتی ہیں مثلاً ؛ CD-ROM, CD-RW, DVD-RAM، رقمی منظری قرص ۔ (شکل ا: 7)
 |

### افعال کے لحاظ سے

یوں تو یک کمپیوٹر کے وہ حصے جن کے ذریعہ وہ اپنے افعال انجام دیتا ہے وہ سارے اجزاء ہوتے ہیں جو ایک کمپیوٹر میں موجود ہوں۔ مگر بنیادی طور پر یوں کہا جا سکتا ہے کہ کمپیوٹر کے اہم افعالی حصے وہ ہوتے ہیں کہ جن کی مدد سے مرکزی عملی اکائی (CPU) اندرونی طور پر اپنے افعال انجام دیتي ہے اور یاداشتی پتے (memory address) تک رسائی حاصل کرسکتی ہے۔ ان فعالی اجزاء کو تین بڑے گروہوں میں تقسیم کیا جا سکتا ہے۔

1. عمارت ہدایتی مجموعہ (instruction set architecture) :
2. خورد معماری (microarchitecture) :
3. نظامی طرحبندی (system design) :

## کمپیوٹر کی تاریخ

* کمپیوٹر کی تاریخ پر تفصیلی مضمون کے لیے کمپیوٹر کی تاریخ

 کہا جاتا ہے کہ Jacquard loom کو تاریخ کی پہلی قابل پروگرام (programmable) اختراع ہونے کا درجہ حاصل ہے۔
کسی بھی ایک اختراع یا ڈیوائس کے بارے میں یہ نہیں کہا جا سکتا کہ یہ کمپیوٹر کی پہلی شکل تھی۔ اس کی سب سے بڑی وجہ یہ ہے کہ کمپیوٹر کی تعریف تاریخ کے ساتھ ساتھ کچھ تبدیل ہوتی رہی ہے اور اسی وجہ سے یہ ناممکن ہے کہ کسی ایک کمپیوٹر کو پہلا کمپیوٹر کہا جاسکے۔ مثلاً کئی اختراعات جن کو کبھی کمپیوٹر تسلیم کیا جاتا تھا آج وہ کمپیوٹر تسلیم نہیں کی جاتیں۔

اصل میں کمپیوٹر کی اصطلاح تو ایک ایسے شخص کے لیے استعمال کی جاتی تھی کہ جو حساب کتاب رکھ سکتا ہو (دیکھیےانسانی کمپیوٹر) اور اکثر وہ شخص ایسا کسی ریاضیاتی اختراع مثلاً حسابگر یا کسی اور بنیادی پیمائشی آلے وغیرہ کی مدد سے کرتا تھا یا ہے۔

کچھ میکانیکی اختراعات ایسی بھی استعمال کی جاتی رہی ہیں جن کو کمپیوٹر کی انتہائی ابتدائی شکل یا اس کی جانب پیش رفت تو کہا جا سکتا ہے مگر ان کو آج کی تعریف کے مطابق کمپیوٹر تصور نہیں کیا جا سکتا کیونکہ ان میں کوئی قابل پروگرام (programmable) طرز ناپید تھی۔ ان کی مثالوں میں گنتارا (abacus)، حسابی پیمانہ (slide rule)، اسطرلاب، انٹیکتیرا آلیہ (antikythera mechanism) اور مسلمان سائنسدانوں کے بنائے ہوئے متعدد آلات بھی شامل کیے جا سکتے ہیں، (دیکھیےمسلم سائنسدان)۔

## ذخیرۂ پروگرام

 تفصیلی مضمون کے لیے **کمپیوٹر** ملاحظہ کریں۔
 شمارندی برمجہ (computer programming) اور شمارندی برنامج (computer program)

ذخیرۂ پروگرام (program storage) کسی بھی کمپیوٹر کی ہدایات اور پروگرامز کو ذخیرہ کرنے کی استعداد کو کہا جاتا ہے اور ایک کمپیوٹر کی سب سے اہم خصوصیت ہی یہ تسلیم کی جاتی ہے کہ اس کو برمجہ (programmed) کیا جا سکتا ہے۔ یعنی اس سے مراد یہ ہے کہ ان آلات (کمپیوٹروں) میں ہدایات (پروگرامز) کی ایک فہرست کو ڈالا جا سکتا ہے اور یہ اس کو اپنے اندر ذخیرہ کرلیتے ہیں تاکہ مستقبل میں انھی کو استعمال کیا جاسکے اور بار بار یہ عمل دہرانا نہ پڑے۔

ایک جانب تو اکثر کمپیوٹروں کو دی جانے والی یہ ہدایات سادہ اور عمومی نوعیت کی ہوتی ہیں: مثال کے طور پر کسی ایک عدد میں کوئی عدد جمع کرنا، کوئی ایک بیان (data) ایک جگہ سے دوسری جگہ منتقل کرنا، کوئی ایک پیغام کمپیوٹر سے کسی بیرونی اختراع (device) تک بھیجنا وغیرہ۔ کمپیوٹر ان ہدایات کو کمپیوٹر یاداشت (memory) کی مدد سے پڑھتا ہے اور پھر انکا اسی ترتیب میں اجراء (execution) کرتا ہے جس میں ان کو دیا گیا ہو۔ دوسری جانب کمپیوٹر کو دی جانے والی ایسی ہدایات اختصاصی نوعیت کی بھی ہوتی ہیں مثال کے طور پر برنامج یا پروگرامز میں ایسی ہدایات کہ جو کمپیوٹرکو پروگرام کے کسی ایک حصے سے چھلانگ (جست) لگا کر دوسرے حصے پر پہنچنے کا اور وہاں سے مزید کام شروع کرنے کا کہتی ہیں، ان کو جستی ہدایات (jump instructions) یا شاخیں (branches) کہا جاتا ہے۔ ایک اہم بات ان شاخوں میں یہ ہوتی ہے کہ یہ مشروط (conditional) ہوا کرتی ہیں یعنی اس کا مطلب یہ ہوا کہ ہدایات کے مختلف متوالیات (sequences) کو اس طرح استعمال کیا جا سکتا ہے کہ ان کے فعل و نتائج کو گذشتہ کیے گئے تجزیات و حسابات یا کسی بیرونی واقعہ کے ساتھ مشروط کیا جا سکتا ہے۔ بہت سے کمپیوٹر براہ راست ذیلی معمول (subroutine) کو حمایت فراہم کرتے ہوئے اس مقام کو بھی یاد رکھتے ہیں کہ جہاں سے انھوں نے کسی برنامج میں جست (jump) لگائی ہو اور پھر وہ ہدایت بھی یاد رکھتے ہیں کہ کب انھیں اس مقام پر واپس آنا ہے۔

اوپر جست کے تصور کو آسان انداز میں سمجھنے کے لیے یوں کہا جا سکتا ہے کہ جیسے کوئی قاری ایک کتاب کا مطالعہ کر رہا ہو، وہ اگر ضرورت پڑے تو جست لگا کر کسی پچھلے صفحے پر واپس بھی آ سکتا ہے اور اگر کتاب کا کوئی حصہ غیر متعلقہ محسوس ہو تو اس کو نظر انداز کرتے ہوئے اگلے صفحات کی جانب بھی جست لگا سکتا ہے۔ بالکل اسی طرح ایک کمپیوٹر بھی برنامج کے کسی گذشتہ حصے پر واپس جست لگا سکتا ہے اور وہاں سے اپنے اجراء کو ایک بار پھر دہرا سکتا ہے اسے کمپیوٹر کی زبان میں کسی بھی برنامج کا روانِ کار (flow of work) کہا جاتا ہے اور اسی خصوصیت کے باعث ایک کمپیوٹر انسانی عمل دخل کے بغیر بھی کوئی طے شدہ کام انجام دیتا رہتا ہے۔ عام طور پر اگر کوئی سادہ سا حسابی عمل ہو تو اس کو تو حسابگر (calculator) کی مدد سے باآسانی کیا جا سکتا ہے لیکن اگر حسابی عمل طویل اعداد سے متعلق ہو تو پھر اس کو اگر حسابگر یا روایتی طریقہ سے کیا جائے تو بہت اضافی وقت درکار ہوتا ہے مثال کے طور پر اگر 1 تا 1000 تمام اعداد کی جمع کا عمل ہو تو اس کے لیے قریبا ایک ہزار سے زائد بار تو حسابگر کی گھنڈیاں دبانی پڑیں گی اور وقت بھی زیادہ درکار ہوگا، لیکن ایک کمپیوٹر کو اگر ایک بار اس عمل کا تجزیہ کرنے کی ہدایات فراہم کر دی جائیں تو وہ ان کو اپنے اندر ذخیرہ کر لیگا اور اگلی بار سے انہی کو استعمال میں لاکر یہ حسابی عمل انجام دے سکے گا جس میں چند لمحات ہی درکار ہوں گے۔ اس قسم کی ہدایات کا ایک نمونہ درج ذیل ہوگا۔

```
mov #0,sum ; set sum to 0
mov #1,num ; set num to 1
loop: add num,sum ; add num to sum
add #1,num ; add 1 to num
cmp num,#1000 ; compare num to 1000
ble loop ; if num <= 1000, go back to 'loop'
halt ; end of program. stop running
```

ایک دلچسپ بات یہ ہے کہ اس تمام سرعت اور حسن کار کے باوجود کمپیوٹ رہے ایک آلہ اور جو خود کار طور پر منطق بھی لاگو نہیں کر سکتا اور سوچ بھی نہیں سکتا۔ مثال کے طور پر اوپر والے کام کی ہدایات کو پاکر ایک کمپیوٹر اس حسابی عمل کو شائد ایک ثانیئے کے بھی کئی ہزار حصے سے قبل مکمل تو کردیگا  مگر وہ کبھی اسی حسابی عمل کو کسی اور نسبتاً آسان انداز میں کرنے کے بارے میں نہیں سوچے گا۔ جبکہ اگر یہی کام ایک انسان کو دے دیا جائے تو وہ اپنی سوچ استعمال کرتے ہوئے یہی حسابی عمل کسی سہل طریقے سے انجام دینے کے بارے میں سوچ سکتا ہے، مثال کے طور پر وہ کوئی ریاضیاتی صیغہ استعمال کرنے کے بارے میں سوچ سکتا ہے جس کو لاگو کر کہ یہی کام جلد اور سہولت سے انجام دیا جس کے، جیسے ایک انسان ہوگا تو وہ مندرجہ ذیل مساوات استعمال کرنے کا سوچ سکتا ہے

 WIKINIUM\_MATH\_PH\_0
اور اس متبادل راہ کے استعمال سے انسان وہی درست جواب (500500) نکال لیتا ہے جو کمپیوٹر اوپر دی گئی ہدایات سے نکالے گا۔ بس یہ فرق (سوچنے کا) کمپیوٹر اور انسان میں ایسا ہے جس کی بنا پر کمپیوٹر مکمل خود مختار نہیں ہوتے۔

## کمپیوٹر پروگرام

 تفصیلی مضمون کے لیے **کمپیوٹر** ملاحظہ کریں۔کمپیوٹر پر ہم جو بھی کام کرتے ہیں اس کے پیچھے ایک کمپیوٹر پروگرام یا پروگرام موجود ہوتا ہے جس میں وہ ہدایات دی گئی ہوتی ہیں جن پر چل کر کمپیوٹر ہمارے مطلوبہ کام انجام دیتا ہے۔ یہ ہدایات مختصر یا درجن بھر سے ہزاروں تک ہو سکتی ہیں۔ عہد حاضر کا ایک کمپیوٹر ایک ثانیے میں ایک ارب ہدایات پر کام کر سکتا ہے یا انکا اجراء کر سکتا ہے اور برسوں اس عالجے (operation) میں کوئی ایک غلطی بھی نہیں کرتا۔

بڑے کمپیوٹر پروگرام کو تیار کرنے یا لکھنے میں شمارندی مبرمج (computer programmer) کی ایک پوری جماعت کو کام کرنا ہوتا ہے جس میں کئی سال لگ جاتے ہیں پھر بھی اس بات کا امکان باقی رہ جاتا ہے کہ شائد پروگرام توقعات کے مطابق کامل نہ ہو سکا ہو اور اس میں کوئی خامی رہ گئی ہو۔ اور اس طرح کی کوئی خامی جو کسی کمپیوٹر پروگرام میں اس کی تیاری کے دوران رہ گئی ہو اسے کھٹمل (bug) کہا جاتا ہے۔ بعض اوقات یہ کھٹمل ایسے ہوتے ہیں کہ ان کی موجودگی کے باوجود پروگرام کی کارکردگی پر کوئی اثر نہیں پڑتا ایسے کھٹملوں کو حلیم (benign) کہا جاتا ہے۔ جبکہ دوسری صورت ایسے کھٹملوں کی ہوتی ہے کہ جن کی موجودگی کسی بھی پروگرام کو مکمل طور پر ناکارہ اور منہدم (crash) کردیتی ہے۔ کھٹمل، کمپیوٹر کی کوئی خرابی نہیں ہوتی بلکہ یہ کمپیوٹر کمپیوٹر پروگرام میں رہ جانے والی کوئی خامی ہوتی ہے۔

کمپیوٹر میں انفرادی ہدایات، ایک آلی رمز (machine code) کی صورت میں موجود ہوتی ہیں اس طرح کہ ہر ہدایت کو ایک مخصوص عدد دیا گیا ہوتا ہے جس کو اس کا عالجہ رمز (operation code) کہا جاتا ہے۔ مثال کے طور پر دو اعداد کو جمع کرنے کی ہدایت کے لیے ایک الگ عالجہ رمز ہوگا اور ان کو آپس میں ضرب دینے کی ہدایت کے لیے ایک الگ عالجہ رمز ہوگا۔

چونکہ شمارندی یاداشت اعداد کو ہی ذخیرہ کرتی ہے اس لیے یہ ہدایات بھی اعداد میں ہی دی جاتی ہیں اور اسی وجہ سے تمام شمارندی برنامج (یعنی ہدایات کا مجموعہ) دراصل ایک قسم کا اعدادی بیان ہی ہوتا ہے۔ کمپیوٹر میں یہ برنامجات کا ذخیرہ ان بیانات (data) کے ساتھ بھی رکھا جا سکتا ہے کہ جن پر عمل کر کہ وہ کمپیوٹر کام کرتا ہے اسے اِشکالِ فون نیومان (crux of the von Neumann) سے تشبیہ دیتے ہیں۔ بعض اوقات ان برنامجات کے لیے بیانات سے الگ جگہ مخصوص ہوتی ہے اور ایسی صورت میں اسے ہاورڈ مارک 1 کمپیوٹر کی مناسبت سے تعمیر ہاورڈ (Havard architecture) کہا جاتا ہے۔

گویا شمارندی برنامجات (کمپیوٹر پروگرامز) کو اعداد کی ایک طویل فہرست کی صورت میں بھی لکھا جا سکتا ہے جس کو مشینی زبان (machine language) کہتے ہیں اور ایسا پرانے کمپیوٹر میں کیا جاتا تھا۔ مگر یہ ایک بہت تھکا دینے والا کام ہوتا ہے جسے آج کل کے پیچیدہ کمپیوٹر میں انجام دینا نہایت دشوار گزار ہے، اس مشکل پر قابو پانے کے لیے ایک اسم حفظی (mnemonic) کی طرز پر ایک طریقہ اپنایا گیا جس میں کسی بھی ایک قسم کی کمپیوٹر ہدایت کے لیے کوئی ایک لفظ چن دیا جاتا ہے، مثال کے طور پر ADD, SUB اور JUMP وغیرہ کے اسم حفظی۔ اور ان اسماء حفظی کو جو شمارندی پروگرام لکھنے کے لیے استعمال کیے جاتے ہیں، اجتماعی زبان (assembly language) کہا جاتا ہے۔ اب اس کے بعد ہوتا یوں ہے کہ اجتماعی زبان میں برنامجات (programs) کو لکھ کر ایک سافٹ ویئر (software) کے ذریعہ مشینی زبان میں تبدیل کر لیا جاتا ہے تاکہ ایک کمپیوٹر اس کو سمجھ لے اور اس قسم کی تبدیلی کرنے والا پروگرام، اجتماع ساز (assembler) کہلایا جاتا ہے۔

## حوالہ جات و تبصرے