Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Thursday, May 14, 2026

सॉफ्टवेअर डेव्हलपर्स आता बनत आहेत 'एआय कोड रिव्ह्यूअर्स'

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


आजच्या घडीला कोणत्याही मोठ्या आयटी कंपनीत प्रवेश केला, तर तिथे पूर्वीसारखे चित्र दिसत नाही. चॅटजीपीटी, गिटहब कोपायलट, गुगलचे जेमिनी आणि इतर अनेक प्रगत लार्ज लँग्वेज मॉडेल्स आता थेट सॉफ्टवेअर डेव्हलपमेंटच्या प्रक्रियेत सामील झाले आहेत. पूर्वी एखादे नवीन सॉफ्टवेअर किंवा ॲप्लिकेशन बनवायचे असल्यास त्याचे मूलभूत कोडिंग करण्यासाठी अनेक दिवस किंवा आठवडे लागायचे. आता मात्र, एखाद्या प्रगत एआय टूलला आपण काय बनवायचे आहे याची केवळ एक योग्य 'प्रॉम्प्ट' किंवा सूचना दिल्यास, काही सेकंदांतच हजारो ओळींचा कोड लिहून तयार होतो. यामुळे साहजिकच सॉफ्टवेअर डेव्हलपमेंटचा वेग अनेक पटींनी वाढला आहे.

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

सामान्य माणसाला कदाचित असे वाटेल की, जर कोड लिहिण्याचे अवघड काम यंत्रच करत असेल, तर आता डेव्हलपरचे काम खूप सोपे झाले आहे. पण वास्तव याच्या अगदी उलट आणि अत्यंत गुंतागुंतीचे आहे. सॉफ्टवेअर विश्वातील एक अत्यंत जुना आणि महत्त्वाचा नियम आहे: "तुमचा स्वतःचा कोड वाचण्यापेक्षा दुसऱ्याने लिहिलेला कोड वाचणे आणि समजून घेणे हे नेहमीच सर्वात कठीण काम असते." आता विचार करा, जर तो दुसरा 'लेखक' एक मशीन असेल, तर ते काम किती क्लिष्ट होऊ शकते! एआय मॉडेल्स जे कोडिंग करतात, ते अनेकदा अत्यंत अचूक आणि हुशार वाटते, पण ते मशीन 'संदर्भ' किंवा व्यवसायाचे मूळ लॉजिक  पूर्णपणे समजून घेऊ शकत नाही.

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

या नवीन पद्धतीमुळे आयटी कंपन्यांना आता एका नव्या आणि अत्यंत भयंकर समस्येला तोंड द्यावे लागत आहे, ज्याला तांत्रिक भाषेत 'टेक्निकल डेट'  किंवा तांत्रिक कर्ज असे म्हटले जाते. जेव्हा तुम्ही एखादे काम घाईघाईने आणि शॉर्टकट वापरून पूर्ण करता, तेव्हा भविष्यात तेच काम सुधारण्यासाठी तुम्हाला जास्त वेळ आणि पैसा खर्च करावा लागतो. एआयच्या मदतीने कंपन्या अत्यंत वेगाने सॉफ्टवेअर बनवत आहेत, पण जर त्यामागे सक्षम 'ह्युमन-इन-द-लूप' (Human-in-the-loop) म्हणजेच मानवी पर्यवेक्षण नसेल, तर कोडचा दर्जा अत्यंत वेगाने घसरतो. एआय अनेकदा 'स्पॅगेटी कोड' म्हणजेच अत्यंत विस्कळीत आणि समजायला कठीण असा कोड तयार करू शकते.

याशिवाय, 'हॅल्युसिनेशन्स' म्हणजेच एआयने अत्यंत आत्मविश्वासाने चुकीची माहिती किंवा चुकीचा कोड देण्याची प्रवृत्ती, हा एक अत्यंत चिंतेचा विषय आहे. जर एखाद्या डेव्हलपरने केवळ आळसामुळे किंवा अज्ञानामुळे एआयने दिलेला असा चुकीचा कोड सिस्टीममध्ये जाऊ दिला, तर त्यामुळे ग्राहकांचा डेटा लीक होऊ शकतो किंवा संपूर्ण सर्व्हर क्रॅश होऊ शकतो. म्हणूनच, आजकाल आयटी कंपन्यांमध्ये कर्मचाऱ्यांच्या कामगिरीचे मूल्यमापन करताना 'तुम्ही किती ओळींचा कोड लिहिला?' यापेक्षा 'तुम्ही किती कोडचे यशस्वीपणे आणि अचूकपणे पुनरावलोकन केले?' याला अधिक महत्त्व दिले जात आहे.

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

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

