کس چیز نے لِسپ کو خاص بنایا

«اب تک کی تخلیق کردہ سب سے بڑی پروگرامنگ زبان«
- ایلن کی، "لِسپ پر"

کس چیز نے لِسپ کو خاص بنایا

جب میک کارتھی نے 1950 کی دہائی کے آخر میں لِسپ تیار کیا تو یہ موجودہ زبانوں سے یکسر مختلف تھی، جن میں سب سے اہم زبان تھی۔ فورٹران۔.

لِسپ نے نو نئے آئیڈیاز متعارف کروائے:

1. شرائط. مشروط بیانات اگر-تو-اور تعمیرات ہیں۔ اب ہم انہیں معمولی سمجھتے ہیں۔ وہ تھے ایجاد کیا لِسپ کی نشوونما کے دوران میکارتھی۔ (اس وقت فورٹران کے پاس صرف گوٹو بیانات تھے، جو بنیادی ہارڈویئر پر شاخ کی ہدایات کے ساتھ مل کر تھے۔) میک کارتھی نے، الگول کمیٹی میں رہتے ہوئے، الگول کے لیے مشروط تعاون کیا، جہاں سے وہ دوسری زبانوں میں پھیل گئے۔

2. فنکشن کی قسم. لِسپ میں، فنکشنز فرسٹ کلاس آبجیکٹ ہیں - وہ ڈیٹا کی قسم ہیں، جیسے نمبرز، سٹرنگز، وغیرہ، اور ان کی لفظی نمائندگی ہوتی ہے، متغیرات میں ذخیرہ کیا جا سکتا ہے، بطور دلیل پاس کیا جا سکتا ہے، وغیرہ۔

3. تکرار. Recursion، یقینا، Lisp سے پہلے ایک ریاضیاتی تصور کے طور پر موجود تھا، لیکن Lisp اس کی حمایت کرنے والی پہلی پروگرامنگ زبان تھی۔ (یہ شاید فرسٹ کلاس آبجیکٹ کے طور پر فنکشنز بنانے میں مضمر ہے۔)

4. متغیرات کا ایک نیا تصور. Lisp میں، تمام متغیر موثر پوائنٹر ہیں۔ قدریں وہ ہوتی ہیں جن کی اقسام ہوتی ہیں، متغیرات نہیں، اور متغیرات کو تفویض یا پابند کرنے کا مطلب ہے پوائنٹرز کو کاپی کرنا، نہ کہ وہ جس کی طرف اشارہ کرتے ہیں۔

5. کوڑا کرکٹ اکٹھا کرنا.

6. تاثرات پر مشتمل پروگرام. لِسپ پروگرام اظہار کے درخت ہیں، جن میں سے ہر ایک قدر واپس کرتا ہے۔ (کچھ لِسپ اظہار ایک سے زیادہ قدریں واپس کر سکتے ہیں۔) یہ فورٹران اور بہت سی دوسری کامیاب زبانوں سے متصادم ہے جو "اظہار" اور "بیانات" کے درمیان فرق کرتی ہیں۔

فورٹران میں یہ امتیاز ہونا فطری تھا کیونکہ زبان لائن پر مبنی تھی (ایسی زبان کے لیے حیرت کی بات نہیں جس کا ان پٹ فارمیٹ ایک پنچ کارڈ تھا)۔ آپ نیسٹڈ بیانات نہیں دے سکتے تھے۔ اور جب تک آپ کو کام کرنے کے لیے ریاضیاتی تاثرات کی ضرورت ہے، کسی اور چیز کی قدر واپس کرنے کا کوئی فائدہ نہیں تھا کیونکہ ہو سکتا ہے کہ کوئی چیز واپس آنے کا انتظار نہ کرے۔

بلاک ساختی زبانوں کی آمد کے ساتھ پابندیاں ہٹا دی گئیں، لیکن تب تک بہت دیر ہو چکی تھی۔ اظہار اور بیان میں فرق پہلے ہی قائم ہو چکا ہے۔ یہ فورٹران سے الگول تک اور آگے ان کی اولادوں تک گیا۔

