Friday, August 30, 2013

కంప్యూటర్ పని చేసే విధానం


 కంప్యూటర్ పని చేసే విధానం ఏమిటి? 

వేమూరి వేంకటేశ్వరరావు

1. ఉపోద్ఘాతం 

కంప్యూటర్ సమాచారాన్ని బక్షించి, మర్దనా చేసి, రంగరించి, జీర్ణించికుని, కొత్త సమాచారాన్ని మనకి ఇస్తుందని మనలో చాలామందికి తెలుసు. ఈ  కార్యక్రమం ఎలా జరుగుతుందో చూద్దాం.  ఇది అంత తేలికగా అర్థం ఆయే అంశం కాదు. ఒకటికి రెండు సార్లు మనస్సు లగ్నం చేసి చదివితేకానీ అర్థం కాకపోవచ్చు. 

మచ్చుకి ఈ ప్రశ్నలు చూడండి: బయట ఎన్ని డిగ్రీలు వేడిగా ఉంది? కారు ఎంత జోరుగా పరిగెడుతోంది? ఫలానా వాడి వయస్సు ఎంత? సాధారణంగా ఈ రకం ప్రశ్నలకి నిర్దిష్టంగా సమాదానాలు చెప్పడం కుదరదు. వయస్సు ఎంత అంటే ఏ 26 అనో 33 అనో చెబుతాం. చిన్న పిల్లలని అడిగితే మూడున్నర ఏళ్లు అని చెప్పినా ఆశ్చర్యపోము. కాని నిజానికి మన వయస్సు క్షణక్షణానికీ పెరుగుతూ ఉంటుంది. కాని మనం సాధారణంగా “నా వయస్సు 33 ఏళ్ల, ఆరు నెలల, మూడు రోజుల, ఎనిమిది గంటల, మూడు నిమిషాల,…. అంటూ చెప్పం. వయస్సే కాదు. ఈ మధ్య మనవాళ్లు పేర్లని కూడ కత్తిరిస్తునారు. రంగనాధం కాస్తా క్లుప్తంగా “రేంగ్” అవుతాడు. రాయుడు ఫేషనబుల్‌గా “రే” అవుతాడు, అపరాజిత కాస్తా “జీతా” అవుతుంది. ఇలా సమాచారాన్ని కత్తిరించి కుదిమట్టంగా గుళికలలా చెయ్యడాన్ని “గుళికీకరించడం” (quantization) అందాం. ఇటుపైన ఉష్ణోగ్రత, వయస్సు, వేళ, మొదలైనవి కంప్యూటర్‌లోకి ఎక్కించవలసి వచ్చినప్పుడు వాటిని కత్తిరించి, గుళికీకరించి వాడదాం. గుళికీకరించగా వచ్చిన సంఖ్యలని అదే పళంగా కంప్యూటర్ వాడుకోలేదు. ఉదాహరణకి 33.14 అనే సంఖ్యనే తీసుకుందాం. దీన్ని గుళికీకరించి 33 చేసి ఆ పళంగా కంప్యూటరుకి ఇస్తే దానికి అర్థం కాదు. అందుకని ఆ 33 ని 100001 అని ఒకట్లు, సున్నలు ఉన్న పద్ధతిలో రాసి కంప్యూటర్‌కి ఇవ్వడం ఒక పద్ధతి. 

2. టూకీగా వర్ణన 

మనం కంప్యూటర్‌లో దత్తాంశాలు (data), ఆదేశాలు (instructions or commands) దాచినప్పుడు వాటిని ఎక్కడ దాచేమో తెలియాలి కదా. అందుకని కొట్టు (store or memory) అనే గదిని అరల పెట్టెలా ఊహించుకుందాం. అంటే, పోస్టాఫీసులో ఉత్తరాలు బట్వాడా చేసే బీరువాలా కాని, పోపు సామానులు దాచుకునే పెట్టెలా కాని ఉంటుందని ఊహించుకుందాం. ప్రతి “అర” కి ఒక చిరునామా లేదా విలాసం (address) ఉంటుంది. ప్రతి అర ఒక అష్టా (byte) పొడవు ఉంటుంది అని కూడ ఊహించుకుందాం. అంటే, ప్రతి అర లోనూ 8 ద్వింకములు (ద్వియాంశ సంఖ్యలు లేదా bits) పొడుగున్న సంఖ్య పడుతుంది. ఇలాంటి అరలు 1024 ఉంటే వాటిల్లో సున్న నుండి 1023 వరకు, మొత్తం 1024 ఏకైక ద్వియాంశ సంఖ్యలని దాచవచ్చు. కనుక అష్టా పొడుగున్న ఒక  అరల పెట్టేలో  0, 1, 2, 3, 4,…, 9 అనే అంకెలు, A, B, C, D, …, Z అనే  పెద్ద బడిలోని ఇంగ్లీషు అక్షరాలు, a, b, c, d, …, z అనుకుంటూ చిన్న బడిలోని అక్షరాలు, !, @, $, ^, &, *, (, ), _ , +, -, /, <, >, ? వంటి చిహ్నాలు సునాయాసంగా దాచవచ్చు. ఈ శాల్తీ (character) లు అన్నీ కలుపుకున్నా 1024 కంటె తక్కువే ఉంటాయి కనుక ఇవి సునాయాసంగా మన కొట్లో పడతాయి. పట్టగా ఇంకా ఖాళీలు కూడ మిగిలిపోతాయి. ఇదే పనిని తెలుగు అక్షరాలతో చెయ్యాలంటే 1024 కంటే ఎక్కువ అరలు ఉన్న పెద్ద పెట్టె కావలసి ఉంటుంది. 

ఇప్పుడు మనం అంతా ఒక ఒప్పందానికి వద్దాం. ఏమిటా ఒప్పందం?  0 ని 0000 0000 గాను, A ని 01000 0001 గాను, M ని 1101 0101 గాను అనుకుంటూ, కుంచికపలక (keyboard) మీద కనిపించే ప్రతి శాల్తీని ఒక ఏకైక పద్ధతిలో, ద్వియాంశ మాల (binary string) రూపంలో రాద్దాం. అలా రాసినప్పుడు కుంచికపలక మీద ఉన్న కొన్ని శాల్తీలు ఎలా ఉంటాయో ఈ దిగువ చూపిస్తున్నాను. దీనినే ASCII code అంటారు. ఈ సున్నలని, ఒకట్లని పదే పదే రాయడం కష్టం కనుక వీటిని షోడశాంశలో ఎలా రాయవచ్చో కూడ చూపించేను.

దశాంశ ద్వియాంశ షోడశాంశ

0      0000 0000     00
1      0000 0001     01
2      0000 0010     02
A      0100 0001    41
B      0100 0010    42
M      1101 0101   D5
a      0110 0001     61
b      0110 0010     62
.      ...                    ...
.      ...                    ...

