కంప్యూటింగ్ పూర్వాపరాలు, సాధ్యాసాధ్యాలు – 1: శేష ప్రశ్న

పోయిన ఎండాకాలం నయాగ్రా జలపాతాలు చూద్దామని కుటుంబసమేతంగా బయలుదేరి, జలపాతాలకి దగ్గర్లో ఉన్న న్యూయార్క్ రాష్ట్రంలోని బఫెలో నగరం చేరాం. విమానం దిగి, సామాను తీసుకునే చోటు వైపు నడుస్తూ ఉన్నాం. ఇంతలో గోడ మీద వేలాడ దీసిన పెద్ద పెద్ద పటాలు నా దృష్టినాకర్షించాయి. దగ్గరకు వెళ్ళి చూస్తే, అవి న్యూయార్క్ రాష్ట్రంలో పుట్టి పెరిగి ప్రపంచ ప్రఖ్యాతిగాంచిన శాస్త్రజ్ఞులవి. “మా కంప్యూటర్ సైన్సు నుంచి ఎవరున్నారా?” అని కుతూహలంతో చూస్తే, స్టీఫెన్ కుక్ (Stephen Cook) బొమ్మ కనబడింది.

“ఓహో, యూనివర్సిటీ ఆఫ్ టొరాంటో, కెనడా లో పనిచేసే కుక్ ఈరాష్ట్రం వాడా? ” అనుకొని, నేనెప్పుడో ఇరవై ఏళ్ళ క్రితం యూనివర్సిటిలో ఉన్నప్పుడు చదువుకున్న ఆయన పేపరు గుర్తొచ్చి, ఆనందపడ్డా. పక్కనే వున్న మావాడితో, “ఒరేయ్! ఈయన కంప్యూటర్ల గురించి ఓ గొప్ప విషయం కనుక్కున్నాడు. చదువు,” అన్నా.

వాడు అక్కడ రాసింది చదివి, “కంప్యూటర్లకి కష్టమైనవేమిటో చెప్పాడు, అంతే గదా, దాంట్లో పెద్ద గొప్పేంటి?” అని భుజాలెగరేశాడు.

“నీకు తెలుసా, కంప్యూటర్లకి కష్టమైన సమస్య లేమిటో? ” అని అడిగా.

“ఓ! ఇదిగో, కంప్యూటర్ ఇలా ఎగిరి గంతులు వెయ్యలేదు కదా!” అని అతి తెలివి చూపించాడు.

“అది గాదురా వెధవా! పైకి కంప్యూటర్లతో సాధించగలిగే వాటిలాగే కనిపించినా కొన్ని సమస్యలు కంప్యూటర్లకి సులభంగా లొంగవు. అవేమిటో సిద్ధాంతపరంగా వివరించాడు,” అని చెప్పా. “అంతే గాదు. P, NP తో సమానమా? అని ఓ ప్రశ్న వేశాడు. అది ఇప్పటికీ తీరని ప్రశ్న (open question). దానికి సమాధానం కనుక్కున్నావంటే, నీపేరు ప్రపంచమంతటా మారుమ్రోగి పోతుంది ,” అన్నా.

“డాడీ! నాకలాంటి పేరు ప్రఖ్యాతులు వద్దు. ప్రశాంతంగా బతకాలని ఉంది,” అని తన వీడియో ఆటల్లో కెళ్ళి పోయాడు.


నయాగ్రా చూసి ఇంటికి తిరిగొచ్చింతర్వాత నాకో ఆలోచన వచ్చింది. “అందరూ ఇది కంప్యూటర్ యుగం అని చెప్తుంటారు గదా! మన తెలుగోళ్ళలో, బాగా చదువుకున్న వాళ్ళలో గూడా, ఇంకా చెప్పాలంటే కంప్యూటర్ ఉద్యోగాలు చేసే వాళ్ళలో గూడా, ఈ తీరని ప్రశ్న గురించి ఎంతమందికి తెలుసు? కంప్యూటర్ సైన్సు లోకెల్లా ఇంతకన్నా తెలుసుకోదగ్గ విషయం మరేముంది? దీని గురించి నలుగురికీ తెలిసే విధంగా ఓ వ్యాసం రాస్తే బాగుంటుంది గదా,” అనిపించింది.