جب کوئی زبان مکمل طور پر تاثرات سے بنتی ہے، تو آپ جس طرح چاہیں تاثرات لکھ سکتے ہیں۔ آپ یا تو لکھ سکتے ہیں (نحو کا استعمال کرتے ہوئے آرک)

(if foo (= x 1) (= x 2))

یا

(= x (if foo 1 2))

7. علامت کی قسم. حروف تاروں سے مختلف ہوتے ہیں، ایسی صورت میں آپ پوائنٹرز کا موازنہ کر کے برابری کی جانچ کر سکتے ہیں۔

8. کوڈ کے لیے ایک اشارے علامتی درختوں کا استعمال کرتے ہوئے

9. پوری زبان ہمیشہ دستیاب ہے۔. پڑھنے کے وقت، مرتب وقت اور رن ٹائم میں کوئی واضح فرق نہیں ہے۔ جب آپ پڑھتے ہیں تو آپ کوڈ کو مرتب یا چلا سکتے ہیں، یا جب آپ مرتب کرتے ہیں تو کوڈ پڑھ سکتے ہیں یا چلا سکتے ہیں، یا کوڈ کے چلنے کے دوران اسے پڑھ یا مرتب کر سکتے ہیں۔

پڑھنے کے دوران کوڈ چلانے سے صارفین کو Lisp کے نحو کو دوبارہ پروگرام کرنے کی اجازت ملتی ہے۔ کمپائل کے وقت کوڈ چلانا میکروز کی بنیاد ہے۔ Emacs جیسے پروگراموں میں لِسپ کو توسیعی زبان کے طور پر استعمال کرنے کی بنیاد رن ٹائم کمپلیشن ہے۔ اور آخر میں، رن ٹائم ریڈنگ پروگراموں کو s-اظہار کا استعمال کرتے ہوئے بات چیت کرنے کی اجازت دیتی ہے، ایک خیال جسے حال ہی میں XML میں دوبارہ ایجاد کیا گیا ہے۔

حاصل يہ ہوا

جب لِسپ کو پہلی بار ایجاد کیا گیا تھا، تو یہ خیالات 1950 کی دہائی کے آخر میں دستیاب ہارڈ ویئر کے ذریعے طے شدہ پروگرامنگ کے روایتی طریقوں سے بہت دور تھے۔

وقت گزرنے کے ساتھ، پہلے سے طے شدہ زبان، مقبول زبانوں کی کامیابی سے مجسم، آہستہ آہستہ Lisp کی طرف تیار ہوئی۔ پوائنٹس 1-5 اب بڑے پیمانے پر قبول کیے گئے ہیں۔ پوائنٹ 6 مرکزی دھارے میں آنا شروع ہو رہا ہے۔ Python میں، کسی نہ کسی شکل میں ایک شق 7 موجود ہے، حالانکہ کوئی مناسب ترکیب نہیں ہے۔ آئٹم 8، جو (آئٹم 9 کے ساتھ) Lisp میں میکرو کو ممکن بناتا ہے، اب بھی صرف Lisp میں ہے، شاید اس لیے کہ (a) اس کے لیے ان قوسین یا اتنی ہی خراب چیز کی ضرورت ہے، اور (b) اگر آپ طاقت میں اس تازہ ترین اضافہ کو شامل کرتے ہیں، تو آپ کر سکتے ہیں اب کوئی نئی زبان ایجاد کرنے کا دعویٰ نہیں کرتے، بلکہ صرف لِسپ کی ایک نئی بولی تیار کرنے کے لیے۔ -)

اگرچہ یہ جدید پروگرامرز کے لیے مفید ہے، لیکن دوسری زبانوں میں اختیار کی جانے والی بے ترتیب تکنیکوں سے اس کے فرق کے لحاظ سے Lisp کو بیان کرنا عجیب ہے۔ یہ وہ نہیں ہوسکتا ہے جو میکارتھی سوچ رہا تھا۔ لِسپ کو فورٹران کی غلطیوں کو درست کرنے کے لیے ڈیزائن نہیں کیا گیا تھا۔ یہ کوشش کے ضمنی مصنوع کے طور پر زیادہ ظاہر ہوا۔ حسابات کو محور بنائیں.

ماخذ: www.habr.com

نیا تبصرہ شامل کریں