"Inception" & "C" Programming

21 प्रतिक्रिया
हा चित्रपटाचा रिव्ह्यु नाही. Inceptionचा रिव्ह्यु लिहण्याची सध्यातरी माझी लायकी नाही.
हॉलिवुडचे काही चित्रपट नुसते मनोरंजन किंवा कला ह्यापुरते मर्यादित नं रहाता त्या परिसीमा पार करुन विज्ञानाचा एक अभ्यासपट म्हणुन समोर येतात. तो चित्रपट पाहताना एखाद्याने त्याच्या/तिच्या PHD रिसर्चची थेसिस डिफेन्ड केल्याचा भास होतो. Inception त्यापैकीच एक.
ख्रिस्तोफर नोलान... काय म्हणावं मी. थोर आहेस तु (हे प्रेमाने केलेलं अरेतुरे आहे). मला सर्वात जास्त कौतुक एका गोष्टीचं वाटतं ती म्हणजे, हे लोक एखादी (काल्पनिक/अभुतपुर्व/जटिल) कल्पना करतात आणि ती लोकांसमोर "समजेल अशी मांडतात". अशी कल्पना "मांडणं" हे आणि फक्त हेच खरं कौशल्य आहे. तर ह्याची संकल्पना एकंदर अशी आहे की...
कोणाच्याही डोक्यातली गुपितं त्याला शारीरीक इजा नं पोहचवता त्याच्या स्वप्नांमधे जाऊन, ती त्याची स्वप्न नियंत्रित करुन काढुन घेणं. आणि एवढेच नव्हे तर त्याच्याच त्या नियंत्रित केलेल्या स्वप्नांमधे जाऊन, त्याच्या सुप्त मनामधे आपली कल्पना रुजवणे. बरं आणि हे करताना अश्या पद्धतिने करायचं की स्वप्न बघणाऱ्याला वाटावे स्वप्न आणि कल्पना दोन्ही त्याच्याच आहेत.
पण हे असं का करायच? म्हणजे असं स्वप्नात जाऊन असले उद्योग कशासाठी? कारण - वेळ. भौतिक जगात अनन्य महत्व असलेली - वेळ. ह्या वेळेला तुम्ही थांबवु शकत नाही, ना तिची गती कमीजास्त करता येते. त्यामुळे एखाद्या कामासाठी लागणारा कालावधी कमी असेल तर??? पण मग त्यात एखाद्याची स्वप्न कशी काय मदत करु शकतिल??? हांsss... तर हिच आहे ह्या सिनेमाची स्टोरी.
स्वप्नांमधे (म्हणजे स्वप्न बघताना) एखाद्याचा मेंदु प्रचंड गतीने कार्यरत असतो. त्यामुळे होतं काय की ह्यामुळे वेळ मंदावली जाते. भौतिक जगातील एक सेकंद हा स्वप्नांमधे काही तासांएवढा होतो. मग समजा जर मी स्वप्नात स्वप्न पाहिलं तर??? पहिल्या पातळीवर (पहिल्या स्वप्नात) एका सेकंदाचे काही तास, दुसऱ्या पातळीवर (पहिल्या स्वप्नातल्या स्वप्नात) त्या तास काही दिवस होतिल आणि पुढच्या पातळीवर त्या दिवसांच रुपांतर काही वर्षांमधे... म्हणजे मला एखादं काम काही सेकंदात करणं अशक्य असेल तर मी तिसऱ्या पातळीवरच्या स्वप्नांमधे जाऊन त्यासाठी काही वर्ष एवढा मोठ्ठा कालावधी मिळवु शकतो. शिवाय हि स्वप्न एखाद्याची विचारसरणी/वागणुक पुर्ण बदलु शकतात. त्यामुळे जर मी त्याचं स्वप्न त्याच्या नकळत नियंत्रित केलं (स्वप्नांना सुरुवात आणि अंत नसल्याने ती नियंत्रित करता येऊ शकतात) तर मी त्याला एक पुर्ण नवा माणुस बनवु शकतो. ब्रेनवॉशसारखं वेळखाऊ काम मी अतिशय कमी वेळात करु शकतो. भाsssरी.... बरं हि स्वप्न नियंत्रित करणं म्हणजे काय जॉयस्टिक हातात घेऊन व्हिडिओगेम खेळण्याइतकं सोपं नाही. चित्रपटातल्या कहाणीनुसार तिसऱ्या पातळीवरची स्वप्न (तिसरी पातळी म्हणजे maximum limit) खुप अनस्टेबल असल्याने नियंत्रित करणं खुप कठिण... जवळपास अशक्य. ताळमेळ चुकला तर व्यक्ती स्वप्नातुन बाहेर येईल पण प्रचंड मानसिक धक्का घेऊन किंवा त्याच स्वप्नांमधे कायमची अडकुन जाईल. पण चित्रपटातला हिरो ह्याच्या कैक कैक पार... पाचव्या पातळीवरच्या स्वप्नात जातो.
Inception चित्रपटाची बांधणी अप्रतिम आहे. Open end असलेला हा चित्रपट आहे. त्यामुळे मुव्ही पाहुन झाल्यावर तुम्ही चर्चाचर्वण करुन रवंथ करणार हे नक्की.