--- तुषार भ. कुटे 

#ArtificialIntelligence #Marathi 

Tuesday, April 7, 2026

भविष्यात कृत्रिम बुद्धिमत्तेच्या मदतीने एकाच सॉफ्टवेअर इंजिनिअरला शक्य होईल संपूर्ण टीमचे काम

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


सॅम ऑल्टमन यांचा हा दावा केवळ हवेत केलेला नाही, तर त्यामागे सध्या वेगाने विकसित होत असलेले 'एआय एजंट्स' आणि प्रगत कोडिंग टूल्सचे भक्कम वास्तव दडलेले आहे. पारंपारिक पद्धतीने जेव्हा एखादे नवीन सॉफ्टवेअर, मोबाईल ॲप्लिकेशन किंवा मोठी वेबसाईट बनवली जाते, तेव्हा त्यासाठी एका मोठ्या टीमची किंवा समूहाची गरज असते. या टीममध्ये रिक्वायरमेंट ॲनालिस्ट (ग्राहकाची गरज समजून घेणारा), सिस्टीम आर्किटेक्ट (सॉफ्टवेअरचा आराखडा बनवणारा), फ्रंट-एंड आणि बॅक-एंड डेव्हलपर्स (प्रत्यक्ष कोडिंग करणारे), सॉफ्टवेअर टेस्टर्स (चुका शोधणारे) आणि शेवटी डेव्हऑप्स इंजिनिअर्स (सॉफ्टवेअर ग्राहकापर्यंत पोहोचवणारे) अशा अनेक वेगवेगळ्या लोकांचा समावेश असतो. एका प्रकल्पासाठी अनेकदा दहा ते पन्नास लोकांची टीम कित्येक महिने राबत असते. पण ऑल्टमन यांच्या मते, चॅटजीपीटी, गिटहब कोपायलट आणि नुकतेच बाजारात आलेले 'डेव्हिन' (Devin) सारखे एआय सॉफ्टवेअर इंजिनिअर्स या संपूर्ण प्रक्रियेची जागा घेण्यासाठी अत्यंत वेगाने तयार होत आहेत. हे नवीन एआय टूल्स केवळ तुम्ही टाईप करत असलेला कोड पूर्ण करत नाहीत, तर ते स्वतःहून विचार करू शकतात, चुका शोधून त्या दुरुस्त करू शकतात आणि पूर्णपणे नवीन सिस्टीम डिझाईन करू शकतात.

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

परंतु, या अफाट तांत्रिक प्रगतीसोबतच एक अत्यंत मोठी आणि गडद भीती आयटी क्षेत्रात पसरली आहे ती म्हणजे नोकरकपातीची. जर एकच डेव्हलपर दहा जणांचे काम करणार असेल, तर उरलेल्या नऊ जणांच्या नोकऱ्यांचे काय होणार? हा प्रश्न आज प्रत्येक आयटी कर्मचाऱ्याला आणि विशेषतः नवशिक्या (Freshers) इंजिनिअर्सना सतावत आहे. भारतासारख्या देशात, जिथे टीसीएस , इन्फोसिस, विप्रो यांसारख्या कंपन्या प्रामुख्याने 'सर्व्हिस मॉडेल'वर चालतात आणि कर्मचाऱ्यांच्या संख्येवर परदेशी ग्राहकांना बिले आकारतात, तिथे या बदलाचा सर्वात मोठा आणि थेट फटका बसू शकतो. जर परदेशी ग्राहकाला हे लक्षात आले की जे काम करण्यासाठी ते भारतीय कंपन्यांच्या शंभर इंजिनिअर्सना पैसे देत आहेत, तेच काम त्यांचा एक अमेरिकन इंजिनिअर एआयच्या मदतीने स्वतःच करू शकतो, तर ते आपले प्रोजेक्ट्स भारताकडे का पाठवतील? हा भारतीय आयटी क्षेत्रापुढील आतापर्यंतचा सर्वात मोठा धोका मानला जात आहे. 'एंट्री लेव्हल'ची किंवा सुरुवातीच्या टप्प्यावरील साध्या कोडिंगची आणि मॅन्युअल टेस्टिंगची कामे तर आता जवळपास संपुष्टात येण्याच्या मार्गावर आहेत.

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

