Wednesday, September 14, 2022

कृष्ण किनारा

कृष्ण किनारा - पुस्तक परिचय 


पुराणातल्या कथा, पोथ्या, दंतकथा यातल्या तत्वज्ञानामध्ये, त्यातल्या मानवी मनाविषयीच्या कुतुहलामध्ये, त्याला जडलेल्या सुखदुःखांमध्ये माणसाला भारून टाकण्याची मोठी ताकद आहे. पण या पृष्टभागावरच्या नवलाई खाली अंधारानं व्यापलेली तळघरंही आहेत. तिथे पुष्कळ बायका देवत्वाचं नख लागून, पातिव्रत्याचं विष पिऊन, समाज पुरुषाच्या मिठीत घुसमटून, कधी झगडून, कधी अबोल सोसून मरून पडल्या आहेत. त्यातल्या काही जणी आजच्या वर्तमानातही वावरताना कुठल्या न कुठल्या रूपात सतत अवती भवती भेटत राहतात आणि पुन्हा पुन्हा आठवत राहतात. अरुणाताईंना अस्वस्थ करणाऱ्या या अनुभवातून बाहेर पडण्याचा एक प्रयत्न म्हणून त्यांनी पुराणातल्या यातल्या काही जणींविषयी लिहिलं. त्यांच्या लिखाणात ते कुठे न कुठे येत गेलं. त्यांचं असच एक पुस्तक एवढयात वाचलं, कृष्ण किनारा. आज त्याबद्दल थोडंसं.  



राधा, कुंती आणि द्रौपदी या तिघींच्या बाईपणाभोवती लिहिलेले तीन दीर्घ लेख म्हणजे अरुण ढेरे यांचं कृष्ण किनारा हे पुस्तक. कुंती, द्रौपदी महाभारतातल्या आणि राधा ही भागवत प्रेरित पुराणातली. 

तरुण कृष्णाबरोबर समर्पणाचं, श्रेष्ठ प्रेमाचं प्रतीक होऊन राहिलेली सुंदर युवती राधा आपल्या साऱ्यांच्याच ओळखीची, पण त्यानंतर वय उतरणीला लागलेल्या राधेची हकीकत मात्र पुष्कळ नंतरची. कृष्णाभोवतीचं, त्याच्या सहवासा वाचून त्याच्यात गुंतलेलं राधेचं भावविश्व सांगणारा अतिशय तरल असा या पुस्तकातला त्यांचा पहिला लेख 'राधा'. अनेक वर्षांच्या कृष्ण विरहानंतर आयुष्याच्या संध्याकाळी राधा कृष्णाला भेटायला जाते. सागर किनारी सूर्यास्ता नंतरची राधा कृष्णाची ती भेट, असा प्रसंग लिहावा हे वाटणंच मुळात किती कोमल आहे. तो इतका सहज, ओघवता असा अरुण ताईंनी लिहिला आहे. 

तारुण्यात राधेला गोकुळात तसाच सोडून गेलेला कृष्ण, त्यानंतर कित्येक वर्ष त्याच्या भेटीसाठी तळमळलेली राधा आज आता इतक्या वर्षांनंतर मथुरेत त्याला भेटते, तेव्हा त्या भेटीत आजवरच्या सुखदुःखाचे जमा खर्च स्वतःतून उसवून एकमेकांना सांगणं असं अगदी लाघवी आणि मधाळ संभाषण लिहिण्यासाठी प्रतिभेचा वरद हस्तच हवा, त्या खेरीज ते शक्य नाही. वाचताना अगदी शब्दागणिक मला हेच वाटत राहिलं. अरुणाताईंमधली शब्दसरस्वती केवळ अतुलनीय. राधेला इतक्या वर्षांमध्ये कृष्णाबद्दल पडलेले प्रश्न, तिचं सोसणं, त्याच्या वागण्याचं शल्य, त्याचं समजावणं, त्यामागची कारणं, तिचं त्याच्या बरोबर नसतानाही असलेलं त्याच्या भोवतीचं अस्तित्व, त्याच्यात राधेचं अगाध अडकलेपण, त्या त्या वेळी त्याचं केवळ राधेसाठीचंच असणं, इतकं गुंतलेपण असूनही त्या पूर्ण पुरुषाचं आतून असलेलं शांत अलिप्तपण असं हे सगळं साधणारा त्या दोघांमधला अतिशय परिपक्व, पण तितकाच हळुवार संवाद वाचताना आपल्याही भावनांचा एक तरल प्रवास आपसूक सुरु होतो. 

