వై2కె సమస్య

తెలుగువాళ్లు 1990 దశకంలో తంబ తంబలుగా అమెరికా వెళ్లడానికీ, ఇండియాలో ఇన్‌ఫోసిస్, విప్రో, సత్యం వంటి కంపెనీలు అంతర్జాతీయ వ్యాపార రంగంలో కాలు నిలదొక్కుకుని లేవడానికి ఈ “వై2కె” సమస్య ప్రత్యక్షంగాను, పరోక్షంగాను ఎంతో దోహదం చేసింది. కనుక “వై2కె” సమస్య కాదు; దేవుడు భారతీయులకి ఇచ్చిన ఒక వరం.

ఏమిటీ “వై2కె సమస్య?” ఏమా కథ?

ఈ సమస్య ఏమిటో అర్థం చేసుకోవడం చాల తేలిక. మనందరికీ తేదీ రాసేటప్పుడు ఒక అలవాటు ఉంది. ఉదాహరణకి 17-1-38 అని ఇండియాలోను 1/17/38 అని అమెరికాలోనూ రాసినప్పుడు దాని అర్థం 1938 జనవరి 17 అని. బద్ధకించో, సోమరితనం వల్లో, కలంలో సిరా అయిపోతుందనే లోభత్వం వల్లో, కాగితం మీద చోటు సరిపోకో – సవా లక్ష కారణాలు ఉండొచ్చు – మనం 1938 అని రాయడానికి బదులు 38 అని రాసి ఊరుకుంటాం. రాసే వాళ్లు మానవులు, చదివి అర్థం చేసుకునే వాళ్లు మానవులు అయినంతసేపు ఈ అలవాటు వల్ల ఏ చిక్కులూ రావు; మన మెదడు పరిస్థితులని సందర్భోచితంగా అర్థం చేసుకోగలదు.