जेव्हा आपण एखादे तंत्रज्ञान शिकवतो किंवा त्यावर पुस्तके लिहितो, तेव्हा एक गोष्ट अत्यंत स्पष्टपणे जाणवते की तंत्रज्ञानाला विरोध करून कोणीही कधीही टिकू शकलेला नाही. बदलत्या प्रवाहाविरुद्ध पोहण्यापेक्षा त्या प्रवाहावर स्वार होणे हेच शहाणपणाचे असते. सॅम ऑल्टमन यांचा दावा जरी आज अतिशयोक्ती वाटत असला, तरी भविष्याची दिशा नेमकी काय आहे, हे यातून स्पष्ट होते. आजच्या आणि उद्याच्या सॉफ्टवेअर इंजिनिअर्सना आता एका वेगळ्याच मानसिकतेतून स्वतःला तयार करावे लागणार आहे. त्यांना फक्त 'प्रोग्रामर' राहून चालणार नाही, तर त्यांना 'सिस्टीम थिंकर' (System Thinker) बनावे लागेल. कृत्रिम बुद्धिमत्ता मानवाची जागा घेईल की नाही हा वाद आता खूप जुना झाला आहे. आजचे नवे सूत्र हेच आहे की, "कृत्रिम बुद्धिमत्ता असलेल्या माणसाची जागा घेणार नाही, तर जो माणूस कृत्रिम बुद्धिमत्तेचा वापर अत्यंत कुशलतेने करतो, तो माणूस कृत्रिम बुद्धिमत्ता न वापरणाऱ्या माणसाची जागा नक्कीच घेईल." त्यामुळे या नव्या तांत्रिक क्रांतीची भीती बाळगण्यापेक्षा, तिचे स्वागत करून स्वतःला अद्ययावत ठेवणे, हाच या बदलत्या जगातील व्यावसायिक यशाचा एकमेव आणि सर्वात खात्रीशीर मार्ग आहे.

--- तुषार भ. कुटे

Tuesday, July 29, 2025

डेटासेट

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

मराठा शस्त्रे: https://www.kaggle.com/datasets/tusharkute/maratha-warfield-weapons-dataset

मराठी दागिने: https://www.kaggle.com/datasets/tusharkute/marathi-and-maharashtrian-ornamants-dataset

--- तुषार भ. कुटे

#MachineLearning #Dataset #DataScience #ArtificialIntelligence #Engineering #Technology



 

Wednesday, September 11, 2024

प्रोग्रामर्स डे अर्थात प्रोग्रामरचा दिवस

