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

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

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

फ्रेमवर्क म्हणजे अनेक 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 च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर मंदार वझे यांनी केले आहे.

मी Ruby का शिकावी ?


सदर post, Nick Adams  द्वारा प्रकाशित  http://punetech.com/why-you-need-to-learn-ruby-and-rails/ या लेखाचे भाषांतर असून, http://punetech.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर अभिजीत वैद्य  यांनी केले आहे.

Ruby ही python, perl, php आणि इतर बऱ्याच unix आधारित भाषांसारखी interpreted language आहे. १९९२ मध्ये युकीहीरो मात्सुमोतो या जपानी संगणक तज्ञाने Ruby विकसित केली. पण २००५ मध्ये Ruby on Rails हे web development framework आल्यावर Ruby एकदम प्रसिद्धीच्या झोतात आली. या लेखात मी प्रथम Ruby बद्दल, नंतर Rails बद्दल आणि शेवटी यात वेगळे काय आहे याविषयी माहिती देईन.

Ruby च्या बाबतीत सर्वप्रथम लक्षात येणारी गोष्ट म्हणजे तीचा सरळ सोपा syntax:

5.times {print “Hello Pune !”}

semi colon, variable declaration इत्यादी ची गरज नसल्यामुळे Ruby चा code हा जास्त readable होतो आणि coding करण्यास गरजेपेक्षा जास्त वेळ लागत नाही.

Ruby ही १००% object oriented आहे. Ruby मध्ये variables सकट सगळ्या गोष्टी या object असतात. सुरुवातीला हे जरा टोकाचे वाटू शकेल, पण जेंव्हा तुम्ही Ruby on Rails framework वापरता आणि जेव्हा तुम्हाला “String” या basic class मध्ये on the fly बदल करायचे असतील तेंव्हा त्याची खरी ताकद कळते. Ruby ही फारच flexible आहे. Ruby मध्ये blocks, iterators तसेच higher level language मधली string reverse, string capitalize सारखी व इतरही अनेक features आहेत.

Rails हे web development framework आहे. Rails कडे नुसतेच “web design साठी नवीन Classes आणि Methods चा संग्रह” हा दृष्टीने बघून चालणार नाही. माझ्या मते Rails शिकण्यापूर्वी दोन गोष्टी शिकणे आवश्यक आहे. एक म्हणजे MVC pattern. MVC pattern हे Application logic वेगवेगळ्या भागांत विभागून development वेगवान, scalable, logical बनवते. दुसरे म्हणजे Rails चे convention. हे जरी थोडे गोंधळात टाकणारे असले तरी ते समजून घेवून framework कसे design केले आहे हे समजून घेणे हे तुमचे Application परिपूर्ण बनवण्यासाठी जास्त उपयोगी ठरेल.

Rails चे वेगळेपण कशात आहे ? नुकताच मी java, php आणि Rails मध्ये web development केलेल्या एकाची मुलाखत घेतली. मला त्याच्यामध्ये Rails मध्ये काम करण्याची आंतरिक उर्मी दिसली. जर तुम्ही कधी .net, php, jave मध्ये web development केले असेल तर तुम्ही Rails चे नक्की कौतुक कराल. Rails हे वेगवान, modular आहे. त्यांनी तुम्हाला clean, readable coding करता येते. आणि हे फुकट आहे. Ajax आणि Web-2.0 ची वैशिष्ट्ये वापरणे सोपे आहे. Application चे Unit testing करणे सोपे आहे. नवीन कल्पना महिन्यांत विकसित करण्यापेक्षा आठवड्यात विकसित करा. setup करणे हे कोणत्याही environment साठी सोपे आहे. पण open source असल्यामुळे Linux आणि Mac सारख्या ‘nix based environment साठी जास्त सोयीस्कर आहे.

भारी वाटते आहे ना ? माझ्या मते web बद्दल माहिती असणारे आणि ज्यांनी database base driven web applications तयार केली आहेत, त्यांना Rails जास्त चांगले समजेल. Rails हे पूर्वीपासून प्रचलित गोष्टींवर आधारित आहे. ही नवीन जादुई web development language नाही. Rails प्रचलित गोष्टी वेगवान, सोप्या करते. Web समजून घ्या. Web applications समजून घ्या, MVC समजून घ्या, मग Rails शिका. मग तुम्हाला कधीही मागे वळून पाहण्याची वेळ येणार नाही.

Nick Adams हे Entrip चे सह-संथापक आहेत. Entrip सहल नियोजनासाठी map-based interface पुरवते, तुमचा अनुभव multimedia स्वरुपात साठवून तो मित्रांसोबत share करण्यास मदत करते. SapnaSolutions हि Entrip साठी Ruby on Rails App विकसीत करणारी कंपनी आहे जी ग्राहकांसाठी web apps बनवते. Nick Adams यांच्याशी nick [at] entrip [dot] com  या mail id  वर संपर्क साधू शकता.

सदर post, Nick Adams  द्वारा प्रकाशित  http://punetech.com/why-you-need-to-learn-ruby-and-rails/ या लेखाचे भाषांतर असून, http://punetech.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर अभिजीत वैद्य  यांनी केले आहे.