हम्म्म... पण मी हे सगळं लिहितोय का? पहिल्यांदाच एखाद्या चित्रपटाबद्दल, तेपण "Inception"बद्दल? कारण मला ह्या चित्रपटाचा कन्सेप्ट "C" Programming सारखा वाटला (to some extend - only time factor is missing). How? well, now to understand what I say, you should at least have basic knowledge of "C" Programming. "C" languageमधे एक "Pointer" म्हणुन कन्सेप्ट आहे. हा एक असा variable आहे जो "memory address" स्टोअर करतो.
उदा.:
int x = 10; //variable 'x' has value 10 stored in it
int *y;
y = &x; //now 'y' is a Pointer, pointing to memory address of 'x'
print x; // output: 10
print y; // output: 0012FEDC
print *y; //output: 10
// *y same as *(&x), also read as value at address of x, which is 10
पण तरी हा फंडा Inceptionशी रिलेटेड कसा?

कारण १:
Inception चित्रपटात दाखवल्याप्रमाणे एखाद्याच्या स्वप्नांद्वारे त्याचे सुप्त मन नियंत्रित करुन त्याची मुळ विचारसरणी किंवा व्यक्तिमत्वच बदलता येऊ शकतं आणि होणारा हा परिणाम कायमस्वरुपी असतो.
Pointerने सुद्धा एखाद्या variableची value कायमचीच बदलते. ह्याला scope resolution असंपण म्हणतात.
उदा.:
{ // first scope starts
     int x = 10; // value of x in first scope
     print x; // output: 10
     { // second scope starts
        x = 5; // value of x in second scope
        print x; // output: 5
     } // second scope ends which discards everything within it
     print x; // output: 10
} // first scope ends
वरच्या उदाहरणावरुन तुमच्या लक्षात येईल की दुसऱ्या scopeमधे मी 'x'ची value बदलली. पण तरी दुसऱ्या scopeमधुन बाहेर आल्यावर 'x'ची value पुन्हा 10च झाली.
हेच जर मी Pointerने केलं तर काय होईल बघा...
{ // first scope starts
     int x = 10; // value of x in first scope
     print x; // output: 10
     int *y;
     y = &x;
     print *y; // output: 10
     { // second scope starts
        *y = 5; // *(&x) read as value at address of x = 5
        print x; // output: 5
     } // second scope ends
     print x; // output: 5
} // first scope ends
आता इकडे मी 'x'ची value बदलली नाही, तर जिकडे स्टोअर केलाय त्या ('x'च्या) memory addressवरची बदलली. त्यामुळे दुसऱ्या scopeमधुन बाहेर आल्यावर 'x'मधे त्या memory addressवरची नविन value असेल.