తీరా రాద్దామని కూర్చుంటే, “ఎక్కడ మొదలెట్టాలి? ” అన్న సందేహం వచ్చింది. P, NP అంటే ఏమిటో వివరించాలి; అసలు కంప్యూటర్ అంటే ఏమిటో నిర్వచించాలి, టూరింగ్ మెషీన్ ని పరిచయం చెయ్యాలి – ఇవన్నీ తలుచుకుంటే కంగారేసింది.

ఎవరైనా తెలుగులో ఈ విషయాల మీద ఏమైనా రాశారా? అని పాపులర్ సైన్సు పుస్తకాల కోసం చూశాను. నండూరి రామమోహనరావు, మహీధర నళినీమోహన్, ఇలా కొద్దిమంది హేమాహేమీలు రాసిన పాత పుస్తకాలు తప్పించి, ఈ మధ్యకాలంలో చెప్పుకోదగ్గ పుస్తకాలు చాలా తక్కువ కనిపించాయి. కాస్మిక్ వాస్తు, జల వాస్తు, కుటుంబ వాస్తు, పుట్టుమచ్చల ఫలితాలు, సైంటిఫిక్ జ్యోతిష్యం, ఇలాంటి విషయాల మీద పుస్తకాలకి మాత్రం ఏమీ లోటు లేదు! నిజమైన సైన్సుమీద సామాన్యజనాలకి ఉత్సుకత లేదని నిరుత్సాహపడి రాయాలనే ఆలోచనకి స్వస్తి చెప్పాను.

ఇంతలో Jim Gray మీద నేను నవంబరు 2007 ఈమాటలో ఓ వ్యాసం రాశాను. దానికొచ్చిన ప్రతిస్పందనని బట్టి, సాంకేతిక విషయాలు తెలుసుకోవాలన్న కుతూహలంగల పాఠకులున్నారని తెలిసి సంతోషం వేసింది. వాళ్ళిచ్చిన ప్రోత్సాహం, మెచ్చుకోలు మాటలు నాకు ప్రోద్బలాన్నిచ్చాయి. ఈ తీరని ప్రశ్నని ఎలాగైనా తెలుగులో పరిచయం చెయ్యాలనే కోరిక దృఢపడింది.

నేను రాయబోయే విషయాలని అర్థం చేసుకోడానికి మీరు కంప్యూటర్ ఇంజనీర్లు కానవసరం లేదు. కొంచెం లెక్కలు తెలిస్తే చాలు. దురదృష్టవశాత్తూ లెక్కలంటే చాలామందికి, ఇండియాలోనూ అమెరికాలోనూ కూడా ఓ రకమైన భయం! కాని ఇందుకు హైస్కూలు చదువుకన్నా ఎక్కువ అవసరం లేదు. అందులోనూ కాంపోజిట్ లెక్కలు చదివి ఉండాల్సిన పని గూడా లేదు. కూడికలు, తీసివేతలు, హెచ్చవేతలు ఎప్పుడన్నా భాగహారాలు – అంతే. ఇకపోతే, కొంచెం, తర్కం (logic) తెలిసుండాలి. కాని దానికి వేరే చదువులేమీ అవసరం లేదు. రోజూ మనం చేసే పనుల్లో, వాటిని గురించి ప్రత్యేకంగా ఆలోచించకపోయినా, చాలా వరకు తర్కబద్ధంగా చేసేవే!


P, NP తో సమానమా?

ఈవ్యాసాలకి ప్రేరణ కలిగించిన ప్రశ్నని ముందర టూకీగా పరిచయం చేస్తాను. దీనిని వచ్చే సంచికలలో నిర్దుష్టంగా నిర్వచిస్తాను. కొన్ని పదాలని వచ్చే సంచికల్లో వివరిస్తానని దాటవేసినందుకు విసుగుపడకండి. ప్రస్తుతానికి మీకు కొంచం స్ఫూర్తి కలిగిస్తే చాలు.

కంప్యూటర్ని అనేక రకాల సమస్యలని పరిష్కరించడానికి వాడుతున్నాం. వీటిలో వివరించడానికి సులువుగా ఉండే నిర్ణయ సమస్యలని (decision problems) తీసుకుందాం. అంటే, ఈ రకమైన సమస్యలకి పరిష్కారం, అవునో కాదో తేల్చేయడం. అంతకు మించి కంప్యూటర్ ఏమీ తిరుగు ఇవ్వనవసరం లేదు! ఉదాహరణకి, రెండు సంఖ్యలిచ్చి, “మొదటి సంఖ్యని రెండోది నిశ్శేషంగా భాగిస్తుందా?” అని అడిగితే, కంప్యూటర్ అవునో, కాదో చెప్పాలి.