जगभरामध्ये मदर्स डे, फादर्स डे, सिस्टर डे प्रमाणे जवळपास सर्वच व्यावसायिकांचे डेज अर्थात दिवस साजरे केले जातात. अशाच प्रकारे संगणकीय प्रोग्रॅमर्सचा दिवस अर्थात प्रोग्रॅमर्स डे देखील साजरा होतो. यावर्षी प्रोग्रॅमर्स डे १२ सप्टेंबर रोजी आलेला आहे! मागच्या वर्षी हाच दिवस १३ सप्टेंबरला होता, हे विशेष.
अर्थात या दिवशी कोणाचीही पुण्यतिथी अथवा जयंती नाही किंवा या दिवशी प्रोग्रामरच्या आयुष्यातली कोणतेही घटना देखील घडलेली नाही.
सन २००२ मध्ये रशियातल्या पॅरलल टेक्नॉलॉजी या कंपनीतील व्हॅलेंटाईन बाल्ट आणि मायकेल चेरीयाकोव यांनी रशियन सरकारकडे १३ सप्टेंबर हा दिवस प्रोग्रॅमर्स डे साजरा केला जावा, अशी सर्वप्रथम विनंती केली. अर्थात यामागचे त्यांचे तर्कशास्त्र देखील निराळेच होते. १३ सप्टेंबर हा दिवस वर्षातला २५६वा दिवस आहे. तुम्हाला माहीत असेलच की संगणकीय मोजमापे नेहमी दोनच्या घातांक रूपामध्ये मोजली जातात. जसे २, ४, ८, १६, ३२, ६४ इत्यादी. २५६ ही दोनच्या घातांक रूपात असणारी आणि ३६५ पेक्षा कमी असणारी सर्वात मोठी संख्या आहे. म्हणून २५६ वा दिवस प्रोग्रॅमर्स डे म्हणून ओळखला जावा, अशी उभय प्रोग्रामर्सची मागणी होती. संगणकीय परिभाषेतील हेक्साडेसिमल नंबर सिस्टीमनुसार २५६ ही संख्या १०० अशी लिहिली जाते.
रशियाच्या दोनही प्रोग्रामर्सने आपल्या मागणीला पाठिंबा मिळावा म्हणून एक ऑनलाईन याचिका देखील दाखल केली होती. तिला जगभरातून बहुसंख्य प्रोग्रामरचा पाठिंबा मिळाला. शिवाय रशियाचे तत्कालीन अध्यक्ष दिमित्री मेदवेदेव यांनी देखील यावर ऑनलाईन सही केली होती! अखेरीस सन २००९ मध्ये रशियाच्या दूरसंचार विभागाने या मागणीस मान्यता दिली आणि तेव्हापासून हा दिवस प्रोग्रॅमर्स डे म्हणून साजरा केला जाऊ लागला. हा दिवस दर चार वर्षांनी अर्थात लीप वर्षांमध्ये १२ सप्टेंबर रोजी साजरा केला जातो.
विशेष म्हणजे चीनमध्ये देखील प्रोग्रॅमर्स डे साजरा होतो. परंतु त्यांचा प्रोग्रामर्स दिवस हा २४ ऑक्टोबर या दिवशी असतो. ऑक्टोबर हा दहावा महिना. म्हणून दिवस आणि महिना यांची जोड १०२४ अशी होते. ही संख्या देखील दोनच्या दहाव्या घातांकात आहे. अर्थात लीपवर्ष असले तरी देखील चीनचा हा प्रोग्रॅमर्स डे बदलत नाही!
रशियाच्या जवळील बहुतांश देशांमध्ये १२ किंवा १३ सप्टेंबर या दिवशी सुट्टी दिली जाते.... अर्थात प्रोग्रामर्सला! परंतु रशियाने युक्रेनवर आक्रमण केल्यानंतर युक्रेनियन प्रोग्रामर्सनी या दिवसावर बहिष्कार टाकला होता, जो आजही कायम आहे.

--- तुषार भ. कुटे 



Monday, August 19, 2024

लेट अस सी

इयत्ता नववीमध्ये असताना माझी प्रोग्रामिंगची ओळख झाली. त्या काळात आम्हाला “बेसिक” नावाची संगणकीय भाषा शिकवली जायची. आठवड्यातून एक ते दोन तास हा वर्ग चालायचा. शिवाय या विषयाला गुण देखील नव्हते. आणि कदाचित याच कारणास्तव त्यावेळी आम्ही त्याला फारसे गांभीर्याने घेतले नाही.
परंतु डिप्लोमा इंजिनिअरिंगला प्रवेश घेतल्यानंतर दुसऱ्या वर्षी पहिल्यांदाच “सी प्रोग्रामिंग लँग्वेज”ची ओळख झाली. संगणकाच्या इतिहासामध्ये लोकप्रिय असणारी आणि आजही वापरात असणारी ही संगणकीय भाषा. २५-२६ वर्षांपूर्वी संगणकीय भाषा शिकण्यासाठी उपलब्ध असणारी साधने अतिशय मर्यादित होती. इंटरनेट अस्तित्वात होते परंतु सदैव उपलब्ध नव्हते. आणि शिवाय त्यावरील माहिती देखील अपुरी होती आणि विस्तृत नव्हती. याच कारणास्तव संगणकीय प्रोग्रामिंग शिकणे हे आव्हानात्मक होते. अर्थात सदैव केवळ पुस्तकांवरच आणि त्यावरील त्यातील ज्ञानावरच विसंबून राहावे लागत असे. अशावेळी यशवंत कानेटकर यांनी लिहिलेले “लेट अस सी” हे पुस्तक वाचण्यात आले. त्या काळात देखील सी प्रोग्रामिंगवर आधारित असणारे हे सर्वात लोकप्रिय पुस्तक होते. बऱ्याच जणांनी शिफारस केलेले हे पुस्तक मी वाचायला सुरुवात केली. खरं सांगायचं तर माझ्या संगणकीय प्रोग्रामिंगची सुरुवातच या पुस्तकाने झाली. फोटोमध्ये या पुस्तकाची तिसरी आवृत्ती आहे. अगदी हीच आवृत्ती सर्वप्रथम मी वाचली होती. आणि याच पुस्तकातून माझ्या प्रोग्रामिंगचा श्रीगणेशा झाला. संगणकीय भाषेमधील विविध संकल्पना याच पुस्तकातून मला समजायला लागल्या. अर्थात यासाठी मला माझ्या मित्रांनी देखील बरीच मदत केली होती. परंतु या पुस्तकाव्यतिरिक्त अन्य कोणतेही पुस्तक प्रोग्रामिंग शिकण्यासाठी मी त्याकाळी वापरले नाही. कानेटकर म्हणतील तोच अंतिम शब्द, असं काही त्या काळात आम्ही समजत असू. अर्थात ते खरं देखील होतं. प्रोग्रामिंगच्या विविध संकल्पना प्रात्यक्षिकांद्वारे मी या पुस्तकातूनच अनुभवल्या. आणि कदाचित याच कारणास्तव प्रोग्रामिंगचा आमचा पाया अधिक भक्कम होत गेला. एका अर्थाने माझ्यासाठी प्रोग्रामिंगची ही भगवद्गीताच होती, असे म्हणायला हरकत नाही. आज या पुस्तकाची १९ वी आवृत्ती बाजारामध्ये आलेली आहे. पण माझ्यासाठी मी वाचलेली आणि अनुभवलेली तिसरी आवृत्ती महत्त्वाची वाटते. आज पुन्हा हे पुस्तक विकत घेतले. याच पुस्तकामध्ये माझ्या प्रोग्रामिंग इतिहासाच्या भावना जखडलेल्या होत्या आणि आजही आहेत. 

