जूलिया: यह कैसे कर रहा है का जायजा लेते हुए


19

मुझे 2012 का एक प्रश्न आया, जिसमें विभिन्न प्रकार के सांख्यिकीय कार्यों के लिए आर / पायथन के विकल्प के रूप में जूलिया के बारे में बहुत अच्छी चर्चा थी।

यहां जूलिया के वादे के बारे में 2012 से मूल प्रश्न निहित है

दुर्भाग्यवश जूलिया तब बहुत नई थी और सांख्यिकीय कार्यों के लिए आवश्यक टूलकिट कुछ आदिम थे। कीड़े-मकोड़ों से लोहा लिया जा रहा था। वितरण को स्थापित करना मुश्किल था। Et cetera।

उस सवाल पर किसी ने बहुत ही टिप्पणी की थी:

यह कहा, यह 5 साल हो जाएगा इससे पहले कि इस सवाल का उत्तर संभवतः दृष्टि में दिया जा सकता है। फिलहाल, जूलिया में एक सांख्यिकीय प्रोग्रामिंग प्रणाली के निम्नलिखित महत्वपूर्ण पहलुओं का अभाव है जो दिन-प्रतिदिन उपयोगकर्ताओं के लिए R के साथ प्रतिस्पर्धा कर सकता है:

यह 2012 में था। अब जब यह 2015 हो गया है और तीन साल बीत चुके हैं, तो मैं सोच रहा था कि लोग कैसे सोचते हैं कि जूलिया ने क्या किया है?

क्या भाषा और समग्र जूलिया पारिस्थितिकी तंत्र के साथ अनुभव का एक समृद्ध शरीर है? मुझे जानने में खुशी होगी।

विशेष रूप से:

  1. क्या आप जूलिया आर के बारे में जानने के लिए सांख्यिकीय उपकरणों के किसी नए उपयोगकर्ता को सलाह देंगे?
  2. जूलिया का उपयोग करने के लिए आप किस तरह के सांख्यिकी उपयोग के मामलों की सलाह देंगे?
  3. यदि R एक निश्चित कार्य में धीमा है, तो क्या यह जूलिया या पायथन में जाने के लिए समझ में आता है?

नोट: सबसे पहले 14 जून 2015 को पोस्ट किया गया।


2
मैंने हाल ही में एक नज़र लिया और उनके आँकड़ों के पैकेज की गहराई से अप्रभावित था। अगर मैं गलत नहीं हूं, तो पायथन की व्याख्या भी की जाती है, इसलिए आर के समान ही सीमाएं होंगी। जूलिया का आकर्षण जैसा कि मैंने समझा था कि यह अतिरिक्त गति और समानांतर उपयोग के लिए बेहतर पहुंच का वादा था।
DWIN

3
मुझे लगता है कि जूलिया के साथ समस्या यह है कि SciPy बेहतर होता रहता है, और अब हमारे पास मिक्सी में भी मशाल है। कोई भी तीसरे (या चौथे या पांचवें) वैज्ञानिक कंप्यूटिंग भाषा को सीखना नहीं चाहता है, भले ही यह तेज़ हो और इसमें कूल फ़ंक्शन ओवरलोडिंग विशेषताएं हों।
छायाकार

4
जूलिया एक अच्छी तरह से डिजाइन, अच्छी भाषा है, लेकिन मेरी राय में यह बहुत कम देर से पहुंची। एकल-नोड मैट्रिक्स संगणना ट्रेन लंबे समय से गुजर चुकी है। जूलिया अनिवार्य रूप से फोर्ट्रान 2.0 है, जिसमें कई अच्छी विशेषताएं हैं, लेकिन जैसा कि हम क्लाउड कंप्यूटिंग में तेजी से संक्रमण करते हैं, यह कुछ हद तक स्काला, क्लोजर और यहां तक ​​कि पायथन जैसी कार्यात्मक भाषाओं की पेशकश करने के लिए बहुत कम है। अगर जूलिया 10 साल पहले अपनी वर्तमान स्थिति में होती, तो यह एक बहुत बड़ी सफलता हो सकती थी।
मार्क क्लेसेन

2
अजगर और Rcpp वास्तव में गतिशील रूप से विकसित कर रहे हैं, अनुसंधान लाभ अधिक से अधिक ध्यान (आर कंसोर्टियम, माइक्रोसॉफ्ट आदि) तो यह जूलिया ... पकड़ने के लिए के लिए मुश्किल हो रहा है
टिम

1
मैंने जूलिया के लिए व्यावसायिक मामला नहीं देखा, और अभी भी नहीं। ऐसा लग रहा था कि प्रोग्रामर्स द्वारा पहले से मौजूद कुछ को फिर से बनाने के लिए एक निरर्थक प्रयास किया गया था।
अर्ककाल

जवाबों:


15

मैंने जूलिया को बदल दिया है, और यहाँ मेरे व्यावहारिक कारण हैं:

  • यह गोंद कोड वास्तव में अच्छी तरह से करता है। MATLAB में मेरे पास बहुत सारे विरासत कोड हैं, और MATLAB.jl को स्थापित होने में 5 मिनट लगते हैं, पूरी तरह से काम करता है, और इसमें एक सक्सेना सिंटैक्स होता है जो MATLAB फ़ंक्शन का उपयोग करने के लिए स्वाभाविक है। जूलिया में आर, पायथन, सी, फोरट्रान और कई अन्य भाषाओं के लिए भी समान है।
  • जूलिया समानता वास्तव में अच्छी तरह से करता है। मैं न केवल कई प्रोसेसर (साझा मेमोरी) समानता के बारे में बात कर रहा हूं, बल्कि बहु-नोड समानता भी है। मेरे पास एक एचपीसी नोड्स तक पहुंच है, जिसका उपयोग बहुत बार नहीं किया जाता है क्योंकि प्रत्येक बहुत धीमा है, इसलिए मैंने जूलिया को एक कोशिश देने का फैसला किया। मैंने @ लोपरेल को एक लूप के साथ जोड़ा, इसे मशीन फ़ाइल बताकर शुरू किया, और bam ने सभी 5 नोड्स का उपयोग किया। आर / पायथन में ऐसा करने का प्रयास करें। MPI में इसे काम करने के लिए थोड़ी देर लगेगी (और यह जानने के साथ कि आप क्या कर रहे हैं), कुछ मिनट नहीं जब आप पहली बार इसे आज़माते हैं!
  • जूलिया का वैश्वीकरण तेज है (कई मामलों में किसी भी अन्य उच्च स्तरीय भाषा की तुलना में तेजी से), और इसका devectorized कोड लगभग C तेज है। इसलिए यदि आप वैज्ञानिक एल्गोरिदम लिखते हैं, तो आमतौर पर आप इसे पहले MATLAB में लिखते हैं और फिर इसे सी। में लिखते हैं। जूलिया आपको इसे एक बार लिखने देता है, फिर इसे कंपाइलर कोड देता है और 5 मिनट बाद यह तेज़ होता है। यहां तक ​​कि अगर आप नहीं करते हैं, तो इसका मतलब है कि आप बस कोड लिखते हैं जो भी स्वाभाविक लगता है और यह अच्छी तरह से चलेगा। R / Python में, आपको कभी-कभी एक अच्छे वेक्टर संस्करण को प्राप्त करने के लिए बहुत कठिन सोचना पड़ता है (जो बाद में समझने में कठिन हो सकता है)।
  • मेटाप्रोग्रामिंग महान है। उस समय की संख्या के बारे में सोचें, जब आप "मैं चाहता हूं कि मैं भाषा में ______ हो"। इसके लिए एक मैक्रो लिखें। आमतौर पर किसी के पास पहले से ही है।
  • सब कुछ गितुब पर है। स्रोत कोड। संकुल। कोड को पढ़ने के लिए सुपर आसान है, डेवलपर्स को मुद्दों की रिपोर्ट करें, उनसे बात करें कि कुछ कैसे करें, या यहां तक ​​कि खुद को पैकेज में सुधार करें।
  • उनके पास वास्तव में कुछ अच्छे पुस्तकालय हैं। आंकड़ों के लिए, आप शायद उनके अनुकूलन पैकेजों में दिलचस्पी लेंगे (JuliaOpt एक समूह है जो उन्हें प्रबंधित करता है)। संख्यात्मक पैकेज पहले से ही शीर्ष पायदान पर हैं और केवल सुधार कर रहे हैं।

उस ने कहा, मैं अभी भी Rstudio से प्यार करता हूं, लेकिन एटम पर नया जूनो वास्तव में अच्छा है। जब यह भारी विकास में नहीं रह जाता है और स्थिर होता है, तो मैं प्लगइन्स की आसानी के कारण इसे Rstudio से बेहतर देख सकता हूं (उदाहरण: इसमें hidpi स्क्रीन को एडैप करने के लिए एक अच्छा प्लगइन है)। इसलिए मुझे लगता है कि जूलिया अब सीखने के लिए एक अच्छी भाषा है। इसने मेरे लिए अब तक अच्छा काम किया है। YMMV।


