లిస్ప్‌ను ప్రత్యేకంగా చేసింది

«ఇప్పటివరకు సృష్టించబడిన గొప్ప ప్రోగ్రామింగ్ భాష«
- అలాన్ కే, "ఆన్ లిస్ప్"

లిస్ప్‌ను ప్రత్యేకంగా చేసింది

1950ల చివరలో మెక్‌కార్తీ లిస్ప్‌ను అభివృద్ధి చేసినప్పుడు, ఇది ఇప్పటికే ఉన్న భాషలకు భిన్నంగా ఉంది, వాటిలో ముఖ్యమైనది ఫోర్ట్రాన్.

లిస్ప్ తొమ్మిది కొత్త ఆలోచనలను పరిచయం చేసింది:

1. షరతులు. షరతులతో కూడిన ప్రకటనలు నిర్మాణాలు అయితే. ఇప్పుడు మేము వాటిని మంజూరు చేస్తాము. వారు ఉన్నారు కనిపెట్టారు లిస్ప్ అభివృద్ధి సమయంలో మెక్‌కార్తీ. (ఆ సమయంలో ఫోర్ట్రాన్ గోటో స్టేట్‌మెంట్‌లను మాత్రమే కలిగి ఉంది, అంతర్లీన హార్డ్‌వేర్‌పై బ్రాంచ్ ఇన్‌స్ట్రక్షన్‌కి దగ్గరగా జత చేయబడింది.) మెక్‌కార్తీ, ఆల్గోల్ కమిటీలో ఉన్నప్పుడు, ఆల్గోల్‌కు షరతులను అందించాడు, అక్కడ నుండి అవి ఇతర భాషలకు వ్యాపించాయి.

2. ఒక ఫంక్షన్ రకం. లిస్ప్‌లో, ఫంక్షన్‌లు ఫస్ట్-క్లాస్ ఆబ్జెక్ట్‌లు - అవి సంఖ్యలు, స్ట్రింగ్‌లు మొదలైన వాటిలాగే డేటా రకం మరియు అక్షర ప్రాతినిధ్యాన్ని కలిగి ఉంటాయి, వేరియబుల్స్‌లో నిల్వ చేయబడతాయి, ఆర్గ్యుమెంట్‌లుగా పాస్ చేయవచ్చు మొదలైనవి.

3. పునరావృతం. రికర్షన్, వాస్తవానికి, లిస్ప్‌కు ముందు గణిత శాస్త్ర భావనగా ఉండేది, అయితే లిస్ప్ దానికి మద్దతునిచ్చిన మొదటి ప్రోగ్రామింగ్ భాష. (ఇది బహుశా ఫస్ట్-క్లాస్ ఆబ్జెక్ట్‌లుగా ఫంక్షన్‌లను రూపొందించడంలో సూచించబడవచ్చు.)

4. వేరియబుల్స్ యొక్క కొత్త భావన. లిస్ప్‌లో, అన్ని వేరియబుల్స్ ప్రభావవంతమైన పాయింటర్లు. విలువలు అంటే రకాలు ఉన్నాయి, వేరియబుల్స్ కాదు, మరియు వేరియబుల్స్ కేటాయించడం లేదా బైండింగ్ చేయడం అంటే పాయింటర్‌లను కాపీ చేయడం, అవి సూచించిన వాటిని కాదు.

5. చెత్త సేకరణ.

6. వ్యక్తీకరణలతో కూడిన కార్యక్రమాలు. లిస్ప్ ప్రోగ్రామ్‌లు వ్యక్తీకరణల వృక్షాలు, వీటిలో ప్రతి ఒక్కటి విలువను అందిస్తుంది. (కొన్ని లిస్ప్ వ్యక్తీకరణలు బహుళ విలువలను అందించగలవు.) ఇది ఫోర్ట్రాన్ మరియు "వ్యక్తీకరణలు" మరియు "ప్రకటనలు" మధ్య తేడాను గుర్తించే అనేక ఇతర విజయవంతమైన భాషలతో విభేదిస్తుంది.

ఫోర్ట్రాన్‌లో ఈ వ్యత్యాసాన్ని కలిగి ఉండటం సహజం ఎందుకంటే భాష లైన్-ఓరియెంటెడ్ (ఇన్‌పుట్ ఫార్మాట్ పంచ్ కార్డ్‌గా ఉన్న భాషకు ఆశ్చర్యం లేదు). మీరు సమూహ ప్రకటనలను కలిగి ఉండలేరు. మరియు మీరు పని చేయడానికి గణిత వ్యక్తీకరణలు అవసరమైనంత కాలం, మరేదైనా విలువను తిరిగి ఇవ్వడంలో అర్థం లేదు ఎందుకంటే తిరిగి ఇవ్వడానికి వేచి ఉండకపోవచ్చు.

బ్లాక్-స్ట్రక్చర్డ్ లాంగ్వేజెస్ రావడంతో ఆంక్షలు ఎత్తివేయబడ్డాయి, కానీ అప్పటికి చాలా ఆలస్యం అయింది. వ్యక్తీకరణలు మరియు ప్రకటనల మధ్య వ్యత్యాసం ఇప్పటికే స్థాపించబడింది. ఇది ఫోర్ట్రాన్ నుండి అల్గోల్ వరకు మరియు వారి వారసులకు వెళ్ళింది.