ఈ సమస్యలని స్థూలంగా రెండు రకాలుగా విభజించవచ్చు: సాధ్యమైనవి (solvable), అసాధ్యమైనవి (unsolvable).

అసాధ్యమైనవి అంటే, కంప్యూటర్ కెంత సమయం ఇచ్చినా గూడా ఆసమస్యకి సమాధానం అవునో, కాదో చెప్పలేదు. ఒక్క క్షణం దీని గురించి ఆలోచించండి. ఇవాళే కాదు, భవిష్యత్తులో కూడా, కంప్యూటర్ టెక్నాలజీ ఎంత అభివృద్ధి చెందినా, మన తెలివితేటలు ఎంతగా పెంపొందినా, ఈ సమస్యలకి కంప్యూటర్ ద్వారా సమాధానం తెలుసుకోలేం! అలాంటి సమస్యలున్నాయని సిద్ధాంతపరంగా నిరూపించారు. మీరు చిన్నప్పుడు సమీకరణాలు సాధించి ఉంటారు. కొన్ని రకాలైన సమీకరణాలనిచ్చి, వాటిని సాధించగలమా అని అడిగితే, కంప్యూటర్ అవునో కాదో చెప్పలేదు. అది కంప్యూటర్‌కి అసాధ్యమైన సమస్యలకో ఉదాహరణ.

సాధ్యమైన సమస్యలని మళ్ళీ స్థూలంగా రెండు రకాలుగా విభజించవచ్చు: సులభమైనవి (tractable), కష్టమైనవి (intractable).

సులభమైనవి అంటే కంప్యూటర్ ఆసమస్యకి సముచితమైన (reasonable) సమయంలో సమాధానం ఇస్తుందన్న మాట. సముచితమైన సమయం అంటే ఏమిటి? “మొదటి సంఖ్యని రెండోది నిశ్శేషంగా భాగిస్తుందా?” అన్న సమస్యనే తీసుకుందాం. ఆ ప్రశ్నని, 17379, 23 అనే రెండు సంఖ్యలతో అడిగామనుకోండి. సమాధానం రావడానికి ఒక సెకను పడుతుంది. అదే ప్రశ్నని, 90817263549081726354, 23 సంఖ్యలతో అడిగామనుకోండి. దానికి కొన్ని సెకన్లో నిముషాలో పడుతుంది. ఎందుకంటే, ఈ సంఖ్యలు ఇంతకు ముందు వాటికన్నా పొడుగువి కనుక. సముచితం అంటే కచ్చితంగా ఎంత అన్నది తర్వాత తెలుసుకుందాం. ప్రస్తుతానికి సమస్యతో పాటు ఇచ్చిన దత్తాంశాల సైజుకి (ఇక్కడ, సంఖ్యల పొడవుకి, విలువకి కాదు) సముచితమైన తీరుగా అని తెలుసుకుంటే చాలు.

ఈరకం సమస్యలని పరిష్కరించడానికే మనం ఎక్కువగా కంప్యూటర్లని రోజూ వాడేది. వీటిని P (అంటే deterministic polynomial, దానిని తర్వాత సంచికల్లో వివరిస్తాను) సమస్యలు అంటారు.

కష్టమైన సమస్యలంటే, వాటిని సాధించడానికి కంప్యూటర్ అనుచితమైన (unreasonable) సమయం తీసుకుంటుందన్న మాట. అంటే, ఆసమస్యని చిన్న చిన్న వాటి గురించి అడిగితే కొంచం సమయం తీసుకుంటుంది. కాస్త పెద్ద వాటిని గురించి అడగడంతోటే ఊహించలేనంత ఎక్కువ సమయం పడుతుంది. ఊహించలేనంత అంటే ఎంత? మన జీవిత కాలం కన్నా చాలా ఎక్కువ. నిజానికి కంప్యూటర్ సమాధానం చెప్పేటప్పటికి మన భూమే అంతరించిపోతుంది!

మన చిన్నప్పుడు పెద్దవాళ్ళు చెప్పే వాళ్ళు, “ఏపనైనా మూర్ఖంగా చెయ్యబాకు. సూక్ష్మం తెలుసుకొని చెయ్యి,” అని. మరి ఈ సమస్యల్ని కష్టం అంటానికి కారణం, మనం సూక్ష్మంగా ఆలోచించకపోవడాన కావచ్చు గదా! మనం తెలివిగా ఆలోచించి కంప్యూటర్ ప్రోగ్రాం రాస్తే, అది సముచితమైన సమయంలో సమాధానం చెప్పొచ్చు గదా, అనే సందేహం రావొచ్చు.

