Saturday, August 3, 2013

2. కలనయంతాలు – ఒక విహంగావలోకన


పైపైకి వివిధ రూపాలలో వ్యక్తులు కనిపించినా వారి ఆత్మ స్వరూపం ఒక్కటే. అలాగే కంప్యూటర్లు - పెద్దవయినా, చిన్నవయినా, చితకవైనా, భృహత్ యంత్రాలైనా, ఊరోపరులు (laptops) అయినా - మౌలికంగా అవి పనిచేసే సూత్రం ఒక్కటే. కంప్యూటర్లు మనం ఇచ్చిన సమాచారాన్ని తీసుకుంటాయి. ఆ సమాచారాన్ని జీర్ణించుకుని, జీర్ణమైన ఆ సమాచారాన్ని తిరిగి మనకి మరొక రూపంలో ఇస్తాయి. ఆవు మనం పెట్టిన గడ్డి తిని, జీర్ణించుకుని మనకి తిరిగి పాలు ఇచ్చినట్లే. మనలో చాలమందికి, ఇప్పటికీ, పెరట్లో ఆవులు ఉంటాయి. వాటికి గడ్డి మేపుతాం, కుడితి పడతాం, పాలు పిండుకుంటాం. ఆ మేత ఏమైంది? ఆ పాలు ఎలా తయారయ్యాయి అన్న విషయాలు మనం పట్టించుకోము. అదే విధంగా కంప్యూటర్‌ని కేవలం ఉపయోగించుకునే వారికి కంప్యూటరు లోగుట్టు తెలియక్కర లేదు. ఉపయోగించుకోవడం తెలిస్తే చాలు. కారు నడిపేవారందరికీ కార్లు ఎలా పనిచేస్తాయో తెలుస్తోందా? తెలియవలసిన అవసరం కూడ లేదు.

ఆవుని పెంచుకున్నప్పుడు దానికి ఏ తిండి పెడితే బాగా పాలు ఇస్తుందో తెలియాలి కదా. పాలు పితకడం తెలియాలి కదా. ఆవు సంరక్షణ కొంత తెలియాలి కదా. అలాగే కేవలం వాడుకకే వినియోగించినా కంప్యూటరు గురించి కొద్దో, గొప్పో తెలిసి ఉంటే ఆ యంత్రాన్ని ఎంతో దక్షతతో వాడుకోవచ్చు. అలాగే కారు నడిపేవాడు ఏదో గుడ్డెద్దు చేలో పడ్డట్టు తోలుకు పోకుండా కొద్దో, గొప్పో కారు గురించి తెలుసుకుంటే కారుని మరి కొంత బాధ్యతతో, సమర్ధతతో నడపవచ్చు కదా!

పూర్వకాలంలో “కంప్యూటర్” (computer) అనే ఇంగ్లీషు పదాన్ని లెక్కలు చేసే వ్యక్తిని ఉద్దేశించి వాడేవారు; అంటే “కంప్యూట్” (compute) చేసే వ్యక్తి. బండిని తోలే వ్యక్తిని ఇంగ్లీషులో “డ్రైవర్” (driver) అనిన్నీ, కుండలు చేసే వ్యక్తిని “పాటర్” (potter) అనిన్నీ అన్నట్లే. క్రమేపీ లెక్కలు చెయ్యడానికి యంత్రాలు వచ్చేయి. మనిషి చేసే పనినే యంత్రాలు చేస్తూన్నప్పుడు అదే “కంప్యూటర్” అన్న పేరుని యంత్రాన్ని ఉద్దేశించి వాడడం మొదలు పెట్టేరు. ఈ రోజుల్లో కంప్యూటర్ అంటే యంత్రమే; మనిషి కాదు.