ఉదాహరణకి చాల చిన్న కంప్యూటర్‌లలో “ముద్రాపకి” (printer) విలాసం షోడశాంశలో 378 అయి ఉండడం రివాజుగా వస్తూన్న ఆచారం. అంటే మనం అచ్చు కొట్టవలసిన అక్షరాన్ని ఈ విలాసం ఉన్న గదిలో దాచి, “ఇప్పుడు ముద్రించు” అని ఆదేశం ఇచ్చేమంటే కంప్యూటరు తిన్నగా 378 విలాసం ఉన్న గదిలోకి వెళ్లి, అక్కడ ఏది కనిపిస్తే దాని నకలు తీసుకుని ఆ నకలుని ముద్రాపకి కి పంపుతుంది. ఇదీ టూకీగా కంప్యూటర్ పని చేసే విధానం.

3. విపులంగా వర్ణన 

ఇప్పుడు కంప్యూటరు ఎలా పని చేస్తుందో మరి కొంచెం వివరంగా చెప్పడానికి ఒక చిన్న ఉదాహరణతో కథ నడిపిస్తాను. ఈ వివరణ ఒకటికి రెండు సార్లు చదివితే కాని గభీమని అర్థం కాదు. కొంచెం ఓపిక పట్టి చదవాలి. ఓపిక పట్టి చదివినా అర్థం కాకపోతే కంగారు పడకండి. సాంకేతిక రంగంలో పదార్థం ఒకటికి పది సార్లు చదివితేకాని అర్థం కాదు. 

ఒక కథో, వ్యాసమో రాసే ఉద్దేశంతో కంప్యూటర్ ఎదురుగా కూర్చుని, మీటలపలక (keyboard) మీద M అనే ఇంగ్లీషు అక్షరం ఉన్న మీట లేదా బొత్తం (key) నొక్కేమని అనుకుందాం. అప్పుడు ఆ M అనే అక్షరం తెర మీద కనిపించడానికి ఎంత తతంగం ఉందో చవి చూద్దాం.

1. మీటలపలక మీద ఒక బొత్తం నొక్కినప్పుడు ఈ దిగువ చెప్పిన సంఘటనలు, ఒక దాని తరువాత మరొకటి, జరుగుతాయి. సాంకేతిక పదజాలంతో కూడిన ఈ వర్ణన చదవగానే అర్థం కాకపోతే కంగారు పడవద్దు. ఈ వివరణ ఇంగ్లీషులో రాసినా గభీమని అర్థం కాదు; ఎందుకంటే భావజాలం కొత్తది కావడం వల్ల.

2. మీటలపలక ఒక విద్యుత్ వాకేతం (signal) ని కంప్యూటర్ పెట్టెలో ఉన్న అనేకమైన విభాగాలలో ఒక విభాగానికి పంపుతుంది. వాకేతం అంటే వార్తకి సంకేతం. ఈ సందర్భంలో ఈ వాకేతాన్ని "వీక్షక ప్రతీక" (scan code) అంటారు. M కి బదులు 6 ఉన్న బొత్తాన్ని నొక్కితే మరొక వాకేతం (అంటే మరొక scan code) పుడుతుంది. అంటే మనం నొక్కే ప్రతి బొత్తానికి ఒక ఏకైక (unique) వీక్షక ప్రతీక కేటాయించబడి ఉంటుందన్న మాట. సర్వసాధారణంగా ఈ స్కేన్ కోడ్ కి ASCII కోడు ఉపయోగించడం జరుగుతుంది. ఇదే సందర్భంలో మనం తెలుగు అక్షరాలు వాడితే ఈ వీక్షక ప్రతీక UNICODE  అవుతుంది. (ఒక వాకేతాన్ని అంకెల రూపంలో కానీ చిహ్నం రూపంలో కానీ  రాసినప్పుడు దానిని మనం ప్రతీక అని తెలుగులోనూ  “కోడు” అని ఇంగ్లీషులోను అంటున్నాం.)

3. కంప్యుటర్ పెట్టె లోపల ఈ వీక్షక ప్రతీక (స్కేన్ కోడ్) ని అర్థం చేసుకో గలిగే స్థోమత గల గోరంత పరిమాణం గల చిన్న సిలికాన్ చితుకు (chip) ఉంటుంది. ఈ చితుకు చూడడానికి చితికిపోయిన చిల్లపెంకులా కాని, పలక ముక్కలా కాని ఉంటుంది. ఈ చితుకులో, కంటికి కనబడని పరిమాణంలో, వందలాది ట్రాన్‌సిస్టర్లు ఉంటాయి. ఈ ట్రాన్సిస్టర్ల సహాయంతో ఈ చితుకు మీటలపలక కార్యకలాపాలని నియంత్రిస్తుంది కనుక ఈ చితుకుని “మీటలపలక నియంత్రకి” (keyboard controller) అంటారు. ఈ చితుకు మన  స్కేన్ కోడ్ ని చదివి, అర్థం చేసుకుని, M అనే అక్షరం ఉన్న మీట మనం నొక్కేమని నిర్ద్వందంగా నిర్ధారిస్తుంది.