నిజమే కాని కొన్ని సమస్యలు మాత్రం సహజంగానే కష్టమైనవి (inherently intractable) – అంటే, మనం ఎంత తెలివి ఉపయోగించినా, ముందు ముందు మరో ఐన్స్టయిన్ లాంటి మేధావి పుట్టినా సరే ఆ సమస్యలకి సులభమైన పరిష్కారం లేదు. అలాంటి సమస్యలున్నాయని సోదాహరణంగా నిరూపించారు కూడాను.

కాని కొన్ని మాత్రం అవి సహజంగానే కష్టమైనవా లేకపోతే ఎవరైనా తెలివయిన వాళ్ళ సులభమైన పరిష్కారం కోసం ఎదురుచూస్తున్నాయా అన్నది ఇవాళ మనకు నిశ్చయంగా తెలియదు. వాటిలో కొన్ని ముఖ్యమైన సమస్యలకి మాత్రం, కంప్యూటర్ కాస్త గారడీ చేస్తే, ఆసమస్యలని సులభంగా పరిష్కరించవచ్చు! వీటిని NP సమస్యలు అంటారు (NP అంటే non-deterministic polynomial; అదేమిటో, ఆ గారడీ అంటే ఏమిటో ముందు సంచికల్లో వివరిస్తాను). కానీ నిజమైన కంప్యూటర్లు గారడీ చెయ్యవని గుర్తుంచుకోండి. కాబట్టి ఈ సమస్యలు ఇవాళ నిజంగా కష్టమైనవే.

చిత్రమైన విషయమేమిటంటే, ఒక్కో సులభమైన సమస్యని కొంచం మారిస్తే, అది కష్టమైన కోవలోకెళ్ళి పోతుంది! దీనికో ఉదాహరణ ఇస్తాను: మన పల్లెటూళ్ళలో ప్రొద్దున్నే లేచి, ఇళ్ళ ముందు కసువు చిమ్మి, కళ్ళాపు చల్లి, ముగ్గులు పెడుతుంటారు. చుక్కలు పెట్టి, వాటిని రకరకాలుగా కలుపుతారు. సంక్రాంతి పండగప్పుడు బజార్లలో కొన్ని వందల చుక్కలతో ఆడవాళ్ళు పెద్ద పెద్ద ముగ్గులు వేయడం నేను నా చిన్నతనంలో చూశాను.

ఈ ముగ్గుల్ని రకరకాలుగా అలంకరించవచ్చు. మచ్చుకి, చుక్కలమీద రకరకాల పువ్వులో, రంగులో చల్లొచ్చు. దానికి ఒక షరతు పెడదాం: పక్కపక్కనున్న చుక్కలకి ఒకే రంగు వెయ్యగూడదు. రెండు చుక్కలని సూటిగా కలిపే గీత ఉంటే అవి పక్కపక్కనున్నాయని అర్థం.

ఇప్పుడు కంప్యూటర్‌కి ఈ సమస్య ఇద్దాం: “ఇచ్చిన ముగ్గుని రెండు రంగులతో అలంకరించవచ్చా?” (ముగ్గు రూపాన్ని, ఎన్ని చుక్కలు, వాటిని ఏ విధంగా గీతలు కలిపాయి అన్నది, కంప్యూటర్ భాషలో దత్తాంశాలుగా తెలియజేశామనుకోండి.) కంప్యూటర్ అవునో కాదో సమాధానం ఇవ్వగలదు. ఎందుకంటే, ఈ సమస్యని సముచిత సమయంలో పరిష్కరించడానికి ఓ పద్ధతి ఉందని నిరూపించారు. అందువలన ఈ సమస్య P అంటే సులభమైన సమస్యల కోవకి చెందుతుంది.

“మూడు రంగులతో అలంకరించవచ్చా?” అని అడిగితే అది ఇవాళ కష్టమైన సమస్య! అంటే కంప్యూటర్ సమాధానం ఇవ్వడానికి ఊహించలేనంత సమయం తీసుకుంటుంది. చిన్న చిన్న ముగ్గులిస్తే వెంటనే సమాధానం చెప్పగలదు కాని సంక్రాంతి ముగ్గులంతటి పెద్దవిస్తే, మన ముదిమనవళ్ళు పుట్టి గతించినా కంప్యూటర్ ఇంకా ఆలోచిస్తూనే ఉంటుంది!