---  तुषार भ. कुटे



Wednesday, March 29, 2023

इनफिक्स आणि पोस्टफिक्स

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

x + y = z
 

या गणितीय समीकरणांमध्ये x आणि y यांची बेरीज करून z मध्ये ती साठवलेली आहे. अशा प्रकारची समीकरणे केवळ मानवी मेंदूलाच समजू शकतात. यास 'इनफिक्स एक्सप्रेशन' म्हटले जाते. अर्थात यामध्ये जी गणिती प्रक्रिया करायची आहे, त्याचे चिन्ह दोन्ही संख्यांच्या अथवा अक्षरांच्या मध्ये लिहिले जाते. यावरून आपल्याला समजते की या दोन्हींवर अर्थात x आणि y वर कोणती गणिती प्रक्रिया करायची आहे? परंतु संगणकाचे मात्र असे नाही. संगणकाला आधी कोणत्या संख्यांवर प्रक्रिया करायची आहे, हे सांगावे लागते आणि त्यानंतर कोणती प्रक्रिया करायची आहे हे सांगावे लागते. अर्थात वर लिहिलेले गणिती समीकरण संगणकामध्ये अशा प्रकारे लिहिले जाईल...
 

xy+z=
 

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



Saturday, November 12, 2022

त्रिभाषा सूत्र

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


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

Ⓒ तुषार भ. कुटे.

Sunday, September 13, 2020

कोडिंग फॉर किड्स

आजच्या माहिती तंत्रज्ञान युगामध्ये प्रत्येकालाच संगणकाची माहिती असणे आवश्यक आहे. अनेक युरोपियन देशांमध्ये शालेय अभ्यासक्रमामध्येच विद्यार्थ्यांना संगणकीय प्रोग्रॅमिंगची माहिती होण्यासाठी संगणकीय भाषा शिकवल्या जातात. त्यामुळे संगणकाचा वापर कोडींग (coding) करण्यासाठी कसा करावा, हे विद्यार्थ्यांना शालेय जीवनातच समजते. भारत सरकारने देखील नवीन शिक्षण धोरणानुसार इयत्ता सहावी पासूनच शालेय अभ्यासक्रमामध्ये संगणकीय कोडींगचा समावेश केला आहे. ज्याद्वारे संगणकाचा वापर कसा करायचा असतो, हे विद्यार्थ्यांना अवगत होते. याकरिता वापरण्यात येणारी अत्याधुनिक संगणकीय भाषा म्हणजे *स्क्रॅच* (Scratch) होय. विद्यार्थ्यांना या संगणकीय भाषेद्वारे कोडिंग करता यावी, स्वतःचे संगणकीय प्रोग्रॅम लिहिता यावे, ॲनिमेशन तयार करता यावे तसेच विविध कॉम्प्युटर गेम बनवता यावे, याकरिता आम्ही *कोडींग फॉर किड्स* हा ऑनलाइन अभ्यासक्रम तयार केला आहे. विविध बहुराष्ट्रीय व भारतीय कंपन्या पालकांकडून मोठ्या फी आकारणी करून चालवत आहेत. आम्ही तो केवळ 999 रुपयांमध्ये ऑनलाइन उपलब्ध करून दिलेला आहे. याद्वारे विद्यार्थ्यांना संगणकीय कोडींगचे परिपूर्ण ज्ञान प्राप्त होण्यास मदत होईल.