4. అప్పుడు ఆ వీక్షక ప్రతీక ని ఒక అర లో తాత్కాలికంగా దాచడం జరుగుతుంది.  ఇలా తాత్కాలికంగా దాచుకుందికి వాడే అరలని ఇంగ్లీషులో “బఫ్ఫర్” (buffer) అంటారు. దీనిని తెలుగులో మధ్యస్థి అని కానీ నిథానకం అని కానీ అనొచ్చు. ఈ బఫ్ఫర్ అనే ఇంగ్లీషు మాట అనేక రంగాల్లో వస్తూ ఉంటుంది. రెండు పెద్ద రాజ్యాల మధ్య ఉండే బడుగు దేశాలని “బఫ్ఫర్” అనొచ్చు. భారతదేశం, చైనాల మధ్య ఉన్న నేపాలు, భూటాను బఫ్ఫర్ రాజ్యాలు.  మందు తీక్షణతని అదుపులో పెట్టడానికి వాడే ఘటక ద్రవ్యాన్ని  బఫ్ఫర్ అంటారు. నేను చిన్నప్పుడు తరగతిలో కూర్చుని విన్న పాఠాన్ని చిత్తు పుస్తకంలో రాసుకుని ఇంటికొచ్చి “మంచి పుస్తకం” లో తిరగ రాసుకునేవాడిని; ఇక్కడ చిత్తు పుస్తకం బఫ్ఫర్ లాంటిది. మన సందర్భంలో బఫ్ఫర్ అంటే “చిత్తు కొట్టు” లేదా “తాత్కాలికంగా వాడుకుంటున్న స్ధలం.” మనం వాడుతూన్న ఉదాహరణలో M అనే అక్షరాన్ని నొక్కేము కనుక, M యొక్క ASCII కోడు D5 కనుక, చిత్తు పలక మీద D5, (అనగా ద్వియాంశలో 1101 0101), నమోదు అవుతుంది. (ఇక్కడ "కీబోర్డ్ కంట్రోలర్" లో ఒక పెద్ద జాబితా ఉన్నట్లు ఊహించుకొండి. ఆ జాబితాలో, ఒకొక్క బొత్తాం నుండి ఒకొక్క తీగ చొప్పున వచ్చి ఆ జాబితాకి తగిలించినట్లు ఊహించుకొండి. ఈ తీగ ఒక వైపు, దానికి ఎదురుగా మనం నొక్కిన బొత్తానికి సంబంధించిన అక్షరాంకం (alphanumeric) యొక్క ASCII కోడు ఉన్నట్లు ఊహించుకొండి. అప్పుడు జాబితాలో ఏ అడ్డు వరసలో M ఉందో చూసుకుని దానికి ఎదురుగా ఉన్న అష్టా (byte) మనకి కావలసిన ASCII కోడు అనుకోవచ్చు.

5. ఒక విషయం. మన మధ్యస్థి (buffer) అనేది తాత్కాలికంగా రాసుకుందుకి వాడే పలక లాంటిదని మరిచిపోకండి. ఇక్కడ ఎక్కువ సేపు దాచుకోడానికి కుదరదు. ఎందుకంటే M తరువాత మరొక అక్షరం టైపు కొట్టవచ్చు కదా. అప్పుడు ఇదే పలక మీద మరొక అక్షరం రాయవలసి వస్తుంది. అందుకని పలక మీద ఉన్న అష్టాని త్వరగా కొట్లోకి పంపెయ్యాలి. ఈ పని చెయ్యడానికి కలనకలశం అనబడే పరికర్మరి (processor) సహాయం కావాలి.

6. అందుకని అత్యంత జోరుగా పని చేస్తూన్న పరికర్మరి (processor) ని ఒక్క క్షణం ఆపి “ఎవరో మీటలపలక మీద మీటని నొక్కేరు. దానికి సంబంధించిన దత్తాంశాన్ని త్వరగా పంపాలి” అని అర్జీ దాఖలు చేసుకుందుకని పరికర్మరి చేస్తూన్న పనికి అంతరాయం కల్పించాలి. ఈ పని "అంతరాయ అధికారి" (interrupt controller)  అనే మరొక చితుకు (chip) చేస్తుంది. ఎలా? “అంతరాయం” అనే వాకేతాన్ని పంపి! ఎవరికి పంపుతుంది? పరికర్మరిని నడిపిస్తూన్న నిరవాకి లేదా ఉపద్రష్ట (operating system) కి. ఈ నిరవాకి ఎన్నో పనుల మీద, ఎంతో జోరుగా అజమాయిషీ చేస్తూ ఉంటుంది కదా? ఇప్పుడు మన దగ్గర ఉన్న M ని అందుకోమని మరొక పని పురమాయిస్తున్నాం. పాఠం చెప్పుకుంటూ పోతూన్న మేష్టారిని ప్రశ్న అడగాలంటే ఏమిటి చేస్తాం? చెయ్యి ఎత్తి ఆయన అనుమతి కోసం ఎదురు చూస్తూ వేచి ఉంటాం. మేష్టారు ఆయన చెబుతూన్న వాక్యాన్ని పూర్తి చేసి, ఆయన పాఠంలో ఎక్కడ ఉన్నారో పుస్తకంలో గుర్తు పెట్టుకుని, మన ప్రశ్న కొరకు ఎదురు చూస్తారు. అదే విధంగా తన దగ్గర దత్తాంశం ఒకటి ఉందని చెప్పడానికి అంతరాయ నియంత్రణ  పరికర్మరి (interrupt controller) కి ఒక “అంతరాయ వాకేతం” (interrupt signal) పంపుతుంది. ఇటువంటి వాకేతం మీటలపలక నుండి రావచ్చు, మూషికం (mouse) నుండి రావచ్చు, మోడెం (modem) నుండి రావచ్చు, మరెక్కడనుండైనా రావచ్చు. కనుక అంతరాయ వాకేతం అందగానే పరికర్మరిని నడుపుతూన్న నిరవాకి (లేదా ఉపద్రష్ట లేదా operating system) తన పనికి అంతరాయం ఎవరివల్ల కలిగిందో అర్థం చేసుకుని, ఆ సందర్భానికి ఉచితమైన కార్యక్రమాలని నెరవేర్చాలి.

7. విద్యార్థి చెయ్యి ఎత్తిన సమయంలోనే ప్రిన్సిపాలు గారు గుమ్మం దగ్గర నిలబడి తలుపు మీద టకటక కొట్టేరనుకుందాం. అది మరొక అంతరాయం. ఇలా కంప్యూటరు ఎన్నో అంతారాయాలని ఎదుర్కుంటూనే ఉంటుంది. ఏ అంతరాయానికి ఏ పరిచర్య (service) చెయ్యాలో ఉపద్రష్టకి తెలుసు. ఒకొక్క పరిచర్యని నడపడానికి ఒకొక్క "అంతరాయం పరిచర్య  క్రమణిక" (interrupt service program) ఉంటుంది. ఇప్పుడు తరువాయి కార్యక్రమం మధ్యస్థి (buffer) లో ఉన్న M అనే అక్షరాన్ని కొట్లో (store లో) రాసుకోవడం కనుక ఈ పని చెయ్యడానికి కావలసిన ఆదేశాలలో మొదటిది కొట్లో ఎక్కడ ఉందో అక్కడకి వెళ్లి అక్కడ నుండి కలనం కొనసాగిస్తుంది.

8. ఉదాహరణకి మనం విండోస్ (Windows) వంటి బహుళబాహు (multi-tasking) ఉపద్రష్టని వాడుతునాం అనుకుందాం. అనగా, ఎన్నో కార్యాలని "ఒకేసారి" చేసే పద్ధతి. (అనగా ఒకేసారి నాలుగైదు "కిటికీ" లు తెరచి, ఒక కిటికీలో కథ రాసుకుంటూ, మరొక కిటికీలో నిఘంటువుని సంప్రదిస్తూ, మూడవ కిటికీలో సినిమా పాటలు వింటూ....) అప్పుడు మన ఉపద్రష్ట పై పనులన్నిటితోపాటు మనం M అనే అక్షరం "ఏ విండో” లో పని చేస్తున్నప్పుడు నొక్కెమో కూడ జ్ఞాపకం పెట్టుకుంటుంది. (ఇక్కడ “విండో” అంటే ఏమిటో సందర్భానుసారంగా మీరు అర్థం చేసుకున్నారనే అనుకుంటున్నాను. అర్థం కాకపోతే "ఏ విండో” కి బదులు "ఏ సందర్భం"  అని చదువుకొండి! )

9. మనం కథో, వ్యాసమో రాస్తూ M అనే మీట నొక్కేము కనుక, అంతా సవ్యంగా జరిగితే తెర మీద M అనే అక్షరం మన “విండో” లో కనిపించాలి. ఇలా కనిపించేటట్లు చెయ్యాలంటే వీక్షకపు కొట్టు (video store) అనే మరొక కొట్లోకి మన M ని బదిలీ చెయ్యాలి.