కాని మూడు-రంగుల-ముగ్గు సమస్య సహజంగానే కష్టమైన (inherently intractable) సమస్యా? లేక మనకి సూక్ష్మం తెలియక మూర్ఖంగా పరిష్కరిస్తున్నామా? అంటే మనకి నిశ్చయంగా తెలియదు! అందువలన ప్రస్తుతానికి ఇది కష్టమైన సమస్యే. కాని గారడీతో సులభంగా పరిష్కరించవచ్చు అని నిరూపించారు కనుక ఇది NP కోవకి చెందుతుంది.

ఈ NP సమస్యల్లో కొన్నిటికి అద్భుతమైన గుణం ఒకటుంది. అదేమిటంటే, వాటిలో ఏ ఒక్క దానికయినా సులభమైన పరిష్కారం తెలిస్తే NP సమస్యలన్నీ గూడా సులభమై పోతాయి. అప్పుడు NP సమస్యలు P సమస్యలతో సమానమవుతాయి; అనేక రంగాల్లో క్లిష్ట సమస్యలకి సులభమైన పరిష్కారాలు దొరుకుతాయి. విపర్యంగా, వాటిలో ఏ ఒక్కదానికయినా, అది సహజంగా కష్టమైనదని నిరూపిస్తే, NP సమస్యలన్నీ కూడా సహజంగానే కష్టమైనవని తేలిపోతుంది. అప్పుడు NP సమస్యలు P సమస్యలతో సమానం కాదని రుజువవుతుంది; అనేక సమస్యలు సహజంగానే కష్టమైనవని సరిపెట్టుకోవాల్సుంటుంది. ఆ కోవకో ఈ కోవకో కలసికట్టుగా చెందడం అనేది అపూర్వమైన విషయం.

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


NP-Complete సమస్యలు P అంత
సులభమని నిరూపిస్తే, పై బొమ్మలో
NP సమస్యల పరిధి
P సమస్యల పరిధితో కలిసిపోతుంది.

చాలా విషయాలు చెప్పాను. ఒక్కసారి వాటిని నెమరు వేసుకుందాం. సమస్యల్లో సాధ్యమైనవీ, అసాధ్యమైనవీ అని రెండు రకాలు. సాధ్యమైన వాటిల్లో మళ్ళీ రెండు రకాలు – సులభమైనవీ (P), కష్టమైనవీ. కష్టమైన వాటిల్లో సహజంగా కష్టమైనవీ, మనకు తెలిసినంతవరకూ కష్టమైనవీ వున్నాయి. ఆ రెండో రకం కష్టమైన వాటిల్లో, NP సమస్యలని నిత్య జీవితంలో ఎదురయే ముఖ్యమైనవి చాలా ఉన్నాయి. ఆ NP సమస్యల్లో కొన్ని ప్రత్యేకమైనవి, NP-complete అని ఉన్నాయి. ఆ ప్రత్యేకమైన వాటిల్లో ఏ ఒక్కటైనా మనం సులభమైనదా, కష్టమైనదా అని నిరూపిస్తే, అది అన్ని NP సమస్యలకీ వర్తిస్తుంది. అప్పుడు, P, NP కి సమానమో కాదో తేలిపోతుంది.

గత ముప్ఫై నలభై ఏళ్ళుగా కంప్యూటర్ సైంటిస్టులనీ, గణిత శాస్త్రజ్ఞులనీ వేధిస్తున్న ప్రశ్న ఇది. ఎంతో గొప్ప గొప్ప మేధావంతులకి గూడా లొంగని ప్రశ్న. Clay సంస్థ దీనిని సాధించిన వాళ్ళకి మిలియన్ డాలర్ల బహుమతిని గూడా ప్రకటించింది.

“ఈ ముగ్గుల ప్రశ్నలేమిటి? వీటిని గురించి తల బ్రద్దలు చేసుకోవడమేమిటి? పనిలేని మంగలి పిల్లి తల గొరిగినట్లు,” అని తీసిపారెయ్యకండి. మూడు-రంగుల-ముగ్గుల సమస్య సులభమని తెలిస్తే, వివిధ రంగాల్లో – జీవశాస్త్రం, జన్యుశాస్త్రం, ఆర్థికశాస్త్రం, గణితశాస్త్రం, పారిశ్రామికం – ఎన్నో క్లిష్ట సమస్యలు మరుక్షణమే సులభమవుతాయి!

