डॉट नेट फ्रेमवर्क

डॉट नेट फ्रेमवर्क हा शब्द अनेकदा कानावर पडतो. हे नेमकं काय आहे, कसं काम करतं याचा थोडा उहापोह करण्याचा इथे मी प्रयत्न करणार आहे.

डॉट नेट फ्रेमवर्क म्हणजे नेमकं काय?

फ्रेमवर्क म्हणजे अनेक components चा  जसं libraries, dlls, functions, classes इ. यांचा एकत्रित संच. ह्यामुळे कोणतेही application करणे सुसह्य होते.  हे सर्व एकत्र करून जर एका ठिकाणी आपल्याला दिले, तर आपल्याला हव्या त्या गोष्टी वापरून आपण आपल्याला हवे ते application बनवू शकतो.

मायक्रोसॉफ्टने उपलब्ध करून दिलेले हे डॉट नेट फ्रेमवर्क वापरून आपल्याला अनेक भाषांमधून code करणे सहज शक्य होते. जसं VB.Net / C#.Net/ J#.Net/ ASP.Net आहे ना ही interesting गोष्ट? याचे फायदे असे की, एक तर आपण या अनेक भाषा वापरू शकतो आणि दुसरं म्हणजे त्या एकाच platform वर चालू शकतात. प्रत्येक भाषेसाठी वेगळे काही install करायची गरज नाही.

आता अगदी स्वाभाविक प्रश्न असा येतो की, ही सारे कसे काय शक्य आहे?

याचे उत्तर आहे architecture. त्याची बांधणी.

हे चित्र येथून घेतले आहे. here

वरील चित्रात दाखविल्याप्रमाणे, आपला code कंपाईल होऊन पुढील प्रक्रियेसाठी Common Language Infrastructure येथे जातो.

Common Language Infrastructure हे CIL (Common Intermediate Language) आणि CLR (Common Language Runtime) यांनी बनलेले आहे.

CIL(Common Intermediate Language):  CIL चे काम म्हणजे .Net ने दिलेल्या कोणत्याही भाषेतील कोड एका विशिष्ट भाषेत म्हणजे Common Intermediate Language मधे रूपांतरीत करणे असे आहे. म्हणजे नेमके काय? तर उदा. जर आपण C#.Net मधे Double हा Data Type उपलब्ध आहे तर VB.Net मधे Decimal उपलब्ध आहे. असे निरनिराळे Data Types, functions आणि procedures ह्या .Net framework ने उपलब्ध केलेल्या सर्वच भाषांमधे उपलब्ध आहेत. ह्या निरनिराळ्या Data Types/ Functions/ Procedures चा अर्थ किंवा व्याख्या ह्या कुठेतरी सामायिक भाषेमधे असणे वा रूपांतरीत करणे अत्यावश्यक आहे.  तरच आपण निरनिराळ्या भाषा एकच framework वापरून compile करू शकतो. हे रूपांतरणाचे कार्य CIL द्वारे केले जाते.

CLR: Common Language Runtime चे कार्य म्हणजे CLI चे रूपांतर machine readable language मधे करणे. प्रत्येक कोड हा शेवटी Binary मधे रूपांरतीत होतो. तर हे रूपांतरण करण्याचे कार्य CLR द्वारा केले जाते.

तर या काही मूळ गोष्टी आहेत ज्या डॉट नेट फ्रेमवर्कमधे समाविष्ट आहेत.

Java पेक्षा Python का चांगली?

सदर post, नविन काब्रा द्वारा प्रकाशित http://punetech.com/why-python-is-better-than-java/ या लेखाचे भाषांतर असून, http://punetech.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर मंदार वझे यांनी केले आहे.

धनंजय नेने ह्यांनी नुकतीच Python वापरायला सुरुवात केली, आणि त्यांना असे जाणवले की, Python वापरताना त्यांना जास्त मजा येते. त्यांनी त्यांच्या blog वर त्याबद्दल सविस्तर लिहीले आहे :

