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

५ गोष्टी ज्यावर Computer Science च्या विद्यार्थ्यांनी लक्ष केंद्रित करायला हवं?

सदर post,  नविन काब्रा द्वारा प्रकाशित http://punetech.com/5-things-that-computer-science-engineering-students-should-focus-on/ या लेखाचे भाषांतर असून, http://punetech.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर पल्लवी केळकर यांनी केले आहे.

विद्यार्थ्यांनी नक्की कशावर लक्ष केंद्रित करायला हवं – अलिकडेच मला कुणीतरी हा प्रश्न विचारला. समजा, २ र्‍या वा ३ र्‍या Degree च्या वर्षाचा विद्यार्थी आहे. काही वर्ष, मधे शिक्षण पूर्ण करण्यात जातील आणि पहिल्या नोकरीत, गोष्टी शिकायला काही वर्षं जातील.
तेव्हा त्याचं खरं career सुरु होण्याआधीची ही ५ वर्ष असतील. त्यावेळी software technology नेमकी कशी असेल आणि अशी कोणती skills (कौशल्य) आहेत ज्यावर तो आत्तापासून काम करू शकेल, जी आत्मसात केल्याने तो निश्चितपणे, चांगल्या पद्धतीने पुढे जाऊ शकतो.
५ वर्ष हा नक्कीच खूप मोठा कालावधी आहे आणि Neils Bohr ने कथन केल्याप्रमाणे, “Prediction is always difficult ,especially about future” म्हणजे, “भविष्यकथन नेहमीच अवघड असते, खासकरून भविष्याविषयी”. तरीही मला असे वाटते, की काही basic trends अगदी स्पष्ट आहेत आणि अजूनही कालातीत कौशल्य आहेत, ज्याकडे लक्ष देता येईल. यावर आधारीत, मी मला वाटणार्‍या आवश्यक गोष्टींची यादी इथे देत आहे.

जरा थांबा!