మీరో ప్రశ్న వేయొచ్చు. “కంప్యూటర్ అనే మాటని ఏ అర్థంలో వాడుతున్నట్లు? అనేక రకాలైన కంప్యూటర్లున్నాయి గదా. ఒకదానికి అసాధ్యమైనది మరోదానికి సాధ్యం, ఒకదానికి కష్టమైనది మరోదానికి సులభం కాకూడదా?” అని. ఈ సందర్భంలో కంప్యూటర్లతో నాఅనుభవం గురించి కాస్త చెప్పాలని వుంది.


పేపర్, పెన్సిల్, కంప్యూటర్

“కంప్యూటర్ సైన్సు కంప్యూటర్ల గురించి అనడం ఖగోళశాస్త్రం టెలిస్కోపుల గురించి అన్నంత హాస్యాస్పదం.” – Edsgar W. Dijkstra

నేను ఇంజనీరింగ్‌లో చేరేనాటికి (1976) మన దేశంలో బి.టెక్. స్థాయిలో కంప్యూటర్ సైన్సు ఇంకా మొదలవలేదు. కాని మూడో సంవత్సరంలో ననుకుంటా కంప్యూటర్ ప్రోగ్రామింగ్ కోర్స్ ఒకటుండేది. దానికి “Computer Programming in FORTRAN” అని Dr. V. Rajaraman రాసిన పుస్తకం వాడేవాళ్ళం. శర్మ గారని, ఎలెక్ట్రికల్ ఇంజనీరింగ్ లెక్చరర్, పాఠం బాగా చెప్పేవారు. కాని పరీక్షలో ఏ ప్రశ్నకైనా ఒక్క తప్పు చేసినా సున్నా మార్కులు ఇచ్చేవారు. “ఇదేమిటండీ? కొంతయినా సరిగా చేశాం గదా!” అంటే, ఆయన, “కంప్యూటర్ తో కొంచెం తప్పు, చాలా వరకు ఒప్పు లాంటి పప్పులేమీ ఉడకవు. తప్పో ఓప్పో, అటో ఇటో తేల్చేసి చెప్పేస్తుంది. ఒక్క చిన్న తప్పు చేసినా తిప్పికొడుతుంది,” అని పెద్దగా నవ్వేవారు. ఆ నవ్వులో, “నేను కంప్యూటర్ని చూశాను, వాడాను. మీ మొహాలకేం తెలుసు?” అన్న గర్వం ప్రతిధ్వనించినట్లుండేది.

నిజమే. పుస్తకంలో ఫొటో చూడటమే గాని మేమెవ్వరిమీ కంప్యూటర్ మొహం చూడలేదు. మా కాలేజీలోనే కంప్యూటర్ లేదు. అదెలా ఉంటుందో, ప్రోగ్రాంని ఎలా రన్ చేస్తుందో, మా కళ్ళతో చూసి చేతుల్తో తడిమి తెలుసుకోవాలని చాలా ఉబలాటంగా ఉండేది. కాని ఆ భాగ్యానికి నోచుకోకుండానే ఇంజనీరింగ్ డిగ్రీ వచ్చేసింది!

ఆపాటికి మన దేశంలో ఐ.ఐ.టి. లలో యం.టెక్. కంప్యూటర్ సైన్సు ఉండేది. కంప్యూటర్ల గురించి తెలుసుకోవాలని కోరిగ్గా ఉండి 1981లో నేను ఐ.ఐ.టి. మద్రాసులో చేరాను. నాకిప్పటికీ మొదటి రోజు మొదటి క్లాసు మొదటి క్షణాలు బాగా గుర్తు. ప్రొఫెసర్ కె.బి. లక్ష్మణన్, “మీలో ఇంతవరకూ కంప్యూటర్ వాడని వాళ్ళెవరో చేతులెత్తండి,” అన్నారు. నేను చెయ్యెత్తి చుట్టూ చూశాను. ఇంకెవరి చెయ్యీ లేవలేదు! నాకు చచ్చేటంత సిగ్గేసింది.