ते संवाद इतके जिवंत आणि बोलके लिहिले आहेत कि ती सारी दृश्य अगदी डोळ्यासमोर उभी राहतात, त्यातल्या भावनांसकट. कृष्णाच्या आवाजातला गहिरेपणा, कधी त्याच्या स्पर्शातला उष्ण भाव, तर कधी राधेच्या नजरेतलं हरवलेपण, कधी तिचा जाणता स्वर हे सारं केवळ वाचून आपल्या आत सहज उतरतं, इतकी परिणामकारक, तेजस्वी लेखणी. मला राधेचा लेख पाठोपाठ दोन वेळा वाचवा वाटला. आणि दोन्ही वेळा मी तितकच भारावलेपण अनुभवलं आणि त्यानंतरची शांत शांत अवस्था ही. 

राधा, कृष्णाच्या संवादातला एक छोटंसा भाग उदाहरणादाखल, वयोपरत्वे आलेलं शहाणपण मान्य करत ती कृष्णाला म्हणते, "माधवा, इतक्या वर्षांनी एक गोष्ट मात्र समजून चुकली, घटनेच्या इतर बाजू समजूनही, फरक पडत नसतो फारसा. घटना घडून जाते, आणि तिच्या बाजूही असंख्य, ही वस्तुस्थिती असते. दरवेळी आपल्याला कापतं नव्या बाजूच्या धारेनं. शहाणं व्हायचं म्हणजे तरी काय रे, दरवेळी नवी बाजू, नवी धार." यावरचं कृष्णाचं उत्तर, "पण जखमांचे अर्थ दरवेळी तेच नसतात राधिके. म्हणून मग त्या जखमांचं काय करायचं हा निर्णयही दर वेळी वेगळा असतो. तिला नकार द्यायचा, कि तिचा स्वीकार करायचा? तिचा प्रतिशोध घ्यायचा कि तिला क्षमा करायची, हे सगळं दरवेळी निराळं ठरतं. आणि ते ठरवताना सर्वस्वी जबाबदार आपण असतो, केवळ आपणच. "       

या पुस्तकातला यानंतर येणारा कुंती हा लेख. कुंतीच्या आईपणाचं कुतूहल त्यांना आधीपासून होतंच पण नंतर ती बाई म्हणूनही थोडी थोडी समजत गेली असं अरुणाताई म्हणतात. भावना आणि व्यवहार सुंदरपणे एक करणाऱ्या गांधारीच्या नशिबी आंधळा, नेभळट, किडका नवरा, असुसंस्कृत मुलगा आणि धूर्त, नालायक भाऊ आला नि त्यांच्याबरोबर तिचं आयुष्य अगदी फरफटत गेलं. अशा या गांधारी आणि कुंती या दोन जावांमधल्या संवादाने या लेखाची सुरवात होते. आयुष्यात केवळ आईपणच वाट्याला आल्याची सल कुंतीला आहे का हे चाचपडण्याचा प्रयत्न तिच्याशी संवाद साधत कृष्ण जेव्हा करतो तेव्हा ते ऐकून स्वतःतली रग अगदी गळून गेल्यासारखी ती त्याला म्हणते, माझं आईपण आणि बायकोपण एकमेकांत गुंतलेलं नाही. या दोन वेगळ्या गोष्टी असूनही त्यातलं अंतर मला कधी दिसलच नाही. नाहीतर पांडवांनी राज्यासाठी झुंजावं एवढं बळ मी कधी खर्ची घातलंच नसतं. कुंतीचा आधी गांधारीबरोबरचा, मग कृष्ण बरोबरच आणि नंतर द्रौपदी बरोबरचा अरुणाताईंनी लिहिलेला संवाद तिच्या स्त्रीत्वाची जातकुळी समजून घ्यायला भाग पाडतो. घटना इतिहासात घडून जातात, त्याची सत्यता पडताळणे हा वेगळा भाग पण त्या घडतानाच्या भूमिका, बाजू समजून घेताना मानवी स्वभावाचे पूर्वी पासून आज पर्यंत बदलत गेलेले कोने लख्खपणे समोर येतात ते अशा लिखाणातून. 