क्या आपको लगता है कि इस उत्तर को अपडेट करने में 3 साल से अधिक समय बीत चुका है?
बायोपेनसिस्ट

1
मैंने यहां एक अद्यतन प्रतिक्रिया दी: scicomp.stackexchange.com/questions/10922/… । हो सकता है कि नकल हो जाए।
क्रिस रैकॉकास

11

मुझे लगता है कि "सीखना X over Y" सवाल तैयार करने का सही तरीका नहीं है। वास्तव में, आप दोनों (कम से कम मूल बातें) सीख सकते हैं और हाथ में ठोस कार्य के आधार पर सही उपकरण पर निर्णय ले सकते हैं। और जब से जूलिया को अपने अधिकांश सिंटैक्स और अवधारणाओं को अन्य भाषाओं से विरासत में मिला है, तो यह समझ में आना आसान है (साथ ही साथ पायथन, हालांकि मुझे यकीन नहीं है कि आर के बारे में भी यही कहा जा सकता है)।

तो कौन सी भाषा किस कार्य के लिए बेहतर अनुकूल है? इन उपकरणों के साथ अपने अनुभव के आधार पर मैं उन्हें निम्नानुसार रेट करूंगा:

  • के लिए शुद्ध सांख्यिकीय अनुसंधान कि आरईपीएल और लिपियों के एक जोड़े के साथ किया जा सकता है, आर सही विकल्प हो रहा है। यह विशेष रूप से आंकड़ों के लिए डिज़ाइन किया गया है, इसमें उपकरणों का सबसे लंबा इतिहास है और शायद सांख्यिकीय पुस्तकालयों का सबसे बड़ा सेट है।

  • यदि आप आंकड़े (या, उदाहरण के लिए, मशीन लर्निंग) को उत्पादन प्रणाली में एकीकृत करना चाहते हैं , तो पायथन बेहतर विकल्प की तरह लगता है: एक सामान्य-प्रयोजन प्रोग्रामिंग भाषा के रूप में इसमें एक भयानक वेब स्टैक है, जो अधिकांश एपीआई और पुस्तकालयों को सब कुछ के लिए साक्षर करता है। 3 डी गेम बनाने के लिए वेब को स्क्रैप करने से ।

  • उच्च प्रदर्शन एल्गोरिदम जूलिया में लिखना बहुत आसान है । यदि आपको केवल मौजूदा पुस्तकालयों जैसे कि SciKit Learn या e1071 C / C ++ द्वारा समर्थित का उपयोग करने या संयोजित करने की आवश्यकता है , तो आप पायथन और आर के साथ ठीक हो जाएंगे। लेकिन जब यह तेजी से बैकएंड की बात आती है, तो जूलिया वास्तविक समय सेवर बन जाती है, यह बहुत तेज़ है अजगर या आर और सी / सी ++ के अतिरिक्त ज्ञान की आवश्यकता नहीं है। एक उदाहरण के रूप में, शुद्ध जूलिया डीप लर्निंग फ्रेमवर्क कैफ में मोचा.जेल पुनर्मिलन , मूल रूप से पायथन में एक आवरण के साथ C ++ में लिखा गया है।

  • यह भी मत भूलो कि कुछ पुस्तकालय केवल कुछ भाषाओं में उपलब्ध हैं। उदाहरण के लिए, केवल पाइथन में कंप्यूटर दृष्टि के लिए परिपक्व पारिस्थितिकी तंत्र है, कुछ आकार-मिलान और ट्रासफॉर्मेशन एल्गोरिदम केवल जूलिया में लागू किए गए हैं और मैंने आर में चिकित्सा में आंकड़ों के लिए कुछ अनूठे पैकेजों के बारे में सुना है।


मैं कहूंगा कि ज्यादातर लोगों को एक का चयन करने की कोशिश करनी चाहिए और ज्यादातर उसी के साथ रहना चाहिए --- मेरे लिए कम से कम, कई भाषाओं का उपयोग करके मैं उन्हें मिश्रण करता हूं, इस तरह से बहुत समय खो देता है ...
kjetil b halvorsen

1
उच्च-प्रदर्शन एल्गोरिदम लिखने के साथ एक विरोधाभास मुद्दा यह है कि भले ही वे आर या जूलिया जैसी उच्च स्तर की भाषा में लिखना आसान कर सकते हैं, जब तक आप वास्तव में उच्च-प्रदर्शन एल्गोरिदम लिख रहे हैं, तब तक आप शायद सी ++ जैसे कुछ का उपयोग करना पसंद करते हैं। या शायद वह सिर्फ मैं ही हूं।
क्लिफ एबी