अधिक माहितीसाठी संपर्क: 9960163010
वेबसाईट: https://mitu.co.in/coding-for-kids

Monday, July 27, 2020

डेटा सायन्स आणि पायथॉन प्रोग्रॅमिंग

मागच्या दहा वर्षांपासून संगणक क्षेत्रांमध्ये वेगाने बदल होताना दिसत आहेत. आर्टिफिशिअल इंटेलिजन्स, मशीन लर्निंग सारखी क्षेत्रे ही वेगाने विकसित होत आहेत. डेटा सायन्स हा या क्षेत्रांचा मूळ गाभा होय. उपलब्ध माहितीच्या आधारे विविध प्रकारचे ऍनालिसिस करून त्यावर योग्य निर्णय प्रक्रिया राबवण्याचे कार्य डेटा सायन्स द्वारे केले जाते. त्यामुळे डेटा सायन्स व डेटा सायंटिस्टची जवळपास सर्व क्षेत्रांमध्ये मोठ्या प्रमाणात मागणी आहे. या कारणास्तव संगणक व माहिती तंत्रज्ञान क्षेत्रामध्ये डेटा सायन्स वर काम करणाऱ्या तंत्रज्ञ व अभियंत्यांची गरज भासत आहे. परंतु सद्य परिस्थिती पाहता या तंत्रज्ञानात कुशल असणारे मनुष्यबळ अजूनही उपलब्ध नाही. अनेक विद्यापीठांमध्ये सदर अभ्यासक्रम नुकताच समाविष्ट करण्यात आलेला आहे. परंतु त्यातून कुशल मनुष्यबळ तयार होण्यासाठी अजून किमान तीन ते चार वर्षे जावी लागतील. अशा परिस्थितीमध्ये आज माहिती तंत्रज्ञान क्षेत्रात डेटा सायंटिस्ट व डेटा अनॅलिस्ट तसेच मशीन लर्निंग इंजिनीयरची नितांत गरज आज आहे. ही गरज पूर्ण करण्यासाठी आम्ही डेटा सायन्सचा परिपूर्ण कोर्स मागील चार वर्षांपासून घेत आहोत. या क्षेत्रात लागणारे परिपूर्ण व प्रात्यक्षिकांचे ज्ञान सदर अभ्यासक्रमातून आम्ही विद्यार्थ्यांना प्रदान करत असतो.
जसं संगणक तंत्रज्ञान बदलत चाललं आहे, तसंच इथे वापरण्यात येणाऱ्या प्रोग्रामिंग लँग्वेजेस सुद्धा बदललेल्या आहेत. एकेकाळी सी आणि सी प्लस प्लस अथवा जावा सारख्या प्रोग्रॅमिंग लँग्वेजेस आल्या तरी आपल्याला संगणक क्षेत्रांमध्ये सहज प्रवेश करता येऊ शकत होता. पण आजची परिस्थिती तशी नाही. आज कॉम्प्युटर प्रोग्रामिंगचे विश्व पायथॉन प्रोग्रामिंग लँग्वेज व्यापू पाहत आहे. मागच्या दहा वर्षांचा आलेख पाहिला तर ध्यानात येईल की, जावा प्रोग्रामिंग लैंग्वेज पेक्षा पायथॉन ही दोन पावले पुढे चालणारी लँग्वेज आहे. सन २०१६ मध्ये पायथॉन प्रोग्रामिंग लँग्वेजने जावाला माहिती-तंत्रज्ञान विश्वात मागे टाकले आहे. त्यामुळे येणारे जग हे पायथॉन प्रोग्रामिंग लँग्वेजवर आधारित असेल, यात शंका नाही. महत्त्वाचे असे की, पायथॉन ही आज वापरण्यात येणाऱ्या संगणकातील डेटा सायन्स, आर्टिफिशिअल इंटेलिजन्स, मशीन लर्निंग, नॅचरल लैंग्वेज प्रोसेसिंग, इंटरनेट ऑफ थिंग्स, ब्लॉकचेन सारख्या अद्ययावत तंत्रज्ञानात प्रामुख्याने वापरली जाते. त्यामुळे संगणक तंत्रज्ञान जसजसे विकसित होत जाईल तस-तशी पायथॉन प्रोग्रामरची सुद्धा गरज माहिती-तंत्रज्ञान विश्वाला भासणार आहे.
या दोन्ही तंत्रज्ञानांचे प्रशिक्षण देण्यासाठी आमच्या कंपनीतर्फे मागच्या चार वर्षांपासून दोन निरनिराळे कोर्सेस चालवले जातात. त्यापैकी डेटा सायन्सचा कोर्स हा २५००० रुपये किमतीचा होता आणि पायथॉनचा कोर्स दहा हजार रुपये किंमतीचा होता. परंतु लॉकडाऊन मध्ये आम्ही दोन्ही कोर्सेस ऑनलाइन पद्धतीने सुरू केलेले आहेत. ज्यांना संगणक व माहिती तंत्रज्ञान क्षेत्रामध्ये वरील तंत्रज्ञानावर काम करायचे असेल, त्यांना डेटा सायन्स चा कोर्स ८० टक्के डिस्काउंटसह रुपये ४९९९ मध्ये तर पायथॉन प्रोग्रामिंग लँग्वेजचा कोर्स ९० टक्के डिस्काउंटसह रुपये ९९९ मध्येच आम्ही उपलब्ध करून दिलेला आहे. सदर कोर्सद्वारे अधिकाधिक तंत्रज्ञ नव्या तंत्रज्ञानासह माहिती तंत्रज्ञान क्षेत्राला उपलब्ध व्हावेत व नवीन मनुष्यबळ विकसित व्हावे, यासाठी इतकी मोठी सूट आम्ही दिलेली आहे. तरी यांची माहिती घेण्यासाठी खाली दिलेल्या क्रमांकावर किंवा वेबसाईटवर तुम्ही संपर्क साधू शकता.