या पुस्तकातला तिसरा आणि शेवटचा दीर्घ लेख द्रौपदी. या लेखात द्रौपदीच्या केसांचे तिच्या दासीने केलेले वर्णन जवळपास दोन पानी आहे. ते वाचताना अरुणाताईंचे शब्द वैभव, त्यांचा कल्पना विलास अक्षरशः भारावून सोडतो.  निष्कांचन आणि अपमानित आयुष्य पदरात बांधून जगणारी ताठ, सुंदर, समंजस, बुद्धिमान आणि ऐश्वर्यवती अशी द्रौपदी. सर्वांपासून दूर, सर्वांच्या नजरेआड, कुणाला जाणीवही नाही, असं या बाईचं एक स्वतंत्र जगणं आहे. बी मधून झाड उगवावं, झोपेमधून स्वप्न उठावं, तसं एका जगण्यातून उगवलेलं दुसरं जगणं - स्वतंत्र.. अशी कृष्णसखी द्रौपदी. तिच्या अथांग आयुष्याचं सार अरुणाताईंनी या लेखात लिहिलं आहे, जे वाचताना बऱ्याच अनुत्तरित प्रश्नांचे किनारे माझ्यासाठी तरी मुडपले गेले.      
 
या साऱ्या गोष्टी पुराणातल्या. पण तरी सुद्धा याचे दुवे आजही आजूबाजूला सहज सापडतात. अजूनही तेच प्रश्न, तीच तगमग, तशीच धडपड, सारं तसंच. रूपं, काळ कितीही बदलला तरी मानवी मनातली मुळची स्वाभाविकता अजूनही तशीच. यापुढेही ती तशीच राहणार. आणि हाच उसवलेला धागा साधण्याचा अरुणा ताईंचा हे लेख लिहिण्यामागचा उद्देश असावा.
  
एखादं गाणं ऐकत असताना त्या लयीत, त्या स्वरांमध्ये आपण असे रमून जातो कि ते स्वर आपल्या आत खोलवर नंतरही पाझरत राहतात बराच वेळ, तशीच एक सुंदर लय हे लेख वाचताना जाणवली, इतकं प्रवाही, मन शांत करणारं, शब्दांचं सुख देणारं लिखाण, या पुस्तकात ओघळलं आहे ते संपूच नये असं वाटत राहतं, इतकी सुरेल शब्द सरिता. केवळ अप्रतिम. जरूर वाचावं असं अगदी वेडावणारं पुस्तक - अरुण ढेरे यांचं कृष्ण किनारा 


--- अश्विनी वैद्य 
१४. ०९. २२ 

Friday, February 08, 2019

एक कविता - अनुवादित



काल परवाच मुलाला एक इंग्लिश पुस्तक वाचून दाखवत होतो . फार मजेशीर गोष्ट होती इंग्रजी मध्ये ..वाचल्या नंतर त्या गोष्टीची केलेली कविता मराठीत अनुवादीत 

माकडाच्या पिल्लाची हरवली आई
कुठे शोधू तिला, त्याला समजल नाही
उगी उगी बाळा नको असे रडू
शोधू तिला आपण बोले फुलपाखरू

कशी आहे आई तुझी
सांग जरा मला 
शोधू तिला दोघे आपण
धीर धर थोडा

तशी आहे माझी आई
माझ्यापेक्षा मोठी
दिसत नाही कुठे तीही
नाव तिचे ओठी

तुझ्या पेक्षा मोठी ?
मग तर शोधायचीच खोटी
आहे माहित मला 
तू चल  तर खरा

नाही नाही फुलपाखरा
हा तर आहे हत्ती
नाही माझी आई
एवढी धट्टी कट्टी