భారతీయ భాషలలో కలనం చెయ్యడం అంటే కూడికలు, తీసివేతలు, గుణకారాలు, భాగారాలు వంటి లెక్కలు చెయ్యడం. మొదట్లో కంప్యూటర్లని నిర్మించినప్పుడు వాటి చేత అంకెలతో ఈ రకం కలన కలాపాలే చేయించేవారు. అందుకనే వాటిని అంక కలనయంత్రాలు (digital computing machines) అనేవారు. కాలక్రమేణా కలనయంత్రాల చేత తార్కికమైన కలన కలాపాలు (logical calculations) కూడ చేయించడం మొదలు పెట్టేరు. అందుకని వాటిని అంక-తార్కిక యంత్రాలు (arithmetic-logic machines) అన్నారు. కొన్నాళ్లు పోయిన తరువాత కంప్యూటర్ల చేత ఇంకా రకరకాల పనులు చేయించడం మొదలు పెట్టేరు. ఉదాహరణకి తెర మీద ఏది, ఎప్పుడు, ఎంతసేపు, ఎన్నిసార్లు చూపించాలో నిశ్చయించడం. కనుక ఈ రోజుల్లో కంప్యూటర్ అంటే ఇచ్చిన సమాచారాన్ని జీర్ణించుకుని కొత్త సమాచారాన్ని వెళ్లగక్కే యంత్రం (information processing machine) అని మనం అర్థం చెప్పుకోవచ్చు.

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

మనం కంప్యూటర్‌కి మేపే సమాచారం (information) రకరకాలుగా ఉండొచ్చు. ఉదాహరణకి “రేపు వర్షం పడుతుందా?” అన్న ప్రశ్నకి సమాధానం కావాలనుకుంటే ముందు కొంత విషయ సేకరణ చెయ్యాలి. ఇప్పుడు వాతావరణ పరిస్థితులు ఎలా ఉన్నాయో తెలియాలి: బయట ఎంత వేడిగా ఉంది? గాలి ఎంత జోరుగా వీచుతోంది? ఆకాశంలో మేఘాలు ఉన్నాయా? ఎలాంటి మేఘాలు? ఎంత ఎత్తులో ఉన్నాయి? వాతావరణ పీడనం ఎలా ఉంది? భారమితి ఏమిటి చెబుతోంది? సముద్రం హోరు పెడుతోందా? చంద్రుడు గుడి కట్టేడా? శివుడికి సహస్ర ఘటాభిషేకం చేసేరా? ఈ రకం విషయాల గురించి సమాచారం సేకరించి కంప్యూటర్‌కి ఇస్తాం. ఈ సమాచారాన్ని దత్తాంశాలు (data) అంటారు. ఈ సమాచారం అంతా ఆవుకి వేసే మేత లాంటిది. ఈ సమాచారాన్ని ఏమిటి చెయ్యాలో మనం కంప్యూటర్‌కి చెప్పాలి. పులుసు చేసే వ్యక్తికి పులుసులో పడే సంభారాల జాబితా ఇస్తే సరిపోతుందా? పులుసు చేసే పద్ధతి కూడ చెప్పాలి కదా. “నీళ్లు మరిగించు, చింతపండు వెయ్యి, చెంచాడు ఉప్పు వెయ్యి, చిటికెడు పసుపు వెయ్యి, ముక్కలు వెయ్యి, మరగనీ, పోపు వెయ్యి” ఇలా చెప్పాలి కదా. వీటిని ఆదేశాలు (instructions) అంటారు. సూక్ష్మంగా చెప్పాలంటే మనం కంప్యూటర్‌కి దత్తాంశాలు, ఆదేశాలు ఇవ్వాలి. వాటిని రంగరించి, జీర్ణించుకుని, మనకి కంప్యూటరు సమాధానాలు ఇస్తుంది. టూకీగా అదీ కంప్యూటర్ చేసే పని.