आता हे झालं बेसिक. Incetionमधे कसं स्वप्नात स्वप्न आणि त्याच्या आत पुन्हा स्वप्न दाखवलय तसंच इकडेपण pointerला pointer आणि त्या pointerचा pointerपण define करु शकता.
म्हणजे पहिल्या levelवरचा pointer एखाद्या variableचा memory address store करतो. (ह्याला हाताळतानाच तोंडाला फेस येतो.)
int x;
int *y;
y = &x;
दुसऱ्या levelवरचा पहिल्या levelच्या pointerचा memory address store करतो.
int x;
int *y;
y = &x;
int **z;
z = &y;
तिसऱ्या levelवरचा दुसऱ्या levelच्या pointerचा memory address store करतो.
int x;
int *y;
y = &x;
int **z;
z = &y;
int ***i;
i = &z;
पण अजुन मला नाही वाटत कोणी तिसऱ्या पातळीवरचा pointer वापरला असेल. कारण programmingमधे पहिल्या levelवरचा pointerच प्रोग्रॅमर्सची level लावायला पुरेसा आहे. दुसऱ्या levelला तर programmersची १००% फें फें उडालेली असते.

कारण २:
चित्रपटानुसार माणसाच्या ह्या स्वप्नसाखळीचे दुरगामी कायमस्वरुपी परिणाम त्याच्यावर होत असल्याने, समजा त्याच्या स्वप्नात काही अघटीत घडलं (समजा तो मधल्याच एखाद्या स्वप्नात मेला) तर पुढच्या आणि मागच्या स्वप्नांचा संपर्क तुटेल आणि तो स्वप्नातुन बाहेर आला नाही तर खऱ्याखुऱ्या जगात तो कोमामधे जाऊ शकतो. तसं झाल्यास बाहेर काढण्यासाठी त्या स्वप्नात किंवा त्याच्या पुढच्या पातळीवरच्या स्वप्नात जाऊन योग्य क्रमाने आणि पद्धतिने स्वप्न संपवणं गरजेचं आहे.
Pointers हाताळतानापण अशी काळजी घेणं गरजेचं असतं. नाहितर त्या pointerचा "Dangling Pointer" होतो. Dangling Pointer म्हणजे असा pointer जो चुकिच्या (वापरात नसलेल्या) memory addressला point करतो. अश्या pointerमुळे अकारण memory space खाल्ली जाते आणि प्रोग्रॅम क्रॅशदेखिल होऊ शकतो.
उदा.:
{ // first scope starts
     int *x;
     { // second scope starts
        int y;
        x = &y;
     } // second scope ends, y falls out of scope
     // x is now a Dangling Pointer pointing to deallocated memory of y
}// first scope ends
हा तर पहिल्याच levelवरचा होता. अजुन complex pointerअसता आणि मधलाच कोणता pointer गंडला तर तुमचा प्रोग्रॅम बोंबल्लाच समजा. अश्या प्रॉब्लेमला टाळण्यासाठी ज्या scopeमधे pointer define केला त्या scopeमधुन बाहेर येण्यापुर्वी त्याला Nullify करावा.
उदा.:
{ // first scope starts
     int *x = NULL;
     { // second scope starts
        int y;
        x = &y;
        /* ... */
        x = NULL;
     } // second scope ends, y falls out of scope
     // x is no more a Dangling Pointer
}// first scope ends
हुश्श्श्श... झेपलं का काही??? नसेल तरी हरकत नाही. मीच पुर्ण गोंधळलेलो लिहतालिहता... ख्रिस्तोफर नोलानने एवढा कठिण विषय इतक्या सहजपणे कसा काय चित्रित केला आश्चर्यच आहे. असो... पण Inception बघा नक्की.


आपला,
(Dangling) सौरभ

श्री रजनि महात्म्य

9 प्रतिक्रिया
|| ॐ नमो रजनिदेवोः नमः ||
|| श्री आळसोबा प्रसन्न ||