नाही तिला सोंड
ना खांबा सारखे पाय
लांब आहे शेपूट तिची
झाडावर चढत जाय

लांब शेपूट उडे ?
चल मग पटकन  पुढे
नको पाहू तिकडे
आहे ती इकडे

बाप रे बाप हा तर आहे साप
सरपटत जाय अन नाही याला पाय 
फणा काढतो फुसकन
आई मात्र माझी उडी मारते धपकन

पाय असेलेला प्राणी
माझ्या लक्षात कोणी
आहे एक तिकडे
ये जरा इकडे

अरे रे रे रे रे रे  हा तर आहे कोळी
दिवसभर नुसता विणत बसतो  जाळी
खातो नुसता माश्या आणि किडे
आईला माझ्या तर आवडतात फळे

झाडावर का राहते तुझी आई ?
हे तर मला तू सांगितलेच नाही
वर बघ पटकन
दिसेल आई झटकन

हा तर हिरवा पोपट
याची चोच लाल लाल
पंखाविना आई माझी
मारते  उड्या  लांब लांब

अरेच्या एवढाच ना
तळ्याकाठी बघ ना
ती पहा तुझी आई
काठावर बसलीये ना

हिरवा हिरवा शेवाळी
हा तर बेडूक डराव डराव
माझी आई तपकिरी
घेते मला कुशीत उबदार

उबदार अन तपकिरी ?
बोलला नाहीस मला
चल वर झाडावर
शोधू आपण तिला

उलटे लटके झाडाला
हे तर आहे वटवाघूळ
नाही पंख आईला
सांगितलं मी तुला

नको होऊस बाळा
दुःखी आणि कष्टी
जाऊ आपण नदी काठी
शोधू सारी सृष्टी

नाही नाही फुलपाखरा
तुला समजतच नाही
हा तर पुन्हा तोच
मोठ्ठा धिप्पाड हत्ती

कसे न कळे तुला
हे प्राणी पक्षी
माझ्या सारखे कोणी
मुळी दिसतच नाही. 

मला ठाऊक नसे 
आई तुझ्या सारखीच दिसे
कळेल मला कसे
नाही म्हणालास तू  तसे

नाही म्हणालो मी तसे
मला वाटले तुला ठाऊक असे
आई ना माझी, माझ्या सारखीच दिसे 
माझ्या पेक्षा उंच आणि थोडी मोठी असे

मला कसे ठाऊक
फुलपाखरू म्हणे 
माझी छोटी छोटी सुरवंटी पिले
माझ्या सारखी कधी दिसतच नसे 

काळजी नको करू
फुलपाखरू म्हणे
कुठे लपेल तुझी आई
अरे ते पहा  तिथे

नाही नाही नाही
हे तर माझे वडील 
गेली कुठे माझी आई
कोण शोधून काढील

माकड म्हणे त्याला येरे माझ्या पिला
वेळ झाली आता चल जाऊया घरा
दिवस सारा ढळून जाई 
वाट पहाते रे ती पहा तुझी आई 

Saturday, February 13, 2016

काहीतरी असंच…!

सकाळी जाग आली…  विकेंड असला तरी घड्याळ न बघता ओळखलं  सहा वाजलेत… रोजची सवयच ती… बाहेर अंधारच होता … आकाशात ढग नसल्याने कदाचित आज It was a bright and sunny day in England अशा वाक्याने सुरु होणाऱ्या  गोष्टी प्रमाणे आजचा दिवशी सूर्य दर्शन होणार या आनंदात बाजूला पाहिलन … गृहलक्ष्मी, कुलदीपक आणि कुलदीपिका निवांत पणे पसरले होते.