కంప్యూటర్లు వచ్చిన కొత్త రోజులలో క్రమణికలు (programs) రాయవలసి వచ్చినప్పుడు ఈ అలవాటు వల్ల కొంతవరకు, మరెన్నో కారణాంతరాల వల్ల కొంతవరకు, తారీఖు రాయడానికి 17-1-38 వంటి పద్ధతే వాడేవారు; అంటే సంవత్సరాన్ని సూచించడానికి 1938 అని నాలుగు దశాంశ అంకెలు రాయడానికి బదులు 38 అని రెండే అంకెలు వేసి ఊరుకునేవారు. ఈ అలవాటు ఇంతలా నాటుకి పోడానికి బలవంతమైన కారణాలు ఉన్నాయి:

 మనం నిత్యజీవితంలో తేదీలు అలానే వేస్తాం. ఆ అలవాటే క్రమణికలలోకి జొరబడింది.
 ఎప్పుడో 1960 దశకంలోను, 1970 దశకంలోను రాసిన క్రమణికలు 40 ఏళ్లు పైబడి వాడుకలో ఉంటాయని ఎవ్వరూ అనుకోలేదు. ఆ క్రమణికలు రాసినప్పుడు ఎవ్వరూ సంవత్సరం 1999 నుండి 2000 కి మారిన సందర్భంలో రాబోయే చిక్కుల గురించి పట్టించుకోలేదు. పట్టించుకున్నా ఎప్పుడో రాబోయే సమస్యకి ఇప్పటి నుండి డబ్బు ఖర్చు పెట్టడం ఎందుకని, రాజకీయ నాయకులలా, వెనకాడి ఉంటారు.
 సంవత్సరాన్ని నాలుగంకెల సంఖ్యలా చూపినంత మాత్రాన్న ఎక్కువ ఖర్చు ఎందుకు అవుతుందా? కంప్యూటరు కొట్లో 38 అని రెండంకెల సంఖ్యని దాచడానికి రెండు అష్టాలు (bytes) చోటు పడుతుంది, నాలుగంకెల సంఖ్య అయిన 1938 దాచాలంటే 4 అష్టాల చోటు కావలసి ఉంటుంది. అంటే కొట్టు పరిమాణం పెరుగుతుంది. దానితో ఖర్చు పెరుగుతుంది. ఇప్పుడంటే సిలికాన్ చితుకలతో చేసిన కొట్ల ధర పడిపోయింది కాని, పూర్వం కొట్టు ధరలు చాల ఎక్కువగా ఉండేవి. ఎప్పటివరకో ఎందుకు? సా. శ.1980 పూర్వార్ధంలో బాగా ప్రాచుర్యంలో ఉన్న VAX11/780 కంప్యూటర్లలో, ఒకొక్క కంప్యూటర్‌కి 4MB (నాలుగు మిలియన్ల అష్టాలు) ప్రాథమిక నిల్వ కేటాయించేవారు. ఎన్నో తంటాలు పడి ఆ 4MB అష్టాలలో క్రమణికలు, దత్తాంశాలు పట్టించవలసి వచ్చేది. అనుక్షణమూ పళ్లేల దొంతర దగ్గరకి (అంటే, ద్వితీయ శ్రేణి కొట్లోకి) వెళ్లి అవసరమైన దత్తాంశాలని తెచ్చుకోవలసి వచ్చేది. అందువల్ల పని అనుకున్నంత జోరుగా అయేది కాదు. మరొక 4MB కొట్టుకి తగిలిస్తే పని సత్వరం అయిపోతుంది, కాని ఆ 4MB కొనడానికి అనుమతి దొరికేది కాదు. (మీ కంప్యూటరు నెమ్మదిగా నడుస్తూ ఉంటే ప్రాథమిక స్థాయి కొట్టు పరిమాణం పెంచితే జోరు పెరుగుతుంది.) ఈ రోజుల్లో (2015లో) అయితే 4MB బజారులో కొనుక్కుంటే ఒక డాలరు ఉంటుందేమో. ఈ రోజుల్లో 2,000 డాలర్లు పెట్టి కొని వాడుతూన్న కంప్యూటర్ కొట్టు పరిమాణం 2.0 GB ఉంటుంది ( 500 రెట్లు పెద్ద కొట్టు!)
 కాని ఆ రోజులలో పరిస్థితులు వేరు. చిన్న కొట్లో ఎన్నో విషయాలని ఇరికించడానికి – రంగం ఉత్తరంలా – నానా గడ్డీ కరిచే వారు. కనుక సంవత్సరాన్ని రెండంకెల సంఖ్యతో సూచించి సరిపెట్టుకునేవారు. ఇలా చెయ్యడం వల్ల సర్వసాధారణంగా ఏ ఇబ్బందులు వచ్చేవి కాదు; అప్పుడప్పుడు మాత్రం వచ్చేవి. ఉదాహరణకి 1999 తరువాత 2000 వస్తుంది కదా. ఈ 2000 ని రెండంకెల సంఖ్యలా సంక్షిప్త పరచినప్పుడు 00 అవుతుంది. ఇది 1900 అయినా కావచ్చు, 2000 అయినా కావచ్చు. కంప్యూటర్‌లో పనిచేస్తూన్న క్రమణికలు 00 ని చూడగానే అంతవరకు అలవాటు పడ్డ 1900 అనుకుని లెక్కలు చేసుకుంటూ పోవచ్చు కదా. ఇలా చెయ్యడం వల్ల ఎటువంటి సమశ్యలు వస్తాయో చూద్దాం.

ఎదురయే సమస్యలు