10. వీక్షకపు కొట్లో ఏది ఉంటే దానిని సెకండుకి 100 సార్లు చొప్పున ఉపద్రష్ట మనకి చూపిస్తుంది.

ఒక్క చిన్న పని చెయ్యడానికి ఇంత హడావిడా? పైపెచ్చు ఇదంతా త్రుటి కాలంలో జరిగిపోయినట్లు మనకి భ్రమ కలుగుతుంది. కలనకలశం మన జ్ఞానేంద్రియాల కంటె ఎన్నో రెట్లు జోరుగా పని చెయ్యడమే ఈ భ్రమకి కారణం.

పైన రాసినది కేవలం ఒక నఖచిత్రం అని మరచి పోకండి. ఈ ఒక్క పని చెయ్యడానికి లోపల జరిగే తతంగం కూలంకషంగా వర్ణించాలంటే ఎన్నో కాగితాలు ఖరాబు చెయ్యాలి. ఇలాంటి పనులు సెకండుకి వెయ్యికి పైబడి కలశం చేస్తూ ఉంటుంది.

ఇదంతా చదివి కంప్యూటర్లని అర్థం చేసుకోవాలనే ఆశ వదలుకోకండి. ఏ ఒక్క వ్యక్తికి, అన్నీ అర్థం కావు. కంప్యూటర్లతో రోజూ పని చేసేవాళ్లకి కూడ కొద్ది భాగమే అర్థం అవుతుంది.


Saturday, August 24, 2013

4. ఆపరేటింగ్ సిస్టం అంటే ఏమిటి?


వేమూరి వేంకటేశ్వరరావు

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

ముందు “ప్రోసెస్” (process) అనే ఇంగ్లీషు మాటనే తీసుకుందాం. కాలగమనంతో ఒక పద్ధతిలో మార్పు చెందుతూ నడిచే ప్రక్రియని ఇంగ్లీషులో “ప్రోసెస్” అంటారు. దీనిని ప్రక్రియ లేక పరికర్మ అని తెలుగులో అనొచ్చు. ఈ ప్రక్రియ లేదా పరికర్మ ఎవరో ఒకరో, ఏదో ఒకటో చెయ్యాలి కద. “డ్రైవు చేసే దానిని డ్రైవర్ అన్నట్లే ప్రోసెస్ చేసేదానిని ప్రోసెసర్ అంటారు. దీనిని మనం తెలుగులో ప్రక్రియకారి అనో పరికర్మరి అనో అనాలి. (మనకి తెలుగులో ఈ రకం ప్రయోగాలు లేకపోలేదు. అల్లేవాడు అల్లుడు, జాలంతో పని చేసే వ్యక్తి జాలరి, కుండలు చేసేవాడు కుమ్మరి, మొదలైనవి.) ఈ రోజుల్లో చూపుడు వేలు గోరంత పరిమాణం ఉన్న చిన్న సిలికాన్ చితుకు (silicon chip) మీద ఈ పరికర్మరి అంతా పట్టెస్తుంది కనుక దీనిని “సూక్ష్మపరికర్మరి” అని కూడ అనొచ్చు. దీనినే మైక్రోప్రోసెసర్ (microprocessor) అని ఇంగ్లీషులో అంటారు. “మైక్రో” అంటే సూక్ష్మమైన అని అర్థం. “నయా పైస” కాలక్రమేణా పైస అయినట్లు ఈ రోజుల్లో “మైక్రో” అన్నా అనకపోయినా పరవాలేదు. ఈ కర్మరి లోనే లెక్కలు అన్నీ జరుగుతాయి.

పోతే, రెండవ భాగం పేరు కొట్టు లేదా కోఠీ (store) లేదా ధారణి (memory). ఈ కొట్టు రూపురేఖలు కూడ సాంకేతిక రంగంలో జరుగుతూన్న విప్లవాలతో మారుతున్నాయి. పూర్వం అయస్కాంతపు ఉంగరాలు, టేపులు, పళ్లేలు, చిల్లుల కాగితపు టేపులు వాడేవారు. ఇప్పుడు సిలికాన్ చితుకులు, లేసర్‌తో చదవగలిగే పళ్లేలు వాడుకలోకి వచ్చేయి. ఇక్కడ సాంకేతికమైన వివరాలు చాలా చెప్పుకోవచ్చు. సాంకేతికమైన మార్పులకి అతీతంగా కోఠీలని తార్కికమైన దృష్టితో సందర్శించడం మంచిది. తార్కికంగా కొట్టు అమరికని పోస్టాఫీసుల్లో ఉత్తరాలు బట్వాడా చెయ్యడానికి వాడే గదుల బీరువాలా ఉహించుకోవచ్చు. ప్రతి గదికి ఒక చిరునామా లేదా విలాసం (address) ఉంటుంది. ప్రతి గదిలోను ఒక అష్టా (అంటే, ఎనిమిది ద్వింకముల మాల) పడుతుందని అనుకుందాం.

పైన ఉదహరించిన రెండు అంశాలు మనకి సాధారణంగా బయటకి కనపడవు; డబ్బా లోపల ఎక్కడో ఉంటాయి. కనపడినా, చూడడానికి చిన్న చిళ్ల పెంకులాగో, పళ్లేల దొంతరలాగో కనిపిస్తాయి తప్ప, చూసినంత మాత్రాన అవి పని చేసే విధానం అవగాహన కాదు.

మూడు, సమాచారాన్ని లోపలికి పంపడానికీ, బయటకి తియ్యడానికి కావలసిన సదుపాయాలు. ఇవి రకరకాలుగా ఉండొచ్చు. వీటన్నిటిని కలిపి ఇంగ్లీషులో input/output అంటారు. తెలుగులో అంతర్యానం/ బహిర్యానం అన్నాం ఇదివరలో. మనం ఏ కంప్యూటర్‌తో ఏ పని చేసినా వీటి మధ్యవర్తిత్వం ఉంటుంది కనుక ఇవి మనకి పరిచయమైన తెర (screen), ముద్రాపకి (printer), కుంచికపలక (keyboard), మూషికం (mouse), కేమెరా, మోడెం, వగైరా రూపాలలో కనిపిస్తాయి. ఇవి కాకుండా సమాచార రవాణాకి రహదారులు ఉంటాయి. ఇవి చూడడానికి రకరకాల ఆకారాలలో ఉన్న తీగలలా ఉంటాయి. వీటిని ఇంగ్లీషులో “బస్” (bus) అంటారు. ఈ “బస్” అనే పదం లేటిన్ లోని “ఆమ్నిబస్” (omnibus) అనే మాటకి సంక్షిప్తమే తప్ప మనం ప్రయాణం చేసే బస్సుకీ దీనికీ ఏ విధమైన సంబంధమూ లేదు. “ఆమ్నిబస్” అంటే “అందరికీ” అని అర్థం. విద్యుత్తుని అందరికి పంచి ఇచ్చే సాధనం కనుక మొదట్లో (అంటే, కంప్యూటర్ యుగానికి ముందే) దీనికి ఆ పేరు వచ్చింది. కంప్యూటర్ రంగంలో ఈ మాటకి అర్థం, “విద్యుత్ వాకేతాలని అన్నిచోట్లకి తీసుకెళ్లే రహదారి” అని చెప్పుకోవచ్చు. అంటే వాకేతాలు ప్రవహించే తీగల కట్ట. స్వయంబోధకంగా ఉంటే బాగుంటుంది కనుక మనం “బస్” ని అందాకా “తీగలకట్ట” (చీపురుకట్టలా) అందాం. సంస్కృతం మీద అభిమానం ఉన్నవాళ్లు దీనిని “తంతివారం” అనొచ్చు.