आपण सकाळी उठलोय आणि आपल सर्व कुटुंब झोपलंय …अस दिवस म्हणजे सुखाची परिसीमा नाहीतर असा स्वतः साठी वेळ मिळणार तरी कधी ? त्यात दिवटी आणि टेंभा जागे झाल्यानंतर जे घर डोक्यावर घेतात काही विचारयला नको. तसा बायकोचा काही त्रास नसतो म्हणा…(त्रास असतो असं  म्हणायची माझी काय बिशाद…तशी पुसटशी देखील शंका आली तर तिथेच मांडी घालून बसून महाचर्चेला सुरुवत. आणि मग office च्या कामाच्या tension  मुळे किंवा चुकून माकून मी असे म्हणून गेलो… मला तसे म्हणायचे नव्हते असे गोड बोलून सुटका करून घ्यावी लागते. ) प्रभाते Mobile दर्शनम या श्लोकाप्रमाणे 'What's App' पहिले अपेक्षेप्रमाणे काहीही messages नव्हते. कारण आमच्या टोळभैरावातले सर्व मित्र आज वीकांत असल्याने कुटुंबवत्सल सदगृहस्थ किवा घरगडी झाले असणार त्यामुळे आता 'What's App' थेट सोमवारी … तरीही कोणी मित्र कट्ट्यावर जमलेच किंवा कुठेतरी चौखूर उधळलेच तर एखादा फोटो किंवा मेसेज आलाच तर येतो अन्यथा ग्रूप थंडच सोमवार पर्यन्त.

चहा करावा मस्त आणि 'शंकर' च मन मंदिरा ऐकत आस्वाद घ्यावा म्हणून स्वयंपाक घरात घुसलो…  आताशा  नुसतंच उजाडलं नव्हतं तर कोवळ्या उन्हाने गवतावरचं दवही चमकत होतं. आल्याच्या चहाच आधण उकळत होता आणि मन मंदिराचे स्वर कानात घुमत होते. मन कसं प्रफुल्लीत झालं होतं … थोड्याच वेळात बायको उठेलच…  मग गरमागरम चहा आणि बिस्किटे समोर आल्यावर स्वारी एकदम खूष होइल असा विचार मनात येतो तोच सौ चा mobile चा गजर वाजला…मी  मनाशी म्हणालो म्हणजे अजून अर्धातास आहे माझ्याकडे … तो पर्यंत मुलांसाठी breakfast रेडी करावा…

त्याचं काय आहे … बायकोचं  आणि घड्याळाचं एक वेगळाच गणित आहे… सहा वाजता उठायच असेल तर पावणेसहाचा गजर लावायचा … तो वाजला की बंद करून पंधरा मिनिट लोळत पडायचं … मग  प्रभाते Mobile दर्शनम… आणि मग त्यानंतर उठाण्याचं  टायमिंग हे  'What's App' वर आलेल्या मेसेजेस ची संख्या,  त्यावर द्यायच्या प्रतिक्रिया … एखादी मैत्रीण online असलीच तर काही मिनिटे आजू  जास्त… यावर अवलंबून असते. त्यासाठी काळ, काम, वेग किंवा संख्या शास्त्र यातलं कोणत ही सूत्र कामी येत नाही. त्यात वीकेंड असल्यामुळे ( पाहुणे आल्यावर आमटी ला तवंग यायला दोन चमचे तेल जसे जास्त सोडतात तसे ) अजून काही सेकंद (?) जास्तच. त्यामुळे मी आपला अंदाजपंचे अर्धातास धरून चालतो…

त्यात तिचे प्राथमिक शाळेचा एक ग्रूप, कॉलेज च्या मित्र मैत्रिणींचा एक ग्रूप, कॉलेज च्या फक्त मैत्रिणींचा एक ग्रूप असे अनेक ग्रूप आणि त्यावर चाललेय महा-चर्चा  किंवा काहीतरी टुकार कोडी 'खालील चित्रात किती चौकोन आहेत ते ओळखा पाहू' किंवा नवीन सुचलेल्या कविता …त्यावर केवलप्रयोगी अव्ययांचा होणारा भडीमार … आणि पौर्णिमेला जशी समुद्राला भरती येते तशी आज वीकेंड असल्याने मेसेजेस ची उधाणाची भरती आलेली असणार.