మనం కంప్యూటర్‌కి ఇచ్చే ఆదేశాలు సాధారణంగా మనం మాట్లాడుకునే భాషని పోలిన భాషలో ఉంటే బాగుంటుంది – అంటే ఇంగ్లీషులోనో, తెలుగులోనో, రష్యన్ లోనో అనుకోవచ్చు. కాని మనం కంప్యూటర్ ఎదురుగా నిలబడి, “పులుసు వండు” అని ఎంతలా అరిచినా కంప్యూటర్‌కి అర్థం కాదు. (ఆ రోజులు కూడ వస్తున్నాయి, కాని ప్రస్తుతానికి సినిమాలలో తప్ప నిజ ప్రపంచంలో కంప్యూటర్లు ఆ రకం పనులు చెయ్యడం లేదు.) “నీళ్లు మరిగించు, ఉప్పు వెయ్యి, చింతపండు వెయ్యి…” అని విడమర్చి చెప్పినా కంప్యూటర్‌కి అర్థం కాదు. మన మనస్సులో ఉన్న కోరికని కంప్యూటర్‌కి చెప్పడం అనేది చాలా క్లిష్టమైన పని. ఎందుకంటే మనం ఏ మానవ భాషలో మాట్లాడినా అపార్ధాలకి అవకాశాలు ఎక్కువ.

మన మనస్సులో ఉన్న విషయం కంప్యూటర్‌కి అర్థం అయే భాషలో చెప్పడానికి ప్రత్యేకంగా తరిఫీదు పొందిన వ్యక్తులు కావాలి. వాళ్లనే మనం “ప్రోగ్రామర్లు” (programmers) అంటున్నాం. ఈ ప్రోగ్రామర్లు చేసే పని ప్రోగ్రాములు రాయడం. ప్రోగ్రాము అంటే కంప్యూటర్‌కి ఇచ్చే ఆదేశాలని ఒక క్రమ పద్ధతిలో పేర్చి రాయడం. ప్రోగ్రాము అంటే ఒక క్రమంలో ఉన్న ఆదేశాల సమాహారం. “ప్రోగ్రాము” అనే మాటకి “కార్యక్రమం” అనే తెలుగు మాట ఉంది. ఈ మాటని “వినోద కార్యక్రమం” వంటి ప్రయోగాలకి అట్టేపెట్టుకుని కంప్యూటర్‌కి మనం ఇచ్చే ఆదేశాలకి మరొక ప్రత్యేకమైన మాట వాడదాం. అందుకని వీటిని తెలుగులో “క్రమణికలు” అంటున్నాను. మన భాషలకి వ్యాకరణం ఉన్నట్లే ఈ కంప్యూటర్ భాషలకి కూడ వ్యాకరణం ఉంటుంది. ఆ వ్యాకరణ నియమాలని పాటిస్తూ క్రమణికలు రాయాలి. మేలు రకం క్రమణికలు రాయగలిగే వాళ్లకి మంచి గిరాకీ ఎప్పుడూ ఉంటుంది.

మనం కంప్యూటర్‌కి క్రమణికలు (programs), దత్తాంశాలు (data) ఇస్తాం. ఈ క్రమణికలు మనకి అర్థం అయే మానవ భాషకి దగ్గరలో ఉంటాయి. దత్తాంశాలు మనకి అర్థం అయే దశాంశ పద్ధతిలో ఉంటాయి. కాని కంప్యూటర్ శుద్ధ మొద్దావతారం. దానికి ఇవేమీ అర్థం కావు. వీటన్నిటిని కంప్యూటర్‌కి అర్థం అయే భాష (machine language) లోకి మార్చి, ఒక క్రమంలో కంప్యూటర్‌కి అందజేస్తే అది సరిగ్గా పని చేస్తుంది. ఇదంతా పెద్ద తర్జుమా యంత్రాంగం. ఈ క్రమణికలని, వాటిని తర్జుమా చేసే యంత్రాంగాన్ని, కంప్యూటర్ చెయ్యవలసిన పనులన్నిటిమీదా అజమాయిషీ చేసే యంత్రాంగాన్నీ, …, అంతటిని కలిపి సూక్ష్మంగా “సాఫ్ట్‌వేర్” (software) అని పిలుస్తారు.

