کمپیوٹر پروگرامنگ اور مصنوعی ذہانت
Machine with Minds & Future Compilers
1952میں Grace Mury Hopper (a lady)جنہوں نے اپنے ایک تحقیقی مقالعے (The Education of a Computer)میں سافٹ ویئر کی reusability کاConcept دیا۔اور پہلا سافٹ وئیر ڈویلپ کیا جس میں یہ صلاحیت تھی کہComputer High Level Instructionsکو Low Level میں کنورٹ کرے۔ جس کو Compiler کا نام دیا گیا۔ اور آج ہم جانتے ہیں کہ بہت ساری Modern Computer Programming Languagesمیں Compilers ہی ہائی لیول انسٹرکشز کو Low level میں کنورٹ کرنے کے لیے یوز ہوتے ہیں ۔ اور جدید کمپا ئلرز بے پناہ صلاحیت رکھتے ہیں جن میں High Level Programming انسٹرکشز کو بہت جلدی Low Levelمیں کنورٹ کرنے کی صلاحیت کے ساتھ ساتھ Syntax, Compile & Run Time Errors کو Detect کرنے کی صلاحیت بھی موجود ہے اور یہ عمل بہت تیزی سے ہوتا ہے یعنی آپ کے ایک Single Clickپہ تمام کی تمام Errors ڈس پلے کر دیتا ہے اور ایک پروگرامر جانتا ہے کہ یہ کتنی بڑی صلا حیت ہے۔
یہ تو تھا کچھ Compiler Background اب میں جس بات کا تذکرہ کرنے لگا ہوں بظاہر میرے بہت سارے احباب اس سے Strictly disagree بھی کرسکتے ہیں۔ لیکن اہم بات یہ ہے کہ کوئی Conceptجو بعد میں Implement ہوتا ہے پہلے و ہ ایک Idea ہی ہوتا ہے اور تھیوری کی حد تک لیکن تاریخ ہمیں بتاتی ہے کہ یہی Ideas بعد میں نیو سے نیو ایجادات کے باحث بنے۔
چنانچہ میرا ذاتی خیال ہے کہ ہو سکتا ہے کہ اگلے چند سالوں میںانسان ایسے کمپائلر پروگرام بنانے میںکامیاب ہو جائیں جو ہماری نیچرل زبانوں کو کمپائل کریں اور Machines With Mindsکا تصور محض تصور نہ رہے ۔ اس کی وضاحت ایسے ہے کہ کمپائلر ایسا پروگرام ہے جو کسی بھی کمپیوٹر پروگرامنگ لینگوئج کے Syntax کے مطابق لکھی گئی ہدایات کو Low Level Instructions (The binary codes 1 & 0 the basic digital computers native language the signals)میں کنورٹ کرتا ہے کیونکہ کمپیوٹر کی زبان یہی Signals ہیں۔ ایک پروگرامر بنے کے لیے خاصی محنت اور مسلسل ورک کی ضرورت پڑتی ہے یہی وجہ ہے کہ مارکیٹ میں پروگرامرز کی ڈیمانڈز بہت زیادہ ہے اور میرے خیال میں 60 to 70 % Hot Demandsہیں پروگرامر کے لیے۔ کیوں۔۔؟پہلی بات تو یہ ہے کہ High Level Languages (C++, C#, JAVA, PHP) اور بہت سی Languages میں فرق موجود ہیں ایک پروگرامر کسی ایک پہ تو مکمل گرپ بنا سکتا ہے لیکن سب کو لے چلنا خاصا مشکل کام ہے ۔ کیونکہ
Every High Level Language Like our natural Languages (English, Urdu, French) have differences in their syntax & semantics
تو کمپیوٹر میں بھییہی چیز ہے ۔ سومیرا ذاتی خیال کہ ایسے کمپائلر بنیں گے۔ کہ ہمارے پاس ایک مشین جیسے کمپیوٹر میں آپ ایک پروگرام لکھنا چاہیں گے تو اپنی زبان مثلا انگلش یا میں Without Hard & fast Rules like we have in Computing Languages لکھ سکھیں گے ۔ اگر یہ ہو جاتا ہے تو سمجھ لیں کہ Machine With Mindsکا تصور ایک حقیقت بن جائے گا۔ آپ سوچیں کہ ہم مشینز سے بات چیت کریں گے ۔ یہیKeyboard اور ماﺅس ہو گا لیکن ایک پروگرامر پروگرام لکھتے وقت بہت ساری پیچیدگیوں جس میں Rules , Functions, & Syntax or Semantics کا کچھ خاص خیال نہیں رکھے گا۔ کیونکہ وہ اپنی زبان جس سے وہ بات چیت کرتا ہے جس میں صرف مفہوم سمجھ آ جائے کام کرے گا۔ جیسے آپ کسی کو کہتے ہیں ۔۔پانی لا دو؟ یا پانی لے آﺅ۔۔ پانی چاییے، پانی پلا دو، پانی ملے گا۔۔؟ کیا پانی پلا دو گے ۔۔؟وغیرہ سب کا مفہوم تقریباً ایک ہے۔ لیکن کوئی انسان چونکہ اس کا Semantics سمجھ سکتا ہے وہ آپ کو پانی پلا دے گا گو کہ آپ کا Syntax مختلف تھا لیکن آپ کی پرابلم Solve ہو گی ۔
ہم Machines کو اس لیے پروگرام دیتے ہیں کہ ہم پرابلم Solve کرنا چاہتے ہیں ہمارا مقصد پرابلم سلیوشن ہے وہ کیسے ہوگا ۔۔؟جیسے بھی ہو ہمیں سلیوشن سے غرض ہے ۔ چنانچہ یہ تصور یہ کہ ایسے کمپائلر پروگرام بنیں گے جو ہماری نیچرل Language Instructions کو Computer Low Level میں کنورٹ کریں اور ہمارے پرابلم Solve کریں اور ہم بہت سارے Manual کاموں کو Automatic Computer Program سے حل کر سکیں اور اس کے لیے ہمیں کوئی مہارت جیسے آج کا کمپیوٹر پروگرام ہوتا ہے حاصل کرنے کی ضرورت نہیں ہو گی۔ اور پھر میری رائے میں ہر طرف مشینوں اور سافٹ وئیر سسٹمز کی حکمرانی ہو گی۔
ہم انسان ایک Sense میں آج بھی مشینوں پہ حکمرانی کر رہے ہیں ۔ لیکن Natural Language Compilers بن جانے کی صور ت میں ایسی Machines بنیں گے جو انسانوں کے نیم البدل بن سکیں گے ۔ اور پھر انسان کی یہ خواہش کہ وہ ہر لحاظ سے سہل پسند اور آرام دہ ہو شاید کہ یہ خواب پورا ہو نے کو ہو۔ کیا ایسا ممکن ہو گا آنے والا وقت بتائے گا۔
مگر اقبال نے خوب کہا تھا:
ہے دل کے لیے موت مشینوں کی حکومت
احساس مروت کو کچل دیتے ہیں آلات