(सौऱ्याभौऱ्या... अरे सगळीकडे रजनि बसतायत आणि तुझ्या ब्लॉगवर त्याचा नामोल्लेखसुद्धा नाही...!!!??? पापम्... पापम्... त्या संकेतस्वामींनी रजनिदेवाच्या आरत्या रचल्या, आकाशने "संपुर्ण चातुर्मासा"प्रमाणे "संपुर्ण रजनिकांत" लिहायचा घाट घातलाय आणि तु... आँsssक थ्थूsss... अरे स्वतःला रजनिभक्त म्हणवून घेतो आणि ब्लॉगवर त्याबाबतित एवढी उदासिनता!!! परम् पापम्... परम् पापम्...)

खाड्ड्ड... (हा मुस्काट फोडल्याचा आवाज नव्हे)
खाड्ड्डदिशी डोळे उघडले...
देवा माफी माफी माफी...
हि घे कॉफी टॉफी... सॉरी सॉरी... हि घे चिंगम कॉफी...
(हुश्श्श... रजनिदेवाचा कोप टळला...)

मला अत्ता कळलं माझा ब्लॉग एवढा दुर्लक्षित का... असो... आता मी वेळ नं दवडता मला साक्षात्कार झालेली रजनिदेवासंबंधिची काही वैश्विक सत्ये इकडे मांडतो आहे. ह्याआधी फेसबुकवर ती झळकावली होतीच. पण आता ती ब्लॉगवर टाकून ब्लॉगची दृष्टच काढतो.

हि वैश्विक सत्य असल्याने वैश्विक (अर्थात इंग्रजी) भाषेत आहेत. रजनिदेवाचा महामंत्र "MIND ITT" वैश्विक असल्याने तोपण इंग्रजीतच आहे.

So what I say...
  • Hanumanji ripped his chest and showed Ram and Seeta, Rajani teared his chest and showed complete Ramayana (that too in HD).
  • Taj-Mahal is not white because it is made of marble. It was colourful but fainted when Rajini went to see it.
  • No one can write autobiography of Rajni, cause his Resume/CV only caused to be the world'd biggest book.
  • Rajni used insect killer while Programming, and so his programs are bug free.
  • Rajinikant can give pain to Painkillers and headache to Anacin.
  • Rajini can make cold to sweat and fire to freeze.
अत्तापर्यंतच्या समाधीसाधनेचे फळ म्हणुन हि सत्य पंचमहाभूतांकडुन आमच्या पंचेंद्रियास जाणवली. जसजशी हि तपश्चर्या अधिकाधिक तीव्र होईल तसतशी जास्त रजनिसत्य समोर येतिल आणि त्याचे खुले ज्ञान तुम्हालादेखिल करुन देण्यात येईल.
तोवर बोला "MIND ITT" अण्णा... रजनिच्या नावानं "MIND ITT" अण्णा...

आपला,
(रजनिभक्त) सौरभ

बाजी

12 प्रतिक्रिया
ब्बारं... आता तुम्हाला "बाजी मारणे" हा शब्दप्रयोग कसा रुढ झाला माहितीये का??? ह्यॅ ह्यॅ ह्यॅ... मी तुमची भाषापरीक्षा घेत नाहिये. पण "शल्य बोचणे" ह्या शब्दप्रयोगाची व्युत्पत्तीकथा ऐकून "बाजी मारणे" हा शब्दप्रयोग कसा जन्मला ते आठवलं आणि राहवलं गेलं नाही म्हणून सांगावसं वाटलं. बरय हे सांगण्यासाठी मी जास्त पकवत नाही. मी खाली जो दुवा देतो आहे त्यावरचा लेख आवर्जुन वाचा.

http://www.loksatta.com/lokprabha/20090515/cover.htm