ఈ మూడు యంత్రంగం (లేదా కఠినాంగం లేదా hardware) కోవ లోకి వస్తాయి. ఈ మూడు కాకుండా కంటికి కనబడని నాలుగో భాగం ఒకటి ఉంది. ఇది కూర్చోవడం కోఠి లోనే కానీ  కలనకలశం ద్వారా కథ నడిపిస్తుంది. కంప్యూటర్‌లో ఉన్న అన్ని భాగాలు, ఎప్పుడు, ఎలా పనిచెయ్యాలో ఇది నిర్ణయిస్తుంది. అంటే పెత్తనం దీనిది. నిరవాకం దీనిది. దీని పర్యవేక్షణలోనే కంప్యూటర్ నడుస్తుంది. చూద్దామంటే కనబడదు. పట్టుకుందామంటే పట్టుబడదు. ఇలా సర్వశక్తి సంపన్నమైన ఈ “ఇది” ని ఇంగ్లీషులో “ఆపరేటింగ్ సిస్టం” అంటారు. దీనిని తెలుగులో ఉపద్రష్ట అనొచ్చు లేదా నిరవాకి అనొచ్చు. ఉపద్రష్ట అంటే యజ్ఞయాగాదులని దగ్గర ఉండి నడిపించే వ్యక్తి. నిరవాకి అంటే నిరవాకం చేసేది. ఈ నిరవాకి తంత్రంశం (లేదా కోమలాంగం, లేదా software) కోవలోకి వస్తుంది.  యంత్రంగం దేహం అనుకుంటే ఈ  తంత్రంగం "దేహి" అవుతుంది. 

కఠినాంగాన్ని ఒక భవనపు పునాదితో పోల్చితే, ఈ నిరవాకిని గోడలు, తలుపులు, మెట్లు వగైరాలతో పోల్చవచ్చు. పునాదులు లేకుండా గోడలని లేవనెత్తలేము. పునాదులు, గోడలు, గదులు, గుమ్మాలు, టొపారం ఉంటే ఏవో కొన్ని కనీస అవసరాలని తీర్చుకోవచ్చేమో కాని భవనం పూర్తిగా ఉపయోగం లోకి రాదు; అది ఒక డొల్ల (shell) మాత్రమే. ఆ “డొల్ల” భవనాన్ని ఎవరికి కావలసిన హంగులతో వారు మలుచుకోవాలి. కొందరు ఆ భవనాన్ని పాఠశాలగా వాడుకోవచ్చు. మరొకరు అదే భవనాన్ని నివాసయోగ్యమైన ఆవాసికలు (apartments or flats) గా విడగొట్టి వాడుకోవచ్చు. వేరొకరు అదే భవనాన్ని కచేరీగానో, ఆసుపత్రిగానో వాడుకోవచ్చు. అంటే ఎవరికి కావలసిన సదుపాయాలు వారు కొనుక్కుని, ఆ డొల్లలో అమర్చుకుని, ఆ భవనాన్ని వాడుకోవాలి. ఈ రకం సదుపాయాలని అనువర్తనాలు (ఇంగ్లీషులో applications అని కాని applications programs అని కాని) అంటారు. బ్రౌజరు (browsers), ఇ-మెయిలు (E-mail), “పద పరికర్మరి” (word processor), స్ప్రెడ్‌షీట్లు (spreadsheets), పవర్‌పోయింట్ (powerpoint), వగైరాలన్నీ ఈ కోవకి చెందుతాయి. ఈ అనువర్తనాలు అన్నీ, అందరికీ అవసరం ఉండవు. ఎవరికి కావలసినవి వారు కొనుక్కుని, కలనయంత్రంలో కీల్కొల్పుకుని (install చేసుకుని) వాడుకుంటారు.

పూర్వపు రోజుల్లో మైక్రోసాఫ్ట్ (Microsoft) కంపెనీ వారు అమ్మిన నిరవాకిని “డిస్క్ ఆపరేటింగ్ సిస్టం” (Disk Operating System) లేదా ముద్దుగా “డాస్” (DOS) అనేవారు. దీనినే MS-DOS అని కూడ అంటారు. ఆ రోజుల్లో ఈ నిరవాకి చేసే పని, ముఖ్యంగా, పరికర్మరి (లేదా కలనకలశం) లో ఉన్న దస్త్రాలు (files) తీసుకుని వాటిని కొట్లో పళ్లేల మీద రాయడం, అక్కడ నిల్వలో ఉన్న దస్త్రాలని పరికర్మరి లోకి తీసుకు రావడం. అందుకని ఆ రోజుల్లో ఆ పేరు సరిపొయింది. ఈ రోజుల్లో నిరవాకి ఇంకా ఎన్నో పనులు చేస్తుంది; కంప్యూటర్ డబ్బాలో ఉన్న కఠినాంగాలకీ, వినియోగదారులు (users) కి మధ్య ఒక వారధిలా పని చేస్తుంది.

ఈ రోజుల్లో బాగా ప్రచారంలో ఉన్న నిరవాకులు చాల ఉన్నాయి. వాటిల్లో కొన్ని పేర్లు: విండోస్-ఎన్‌టి (Windows NT), ఒ-ఎస్/2 (OS/2), యూనిక్స్ (Unix), డాస్/విండోస్ (DOS/Windows), విండోస్ 2000 (Windows 2000), మొదలైనవి. “విండోస్ 2000” వంటి నిరవాకి ఉండడం వల్లనే మనం కీబోర్డు (కుంచికపలక) మీద టైపు కొట్టిన అక్షరాలు వెనువెంటనే తెర మీద కనిపిస్తున్నాయి. ఈ నిరవాకి ఆధ్వర్యం లోనే మూషికాన్ని ఒక్క సారి “క్లిక్” చెయ్యగానే ముద్రాపకి కాగితం మీద అచ్చుకొట్టడం మొదలు పెడుతుంది. ఈ నిరవాకి ప్రమేయం లేకుండా విద్యుల్లేఖలు (E-mails) పంపలేము. నిరవాకి చేసే ఈ చాకిరీ అంతా మన అనుభవ పరిధిలో ఉన్న పనులు. మనకి తెలియకుండా మరెన్నో సాంకేతికమైన ఇంటి పనులు (housekeeping operations) నిరవాకి నేపథ్యంలో చేసుకు పోతూ ఉంటుంది. ఇవన్నీ అవసరం వెంబడి తెలుసుకుందాం.