गेल्या काही महिन्यात मला असे प्रकर्षाने जाणवले की python मधे programming खूप सोपे आणि मजेशीर आहे. म्हणजे साधी आणि gear ची सायकल चालवण्यात जसा फरक आहे ना, तसाच. म्हणजे gear ची सायकल चालवताना असं वाटतं की, कमी प्रयत्नात जास्त दूर जाता येतं. परंतु विज्ञान सांगतं की खरं तर दोन्ही करता तेवढयाच प्रयत्नांची गरज लागते. जास्त सुविधा असल्यामुळे काम सोपे वाटत असेल. पण मला असं का वाटतं? कदाचीत Python च्या खालील features मुळे असेल (अर्थात, पुढील यादी कुठल्याही प्राधान्यक्रमानुसार नाही.)

* सुटसुटीत : code साधारण पणे जास्त आटोपशीर असतो. कमी फापटपसारा (verbosity)
* Dynamic Typing : Data type declaration आणि inheritance hierarchies, विशेषत:सर्व interfaces and implementations साठी योग्य आहेत की नाही, ह्याची काळजी करण्याची गरज नाही. वेगवेगळे objects एकाच inheritance hierarchy मधे असण्याची सुध्दा गरज नाही. Object मधे method असल्यास आपण त्याचा वापर करू शकता. अर्थात ही दुधारी तलवार आहे, परंतु त्यामुळे dynamic type environment मधे programming सोपे होते, हेही तितकेच खरे.
* सोपे runtime reflection: Java मधे सर्व प्रकार च्या reflection capabilities आहेत. पण Python पेक्षा Java मधे त्या वापरणे खूपच त्रासदायक आहे. Python मधे सगळे constructs (classes, sequences etc.) reflection साठी उपलब्ध आहेत. जर तुम्हाला metaprogramming constructs ची गरज असेल, तर Python ला खरोखरच पर्याय नाही.
* जास्त अंतर्गत सुविधा : list comprehensions किंवा functions ना objects प्रमाणे वापरणे.
* नीट नेटका code असण्याची सक्ती (indentation requirement) : मला ह्याची सवय होण्यासाठी २-३ दिवस लागले, पण त्या मुळे Python चा code वाचायला खूप सोपा होतो, कारण जर code व्यवस्थीत indent केलेला नसेल तर चालतच नाही. (code is rejected)


मी स्वत: Perl programmer आहे, आणि माझे Perl बद्दल असेच मत आहे. अर्थात मला Python ची indentation ची सक्ती आवडली नाही. पण जे programmer, भाषेच्या सुविधांचा गैरवापर करणार नाहीत, Perl त्यांच्याच साठी योग्य आहे. बेशिस्त programmers साठी Python ची indentation ची सक्ती ही चांगलीच गोष्ट आहे.
असो, आपण संपूर्ण लेखच वाचा. तुम्ही, त्यांनी त्यांच्या पुढच्या project साठी python निवडली, तेंव्हा लिहीलेला लेख सुद्धा वाचा. त्यापेक्षा तुम्ही त्यांच्या blog ला subscribe करा ना.
जर तुम्ही techie असाल तर तुम्ही त्यांचे सखोल आणि अभ्यासपूर्ण लेख जरूर वाचले पाहिजेत. जर तुम्हाला programming languages मधे रुची असेल तर मी त्यांचे “Contrasting java and dynamic languages”, आणि “Performance Comparison – C++ / Java / Python / Ruby/ Jython / JRuby / Groovy” हे लेख सुचवीन. ..आणि जर तुम्ही स्वत: blogger असाल तर त्यांच्या software/programming blogging बद्दलच्या सुचना वाचा.

धनंजय पुण्यातील, १७ वर्षाचा अनुभव असलेले software Engineer आहेत. त्यांना software engineering, programming, design आणि architecture ह्याबद्दल विशेष आवड आहे. अधिक माहिती करता त्यांचे PuneTech wiki profile वाचा.

सदर post, नविन काब्रा द्वारा प्रकाशित http://punetech.com/why-python-is-better-than-java/ या लेखाचे भाषांतर असून, http://punetech.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर मंदार वझे यांनी केले आहे.