ठळक नोंदी:
  • अपराजित कामगिरीने पराक्रम, विजय अश्या शब्दांना नविन ओळख देणारा - बाजी.
  • जगाच्या इतिहासातील एकमेव अजेय योद्धा - बाजी.
  • १७२८ मधील पालखेडची लढाई म्हणजे 'मास्टरपीस ऑफ स्ट्रॅटेजिक मोबिलिटी'. लष्करी डावपेच आणि रणनीतीच्या अभ्यसक्रमात हि लढाई आजही अमेरिकन सैनिकांना शिकवली जाते. असा चाणाक्ष युद्धनीतीज्ञ - बाजी.
  • सर्वात वेगवान घोडदळ असणारा योद्धा - बाजी.
  • पोख्त, प्रामाणिक, सत्यवचनी, द्रष्टा, मातब्बर, हळवा पण स्वतःबद्दलच्या चुकीच्या ओळखीच्या ग्रहणाने झाकोळलेला असा - बाजी.

आपला,
(बाजीस कुर्निसात) सौरभ

शल्य

21 प्रतिक्रिया
तुम्हाला कधी शल्य बोचणे/टोचणे, शल्य राहणे असला अनुभव आलाय का? मला सांगा शल्य बोचायला/टोचायला तो काटा आहे कि रहायला दुःखाला समानार्थी शब्द आहे? आयला मग हे शल्य म्हणजे मॅटर हाय काय? वेल, नसेल माहित तर मग तुम्हाला खालचा फाफटपसारा वाचावा लागेल....

डॉक्टरचा सहज फोन आला. २०-२५ मिनिटं शिस्तीनुसार आम्ही एकमेकांना पकवलं. मग फोन ठेवता-ठेवता...
डॉक: चल मग, ठेवतो. बोलू नंतर. जय श्रीराम.
मी: जय नकुल-सहदेव.
डॉक: हे काय??? नकुल-सहदेव का???
मी: आता तु जय श्रीराम बोल्लास, मी जय श्रीकृष्ण बोल्लो असतो. नेहमीची नावं झाली ती. म्हटल कोणा वेगळ्याचं नाव घेऊ. तसंपण नकुल-सहदेवांना कोणी विचारत नाही. ह्या नकुल-सहदेवांचा काही रोल होता का रे महाभारतात?
डॉक: हो, मग काय. कर्ण ह्यांच्यामुळे हरला.
मी: ऑ... काय सांगतोयस???
डॉक: हो. नकुल-सहदेव माद्रीची मुलं. शल्य माद्रीचा भाऊ, म्हणजे ह्यांचा मामा. महाभारताची लढाई झाली तेव्हा शल्य त्याचं सैन्य घेऊन पांडवांच्या मदतीला निघाला. पण तो वाटेत असताना शकुनीने डाव रचला. त्याने त्याच्यासाठी महाल बांधला. त्याची आणि त्याच्या सैन्याची खाण्यापिण्याची सगळी व्यवस्था केली. शल्याला माहित नव्हतं कि हे सगळं शकुनीने केलय. त्याला वाटलं कि युधिष्ठीराने हा सगळा पाहुणचार केला. युधिष्ठीराला तो थॅंक्यू म्हणायला गेला तेव्हा युधिष्ठीर बोल्ला की मी हे काही केलं नाही, मला काही माहित नाही. नंतर त्याला समजल की हे सगळं दुर्योधन आणि शकुनीने केलय. क्षात्रधर्मानुसार एखाद्याचं आदरातिथ्य घेतल्यावर तुम्ही त्याचं देणं लागता. शल्याने दुर्योधनाचं आदरातिथ्य घेतल्याने त्याने  दुर्योधनाला विचारलं की तुला ह्या बदल्यात काय पाहिजे? दुर्योधन शल्याला म्हणाला, तु तुझ्या सैन्यासह पांडवांविरुद्ध लढायला मला मदत कर. आता शल्य त्याच्या बहिणीच्याच मुलांविरुद्ध कसा लढेल? तेव्हा तो दुर्योधनाला म्हणाला, मी तुला माझं सैन्य देतो पण नकुल-सहदेव माझे भाचे आहेत. मी त्यांच्याविरुद्ध लढणार नाही. हवंतर मी तुझं सारथ्य करतो. श्रीकृष्णानंतर सारथ्य करण्यात जर कोणी पारंगत असेल तर तो शल्य होता. अर्जुनाला टक्कर देणारा धनुर्धारी कर्ण होता. अर्जुनाचा सारथी श्रीकृष्ण, म्हणुन कर्णालापण श्रीकृष्णाच्या तोडीचा सारथी मिळावा म्हणुन दुर्योधनाने शल्याला कर्णाचं सारथ्य करायला सांगितलं. शल्य तयार झाला. पण शल्याने कर्णाची वाट लावली. सारथ्याचं काम असत की तो ज्या योद्ध्याचं सारथ्य करतो त्याला प्रोत्साहित करायचं, जसा श्रीकृष्ण अर्जुनाला करायचा. पण शल्य कर्णाला घाबरवायला बघायचा. त्याला नेहमी टाकूनपाडुन बोलायचा. कर्णाला तसापण शाप होताच. जेव्हा त्याला सर्वात जास्त गरज असेल तेव्हा त्याला त्याची विद्या वापरता येणार नाही. त्याला काही आठवणार नाही, त्याच्या मनात भिती असेल. कर्णाला डिमोरलाईझ करण्याचं सगळ्यात मोठ्ठ काम शल्याने केलं.
म्हणुनच मराठीत शल्य बोचणे/टोचणे/राहणे म्हणतात ते ह्यावरुनच.
मी: (फुलऑन आश्चर्यचकित!!! बोलेतो भौचक्का!!!) क्कॉय बोलतो...
डॉक: हो, कारण शल्याने मानसिक खच्चीकरण केलं.