కంప్యూటర్లని గురించి మాట్లాడేటప్పుడు “కఠినాంగం” (hardware), “మృదులాంగం” లేదా “కోమలాంగం” (software) అని స్థూలంగా రెండు భాగాలుగా విడగొట్టి మాట్లాడడం సంప్రదాయికంగా వస్తూన్న ఆచారం. బ్రహ్మ మనని పుట్టించినప్పుడు ఒక భౌతిక శరీరం ఇచ్చేడు, నుదిటి మీద ఒక రాత రాసేడు. మన భౌతిక శరీరం కఠినాంగం (గట్టి సరుకు), నుదిటి మీద రాసిన రాత మృదులాంగం (మెత్త సరుకు). రాయడానికి వీలైన నుదురు అనే గట్టి ఫలకం లేకపోతే బ్రహ్మ మాత్రం ఎక్కడ రాస్తాడు? అలాగని రాయడానికి పలక ఒక్కటీ ఉండి, దానిమీద రాయడానికి ఏమీ లేకపోతే ఆ ఖాళీ పలక ప్రాణం లేని కట్టెతో సమానం. కంప్యూటర్ రంగంలో “కఠినాంగం” అన్న మాటని ఇంకా విస్తృత భావంతో వాడవచ్చు. కంప్యూటర్ లోని భౌతిక విభాగాలన్నీ (అంటే మనం చేత్తో పట్టుకో దలుచుకుంటే మన పట్టుకి దొరికేవి) – అంటే తెర (screen), కుంచికపలక (keyboard), మూషికం (mouse), మొదలైనవన్నీ కఠినాంగాలే. పోతే, కఠినాంగం లేకుండా మృదులాంగానికి అస్తిత్వం లేదు. కాలు మోపడానికి కఠినాంగం ఆసరా లేకుండా కేవలం మృదులాంగం గాలిలో ఉందంటే అది దయ్యంతో సమానం అన్నమాట. ఈ రకం దయ్యాలని మనం “కంప్యూటర్ వైరస్‌లు” (computer viruses) అనవచ్చు.

కంప్యూటర్ పని చేసే తీరుకీ మనం వంటగదిలో వంట వండే తీరుకీ చాల దగ్గర పోలికలు ఉన్నాయి. మా ఇంట్లో ధాన్యం, దినుసులు, వగైరాలన్నీ కొట్టుగదిలో నిల్వ చేసుకుని, ఒక వారానికి కావలసిన సామానులు వంటగదిలో బీరువాలో పెట్టుకునేవాళ్లం. ఆ రోజుకి కావలసిన దినుసులు అప్పటికప్పుడు బయటకి తీసుకుని, తీనె మీద పెట్టుకుని, వంట చేసేవారు. ఇక్కడ, కంప్యూటర్ పరిభాషలో, “తీనె”ని “కేష్” (cache) తోటీ, వంటగదిలో ఉన్న బీరువాని ప్రథమ స్థాయి కొట్టు (main memory) తోటీ, పొయ్యి మీద ఉన్న కలశాన్ని “ప్రోసెసర్” తోటీ పోల్చవచ్చు. అంటే నిజంగా కలనం (వంట) జరిగేది కలశంలో (గిన్నెలో) అన్న మాట. శంఖంలో పోస్తే కాని తీర్థం కాదు, కలశంలో వండితే కాని వంట కాదు, ప్రోసెసర్‌లో పడితే కాని కలనం కాదు కనుక మనం “ప్రోసెసర్” ని కలనకలశం అని కాని, కలశం అని కాని అందాం. ఇక్కడ “ప్రోసెసర్” (processor) అనేది కఠినాంగం, ఈ కఠినాంగంలో జరిగే కలనకలాపం (process) మృదులాంగం జరిపే ఒక ప్రక్రియ. ఈ “ప్రోసెస్” అన్న మాటకి చాల లోతైన అర్థం ఉంది. ఆ విషయం తరువాత చూద్దాం.

2.1 సమాచారాన్ని ఎక్కడ నిల్వ చెయ్యడం?