ఉదాహరణకి ఈ రోజు ఒక వ్యక్తి వయస్సు ఎంతో కంప్యూటర్‌ని అడిగేమనుకుందాం. వయస్సు లెక్క కట్టడానికి ఈ నాటి తేదీ నుండి పుట్టిన తేదీని తీసివెయ్యాలి. ఈ నాటి తేదీ, పుట్టిన రోజు ఒకే శతాబ్దంలో ఉంటే ఈ తీసివేత అతి సామాన్యంగా జరిగిపోతుంది; ఏ పేచీ ఉండదు. కాని పుట్టిన తేదీ ఒక శతాబ్దం లోను, నేటి తేదీ మరొక శతాబ్దం లోను పడ్డప్పుడు చిక్కులు వస్తాయి. ఉదాహరణకి ఈ నాటి తేదీ 17-1-2015 అనుకుందాం. ఇందులోంచి ఇందాకటి పుట్టిన రోజు, అనగా 17-1-1938, తీసెస్తే వయస్సు 77 వస్తుంది. కాని కంప్యూటర్‌లో పుట్టిన తేదీ 17-1-38 అనిన్నీ, ఈ నాటి తేదీ 17-1-15 అనిన్నీ వేసి ఉంటే వయస్సు -23 (రుణ సంఖ్య) సంవత్సరాలు వస్తుంది. వయస్సు రుణ సంఖ్య ఉండదు కనుక కంప్యూటర్ కంగారు పడుతుంది, కలనం స్తంభించిపోతుంది. ఇలాంటి అవకతవక పరిస్థితులు ఇంకా రకరకాలు రావడానికి సావకాశం ఉందని పాఠకులే పరిశోధన చేసి తెలుసుకోగలరు. ఇదీ “వై2కె సమస్య.”

పరిష్కారానికి మార్గాలు
సమస్య అర్థం అయితే పరిష్కారానికి పెక్కు మార్గాలు దొరుకుతాయి.

 క్రమణికలలోకి వెళ్లి ఎక్కడ సంవత్సరం కనిపిస్తుందో అక్కడ రెండంకెల సంవత్సరానికి బదులు నాలుగంకెల సంవత్సరం పడేటట్లు మార్పులు చెయ్యడం. ఇది చెప్పడం సుళువే కాని చెయ్యడం కష్టం. ఎందుకంటే ఈ రకం మార్పులు ఒక చోట కాదు, రెండు చోట్ల కాదు మిలియన్లు పైబడి చెయ్యవలసి రావచ్చు. మార్పు చెయ్యగానే సరిపోదే. ఎక్కడా తప్పకుండా అన్ని చోట్లా మార్పులు జరిగేయో లేదో చూసుకోవాలి. తరువాత చేసిన మార్పు అనుకున్నట్లు పనిచేస్తోందా లేదా అని పరీక్ష చేసి చూసుకోవాలి. ఈ పరీక్షకి చాల సమయం పట్టెస్తుంది. దీనికి బోలెడంత సిబ్బంది కావాలి. బోలెడంత డబ్బు ఖర్చు అవుతుంది.
 
 క్రమణికలో తప్పుని పట్టి సరి చెయ్యడానికి 100 ఖర్చయితే మనం చేసిన సవరణ వల్ల మనం ఊహించని దుష్‌పరిణామాలు ఉన్నాయో, లేదో చూసుకోడానికి 1000 అవుతుంది. కనుక పనిచేస్తూన్న క్రమణికని చిన్న చిన్న మార్పులే కదా అని మార్చడం ప్రమాదం. కంప్యూటర్ రంగంలో ఉన్న బ్రహ్మ సూత్రం ఒకటి ఏమిటంటే, “పని చేస్తూన్న క్రమణికని బాగు చెయ్యడానికి వేలు పెట్టి కెలక వద్దు!”

ఒక తప్పుని పట్టి, దానిని సరిదిద్ది, అంతా సవ్యంగా ఉందో లేదో పరీక్ష చెయ్యడానికి ఒక మనిషికి ఒక రోజు (8 గంటలు) పడుతుందని అనుకుందాం. ఒక క్రమణికలో 100,000 మంది పేర్లు, పుట్టిన తేదీలు ఉన్నాయనుకుందాం. వీరందరి పుట్టిన రోజులు మార్చడానికి 100,000 రోజులు (లేదా 800,000 గంటలు) పడుతుంది. వెయ్యి మంది ప్రోగ్రామర్లు పని చేస్తే ఈ పని 800 గంటలలో తెముల్తుంది. ఇంతమంది మనుష్యులకి పెద్ద పెద్ద జీతాలిచ్చి పని చేయించడం అంటే తడిపి మోపెడు ఖర్చు అవుతుంది.

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

కంప్యూటర్
కంప్యూటర్ సంబంధిత వ్యాసాలు