तेवढ्यात जिन्यातून चाहूल लागली बघतो तर काय दिवटी आणि टेंभा कुठलीही फुरफुर न करता शांतपणे खाली येउन hall मध्ये खेळत बसली… तोपर्यंत मी चहा, बिस्किटे आणि फ्रेंच टोस्ट घेऊन डायनिंग टेबलाकडे प्रयाण केले. तोपर्यंत बत्तीशीची चौसष्टी करीत बायको आलीच .  वाफाळत्या चहाचा कप तिच्या हातात देत, " आज मी बल्लवाचार्य आहे आणि मी आज स्वयंपाक करणार आहे. " अपेक्षे प्रमाणे बायको खूष … आणि मुलांच्या खांद्यावर बंदूक ठेवून " अरे वा , आज कि नाही पप्पा छान उकडीचे मोदक, सुरळीवड्या आणि भरली वांगी असा बेत करणार आहेत. " असा वार केलाच … "स्वयंपाकाला पाककौशल्य वैगेरे म्हणायची काय गरज आहे...किती सोप्पं असतं ते…" ह्या माझ्या त्रिकालाबाधित सत्य वाक्यावर केलेला प्रतिघात होता तो.  रोज रोज पोळीभाजी खाऊन कंटाळा आल्यावर शनिवारी रविवारी काहीतरी नवी करावे असा माझा विचार असतो. त्यात नाव नवीन पदार्थ खाण्याची मला आवड असल्यामुळे मी कुठेही holidays ला गेलो तरी Indian Restaurant शोधत बसत नाही.  परंतु बायको खाण्याच्या बाबतीत चोखंदळ (घरगुती (हे स्वगत)) असल्याने  तिला मात्र भारतीय  पदार्थ पसंतीस उतरतात आणि  त्यामुळे आमची holiday destinations भारतीय restaurant जवळपास नसेल तर reject  होतात.

असो आज 'शिजल रं' चा बेत ठरवून टाकला… (उगाच नाही बार्बेक्यू नेशन ला वीकेंडला रांगा लागत) 'शिजल रं' ही आपल्या मातीत जन्मलेली पाककृती आहे आणि साहेबांनी तिचा Sizzler नामकरण करून जगप्रसिद्ध केलं आणि असे माझ्या वैयक्तिक पाककौशल्य संशोधनातून सिद्ध झाले आहे …

पडत्या फळाची आज्ञा समजून आणि आयते जेवायला मिळणार यामुळे बायकोने फार आढेवेढे न घेत माझ्या पाकक्रियेस (तिच्या भाषेत "घाला काय गोंधळ घालायचाय तो….मला काहीही चालेल…."  ) अनुमोदन दिले. आणि स्वयंपाक घराचा भटारखाना होणार याची मनाशी पक्की खात्री बाळगत, पायात बूट अडकवून बाहेरच्या कोवळ्या सूर्य प्रकाशात फेरफटका मारण्यासाठी बाहेर पडली.

इकडे मी तेल मसाल्याचे उटणे लावून marination करून गरम oven  मध्ये टाकला आणि timer सेट करून वात पाहू लागलो.  काय अवघड आहे स्वयंपाक करण्यात? फक्त आवड हवी…  कुकरी (Cookery ) हे दुधारी शस्त्र आहे साधला तर फर्मास नाहीतर आहे करपलेला भात…पूर्वी कुकण्यात बायका आघाडीवर होत्या आजकालच्या जमान्यात स्त्रियांच्या हाताला हात लावत पुरुष पण कुकण्यात आघाडीवर आहेत … (टीप : पाककृती , कौशल्य , हे जसे संस्कृत मधून मराठी भाषेत आलेले शब्द आहेत तसाच कुकणे हा आङ्ग्ल भाषेतून जसाच्या तसा मराठीत आलेला शब्द आहे … कानाला सवय करून घ्या ) देश विदेश भाषा आणि प्रदेश जसे बदलतात खाद्य संस्कृतीही बदलते. मला वाटतं  पाककौशल्य जे काय म्हणतात ते फारस अवघड नसाव नाहीच। पण काही पदार्थांना एक हाताची चव असते ती मात्र दुसरं  कोणीच घडवू शकत नाही . माझ्या आजीच्या हातची कारल्याची भाजी जगातली सगळ्यात उत्तम चवीची होती… त्यात गूळ  किती घालायचा तिखट किती घालायचं  आणि सकाळी लवकर भाजी करून मुरवत कशी ठेवायची आणि वाढताना किती गरम करायची याचं जे काही कौशल्य ते खरा पाककौशल्य … गूळ  कमी पडला तर कडू लागते … जास्त पडला तर गुळमट… मुरली नाही तर सुरुवातीला गोड आणि नंतर कडू लागते… 'चवीपुरतं' तिखट मीठ घालून मुरलेली आजीच्या हातची कारल्याची भाजी गोड, तिखट कडू , तुरट या चवींचा अभूतपूर्व संगम त्या लुसलुशीत पण गरमागरम बाजरीच्या भाकरीबरोबर खाल्लेल्या घासला स्वर्गीय चव असते… ती चव tea spoon , table  spoon च्या मोजमापात नक्कीच हरवून जाईल… आजी गेली आणि तिच्या हातच्या कार्ल्याच्या भाजीला आम्ही सगळेच पारखे झालो.