ఈ పనులన్నీ చెయ్యడానికి నిరవాకికి తోడు ఉంది. నిరవాకితో చేతులు కలిపి సహాయం చేసే వాటిల్లో ముఖ్యమైనదానిని ఇంగ్లీషులో “బయాస్” (BIOS) అంటారు, అంటే Basic Input Output System అని అర్థం. ఈ బయాస్‌లో శాశ్వతంగా నిలచిపోయే రీతిలో కొన్ని ఆదేశాలు ఉంటాయి. అంటే ఈ రకం కొట్లో ఉన్న దత్తాంశాలు, ఆదేశాలు మనం చదవగలం కాని, ఉన్న వాటిని చెరిపేసి కొత్తవి రాయలేము. అందుకని బయాస్ నిర్మాణానికి వాడే సాధనాలలో CD-ROM (అంటే, Compact Disk – Read Only Memory) ముఖ్యమైనది. దీని “నిల్వ చేసే సామర్ధ్యం” దరిదాపు 680 MB (అంటే, 680 మిలియను అష్టాలు) వరకు ఉంటుంది. మాంత్రికుడి ప్రాణం చిలకలో ఉన్నట్లు, కంప్యూటర్ ప్రాణం ఈ బయాస్‌లో ఉంటుందనుకోవచ్చు. ఇందులో ఉన్నవి ఏ కారణం వల్లనైనా చెరిగిపోతే, కంప్యూటరు ప్రాణం పోయినట్లే. అందుకనే చెరపడానికి వీలుకాని కొట్లో బయాస్ క్రమణికలు దాచుతారు.

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

ఈ వ్యాసం చదివిన తరువాత ఇంటికి తీసుకెళ్లవలసిన అంశం. నిరవాకి లేదా ఉపద్రష్ట లేదా ఆపరేటింగ్ సిస్టం లేని కఠినాంగం ప్రాణం లేని కట్టె లాంటిది. రెండూ ఉంటేనే ఏ పని అయినా చెయ్యగలిగే స్థోమత వస్తుంది.

Saturday, August 10, 2013

3. దశాంశ, ద్వియాంశ, షోడశాంశ లెక్కింపు పద్ధతుల



వేమూరి వేంకటేశ్వరరావు

కంప్యూటర్ రంగంలో పని చేసే వారితో మాట్లాడుతున్నప్పుడు భాషా పరమైన ఇబ్బందులు కొన్ని ఉన్నాయి; వారి భాష ఏమిటో మనకి అర్థం అయి చావదు. మనకి సైన్సుతో పరిచయం ఉన్నా వాళ్ల లోకం వాళ్లది; పైపెచ్చు వాళ్ల గోల మనకి అర్థం కాకపోతే మనని నిరక్షరాశ్యులులా చూస్తారు. చిన్న ఉదాహరణ ఇస్తాను.

ఈ రోజుల్లో కిలొ అనే మాట అందరికీ పరిచయమైనదే. కిలో పంచదార, కిలో చింతపండు, వగైరాలు నిత్యం వాడుకునే మాటలే. “కిలో” అంటే “వెయ్యి” కాబట్టి కిలోమీటరు అంటే వెయ్యి మీటర్లు, కిలోగ్రాము అంటే వెయ్యి గ్రాములు అని మనం అర్థం చేసుకుంటున్నాం. ఇలాగే వెయ్యి కిలోలు ఒక “మెగా.” ఈ మెగా “బాగా పెద్ద” అన్న అర్థంలో వాడుతున్నాం (ఉ. మెగా స్టార్) కాని కచ్చితంగా “ఇంత” అన్న అర్థం ఇంకా తెలుగు నోట నలగ లేదు. ఒక మెగా గ్రాము అంటే మిలియను (1,000,000) గ్రాములు. ఇదే విధంగా వెయ్యి మిలియన్లు ఒక బిలియను. ఈ బిలియనుని సూచించడానికి “గిగా” అనే పూర్వ ప్రత్యయం వాడతారు. సైన్సుతో ఏపాటి పరిచయం ఉన్నా ఈ పూర్వ ప్రత్యయాలతో పరిచయం ఉండి తీరుతుంది. కనుక కిలొ అంటే వెయ్యి, మెగా అంటే మిలియను, గిగా అంటే బిలియను అని అర్థం చేసుకుందాం.

కంప్యూటర్ రంగంలోనే కాదు ఆధునిక విజ్ఞాన రంగంలో లక్షలకి, కోట్లకి స్థానం లేదు. మనం ఇంగ్లీషు వ్యామోహంలో పడి పాశ్చాత్యులని పరిపూర్ణంగా అనుకరించేసినా బాగుండిపోయేది; లక్షల దగ్గరకి, కోట్ల దగ్గరకి వచ్చేసరికి భారతీయ పద్ధతినే పట్టుకు వేల్లాడుతున్నాం. లేకపోతే ఏమిటి చెప్పండీ? నాలుగు వందల ఏభై లక్షల కోట్లా? మా మనవడు “ఇరవై తొమ్మిది, ఇరవై పది, ఇరవై పదకొండు,…” అని లెక్కపెట్టినట్లు!

పరిస్థితి ఇలా కుదుటపడి ఉండగా పిలవని పేరంటంలా కంప్యూటర్ వాళ్లు వచ్చి పడ్డారు. కంప్యూటర్లలో లెక్కలన్నీ దశాంశ పద్ధతిలో నడవవు – వాళ్లదంతా ద్వియాంశ లోకం. దశాంశ పద్ధతి (decimal system) లో ఎలా లెక్క పెడతాం? 0, 1, 2, 3, …, 8, 9 అని లెక్క పెట్టేసరికి మన దగ్గర ఉన్న పది అంకెలూ ఒక సారి లెక్కపెట్టడం అయిపోయింది కనుక ఆ విషయాన్ని జ్ఞప్తికి తెచ్చుకుంటూ 1 వేసి దాని తరువాత మళ్లా సున్న, ఒకటి, రెండు అనుకుంటూ 10, 11, 12, .., 18, 19 వేస్తాం. వేసి, వీటిని పది, పదకొండు, పన్నెండు, … అన్న పేర్లతో పిలుస్తాం. ఇప్పటికి రెండు సార్లు లెక్కపెట్టడం అయింది అని గుర్తు పెట్టుకోడానికి 2 వేసి మళ్లా సున్న నుండి తొమ్మిది వరకు 20, 21, 22,.. 28, 29 అని వేస్తాం. వేసి, వీటిని ఇరవై, ఇరవై ఒకటి, ఇరవై రెండు, ఇరవై మూడు, … అన్న పేర్లతో పిలుస్తాం. ఈ లేఖన చిహ్నాలు, ఈ పేర్లు దశాంశ పద్ధతికే పరిమితం అన్న మాట మన మనస్సులో ఉండదు; ఎందుకంటే తరతరాలబట్టీ మనం ఈ దశాంశ పద్ధతి తప్ప మరొక పద్ధతిలో లెక్కించ లేదు.