భాష పూర్తిగా వ్యక్తీకరణలతో రూపొందించబడినప్పుడు, మీకు కావలసిన విధంగా మీరు వ్యక్తీకరణలను కంపోజ్ చేయవచ్చు. మీరు ఏదైనా వ్రాయవచ్చు (సింటాక్స్ ఉపయోగించి విల్లు)

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

లేదా

(= x (if foo 1 2))

7. ఒక చిహ్నం రకం. అక్షరాలు స్ట్రింగ్‌లకు భిన్నంగా ఉంటాయి, ఈ సందర్భంలో మీరు పాయింటర్‌లను పోల్చడం ద్వారా సమానత్వం కోసం తనిఖీ చేయవచ్చు.

8. కోడ్ కోసం ఒక సంజ్ఞామానం గుర్తు చెట్లను ఉపయోగించడం.

9. మొత్తం భాష ఎల్లప్పుడూ అందుబాటులో ఉంటుంది. చదివే సమయం, కంపైల్ సమయం మరియు రన్ టైమ్ మధ్య స్పష్టమైన తేడా లేదు. మీరు చదివేటప్పుడు కోడ్‌ని కంపైల్ చేయవచ్చు లేదా రన్ చేయవచ్చు లేదా మీరు కంపైల్ చేస్తున్నప్పుడు కోడ్‌ని చదవవచ్చు లేదా అమలు చేయవచ్చు లేదా అది నడుస్తున్నప్పుడు కోడ్‌ని చదవవచ్చు లేదా కంపైల్ చేయవచ్చు.

చదివేటప్పుడు కోడ్‌ని అమలు చేయడం వలన వినియోగదారులు Lisp యొక్క సింటాక్స్‌ను రీప్రోగ్రామ్ చేయడానికి అనుమతిస్తుంది; కంపైల్ సమయంలో రన్నింగ్ కోడ్ మాక్రోలకు ఆధారం; Emacs వంటి ప్రోగ్రామ్‌లలో Lispని పొడిగింపు భాషగా ఉపయోగించడానికి రన్‌టైమ్ కంపైలేషన్ ఆధారం; మరియు చివరగా, రన్‌టైమ్ రీడింగ్ ప్రోగ్రామ్‌లను s-ఎక్స్‌ప్రెషన్‌లను ఉపయోగించి కమ్యూనికేట్ చేయడానికి అనుమతిస్తుంది, ఈ ఆలోచన ఇటీవల XMLలో తిరిగి కనుగొనబడింది.

తీర్మానం

లిస్ప్ మొదటిసారిగా కనుగొనబడినప్పుడు, ఈ ఆలోచనలు 1950ల చివరలో అందుబాటులో ఉన్న హార్డ్‌వేర్ ద్వారా నిర్దేశించబడిన సాంప్రదాయ ప్రోగ్రామింగ్ పద్ధతులకు చాలా దూరంగా ఉన్నాయి.

కాలక్రమేణా, జనాదరణ పొందిన భాషల విజయంతో మూర్తీభవించిన డిఫాల్ట్ భాష క్రమంగా లిస్ప్ వైపు పరిణామం చెందింది. 1-5 పాయింట్లు ఇప్పుడు విస్తృతంగా ఆమోదించబడ్డాయి. ప్రధాన స్రవంతిలో పాయింట్ 6 కనిపించడం ప్రారంభించింది. తగిన వాక్యనిర్మాణం లేనప్పటికీ, పైథాన్ ఏదో ఒక రూపంలో క్లాజ్ 7ని కలిగి ఉంది. (ఐటెమ్ 8తో) లిస్ప్‌లో మాక్రోలను సాధ్యం చేసే అంశం 9, ఇప్పటికీ లిస్ప్‌లో మాత్రమే ఉంది, బహుశా (ఎ) దీనికి ఆ కుండలీకరణాలు లేదా దానికి సమానమైన చెడు ఏదైనా అవసరం, మరియు (బి) మీరు పవర్‌లో ఈ తాజా పెరుగుదలను జోడిస్తే, మీరు వీటిని చేయవచ్చు ఇకపై కొత్త భాషను కనుగొన్నట్లు చెప్పుకోవడం లేదు, కానీ లిస్ప్ యొక్క కొత్త మాండలికాన్ని మాత్రమే అభివృద్ధి చేశామని; -)

ఆధునిక ప్రోగ్రామర్‌లకు ఇది ఉపయోగకరంగా ఉన్నప్పటికీ, ఇతర భాషలలో అవలంబించిన యాదృచ్ఛిక పద్ధతుల నుండి లిస్ప్‌ని దాని వ్యత్యాసం పరంగా వివరించడం వింతగా ఉంది. ఇది మెక్‌కార్తీ ఆలోచిస్తున్నది కాకపోవచ్చు. ఫోర్ట్రాన్ యొక్క లోపాలను సరిచేయడానికి Lisp రూపొందించబడలేదు; అది ప్రయత్నం యొక్క ఉప ఉత్పత్తి వలె కనిపించింది లెక్కలను యాక్సియోమాటైజ్ చేయండి.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి