Uploaded avatar of iHiD

शुरू हो गया है Analytical April!

@iHiD
3 साल से अधिक पहले
वीडियो

सभी को नमस्ते! हमारे पास फंक्शनल फरवरी और मैकेनिकल मार्च रह चुके हैं। अब एनालिटिकल अप्रैल का समय है, जिसमें हम उन भाषाओं पर ध्यान देंगे जो डेटा साइंस के लिए बहुत अच्छी हैं।

जैसा कि आप पिछले कुछ महीनों से उम्मीद करते आए हैं, इस वीडियो में Erik और मैं आपको जल्दी से बताएँगे कि इस महीने में क्या होने वाला है और हम कौन सी अलग-अलग भाषाएँ देखेंगे।

तो हमेशा की तरह, Erik थोड़ी देर में हमें इन भाषाओं के बारे में बताएँगे, लेकिन मैं शुरुआत इस महीने की कुछ व्यावहारिक जानकारियों से करूँगा।

तो सबसे पहले, इस महीने की फीचर्ड भाषाएँ। इस महीने हमारे पास सिर्फ तीन हैं: Julia, Python और R.

इनमें से हर भाषा काफी अलग है, और ज़ाहिर है कि Python एक ऐसी भाषा है जिसका इस्तेमाल कई तरह से किया जा सकता है। लेकिन इस महीने हम आपको प्रोत्साहित करेंगे कि आप इन भाषाओं को डेटा साइंस की सोच के साथ आज़माकर देखें।

एनालिटिकल अप्रैल बैज पाने के लिए आपको इनमें से किसी एक भाषा में पाँच अभ्यास पूरे करने होंगे। हम इनके बीच के अंतरों पर थोड़ी देर में बात करेंगे, लेकिन Exercism के हिसाब से हमारे Python ट्रैक का सिलेबस बहुत शानदार है, इसलिए मैं सच में सलाह दूँगा कि आप उसे आज़माकर देखें। हमें उम्मीद है कि इस महीने के दौरान Julia का सिलेबस भी शुरू हो जाएगा। उसका बहुत सारा काम हो चुका है और बस उसे थोड़ा सँवारना बाकी है। R का कोई सिलेबस नहीं है, लेकिन इसमें खेलने के लिए बहुत सारे दिलचस्प अभ्यास हैं।

आज़माने के लिए हमारे पास पाँच फीचर्ड अभ्यास हैं:

  • etl: जिसमें आप डेटा को किसी दूसरे फॉर्मैट में ढालना जान सकते हैं
  • largest-series-product: जिसमें आप अंकों की स्ट्रिंग में पैटर्न ढूँढने के कुशल तरीकों का अभ्यास कर सकते हैं
  • saddle-points: बहु-आयामी ऐरे/मैट्रिक्स के साथ काम करना जानने के लिए
  • sum-of-multiples: संख्याओं के क्रम को छानने और जोड़ने का अभ्यास करने के लिए
  • word-count: एक स्ट्रिंग को शब्दों में बदलकर उन्हें गिनने के लिए

एक याद दिला दूँ: एनालिटिकल अप्रैल बैज के अलावा एक साल भर चलने वाला #12in23 बैज भी है, जो आपको साल में कभी भी अलग-अलग फीचर्ड अभ्यास हल करके मिल सकता है। तो वह बैज पाने के लिए आपको इस साल कभी भी Python, R या Julia में वे 5 अभ्यास हल करने होंगे! अभ्यासों की पूरी सूची के लिए एनालिटिकल अप्रैल पेज से जुड़ा एक फोरम पोस्ट है।

अंत में, भाषाओं की गहराई में जाने से पहले एक याद दिला दूँ कि मार्च के दौरान हम अपना नया Discord सर्वर शुरू कर रहे हैं। वहाँ बहुत मज़ेदार गतिविधियाँ हो रही हैं, इसलिए ज़रूर देखिए। लिंक नीचे डिस्क्रिप्शन में है!

तो चलिए, अब भाषाओं को जानते हैं। पहले हर भाषा का एक संक्षिप्त अवलोकन करते हैं और उसके बाद उनकी विशेषताओं और उपयोगों में गहराई से जाएँगे। शुरुआत Python से करते हैं।