“అయ్యో, నేను చాలా వెనకబడి ఉన్నానే,” అని భయపడుతూ, వెంటనే కంప్యూటర్ సెంటర్ కెళ్ళాను. అప్పట్లో కంప్యూటర్ ప్రోగ్రాం రాయడమంటే, ముందు పేపరు మీద రాసి, పంచింగ్ కార్డు మెషీన్ (punching card machine) తో ప్రతి లైనూ ఒక్కో కార్డు మీద ఎక్కించాలి. అది టైప్ రైటర్ లాంటిదే కాని ఒక్కో అక్షరానికి ఒక్కో రకమైన రీతిలో చిల్లులు వేస్తుందన్న మాట. అక్కడ పదో పదిహేనో పంచింగ్ కార్డు మెషీన్లు ఉండేవి. వాడటానికి మనం రిజర్వ్ చేసుకోవాలి. వేకువ ఝామున అయితే ఖాళీగా ఉండేది, మిగిలిన వేళల్లో ఎప్పుడూ రద్దీగా ఉండేది!

వేకువఝామున లేచి హాస్టలు నుండి కంప్యూటర్ సెంటరుకి పోయి రాసుకున్న ప్రోగ్రాం, కార్డుల మీద కెక్కించి, ఆ కార్డుల కట్టని అక్కడ పెడితే, నాలుగయిదు గంటల కొకసారి, ఆపరేటర్ వాటిని కార్డులు చదివే యంత్రానికిస్తే అది కంప్యూటర్‌కి అందజేస్తుంది. మనం క్లాసులకి పోయి, తిరిగొచ్చి చూసుకుంటే, printout అక్కడ మన కోసం ఎదురుచూస్తూ ఉంటుంది – మన ప్రోగ్రాం ఫలితం. ఇదిగో ఇక్కడ తప్పు టైప్ చేశావు అని! మళ్ళీ కొత్త కార్డులు టైప్ చేసి, కట్ట ఇవ్వాలి. ఒక్కొక్కప్పుడు ఆ చదివే యంత్రం కొన్ని కార్డుల్ని ఛిన్నాభిన్నం చేసేది! ఇలా కొన్నాళ్ళ ప్రహసనం తర్వాత, మన ప్రోగ్రాం విజయవంతంగా పరిగెత్తే అవకాశం కలగవచ్చన్నమాట!

ఆ కంప్యూటర్ ఎంత పెద్దదంటే, కంప్యూటర్ సెంటర్ అంతస్తులో సగం పైనే ఆక్రమించి ఉండేది. పాతికేళ్ళలో వచ్చిన మార్పు చూస్తే ఎవరైనా అబ్బురపోవాల్సిందే! నేను మొట్టమొదటిగా వాడిన అప్పటి కంప్యూటర్ ఒక హాలునాక్రమిస్తే, ఇప్పుడు నేను ఈవ్యాసం రాయడానికి వాడుతున్న కంప్యూటర్ నాఒళ్ళో ఉంది! కాని ఒళ్ళో కంప్యూటర్ హాల్లో కంప్యూటర్ కన్నా కనీసం వెయ్యి రెట్లు శక్తివంతమైనది! పిట్ట కొంచం కూత ఘానం అన్నట్లు. పైపెచ్చు అది కొన్ని వేల రెట్లు చవకైనది కూడాను! అంతేగాక ఒళ్ళో కంప్యూటర్‌తో పాటలు వినొచ్చు, సినిమాలు చూడొచ్చు, ఫోన్ చెయ్యొచ్చు, ఫొటోలు పంపొచ్చు; హాల్లో కంప్యూటర్‌తో ఇవేవీ సాధ్యమయేది కాదు.

మరి కంప్యూటర్లు ఇంత వృద్ధి చెందాయి గదా! FORTRAN లాంటి పురాతన భాషలు కాక, Java, .Net ఇలా కొత్త కొత్త కంప్యూటర్ భాషలొచ్చాయి. “ఇంత వృద్ధి జరిగినా, ఇంతకుముందు ఏది అసాధ్యమో, కష్టమో అది ఇంకా అలానే ఉండిపోయిందా?” అని అడగచ్చు. ఈ మార్పుల మూలంగా, మౌలికమైన సాధ్యాసాధ్యాల విషయాల్లో ఎలాంటి మార్పూ ఉండదు. దీని గురించి మరో సంఘటన చెప్తాను.

నేను 1985 ప్రాంతంలో ఓ కంపెనీలో పనిచేస్తున్నప్పుడు, ఒక రోజు విశిష్ట ఉపన్యాసం అని, బాగా పేరున్న కంప్యూటర్ సైంటిస్టుని ఒకర్ని పిలిచారు. ఆయన 1972 టూరింగ్ అవార్డు గ్రహీత, పేరు ఎడ్స్గర్ డబ్లు డైక్స్ట్రా (Edsger W. Dijkstra). కేఫెటేరియాలో సమావేశం. ఇంజనీర్లతో హాలు నిండింది.

