ప్రోగ్రామింగు భాష
ప్రోగ్రామింగు భాష కంప్యూటరు లాంటి యంత్రాలను నియంత్రించేందుకు అవసరమైన సందేశాలను ఇవ్వటానికి ఉపయోగపడే ఒక కృత్రిమమైన భాష. మనుషులు మాట్లాడుకునే భాషలలో ఉన్నట్లే ఈ భాషలలో కూడా వ్యాకరణ నియమాలు, సందర్భోచితంగా ఉపయోగించాల్సిన వాక్యనిర్మాణ నియమాలు ఉంటాయి.
ప్రోగ్రామింగు భాషలను, సమాచారాన్ని వివిధ రూపాలలో ఏ విధంగా అమర్చుకోవాలో, అలా అమర్చుకోవటానికి చేయవలసిన పనులను, సరైన పద్ధతిలో తెలుపటానికి ఉపయోగిస్తారు. కొంతమంది ఎటువంటి పనులనయినా విస్పష్టంగా తెలియజేయగలిగే భాషలను మాత్రమే ప్రోగ్రామింగు భాషలని పిలవటానికి ఇష్టపడతారు. అందుకని కొన్ని కొన్ని హద్దులున్న ఇతర కృత్రిమ భాషలను "కంప్యూటరు భాష"లని పిలుస్తుంటారు.
ఇప్పటికే కొన్ని వేల ప్రోగ్రామింగు భాషలు సృష్టించారు, అంతేకాదు ప్రతీ సంవత్సరం చాలా కొత్తకొత్త భాషలు పుడుతూనే ఉన్నాయి.
సాధారణంగా ఈ క్రింద పేర్కొన్న గుర్తులను ఉపయోగించి ఫలానా కృత్రిమ భాషను ప్రోగ్రామింగు భాషా, కాదా అని నిరూపిస్తారు:HTMLలాంటి గణాంకాలు చేయని భాషలను ప్రోగ్రామింగు భాషలుగా పరిగణించరు. సాధారణంగా ప్రోగ్రామింగు భాషను, గణాంకాలు చేయని భాష మధ్యలో పొదుగుతారు. ఉదాహరణకు HTML మధ్యలో జావాస్క్రిప్టును ఉంచటం.
కంప్యూటరుకు అదేశాలను జారీచేయగలగటం, ప్రోగ్రామింగు భాషల ముఖ్యోద్దేశము. కాకపోతే ఈ భాషలలో ఆదేశాలను వ్యక్తపరిచే విధానం, మనుషులతో వ్యక్తపరచే విధానం కంటే తేడాగా ఉంటుంది, అంతేకాదు ప్రోగ్రామింగు భాషలలో మన ఆదేశాలను మరింత వివరంగా, విపులంగా వ్యక్తపరచాలి. మనుషులకు ఆదేశాలు ఇచ్చేటప్పుడు కొన్ని చిన్న చిన్న తపుడు ఆదేశాలు ఇచ్చినా, లేదా సందిగ్ధమైన ఆదేశాలు ఇచ్చినా కూడా వాటి అసలు అర్థాన్ని అవతలి వారి అర్థం చేసుకుంటారని భావించవచ్చు. కానీ కంప్యూటర్లు చెప్పింది చెప్పినట్లు చేస్తాయి, కాబట్టి వాటికి మన ఆదేశాలలోని అసలు భావాన్ని అర్ధం చేసుకునే శక్తి ఉండదు, అందుకని ప్రోగ్రామింగు భాషలు సందిగ్ధమైన ఆదేశాలను స్వీకరించవు.
ఇప్పటి వరకూ చాలా భాషలు తయారయ్యాయి, కొన్ని భాషలను కొత్తగా సృష్టిస్తే, కొన్నిటినేమో ఇతర భాషలను మార్చి సృష్టించారు, కానీ చివరికి చాలా భాషలు నిరుపయోగంగా మారిపోయాయి. అయితే అన్ని అవసరాలకూ ఉపయోగించగలిగే ఒక విశ్వవ్యాప్తమైన ప్రోగ్రామింగు భాషను తయారుచేయడానికి కొంత కృషి జరిగింది, కానీ ఆ కృషిలో తయారైన ఏ భాష కూడా పరీక్షలలో నిలువలేదు. భాషలను విభిన్నమైన పరిస్థితులలో ఉపయోగించటం వలన విభిన్నమైన ప్రోగ్రామింగు భాషల అవసరం ఏర్పడింది:ప్రోగ్రామింగు భాషల తయారీలో సాధారణంగా, ఆ భాషకు సమస్యల సారాంశాన్ని మాత్రమే వ్యక్తపరస్తూ పరిష్కరించగలిగే (Abstraction) సమర్ధతను చేర్చాలనే ధోరణిని అనుసరిస్తూ ఉంటారు. మొదటి తరం ప్రోగ్రామింగు భాషలు దాదాపుగా కంప్యూటరు హార్డువేరుకు సమాంతరంగా ఉండేవి, ఆ భాషలకూ కంప్యూటరు అర్ధంచేసుకునే 0లు 1లకు పెద్ద తేడాయేమీ ఉండేది కాదు. కొత్త కొత్త భాషలు తయారవుతున్న కొద్దీ, వాటికి మరిన్ని మెరుగులను, కొత్త కొత్త హంగులు చేర్చడం మొదలయింది, ఈ కొత్త హంగులవలన మరింత విస్తృత రూపంలో కంప్యూటరుకు మన ఆదేశాలను వ్యక్తపరచగలిగే అవకాశం లభించింది. ఇందు వలన ప్రోగ్రాములు వ్రాసేవారు తాము చేయించాలనుకున్న పనిని మరింత సమర్ధంగా, తక్కువ సమయంలో రాయగలుగుతున్నారు.
ప్రోగ్రామింగు భాషలకు కూడా మనుషుల భాషలలో ఉన్నటువంటి భాషా నిర్మాణాలను చేర్చాలనే ప్రతిపాదనలు కొన్ని వచ్చాయి, అలాంటి నిర్మాణాల వలన కంప్యూటరుతో కూడా మనుషులతో మాట్లాడినట్లే మాట్లాడి పనులు చేయించుకోవచ్చని ఊహించారు. కానీ అటువంటి సాంకేతిక పరిజ్ఞానం సాధ్యాసాద్యాలపైన, అటువంటి భాషలు అవసరమా లేదా అనే వాటిపైనా ఇంకా చర్చలు జరుగుతూనే ఉన్నాయి. ఎడ్గర్ డైకెస్ట్రా (Edsger Dijkstra) ప్రోగ్రాములను రాయడానికి మనుషులు వాడే తరహా భాషలను ఉపయోగించటాన్ని మూర్ఖత్వం అని పేర్కొన్నాడు, అటువంటి భాషలవలన ప్రోగ్రామింగు భాషలలో బొలెడన్ని అనవసరపు నిర్మాణాలు చోటు చేసుకుంటాయని కూడా వివరించాడు. అలాన్ పెర్లిస్ కూడా ఇటువంటి భాషల సృష్టిని అనవసరం అని పేర్కొన్నాడు.
ప్రోగ్రామింగు భాషలలో రాసిన ప్రోగ్రాములలో కనిపించే వాక్యనిర్మాణాలు అన్నిటినీ సింటాక్సు అని పిలుస్తారు. చాలామట్టుకు ప్రోగ్రామింగు భాషల వాక్యనిర్మాణాలు పాఠ్యరూపంలోనే ఉంటాయి, అలాంటి భాషలలో వాక్యాలన్నీ పదాలు, సంఖ్యలూ, విరామ చిహ్నాలతో నిండి ఉంటాయి. ఇంకో పక్క కొన్ని ప్రోగ్రామింగు భాషలలో వాక్యనిర్మాణాలు రేఖాచిత్రాల రూపంలో ఉంటాయి, అటువంటి భాషలలో చిహ్నాల అమరికలో ఉన్న సంబంధాల ద్వారా ప్రోగ్రాములను తయారుచేస్తారు.
ప్రోగ్రామింగు భాషల వాక్యనిర్మాణం (syntax) ద్వారా మనం, సరైన ప్రోగ్రాము రాయడానికి ఆ భాషలో ఉన్న పదాలనూ, చిహ్నాలనూ ఏవిధంగా కూర్చుకుని ఉపయోగించుకోవచ్చో తెలుసుకోగలుగుతాము. అలాగే ఆ భాషలలో తయారుచేసిన వాక్యాల భావాలను సరిగ్గా తెలుపుతున్నామా లేదా అనేదానిని సిమాన్టిక్స్ (semantics) చూసుకుంటుంది. దాదాపు అన్ని ప్రోగ్రామింగు భాషలూ పాఠ్యరూపంలోనే ఉండటం వలన ఈ వ్యాసం వాటి గురించే చర్చిస్తుంది.
ప్రోగ్రామింగు భాషల వాక్యనిర్మాణాన్ని నిర్వచించటానికి రెగులర్ ఎక్స్‌ప్రెషన్లను (భాషలో వాడగలిగే పదాలను నిర్వచించటానికి) మరియు బాకస్-నార్ ఫారంల (భాష వ్యాకరణాన్ని నిర్వచించటానికి) సమ్మిశ్రమాన్ని ఉపయోగిస్తారు. కింద లిస్ప్ ప్రోగ్రామింగు భాష ఆధారిత సులువైన వ్యాకరణం ఒకటి ఉంది:
codice_1
ఈ వ్యాకరణం క్రింది వివరాలను తెలుపుతుంది:
ఈ వ్యాకరణ నియమాలను ఉపయోగించి బాగా తయారుచేసిన (well formed) చిహ్నాల వరుసక్రమాలు కొన్ని: 'codice_2', 'codice_3', 'codice_4'
্রোগ্রামিং ভাষা]]