Python

  • इसकी कल्पना और विकास Guido van Rossum ने 1980 के दशक के अंत में ABC प्रोग्रामिंग भाषा के उत्तराधिकारी के रूप में किया। इसे पहली बार 1991 में जारी किया गया।
  • इसे नीदरलैंड्स में Centrum Wiskunde & Informatica (CWI) में विकसित किया गया, जो सरकारी फंडिंग से चलने वाली एक शोध प्रयोगशाला है। (यह जगह इस बात के लिए मशहूर है कि Edsger Dijkstra ने अपना ज़्यादातर काम यहीं किया।)
  • Guido, C और shell स्क्रिप्ट का इस्तेमाल करके प्रोग्राम लिखते थे, लेकिन दोनों में कुछ कमियाँ थीं। Python का लक्ष्य है कि वह दोनों की अच्छाइयाँ ले ले और कमियाँ न रहने दे।
  • इसका प्रबंधन Python Software Foundation करता है और भाषा में बदलाव Python Enhancement Proposals (PEPs) के ज़रिए होते हैं (RFC's जैसे)

R

  • इसे University of Auckland में Ross Ihaka और Robert Gentleman ने बनाया। R को S भाषा का एक अलग कार्यान्वयन माना जा सकता है (थोड़े-बहुत अंतरों के साथ), जिसके बाद S-plus आया, जो S का एक व्यावसायिक (ओपन नहीं) कार्यान्वयन था। R का ज़्यादातर सिंटैक्स S जैसा ही है, लेकिन इसकी सीमैंटिक्स Scheme से प्रेरित हैं
  • लक्ष्य: ऐसी भाषा बनाना जो सांख्यिकीय गणना और ग्राफिक्स के लिए ज़्यादा उपयुक्त हो, और कंप्यूटर वैज्ञानिकों द्वारा बनाए गए मिलते-जुलते सॉफ्टवेयर से इस्तेमाल में आसान हो

Julia

  • इसे Jeff Bezanson, Stefan Karpinski, Viral B. Shah और Alan Edelman ने खुले तौर पर विकसित किया। आज इसके हज़ार से ज़्यादा योगदानकर्ता हैं
  • लक्ष्य: एक मुफ्त, हाई-लेवल भाषा बनाना जिसमें C की रफ्तार, Ruby का गतिशीलपन, LISP की मेटाप्रोग्रामिंग, Python की सामान्य-उद्देश्य क्षमता, R का सांख्यिकी समर्थन, MatLab का लीनियर अल्जेब्रा समर्थन और Perl की स्ट्रिंग प्रोसेसिंग शक्ति हो। और साथ ही यह बड़े पैमाने पर समानांतर निष्पादन का समर्थन भी कर सके
  • वैज्ञानिक गणना के लिए बढ़िया, लेकिन यह एक सामान्य-उद्देश्य भाषा भी है (वेब ऐप्स के लिए Genie फ्रेमवर्क)

बहुत सी भाषाओं की तरह, ये तीनों भी असंतोष से ही बनी हैं :)

अच्छा, बढ़िया। तो उपयोगों की बात करें, तो आप इनमें से हर भाषा को दूसरों के मुकाबले कब इस्तेमाल करेंगे?

Python

  • सचमुच सामान्य-उद्देश्य भाषा (वेबसाइटें, स्क्रिप्ट, वैज्ञानिक गणना)
  • इसका इस्तेमाल कई अलग-अलग कामों के लिए किया जा सकता है: AI (TensorFlow), वैज्ञानिक गणना (NumPy) स्क्रिप्ट, वेबसाइटें (Django), एम्बेडेड सिस्टम (micro python), हार्डवेयर से जोड़ना (जैसे raspberry pi), गेम (EVE online)। और Python तो मंगल ग्रह तक भी गई है
  • प्रोग्रामिंग सीखने के लिए बहुत अच्छी: ढेर सारे संसाधन और बहुत बड़ी कम्युनिटी। Pythonic कोड लिखने पर बहुत मार्गदर्शन मिलता है (यानी Python का स्वाभाविक कोड कैसे लिखें, उसके उदाहरण), जैसे "स्पष्टता अस्पष्टता से बेहतर है" और "पढ़ने में आसानी मायने रखती है")। कई ऑपरेटिंग सिस्टम में यह पहले से इंस्टॉल रहती है
  • इस समय सबसे ज़्यादा इस्तेमाल होने वाली भाषाओं में से एक, इसलिए ढेर सारा डॉक्युमेंटेशन, लाइब्रेरी और बड़ी कम्युनिटी मौजूद है

R

  • R का इस्तेमाल बहुत अलग-अलग जगहों पर होता है। शोधकर्ता इससे प्रयोगों के डेटा का विश्लेषण करते हैं, विश्वविद्यालय इससे सांख्यिकी और डेटा विश्लेषण पढ़ाते हैं, वित्त क्षेत्र में यह अहम है क्योंकि वहाँ सांख्यिकी सबसे ज़रूरी चीज़ है (जैसे बीमा के लिए), ऐसे ही रिटेल में (Amazon डेटा एनालिटिक्स के लिए R का इस्तेमाल करता है) और विनिर्माण में (John Deere अनुमान लगाता है कि कितने स्पेयर पार्ट्स बनाने हैं), National Weather Service इसकी मदद से मौसम और आपदाओं का पूर्वानुमान लगाता है, डेटा जर्नलिज़्म में (वास्तविक दुनिया के डेटा का विश्लेषण करके उसे समझना, अक्सर विज़ुअलाइज़ेशन के साथ), और स्वास्थ्य सेवा में इसका बहुत इस्तेमाल होता है, जैसे किसी दवा की सुरक्षा तय करना, जो प्री-क्लिनिकल ट्रायल्स पर आधारित होता है

Julia:

  • वैज्ञानिक गणना, डेटा माइनिंग, मशीन लर्निंग, लीनियर अल्जेब्रा और डिस्ट्रिब्यूटेड कंप्यूटिंग के लिए बढ़िया। इसका नोटेशन गणित के नोटेशन जैसा लगेगा, इसलिए समीकरण को कोड में बदलना काफी आसान है
  • डिस्ट्रिब्यूटेड कंप्यूटिंग: टास्क (=कोरूटीन) और चैनल कोड को साथ-साथ चलाने देते हैं, जहाँ वे एक-दूसरे से बात कर सकते हैं; मैसेज पासिंग के ज़रिए मल्टी-प्रोसेस का समर्थन (हाई-परफॉर्मेंस कंप्यूटिंग के लिए बढ़िया)
  • Celeste प्रोजेक्ट में इसका इस्तेमाल हुआ (एक सुपरकंप्यूटर जो 178 टेराबाइट खगोलीय डेटा का विश्लेषण करने के लिए Julia कोड चलाता है)। इसी वजह से Julia पेटाफ्लॉप क्लब का हिस्सा बन गई, जिसमें उस समय सिर्फ C, C++ और Fortran थीं। Julia पहली डायनामिक भाषा है जिसने एक क्वाड्रिलियन फ्लोटिंग-पॉइंट गणनाएँ प्रति सेकंड कीं। यानी 1 के बाद 15 शून्य। इसके अलावा Clima (Climate modeling alliance) में Caltech, MIT और NASA की Jet Propulsion Laboratory के लोग मिलकर जलवायु पूर्वानुमान मॉडल बनाते हैं, और CERN तथा ASML भी इसका इस्तेमाल करते हैं

और प्रोग्रामिंग के नज़रिए से ये अलग कैसे हैं? क्या ये फंक्शनल हैं, OOP हैं, वगैरह?

Python:

  • डायनामिक और स्ट्रॉन्गली टाइप्ड
  • मल्टी-पैराडाइम: इम्परेटिव, फंक्शनल, लेकिन असल में यह ऑब्जेक्ट-ओरिएंटेड भाषा है (हर चीज़ एक ऑब्जेक्ट है)
  • इसका डिफ़ॉल्ट इंटरप्रेटर CPython बाइटकोड में कंपाइल करता है और फिर उसे एक वर्चुअल मशीन में इंटरप्रेट किया जाता है। PyPy, CPython का एक विकल्प है जो जस्ट-इन-टाइम कंपाइल करके मशीन कोड बनाता है