https://mitu.co.in/courses
मोबाईल: 8600829693

Friday, April 29, 2011

Data Structures and I

I always used to say that ‘Data structures’ is my favorite subject in whole engineering. This subject has taught me many different ways of thinking that is, creating the logic of the computers. I came across this subject for first time in my second year second semester of engineering. As per the old ‘S’ pattern syllabus of Computer Engineering diploma of MSBTE, Data structures was in the syllabus of Computer Technology branch. When first time semester pattern was introduced this subject was also introduced to Computer Engineering and Information Technology branches.

When I heard the name for first time, I did not get any meaning from ‘Data Structures’. One of my friend told that this subject is very complex than any other. So, I was a bit scared about it. But, in that year we used to face subjects like Linear Circuit Analysis, Analog Circuits, Electrical Machines and Signal Conditioners & Data Convertors. So, Data Structures was not looked much complex for me, as this was from our core branch. I used to refer the book of Girish Potdar on this subject. Girish Potdar was the professor from PICT college. He wrote this book as textbook for syllabus of University of Pune. This book was quite interesting. The programs were nice and sufficient to understand the concepts of Data Structures. Programming was my passion that time so I did not face much complexity in solving the problems in this subject. I came across the topic Complexity in first unit. From that time, I came to know different programming concerns in C. I was already having a strong base of C programming, which has helped me a lot to learn and understand the Data Structures. Then one by one I saw different sorting techniques. I remember I read the book from Prof. Shirish Sane to understand the concepts of sorting techniques. He had elaborated all this techniques in very good manner. I appreciate the works of Yashwant Kanetkar on this topic. He has illustrated almost all the sorting techniques with good practical implementation and in step by step manner. Someone has told me to refer the Tannenbaum’s book on data structures. I read it, but I did not get any sort of ideas from it. It was quite complex and hard to understand. As he is a foreign author, he had used the different language than Indian English. This was quite complex to understand. The algorithmic language that Tannenbaum has used was much different than I understood.