इतक्यात oven  चा timer  आरवला 'शीजल रं ' आणि मी भानावर आलो. एव्हाना बायकोपण उन्हात फेरफटका मारून जेवायच्या वेळेत परत आलो होती… आणि पाहिल्याच घासला डोळे मिटून 'व्वा सुरेख !' अशी दाद तिच्या तोंडून ऐकली आणि मी भरून पावलो …       


Sunday, September 08, 2013

C++ declarations



consider C++ declaration

const int *kings[];  
what is it ? is it an array of pointers to ints or pointer to array of ints ?

The Rule is simple:
  • There are two types of operators in the declarations prefix and postfix. 
  • postfix operators bind tighter than prefix ones.
  • thus const int *kings[]  is array of pointers. where as to declare pointer to array you have to use brackets.
  • const int (* kings)[]; // now we have increased precedence of * by brackets and hence it is pointer to array of ints
const int *kings[]; //array of pointers of ints .
const int (*kings)[]; //pointer to array of ints

similarly

const int (*kings)(); //pointer to a function taking no params and returning const int.

be aware where the brackets go 

const (int *) kings[] /// is WRONG.

Tuesday, July 30, 2013

Loops

Beware of unsigned variables when writing the counting down loops.

unsigned types wrap around to give a very large positive numbers and loop never ends.

e.g.