ఉపన్యాసం దేనిమీద ఇచ్చాడో నాకిప్పుడు సరిగా గుర్తు లేదు గాని, అయింతర్వాత, ఆ కంపెనీ వాళ్ళు ఆయనకు ఒక laptop కంప్యూటర్ బహూకరించారు. అప్పట్లో ఆకంపెనీ అలాంటి కంప్యూటర్లు చెయ్యడంలో అందరికన్నా ముందుంది. కాని అవి ఇంకా శైశవస్థాయిలోనే ఉన్నాయి. అసలవి కంపెనీ ఇంజనీర్లకి కూడా ఇచ్చేవాళ్ళు కాదు. అంత విలువైనదాన్ని ఆయనకిస్తే, ఆయన ఏమన్నాడో తెలుసా? “నేను పేపరు, పెన్సిలు ప్రోగ్రామర్ని. నేనీ కంప్యూటర్ని ఏం చేసుకోను?” అన్నాడు. అందరూ అవాక్కయిపోయారు.

ఆధునాతనమైన కంప్యూటర్లూ, కంప్యూటర్ భాషలూ ముఖ్యమే కాని, అన్నిటికంటె ముఖ్యమైనది కట్టుదిట్టమైన వివేచన (effective reasoning). అదీ Dijkstra సందేశం. వివేచన గురించీ, దానిని యాంత్రికం చెయ్యడం గురించీ విప్లవాత్మకంగా ఆలోచించిన వాళ్ళలో లైబ్నిజ్ (Gottfried Leibniz) ఆద్యుడు. సమస్యల సాధ్యాసాధ్యాలు దానితో ముడిపడి ఉన్నాయి.

లైబ్నిజ్ మూడు నాలుగు వందల ఏళ్ళ క్రిందటి మానవ వికాస యుగం కాలపు వాడు. మతం నుంచేగాక, ఫిలాసఫీ నుంచి గూడా వేరయి, సైన్సు తన సొంత దారి వెతుక్కొని ఉరుకులు పరుగులు తీయడం మొదలైన యుగం. అక్కడ బయలుదేరి, కంప్యూటర్ అనే భావన ఎలా రూపం తెచ్చుకుందో, ఇప్పుడున్న ఇన్ని రకాల కంప్యూటర్లకి మూలం ఏమిటో, దాని ప్రాముఖ్యత ఏమిటో, దాని వెనక వున్న కొందరు అమోఘ మేధావంతులు ఎవరో తెలుసుకుందాం.

To see a world in a grain of sand,
And a Heaven in a wild flower,
Hold infinity in the palm of your hand,
And eternity in an hour;
– William Blake in “Auguries of Innocence”

వేగుంట మోహనప్రసాద్ మాటల్లో, “ఇసుక రేణువులో సమస్త విశ్వాన్నీ, ఒక గడ్డిపువ్వులో స్వర్గాన్నీ చూసి, అరచేతిలో అనంతాన్ని ఉంచుకొని, ఘడియలో శాశ్వతాన్ని బంధించగలగడం!”

వచ్చే సంచికల్లో మీకు దాన్ని కొంతైనా అనుభవంలోకి తీసుకురావాలని నా ఆశ.

(ఇంకా ఉంది)

కొడవళ్ళ హనుమంతరావు

రచయిత కొడవళ్ళ హనుమంతరావు గురించి: పుట్టిందీ పదో తరగతిదాకా చదివిందీ ప్రకాశం జిల్లా రావినూతల గ్రామంలో. ఇప్పుడు ఉండేది Washington రాష్ట్రంలో Seattle నగరానికి దగ్గర్లో. ఇంజనీరుగా పని చేసేది సాఫ్ట్ వేర్ రంగంలో. దాదాపు పాతికేళ్ళుగా అమెరికాలో ఉంటూ ఉద్యోగంలో లీనమై సాహిత్యదృష్టి కొరవడిన లోపాన్ని సరిదిద్దుకోడానికి, గత మూడేళ్ళుగా కొందరు తెలుగువాళ్ళతో పరిచయం, కాస్త తెలుగు చదవడం, ఎప్పుడన్నా ఓవ్యాసం రాయడం - అదీ ప్రస్తుత వ్యాపకం.  ...