3

(ख) आप किस तरह के सांख्यिकी उपयोग के मामलों में किसी को जूलिया का उपयोग करने की सलाह देंगे

(c) यदि R एक निश्चित कार्य में धीमा है, तो इससे जूलिया या पायथन में स्विच करने का कोई मतलब नहीं है?

उच्च आयामी और गणना गहन समस्याओं।

  • बहु। जूलिया के एकल नोड समानांतर क्षमता ( @spawnat) अजगर में उन लोगों की तुलना में बहुत अधिक सुविधाजनक हैं। उदाहरण के लिए अजगर में आप आरईपीएल पर मल्टीप्रोसेसिंग पूल को कम करने वाले नक्शे का उपयोग नहीं कर सकते हैं और आपके द्वारा समानांतर किए जाने वाले प्रत्येक फ़ंक्शन को बहुत सारे बॉयलरप्लेट की आवश्यकता होती है।

  • क्लस्टर कंप्यूटिंग। जूलिया का ClusterManagersपैकेज आपको एक गणना क्लस्टर का उपयोग करने की सुविधा देता है जैसा कि आप कई कोर के साथ एक एकल मशीन करेंगे। [मैं इसे क्लस्टरस्टाइल में स्क्रिप्टिंग की तरह महसूस करने के साथ खेल रहा हूं ]

  • शेयर्ड मेमोरी। जूलिया की SharedArrayवस्तुएं अजगर में समतुल्य साझा मेमोरी ऑब्जेक्ट से बेहतर हैं।

  • स्पीड। मेरी जूलिया कार्यान्वयन यादृच्छिक संख्या पीढ़ी में और मेरे रेखीय बीजगणित (मल्टीथ्रेडेड बीएलएएस का समर्थन करता है) पर मेरे आर कार्यान्वयन से तेज (एकल-मशीन) है।
  • इंटरोऑपरेबिलिटी। जूलिया का PyCallमॉड्यूल आपको रैपर के बिना अजगर पारिस्थितिकी तंत्र तक पहुंच प्रदान करता है - जैसे मैं इसके लिए उपयोग करता हूं pylab। आर के लिए भी कुछ ऐसा ही है, लेकिन मैंने इसकी कोशिश नहीं की है। ccallसी / फोरट्रान पुस्तकालयों के लिए भी है।
  • GPU। जूलिया के CUDA रैपर अजगर की तुलना में कहीं अधिक विकसित हैं (जब मैंने जाँच की तो लगभग गैर मौजूद थे)। मुझे संदेह है कि जूलिया को अजगर की तुलना में बाहरी पुस्तकालयों को कॉल करना कितना आसान है क्योंकि यह मामला जारी रहेगा।

  • पारिस्थितिकी तंत्र। Pkgमॉड्यूल का उपयोग करता है एक बैकेंड के रूप में GitHub। मेरा मानना ​​है कि इससे जूलिया मॉड्यूल की लंबी अवधि की स्थिरता पर बड़ा प्रभाव पड़ेगा क्योंकि यह पैच या मालिकों को जिम्मेदारी पर पारित करने की पेशकश करने के लिए अधिक सरल बनाता है।

  • σ

बड़ी समस्याओं के लिए तेजी से कोड लिखना तेजी से समानांतर कंप्यूटिंग पर निर्भर करेगा। पायथन स्वाभाविक रूप से समानांतर अनफ्रेंडली (जीआईएल) है, और आर में देशी मल्टीप्रोसेसिंग एफ़ैक्सिव है। जूलिया के लिए आपको सी कोड डालने की आवश्यकता नहीं होती है, क्योंकि वह पाइथन / आर / मैटलैब की भावना को बनाए रखता है।

अजगर / आर से आने वाले जूलिया का मुख्य नकारात्मक पहलू मुख्य कार्यक्षमता के बाहर प्रलेखन का अभाव है। अजगर बहुत परिपक्व है, और जो आप डॉक्स में नहीं पा सकते हैं, वह आमतौर पर स्टैकओवरफ्लो पर होता है। आर प्रलेखन प्रणाली तुलना में बहुत अच्छा है।

(ए) क्या आप जूलिया आर के बारे में जानने के लिए सांख्यिकीय उपकरणों के किसी नए उपयोगकर्ता को सलाह देंगे?

हां, यदि आप भाग (ख) में उपयोग के मामले फिट करते हैं। यदि आपके उपयोग के मामले में बहुत सारे विषम कार्य शामिल हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.