for(size_t var (8); var >=0; --var) { //this is an infinite loop }

where as

for(int var(8); var>=0; --var) { // is a finite loop }

here var is int ( signed type) hence it will eventually become negative hence loop will terminate.

worth paying attentions to such pitfalls.

Saturday, June 22, 2013

Bash bits and pieces


  • Create a file named -i in the directory like $touch a; mv a -i;
  • Now if you to accidentally rm * , file -i will be treated as argument to rm and will run rm command in interactive mode preventing accidental deletion of files.
  • Even if you delete all the files following the interactive command file -i will not be deleted.
  • Enjoy!

Saturday, May 11, 2013

Inheritance for encapsulation. Some sort of design pattern.

Inheritance for encapsulation. Some sort of design pattern.

Today we are going to see how inheritance can be used to hide implementation details.
We have 
PersonInterface - Abstract class ( PersonInterface.{h,cpp} )
RealPerson - Derived from PersonInterface and implements PersonInterface.
(RealPerson.{h,cpp}
main.cpp - the main function.

PersonInterface.h

//
//  PersonInterface.h
//  InterfaceDemo
//
//  Created by Mandar Vaidya on 10/05/2013.
//  Copyright (c) 2013 Mandar Vaidya. All rights reserved.
//

#ifndef __InterfaceDemo__PersonInterface__
#define __InterfaceDemo__PersonInterface__
#include<string>

class PersonInterface {
public:
    virtual ~PersonInterface(){};
    virtual std::string name() const =0;
    virtual std::string address() const=0;
    //NOTE: I am returning a pointer.. it is bad idea instead I should have returned a shared_ptr.
    //      This is just to elaborate the concept.
    //This function is a public function implementation inside the abstract class
    //This returns the object of derived class refer. Effective C++ 3rd Ed. Item 31
    //      1. This is a factory function.
    //      2. This is public static function in base class or interface class that returns
    //         derived class object.
    static PersonInterface* create(const std::string& name, const std::string& address);
};
#endif /* defined(__InterfaceDemo__PersonInterface__) */

PersonInterface.cpp

//
//  PersonInterface.cpp
//  InterfaceDemo
//
//  Created by Mandar Vaidya on 10/05/2013.
//  Copyright (c) 2013 Mandar Vaidya. All rights reserved.
//

#include "PersonInterface.h"
#include "RealPerson.h"
//NOTE: I am returning a pointer.. it is bad idea instead I should have returned a shared_ptr.
//      This is just to elaborate the concept.
//This function is a public function implementation inside the abstract class
//This returns the object of derived class refer. Effective C++ 3rd Ed. Item 31
//      1. This is a factory function.
//      2. This is public static function in base class or interface class that returns
//         derived class object.
PersonInterface* PersonInterface::create(const std::string& name, const std::string& address)
{
    return new RealPerson(name,address);
}P

RealPerson.h

//
//  RealPerson.h
//  InterfaceDemo
//
//  Created by Mandar Vaidya on 10/05/2013.
//  Copyright (c) 2013 Mandar Vaidya. All rights reserved.
//

#ifndef __InterfaceDemo__RealPerson__
#define __InterfaceDemo__RealPerson__

#include "PersonInterface.h"

class RealPerson :public PersonInterface
{
public:
    RealPerson(const std::string& name, const std::string& address);
    
    virtual ~RealPerson();
    virtual std::string name() const;
    virtual std::string address() const;
    
private:
    std::string theName;
    std::string theAddress;
    
};
#endif /* defined(__InterfaceDemo__RealPerson__) */

RealPerson.cpp

//
//  RealPerson.cpp
//  InterfaceDemo
//
//  Created by Mandar Vaidya on 10/05/2013.
//  Copyright (c) 2013 Mandar Vaidya. All rights reserved.
//

#include "RealPerson.h"

RealPerson::RealPerson(const std::string& name, const std::string& address)
: theName(name), theAddress(address)
{
}

RealPerson::~RealPerson(){}
std::string RealPerson::name() const
{
    return theName;
}
std::string RealPerson::address() const
{
    return theAddress;
}

Main.cpp

//
//  main.cpp
//  InterfaceDemo
//
//  Created by Mandar Vaidya on 10/05/2013.
//  Copyright (c) 2013 Mandar Vaidya. All rights reserved.
//

#include <iostream>
#include "PersonInterface.h"

int main(int argc, const char * argv[])
{
    PersonInterface* ptr = PersonInterface::create("MANDAR","31 Salders Court");
    
    std::cout << "Name: " << ptr->name() << " Address: " << ptr->address();
    
    delete ptr;
    
    return 0;
}

Analysis:

  • PersonInterface is an abstract class and provides the interface for personal details such as name and address etc.
  • There are only interface methods declared as pure virtual in the base class. Note that member variables are not declared/ defined.
  • Base class also has a static function that takes in parameters, which then creates and returns derived class object on heap.
  • Note: Actually create function ( also called as factory method ) should return the shared pointer to enable RAII and prevent accidental memory leak in case object is not deleted. but this is a quick example hence I have got away with the pointer.
  • RealPerson class is derived from PersonInterface and it defines its own private member variables. It also implements the interface provided by PersonInterface.
  • It also provides public constructor so that base class's static function can create its object.
  • If you now look at main.cpp It only depends on PersonInterface shown by including PersonInterface.h only. RealPerson is hidden from the main function and it's implementation can change any time as long as public interfaces remain same.
  • As main function doesn't depend on the RealPerson, even if it changes, recompilation of main.cpp is not required only new object file is linked with main.obj. This way dependency is reduced.
  • Also note that runtime polymorphism is in play as PersonInterface pointer is used to refer to RealPerson object. 
  • Also strongly note that both the destructors (base and derived) are marked as virtual so that runtime polymorphism works.