కాని కంప్యూటర్‌కి రెండే రెండు అంకెలు బోధపడతాయి: 0, 1. రెండే రెండు లేఖన చిహ్నాలు ఉన్న పద్ధతి కనుక దీనిని ద్వియాంశ పద్ధతి (binary system) అనొచ్చు. ఈ పద్ధతిలో 0, 1 ఒక సారి లెక్కపెట్టడం అయిన తరువాత 1 వేసి, దాని పక్క సున్న, ఒకటి వేస్తే 10, 11 వస్తాయి. కనుక దశాంశ లోకంలో 2 ద్వియాంశ లోకంలో 10, దశాంశ లోకంలో 3 ద్వియాంశ లోకంలో 11. దీని తరువాత వచ్చే సంఖ్యలు 100, 101, 110, 111. ఈ నాలుగు ద్వియాంశ సంఖ్యలు 4, 5, 6, 7 అనే దశాంశ అంకెలతో సమానం. ఇలా లెక్కిస్తూ వెళితే దశాంశ పద్ధతిలో మనం వాడే 10 (పది) ద్వియాంశలో 1010 అవుతుంది, దశాంశలో మనం వాడే 11 (పదకొండు) ద్వియాంశలో 1011 అవుతుంది, దశాంశలో 15 (పదిహేను) ద్వియాంశలో 1111 అవుతుంది. చూశారా, ఇక్కడ నేను కుండలీకరణాలలో “పది”, “పదకొండు” అని రాయకపోతే 10 అనే లేఖన చిహ్నం దశాంశలో పదో, ద్వియాంశలో రెండో చెప్పడం కష్టం.

ఇక్కడ ఇలా పాఠం చెప్పుకుంటూ పోతే చాల సేపు పడుతుంది కనుక, కథనాన్ని టూకీగా తెముల్చుతాను. ద్వియాంశలో పది స్థానాలు ఆక్రమించే సంఖ్యని పరిశీలిద్దాం. ఈ పది స్థానాలలో మనం రాయగలిగే పెద్ద సంఖ్య 1111 1111 11. దశాంశ పద్ధతిలో దీని విలువ 1023. సున్నతో కలుపుకుని మొత్తం 1024. కనుక పది స్థానాల్లో ఇమిడే ద్వియాంశ సంఖ్యలన్నిటిని లెక్కపెడితే “ఒక వెయ్యి ఇరవై నాలుగు” సంఖ్యలు ఉంటాయి. మనమే బద్ధకిష్టులం అనుకుంటే మన కంటే బద్ధకిష్టులు కంప్యూటర్లతో పనిచేసేవాళ్లు. “ఒక వెయ్యి ఇరవై నాలుగు” అనడానికి బద్ధకించి “ఒక వెయ్యి” అనో లేదా “ఒక కిలో” అనో అనడం మొదలుపెట్టేరు. వాళ్లకి తెలుసు; వాళ్లు ఒక కిలో అంటే నిజంగా అది 1024 అని. కాని మనందరికీ ఆ విషయం తెలియాలని లేదుగా!

అందరికీ తెలియకపోయినా ఈ తేడా విశాఖ జిల్లా ప్రాంతాలలో పెరిగిన నాకు తెలుసు – చిన్నప్పటినుండీ తెలుసు. విశాఖ జిల్లాలో – నా చిన్నతనంలో – పరక మామిడి పళ్లు కొంటే 14 వచ్చేవి. కనుక పాతిక అంటే 28. వంద అంటే 112. బ్రిటిష్ వాడు మనకి తులామానం నేర్పినప్పుడు ఇదే తర్కంతో “హండ్రెడ్‌వెయిట్” అంటే 112 పౌనులు అన్నాడు కదా. కనుక బ్రిటిష్ వాళ్లు “వంద” అన్నప్పుడు అది 112 అయితే మనం కిక్కురుమనకుండా ఊరుకున్నప్పుడు కంప్యూటర్ వాళ్లు “కిలో” అన్నప్పుడు దాని అర్థం 1024 అయితే కిక్కురు మననేల?

వింత, విడ్డూరము లేకపోయినా వైజ్ఞానిక రంగంలో మాటలకి నిర్ధిష్టమైన అర్థాలు లేక పోతే ఇబ్బందులు తప్పవు. ఇక్కడ మనం 1000 కి 1024 కీ మధ్య పెద్ద తేడా లేదు కనుక ఏదోలే అని సరిపెట్టుకుంటాం. కాని మిలియన్ దగ్గరకి వచ్చేసరికి ఈ తేడా పెరుగుతుంది. సామాన్యులకి “మెగా” అంటే “కిలో కిలోలు” లేదా మిలియను, లేదా 1,000,000. కంప్యూటర్ పరిభాషలో “మెగా” అంటే “కిలో కిలోలే” కాని వాళ్ల కిలో 1024 కనుక కంప్యూటర్ వాళ్లు మెగా అంటే 1024 ని 1024 తో గుణించగా వచ్చిన 1, 048, 576. ఇదీ మిలియనుకి దరిదాపుల్లోనే ఉంది కనుక పరవాలేదనుకోవచ్చు, కాని “కంప్యూటర్ మెగా” మామూలు మెగా కంటె పెద్ద సంఖ్య. కాంప్యూటర్ల వాడకం పెరగడంతో కంప్యూటర్ పరిభాష వాడుకలో జొరబడింది. కనుక కంప్యూటర్ వాళ్లు “64 కిలోబైట్‌లు” అంటే వాళ్ల ఉద్దేశం 64 x 1, 024  "బైట్‌"లు అని అన్వయం చెప్పుకోవాలి తప్ప 64 x 1,000 అని కాదు. కాని అదే కంప్యూటర్ వాళ్లు “28.8 కిలోబిట్ల మోడెం” అంటే మాత్రం క్షణానికి 28.8 x 1,000 ద్వింకములు పంపే మోడెం అనే అర్థం కాని 28.8 x 1024 = 29,491 ద్వింకములు అని కాదు. కనుక కిలో, మెగా, గిగా మొదలైన పూర్వ ప్రత్యయాలు విన్నప్పుడు అవి ఎవరు, ఏ సందర్భంలో అంటున్నారో తెలిస్తే తప్ప వాటి నిజమైన విలువ తెలియదు. అదే విధంగా కంప్యూటర్ వాళ్లు మాట్లాడేటప్పుడు “బిట్లు” అన్న మాటకి, “బైట్లు” అన్నమాటకీ మధ్య తేడా ఉంటుంది. సాధారణంగా సమాచారాన్ని నిల్వ చేసే సామర్ధ్యాన్ని గురించి చెబుతూ 10 KB అంటే అది “పది కిలో బైట్లు,” కాని సమాచారాన్ని రవాణా చేసే వేగాన్ని చెప్పేటప్పుడు 10 kb అంటే అది “పది కిలొ బిట్లు” అని అర్థం చేసుకోవాలి. ఇక్కడ పెద్దబడిలో B “బైట్లు” (అష్టాలు) అని చెబుతోంది, చిన్న బడిలో b “బిట్లు” (ద్వింకములు) అని చెబుతోంది. దృష్టి దోషం లేకుండా చూడాలి, శ్రవణ దోషం లేకుండా వినాలి.