तर आता तुम्हाला समजलं असेलच शल्य बोचणे/टोचणे/राहणे हा शब्दप्रयोग बोलीभाषेत कसा आला. त्यामागे एवढं मोठ्ठं रामायण... सॉरी महाभारत घडलं.

अवांतर:
मी: ते ठिकाय. पण ह्यात नकुल-सहदेवांचा काय संबंध???
डॉक: अरे, आता नकुल-सहदेव शल्याचे भाचे म्हणुन तो त्यांच्याविरुद्ध लढला नाही. आणि त्यांच्यामुळेच कौरवांच्या साईडने असुनपण पांडवांच्या फायद्याचं केलं.
मी: हम्म्म्म्म... इनडायरेक्ट रिलेशन. कॉम्प्लीकेटेड आहे.
पुढे आमच्या महाभारत ह्या टॉपिकवर बराचवेळ गप्पा झाल्या. डॉक्टरला महाभारत हा इतिहास असल्याचा पुर्ण विश्वास आहे. मला ते खरंखोटं ठरवण्याचा विवाद करण्यात रस नाही. महाभारत हे एका ऋषिने कोणा राजाला ऐकवलं होतं. राजाचं नाव आठवत नाही, पण डॉकने त्या ऋषिचं नाव सौती असल्याचं सांगितलं आणि सौतीने जे सांगितलं ते म्हणजे 'महाभारत'. व्यासांनी जे लिहलं ते 'जय' म्हणुन, ज्यात ३२,००० ओव्या आहेत/होत्या. पुढे त्यात अनेक ऋषिमुनींनी त्यांच्यात्यांच्या ओव्यांची भर टाकली, ज्यामुळे त्या ओव्यांची संख्या १ लाखाच्या आसपास गेली. ह्यामुळेच आणि भाषांतर करताना भावार्थ समजुन नं घेता शब्दार्थ समजुन घेतल्याने महाभारतातल्या (रामायणातल्यासुद्धा) अनेक घटनांची तर्कसंगती लावणं निव्वळ अशक्य आहे.

आपला,
(शल्यविशारद) सौरभ