R:

  • डायनामिक और स्ट्रॉन्गली टाइप्ड
  • मल्टी-पैराडाइम, इसका मुख्य हिस्सा फंक्शनल है, लेकिन यह प्रोसीजरल या ऑब्जेक्ट-ओरिएंटेड तरीकों का भी समर्थन करती है

Julia:

  • डायनामिक और स्ट्रॉन्गली टाइप्ड, जस्ट-इन-टाइम कंपाइल होती है
  • मल्टी-पैराडाइम: इम्परेटिव, ऑब्जेक्ट-ओरिएंटेड (मल्टीपल डिस्पैच के ज़रिए ओवरलोडिंग), फंक्शनल (हायर-ऑर्डर फंक्शन, पार्शियल एप्लिकेशन, पाइप ऑपरेटर)
  • कोड रनटाइम पर जस्ट-इन-टाइम तरीके से, पहले से (अहेड-ऑफ-टाइम) कंपाइल हो जाता है

और प्रोग्रामिंग के नज़रिए से इन्हें देखते हुए, क्या इन भाषाओं में कोई ऐसी खास बात है जो इन्हें अलग बनाती है?

Python:

  • सुंदर सिंटैक्स: व्हाइटस्पेस का मतलब होना स्कोप को देखना आसान बनाता है। कोड आम तौर पर पढ़ने में आसान होता है, जैसे इंसान के पढ़ने लायक बूलियन शर्तें (and/or)
  • एक्सप्रेसिव: कम कोड में बहुत कुछ कर सकते हैं (लिस्ट कॉम्प्रिहेंशन, जेनरेटर, डेकोरेटर)
  • अलग-अलग कामों के लिए ढेर सारी लाइब्रेरी उपलब्ध हैं
  • जैसा पहले बताया, यह सचमुच एक सामान्य-उद्देश्य भाषा है, क्योंकि इसका इस्तेमाल बहुत अलग-अलग जगहों पर किया जा सकता है

Julia

  • मल्टीपल डिस्पैच। यह तय करना कि कौन सा फंक्शन कॉल करना है, सभी आर्गुमेंट के टाइप के आधार पर (फंक्शन ओवरलोडिंग की तरह)
  • डायनामिक है, लेकिन परफॉर्मेंस शानदार है। Julia का परफॉर्मेंस Fortran से टक्कर ले सकता है और C के काफी करीब पहुँच सकता है। "सामान्य" कोड भी अक्सर तेज़ चलता है (कोई पागलपन वाले जुगाड़ नहीं चाहिए, और छोटे फंक्शन लिखने को तो बढ़ावा ही दिया जाता है)। GPU पर कोड चलाने के लिए लाइब्रेरी भी हैं
  • डिस्ट्रिब्यूटेड कंप्यूटिंग: टास्क (=कोरूटीन) और चैनल कोड को साथ-साथ चलाने देते हैं, जहाँ वे एक-दूसरे से बात कर सकते हैं; मैसेज पासिंग के ज़रिए मल्टी-प्रोसेस का समर्थन (हाई-परफॉर्मेंस कंप्यूटिंग के लिए बढ़िया)
  • वैज्ञानिक गणना, डेटा माइनिंग, मशीन लर्निंग, लीनियर अल्जेब्रा और डिस्ट्रिब्यूटेड कंप्यूटिंग के लिए बढ़िया। इसका नोटेशन गणित के नोटेशन जैसा लगेगा, इसलिए समीकरण को कोड में बदलना काफी आसान है