I studied different structures like stack and queues. The concepts were simple. It was also simple to implement these concepts in programming. But, after knowing the actual application of these, it made to more interesting to approach the Data structures. The same case continued for Linked Lists, Trees and Graphs too. I was weak in dynamic concepts like pointers in C but then also I forced myself to learn these concepts with the help of pointers. I used to learn the application of one data structure. So, it made me more interesting to learn all these concepts. I found this is a different subject than any other which is applicable in all the subjects of Computer and allied branches. I studied hard to learn all the concepts of data structures.

I got the chance to teach this subject only once and for twenty days only. Four years ago, when students of second year information technology were facing some problems to learn this subject, I was assigned to teach this. But, after that I did not get any chance to work with this subject.

Tuesday, August 24, 2010

Moving from POP to OOP

In the first paragraph itself, I mention that ‘POP’ is not pop, it is Procedure Oriented Programming and OOP is Object Oriented Programming. As we know, the C is one of the procedure oriented programming language and many of others like C++, Java, .net are the object oriented programming languages.

The ways in which the programs for the computer are written are many. Out of all these, POP was the first popular methodology to write the program. The languages like Pascal and C has made this methodology very popular. Before, 1980s the computing world was unknown to the power of object oriented programming. This was like a hidden diamond in computer programming. I would like to explain few things that I experienced in my life to move from POP to OOP.

I came across the computer programming in ninth standard for first time. BASIC was the first language on which I wrote a program for. Basically, the programs that I wrote were pre-defined. We were told to write the programs in some pre-defined way by our teachers. So, the logic behind the computer program was not understood by me! Then in the second year of diploma in computer engineering I learned the C programming. This was the first time; I forced myself to understand the programming! The ways in which I wrote the program was some bit strange. Because, there were no guide for us to tell us. Some of my friends help me understand the programming. I used to write the program in many different ways. Still, then I was confused in some of the points. We were not having any teacher to teach the C programming. In last year also, I had came across only the programming with C in subject ‘Computer Graphics’. Few of my friends were doing their final year project in C++ programming. So, I thought this language will be simple and quite similar to that of C. but, when I studied I went wrong. Not a single bit I understood from C++, except that it is an object oriented programming language! Due to this, I left the study of this language.

In whole second year degree in engineering, we used only C programming language to write the programs. I thought, it was goodness of our university that they did not keep any other programming language for study in that year. The C++ was there in practical syllabus of university in third year, first semester. Actually, it was a combination of many subjects’ practical. C++ programming was one of it. I was having a strong hold on C programming so I thought it would be very easy the learn C++ at this stage. But, again I went wrong. I found it very difficult that, why to write classes, why to inherit them, why to write two functions with same name or same parameters. I did not found the answers to these questions by my own. This was the reason; I left the study of C++ programming. It was unfortunate that, finally in the university practical, I got the question of a C++ practical to perform. This was the first time, I thought, I am not knowing the programming! I tried the program for many ways, but I failed. I remember, Prof. Rekha Kulkarni from PICT College was the external examiner for that exam. She asked me, what have you done in whole semester? I was unanswered.

I tried to improve myself in object oriented programming, but I failed in that. Next time, when I appeared for the exam, I got different practical than C++ to perform. It has made easy for me to pass the exam. I came across the Java programming language two years later. This was the turning point to understand the conceptual object oriented programming. Actually, Java is strongly object oriented language. Whenever you write any program in Java, it forms an object. So, it has forced me to write programs with the help of classes. So, when the need of inheritance or polymorphism arose I used to fulfill that with the programming logic. After all these features of Java programming language I understood the concepts of OOP for the first time. But it has taken a lot of time to switch from POP to OOP. C and Java both the strong in their concepts of POP and OOP respectively. So we need to follow the procedure to write the program in these languages. It increases the ability to understand the structure of these languages. Automatically, the programming tactics of languages are increased. I observed the same in this study. After learning Java in two months, I found C++ is very simple OOP language! Only, the thing was that I was using the combination of POP and OOP in C++. I was not using the OOP feature of C++, because, the solution was not forced. At actual, in Java, this was forced.

This happens many times in our life that we think in different way that it is actual. In such case we need a guide or we need to change the way. That I learned from these all.