పై పేరాలో బిట్లు, బైట్లు అన్న మాటలు వాడేను కనుక వాటి అర్థాలు కూడ చెబుతాను. నాలుగు చింతపిక్కలని పుంజీ అనిన్నీ, ఎనిమిది చింతపిక్కలని “గుర్రం” అనిన్నీ అన్నట్లే నాలుగు ద్వియాంశ అంకెలని “నిబుల్” (nibble) అనిన్ని ఎనిమిది ద్వియాంశ అంకెలని “బైట్”(byte) అనిన్నీ అంటారు. ఒకే ఒక ద్వియాంశ అంకె ని ఇంగ్లీషులో “బిట్” (bit) అంటారు. ఈ బిట్ అనే మాట binary digit అనే ఇంగ్లీషు మాటలకి సంkshiప్త రూపం. అదే ధోరణిలో మనం కూడ “ద్వియాంశ అంకము” అన్న మాటలని “ద్వింకము” అని కుదించి దీనిని bit కి బదులు వాడదాం. నిబుల్ ని (వాడకం లోంచి పోయింది కాని) మనం పుంజీ అందాం. బైట్ అంటే ఎనిమిది ద్వింకములు కనుక దానిని అష్టా అందాం. ఇంగ్లీషులో బైట్ (byte) అన్నా ఆక్టెట్ (octet) అన్నా అర్థం ఒక్కటే. ఆక్టెట్ అంటే ఎనమండుగురు అని కాని ఎనిమిది అంశాలు ఉన్నది అని కాని అర్థం కనుక దానిని “అష్టా” అంటే అర్థానికి దగ్గరగా ఉంటుంది. చింతపిక్కలతోటీ, గవ్వలతోటీ ఆటలు ఆడే వారికి అష్టా సుపరిచితమే!

కంప్యూటర్‌లో వాడడానికి ద్వియాంశ పద్ధతి నప్పుతుంది కాని, మానవులకి ద్వియాంశ పద్ధతి వల్ల కొన్ని చిక్కులు ఉన్నాయి. ఉదాహరణకి 33 అనే సంఖ్యనే తీసుకుందాం. దీన్ని ఆ పళంగా కంప్యూటరుకి ఇస్తే జడ్డిమాలోకానికి అర్థం కాదు. అందుకని ఆ 33 ని 100001 అని ఒకట్లు, సున్నలు ఉన్న పద్ధతిలో రాసి కంప్యూటర్‌కి ఇవ్వాలి. ఇదే విధంగా దశాంశ పద్ధతిలో ఉన్న 181 అనే సంఖ్యని ద్వియాంశ పద్ధతి (binary system) ప్రకారం 10110101 అని రాయాలి. పెద్దాపురం చాంతాడులా ఇలా పొడుగ్గా ఉన్న ద్వియాంశ సంఖ్యలని రాయడం కొంచెం కష్టమే – అందులో బద్ధకిష్టులకి మరీ కష్టం. కష్టపడి రాసినా తప్పులు దొర్లే అవకాశాలు ఎక్కువ. ఈ కష్టం నుండీ గట్టెక్కడానికి షోడశాంశ పద్ధతి (hexadecimal system) అందుబాటులోకి వస్తుంది. ఈ పద్ధతిలో అంకెలకి పదహారు గుర్తులు వాడతారు. అవి: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. ఇక్కడ A అనేది 9 (అంటే 1001) తరువాత వచ్చే 1010 అనే ద్వియాంశ సంఖ్యకి గుర్తు. దీని తరువాత వచ్చే 1011 కి బదులు B అని రాస్తాం. ఈ పద్ధతి మనకి ఇక్కడ ఎలా ఉపయోగపడుతుందో చూపెడతాను. ఉదాహరణకి 181 ని 10110101 అని రాయడానికి బదులు ఈ సంఖ్యలో ఉన్న ద్వింకములని (binary digits ని) కుడి నుండి ఎడమకి వెళుతూ పుంజీల కింద విడగొట్టి, ఇలా – 1011 0101 – రాస్తాం. ఇప్పుడు 1011 కి బదులు B అనిన్నీ 0101 కి బదులు 5 అనిన్నీ రాస్తే దశాంశ పద్ధతిలో ఉన్న 181 కాస్తా షోడశాంశలో B5 అవుతుంది. ఇది షోడశాంశ (hexadecimal) అన్న విషయం మరచిపోకుండా ఉండడానికి అప్పుడప్పుడు దీనిని B5h అని కూడ రాస్తూ ఉంటారు. ఈ చిటకా కంప్యూటర్ రంగంలో తరచు వాడతారు.

కనుక రెండు షోడశాంశలో ఉన్న అంకెలు ఒక బైట్‌తో సమానం. అంటే, B5h అనేది ఒక బైట్ స్థలంలో ఇముడుతుంది. ఒక కొట్టు ఎంత పెద్దదో చెప్పడానికి “ఈ కొట్టులో 20 కిలోబైట్లు పడతాయి” అన్నప్పుడు ఆ కొట్లో 20x1024 = 20,480 బైట్లు పడతాయని మనం అర్థం చేసుకోవాలి. బైటు ఒక్కంటికి ఒక ఇంగ్లీషు అక్షరం కనుక ఆ కొట్లో 20,480 ఇంగ్లీషు అక్షరాలు పడతాయి. ఇంగ్లీషు అక్షరాలని, అంకెలని కంప్యూటర్‌లో దాచడానికి సర్వసాధారణంగా ASCII కోడు వాడతారు. ఈ కోడులో ఒక బైటు పొడుగున్న జాగాలో ఒక అక్షరాంకం (alphanumeric character) ఇముడుతుంది.

కాని తెలుగు అక్షరాలని కొట్లో దాచడానికి (లేదా రాయడానికి) “యూనీకోడు” (unicode) వాడాలి. ఇక్కడ అక్షరం ఒక్కంటికి 4 బైట్లు కావలసి ఉంటుంది. కనుక ఆ కొట్లో 10,240 తెలుగు వర్ణాలు పడతాయి.



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) అందుబాటులో ఉంటోంది. అరచేతిలో ఇమిడే కంప్యూటర్ సహాయంతో, తీగల బెడద లేకుండా వీరు సమాచారాన్ని పంపగలరు, అందుకోగలరు. రోజురోజుకీ మారుతూన్న ఈ సాంకేతిక రంగం గురించి ఏది రాసినా ఆ సిరా ఆరే వరకే ఆ రాతకి సార్ధక్యత.