మనం వంట చేస్తూన్నప్పుడు వంట సామగ్రి కోసం నిమిషనిమిషానికీ బజారుకి పరిగెట్టం కదా; వంటగదిలోనో, దగ్గరలో ఉన్న కొట్టు గదిలోనో దాచుకుంటాం. అలాగే వంట చేసే విధానాలు రాసిన పుస్తకం (పులుసు ఎలా చెయ్యాలో, పచ్చడి ఎలా చెయ్యాలో, అప్పాలు, అరిసెలు ఎలా చెయ్యాలో) కూడ వంట గదిలోనే అందుబాటుగా ఉంటే బాగుంటుంది కదా. అందుకని కలనయంత్రాలు కలనం చేస్తూన్నప్పుడు కావలసిన సరంజామా (అంటే దత్తాంశాలు, ఆదేశాలు) ఎక్కడో ఉంటే ప్రయోజనం లేదు; చేతికి అందుబాటులో ఉంటే బాగుంటుంది. అలాగని అన్నీ వంటగదిలో ఇమడవు కదా. అందుకని ముఖ్యంగా కావలసినవి, తరచుగా కావలసినవి దగ్గరగా పెట్టుకుంటాం; అప్పుడప్పుడు కావలసినవి కొట్టుగదిలో ఉంచుతాం, ఎప్పుడో కాని అవసరం లేనివి, అవసరం వెంబడి బజారుకి వెళ్లి తెచ్చుకుంటాం. అదే విధంగా కలన యంత్రాలు కూడ రకరకాల అమరికలతో కొంత సమాచారాన్ని దగ్గరగాను, కొంత సమాచారాన్ని దూరంగాను దాచుకుంటాయి. ఇలా తరతమ భేదాలని పాటిస్తూ సమాచారాన్ని నిల్వ చేసే పద్ధతిని నిల్వ సోపానక్రమం (storage hierarchy) అంటారు.

నిల్వ సోపానక్రమంలో చేతికి అందుబాటులో దాచుకునే స్తలాన్ని కోశం (cache, కేష్) అంటారు. తరచుగా కావలసిన సమాచారాన్ని జోరుగా దాచుకుని (లేదా రాసుకుని), జోరుగా బయటకి తీసుకోడానికి (లేదా చదువుకోడానికి) వీలయే ప్రదేశాన్ని ప్రథమ స్థాయి కొట్టు (primary storage) అని అందాం. దీనినే ఇంగ్లీషులో మెయిన్ మెమరీ (main memory) అని కాని, రేం (RAM, Random Access Memory) అని కాని అంటారు. కలశంలో కలనం ఎంత జోరుగా జరుగుతోందో అంత జోరుగా ఈ కొట్టు సమాచారాన్ని కలశానికి అందజేయాలి. ఈ వివరాలన్నీ తరువాత చూద్దాం కాని ఒక్క విషయం ఇక్కడ గుర్తు పెట్టుకోవాలి. కంప్యూటర్‌కి విద్యుత్ సరఫరాని ఆపేసినప్పుడు ఈ ప్రాథమిక స్థాయి కొట్లో రాసుకున్న సమాచారం అంతా చెరిగిపోతుంది. కనుక కంప్యూటర్‌ని “ఆఫ్” చేసేసే ముందు ఈ కొట్లో దాచుకున్న దస్త్రాలని (files ని) మరొక చోట ఎక్కడైనా, చెరిగిపోని చోట, దాచు (రాసు) కోవాలి. ఇలా మరొక చోట రాసుకుందికి వీలుగా, ప్రాథమిక స్థాయి కొట్టుకి దన్నుగా, ద్వితీయ స్థాయి కొట్టు (secondary storage) మరొకటి ఉంటుంది. ఈ ద్వితీయ స్థాయి కొట్టుని నిర్మించడానికి ప్రత్యేకంగా తయారు చేసిన పళ్లేల దొంతిని వాడతారు కనుక దీనిని ఇంగ్లీషులో “డిస్క్ స్టోరేజ్” (disk storage) అంటారు. మనం వాడుకునే కంప్యూటర్‌లకి తప్పనిసరిగా ఒకటో, రెండో, ఈ రకం నిల్వ పళ్లేల సదుపాయాలు ఉంటాయి. వీటన్నిటి గురించి తరువాత నేర్చుకుందాం.

2.2 కలనయంత్రాలతో సమాచార రవాణా