मला तुमचा कोणताही पुर्वग्रह होवून द्यायचा नाहीये. माझी यादी वाचण्याआधी, comment section मधे जा आणि तुमची यादी द्या. मग माझी यादी वाचा व परत comment section मधे त्यावर अवलोकन करा.
तुमच्याशी यावर चांगली चर्चा होईल, ज्यामुळे विद्यार्थांना फायदा होईल, अशी आशा आहे.
तर ही माझी यादी.

  • The next billion customers: पुढील करोड ग्राहक: IT मधील क्रांती जगातील करोडो लोकांपर्यंत पोहोचली आहे. पुढील ५ वर्षांत ती आणखी काही करोड लोकांपर्यंत पोहोचेल.या लोकांच्या श्रेणीत फरक असेल. त्यातले बरेच लोक साक्षर असतील- तेव्हा तुम्हाला non-text, non-English interfaces – video, animations, voice recognition यांवर लक्ष केंद्रीत करायला हवे. “English Seekho” यांवर search मारा, मला काय म्हणायचे आहे याची तुम्हाला कल्पना येईल. बर्‍याच लोकांकडे वीज (electricity ) व computer घ्यायला पैसे नसतील, त्यामुळे Mobile Devices राज्य करतील. त्यामुळे तुम्ही mobile platform जसं की Android शी खेळायला चालू करायला हवे. In general, “the next billion” वर search मारा, तुम्हाला Nokia आणि MIT ने दिलेले खूप interesting material मिळेल, कशावर लक्ष केंद्रीत करायचे याची कल्पना येईल.
  • Usability म्हणजे उपयुक्तता: IT क्षेत्र अधिकाधिक लोकांच्या आयुष्यात प्रवेश करीत आहे, त्यातील कमीत कमी लोकं “computer savvy” ( Computer प्रेमी) असतील, computing devices कडे पाहून, ही अशी गोष्ट आहे की जी शिकायला पाहिजे असं वाटणारीही कमी असतील. त्यामुळे, ती products यशस्वी होतील, जी वापरायला सोपी असतील. आणि काहीतरी सोप्पं बनवणं हे खरंतर जास्त कठीण आहे. ही computer science ची sub-discipline आहे, त्यात बरीच theory, बरेच well-defined algorithms आणि बर्‍याच पद्धती आहेत. गोष्टी सोप्या करण्यासाठी तुम्ही त्या वापरू शकता. या विभागाला HCI (Human Computer Interaction) म्हणतात आणि UCD (User Centered Design) हा त्याचा एक भाग आहे. या विभागाशी तुम्ही familiar असायलाच हवं.
  • Computer Science Fundamentals : हे कधीच out of fashion होणार नाही, आणि हो, जेव्हा मी college मधून बाहेर पडलेल्या विद्यांर्थ्यांना बघतो, तेव्हा हा भाग दुर्लक्षित असल्याचे जाणवते. विशिष्ट Programming Language व विशिष्ट “technology” वर जास्ती भर देणे, ही चूक आहे. Data structures आणि Algorithms शिका. जर तुमचे आवडते Data structure नसेल आणि असा कुठलाच algorithm नसेल जो तुम्हाला   भावतो(आवडतो), तर तुमचे Computer science चे शिक्षण अपूर्ण आहे. जर algorithm पाहिल्यानंतर, पहिला विचार Algorithm च्या Complexity (O(n), O(log n)इ.) बद्दल नसेल, तर तुम्हाला तुमची पुस्तकं परत चाळण्याची गरज आहे. जर तुम्ही फक्त Java किंव्वा C# शिकला असाल आणि तुम्हाला pointers, heaps, stacks काहीच कळत नसेल तर आज ना उद्या त्यामुळे तुमचं नुकसान होईल. Basics समजून घ्या. ते करतानाच, Mathematics आणि Statistics सुद्धा शिका.
  • Presentation Skills हे Computer Science चे skill नाही पण हे अतिशय महत्वाचे skill आहे, ज्याची Computer Science च्या विद्यार्थ्यांत कमी भासते. तुम्ही Program Design व Algorithm एवढेच किंबहूना जास्तच महत्व Presentation ला द्यायला पाहिजे. आणि तुम्ही जरुर Presentation शिकण्यासाठी (पुस्तकातून, वर्गामधे, सराव करून) वेळ दिला पाहिजे, जसा Programming language आणि Computer Science subjects शिकण्यासाठी देता. मला खात्री आहे, तुम्ही असं केलं नसेल, म्हणून ही गोष्ट माझ्या यादीत आहे. चांगलं कसं लिहायचं हे तुम्हाला माहिती पाहिजे. फक्त papers आणि documents नव्हे तर त्याहूनही अधिक महत्वाचं म्हणजे emails, blog posts, facebook wall postings आणि tweets. तुम्ही user/reader/client ला काय महिती करुन घ्यायला आवडेल याचा विचार करायला हवा ( तुम्हाला काय माहिती आहे आणि काय सांगायचे आहे याऐवजी). आणि of course, तुम्हाला चांगलं बोलताही आले पाहिजे. तुमचा कामाबद्दल रहस्यमय facts ची यादी देण्यापेक्षा गोष्टीरूपाने कशी सांगता येईल, ज्या गोष्टी तुम्हाला खूप interesting वाटल्या पण श्रोत्याला नाही वाटणार, त्या कशा टाळायच्या? इ. तुम्हाला आले पाहिजे.
  • Economics: Scott Adams, Dilbert चे निर्माते म्हणतात: “जेव्हा तुमच्याकडे economics कसं चालतं याचं ज्ञान असेल, तर ती एक mild super power असल्यासारखीच आहे.” Basically, जर तुम्हाला economics चा पाया समजला, तर technologies आणि लोकं, यश आणि अपयश हे नक्की कसं चालतं, याला चालना कशी मिळते हे तुम्ही पाहू आणि समजू शकता, ज्यांना economics समजत नाही त्यांच्यापेक्षा कितीतरी जास्त. मला IIT मधे Computer Science च्या अभ्यासक्रमात, economics चा अभ्यास करावा लागला, याचा मला तिरस्कार वाटत आला होता. तो संपूर्णपणे वेळेचा अपव्यय आहे असं वाटत होतं. पण आता मागे पाहताना असं वाटतं की तो अभ्यास फार महत्वाचा होता.

तर, तुम्हाला काय वाटतं, विद्यार्थ्यांनी नक्की कशावर लक्ष केंद्रित करायला हवं?

सदर post,  नविन काब्रा द्वारा प्रकाशित http://punetech.com/5-things-that-computer-science-engineering-students-should-focus-on/ या लेखाचे भाषांतर असून, http://punetech.com च्या माध्यमातून घेतले आहे. याचे मराठी भाषांतर पल्लवी केळकर यांनी केले आहे.

आम्ही comments भाषांतरीत केलेले नाहीत. कृपया मूळ post वर जावून interesting चर्चा जरूर वाचा.