R:

  • लचीले डेटा टाइप: वेक्टर मुख्य टाइप है, स्केलर भी वेक्टर ही होते हैं। वेक्टर के साथ मेटाडेटा भी जुड़ा हो सकता है (जैसे उसके एलिमेंट के नाम)। लिस्ट में अलग-अलग तरह के एलिमेंट रखे जा सकते हैं। वेक्टर के संग्रह के लिए एक खास डेटाफ्रेम टाइप होता है (सब एक ही लंबाई के)।
  • वेक्टराइज़्ड ऑपरेशन की मदद से वेक्टर को छोटे, तेज़ और पढ़ने में आसान तरीके से अपडेट किया जा सकता है
  • R, डेटा में बदलाव, गणना और ग्राफिकल प्रदर्शन के लिए सॉफ्टवेयर सुविधाओं का एक एकीकृत समूह है। RStudio के ज़रिए डेटा को देखना, विज़ुअलाइज़ करना और उसमें बदलाव करना आसान है। डेटा माइनिंग के लिए बढ़िया
  • बढ़िया कम्युनिटी, दोस्ताना और विविध। R for Data Science Online Learning Community में हर लेवल के R सीखने वाले लोग एक साथ मिलकर अपने हुनर सुधारते हैं। एक खुला Slack समूह है जहाँ सदस्य एक-दूसरे के संपर्क में रहते हैं और समस्याओं में एक-दूसरे की मदद करते हैं।

अगर किसी को पता न हो कि अप्रैल में कौन सी आज़मानी है, तो आप कैसे सुझाव देंगे कि वे फैसला कैसे करें?

IT की हर चीज़ की तरह: यह निर्भर करता है! यहाँ मैं कहूँगा कि यह ज़्यादातर आपके लक्ष्यों और अपने अनुभव पर निर्भर करता है।

अगर आप प्रोग्रामिंग में काफी नए हैं, AI या मशीन लर्निंग में दिलचस्पी रखते हैं, या ऐसी भाषा सीखना चाहते हैं जिसे आप कई अलग-अलग कामों में इस्तेमाल कर सकें, तो मैं शायद Python से शुरुआत करने की सलाह दूँगा: Python के लिए उपलब्ध संसाधनों की संख्या बहुत बड़ी है, जिसमें कई मुफ्त ऑनलाइन कोर्स भी शामिल हैं AI और मशीन लर्निंग में Python का जमकर इस्तेमाल होता है Python का इस्तेमाल बहुत सारे कामों के लिए किया जा सकता है Python ट्रैक में लर्निंग मोड चालू है, जो आपको भाषा के मूल कॉन्सेप्ट मज़ेदार तरीके से सीखने में मदद कर सकता है

अगर आप सांख्यिकी का काम करना चाहते हैं, डेटा को देखना और विज़ुअलाइज़ करना चाहते हैं, या डेटा के साथ काम करने का कोई अलग तरीका जानने की जिज्ञासा है, तो R भाषा बढ़िया विकल्प है: R के डेटा टाइप डेटा के संग्रह (वेक्टर/लिस्ट) पर आधारित हैं और संग्रह पर ऑपरेशन आसानी से लागू किए जा सकते हैं (लूप की ज़रूरत नहीं) RStudio IDE डेटा को देखने और विज़ुअलाइज़ करने के लिए बढ़िया है R में सांख्यिकीय विश्लेषण का बहुत अच्छा समर्थन है R में डेटा को आसानी से प्लॉट किया जा सकता है

अगर आपको वैज्ञानिक गणना में दिलचस्पी है, कोड साथ-साथ चलाना चाहते हैं, परफॉर्मेंस की सच में परवाह करते हैं, या ऐसी आधुनिक और सुंदर भाषा सीखना चाहते हैं जो बाकी ज़्यादातर भाषाओं से कुछ अलग देती है, तो मैं Julia की सलाह दूँगा:

  • मल्टीपल डिस्पैच बहुत लोगों के लिए नया होगा और यह बेहद शक्तिशाली है
  • Julia वैज्ञानिक गणना के लिए बढ़िया है
  • Julia का टाइप सिस्टम लचीला और एक्सप्रेसिव है
  • Julia का परफॉर्मेंस शानदार है
  • Julia साथ-साथ निष्पादन के लिए बढ़िया है

बेशक, अगर आपके पास समय हो तो मैं सलाह दूँगा कि आप तीनों आज़माकर देखें! आपको तब तक पता ही नहीं चलता कि कौन सी भाषा आपको पसंद आएगी, जब तक आप उसे आज़मा न लें।

01 अप्रैल 2023 · क्या यह काम की लगी?