కలనయంత్రాలు చేసే పని కలనం ఒక్కటే కాదు; అవి సమాచారాన్ని ఒక చోట నుండి మరొక చోటకి రవాణా కూడ చేస్తాయి. ఉదాహరణకి కొట్లో దాచుకున్న సమాచారాన్ని కలశం దగ్గరకి తీసుకురావాలి. కలనం జరిగిన తరువాత వచ్చిన సమాధానాలని మళ్లా కొట్లో దాచాలి. మనం కంప్యూటర్ లోకి సమాచారాన్ని ఎక్కించాలంటే కుంచికపలక (keyboard) ద్వారా టైపుకొట్టినట్లు మీటలు నొక్కి ఎక్కించడం ఒక పద్ధతి. కుంచికపలక మీద మనం ఏ బొత్తాం (కుంచికం) నొక్కేమో అర్థం చేసుకుని ఆ బొత్తాం నిర్దేశించిన అక్షరాన్ని తెర మీద చూపించాలంటే సమాచారం రహదారుల వెంట రవాణా అవాలి. లేదా, ఆ బొత్తాం నిర్దేశించిన అక్షరం యొక్క ద్వియాంశ సంక్షిప్తాన్ని (binary code) కొట్లో దాచడానికి మరొక రహదారి కావాలి. ఈ రకం పనులని ఇంగ్లీషులో ఇన్‌పుట్/ఔట్‌పుట్ అంటారు. “ఇన్‌పుట్” అంటే లోపలికి రవాణా చెయ్యడం, ఔట్‌పుట్ అంటే బయటకి రవాణా చెయ్యడం. వీటిని తెలుగులో అంతర్యానం (input), బహిర్యానం (output) అని అనొచ్చు. కలనయంత్రాలకి కలనాంశాలని లోపలకి తీసుకోవడం, బయటకి వెలిగక్కడం అనే ఈ సామర్ధ్యత లేకపోతే మనం కంప్యూటర్‌తో సంభాషణలు జరపలేము.

కంప్యూటర్లు మానవులతోటే సంభాషణలు జరపాలని నియమం ఏదీ లేదు. ఒక కంప్యూటరు మరొక కంప్యూటర్‌తో కాని, మరొక రకం యంత్రంతో కాని మాట్లాడవచ్చు. ఉదాహరణకి మనం ఎవరికైనా విద్యుల్లేఖ (E-mail) ద్వారా వార్త పంపినప్పుడు ఆ వార్తని గమ్యానికి సురక్షితంగా చేర్చడం కూడ సమాచార రవాణా పరిధిలోకే వస్తుంది. ఇలాంటి సందర్భాలలో కంప్యూటరు వాడుకలో ఉన్న టెలిఫోను వంటి వార్తాప్రసార (communications) సౌకర్యాల మీద ఆధార పడవచ్చు. అప్పుడు కంప్యూటర్‌ని ఆ వార్తాప్రసార సాధనాలకి తగిలించడానికి “మోడెం” (modem) వంటి ఉపకరణాలు వాడతాం. మోడెం చేసే పని కంప్యూటర్‌కి అర్థం అయే సున్నలని, ఒకట్లని తీసుకుని టెలిఫోను తీగల మీద ప్రసారానికి అనుకూలమైన విద్యుత్ తరంగాలుగా మార్చడము (modulation), విద్యుత్ తరంగాల రూపంలో ఉన్న వాకేతాలు (signals) ని సున్నలు, ఒకట్లు గాను మార్చడం (demodulation). తీగలు లేకుండా నిస్‌తంతి (wireless) వార్తలని పంపేటప్పుడు కూడ మోడెం వాడొచ్చు. ఈ రోజుల్లో చాల మందికి ఇంట్లోను, బయట - ఎక్కడపెడితే అక్కడా – అంతర్జాలం (Internet) అందుబాటులో ఉంటోంది. అరచేతిలో ఇమిడే కంప్యూటర్ సహాయంతో, తీగల బెడద లేకుండా వీరు సమాచారాన్ని పంపగలరు, అందుకోగలరు. రోజురోజుకీ మారుతూన్న ఈ సాంకేతిక రంగం గురించి ఏది రాసినా ఆ సిరా ఆరే వరకే ఆ రాతకి సార్ధక్యత.

1 comment:

  1. కంప్యూటర్ నీ నిజ జీవిత ఉదహరణలతో చక్కగా చెప్పారు

    ReplyDelete