क्या प्राइम टाइम के लिए तैयार है स्काला? [बन्द है]


22

अब जब मैंने स्काला के साथ कुछ तुच्छ चीजें की हैं (जो मुझे "हैलो वर्ल्ड" और आकस्मिक अनुप्रयोगों के लिए प्यार है!) मुझे आश्चर्य हो रहा है .. विकास का समर्थन करने के लिए उपकरणों की परिपक्वता के बारे में, और सामान्य प्रयोज्यता के बारे में भाग। क्या टूलसेट तैयार हैं? क्या Scala उद्यम / व्यावसायिक अनुप्रयोगों पर उपयोग के लिए उपयुक्त है? क्या "आप" एक गैर-तुच्छ परियोजना पर इसका उपयोग करेंगे?

मेरी कुछ (संभवतः निराधार) चिंताएँ होंगी:

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

इतनी निचली रेखा - क्या पारिस्थितिकी तंत्र अब उपयोग करने के लिए पर्याप्त परिपक्व है, या बेहतर तरीके से इंतजार कर रहा है कि यह कैसे विकसित होता है?

संपादित करें: मान लें कि "गैर-तुच्छ" एक बहु-वर्ष, बहु-रिलीज़, 10-20 डेवलपर्स परियोजना है।


7
अगर आपको पूछना है ... :)
स्कॉट व्हिटलॉक

गैर-तुच्छ और उद्यम के बीच बहुत जगह है। मुझे यकीन नहीं है कि आप कितनी बड़ी परियोजना में रुचि रखते हैं।
एरिक विल्सन

ग्रेट पॉइंट @FarmBoy, अपडेट किया गया।
jayraynet

@ सॉट वेटलॉक: हां, आप शायद सही हैं =)
जेरेनेट

स्काला ऐंट पाइथोनिक, लेकिन क्लोजर है। पर्याप्त कथन।
जॉब

जवाबों:


22

हालांकि यह सच है कि गालियन और ट्विटर पर जंगली में स्काला का उपयोग किया गया है, एक मौलिक चिंता है।

जावा की अधिकांश लोकप्रियता इस तथ्य से आती है कि इसे पढ़ना और बनाए रखना अपेक्षाकृत आसान है। स्काला को यहाँ एक समस्या है क्योंकि इसे कई अलग-अलग शैलियों में लिखा जा सकता है। OO शैली बनाम कार्यात्मक शैली यहाँ स्पष्ट विभाजन है, लेकिन यह अधिक जटिल हो जाता है जब आप स्काला के 3 स्तरों के बारे में बात करते हैं

आपको यह सुनिश्चित करने की आवश्यकता है कि आपकी टीम और किसी भी संभावित नए हायर सभी एक ही शैली का अनुसरण कर सकते हैं, और यह शैली आपके लिए सरल है कि आप वास्तव में डेवलपर्स को किराए पर ले सकें जो प्रभावी हो सकता है (हर कोई शीर्ष 2% को काम पर नहीं रख सकता है) ।

टूलींग समर्थन भी अभी तक काफी नहीं है, हालांकि मुझे उम्मीद है कि यह अंतर काफी जल्दी बंद हो जाएगा। आप टाइपसेफ़ भीड़ से पूर्ण स्काला स्टैक के लिए समर्थन भी प्राप्त कर सकते हैं । मुझे लगता है कि स्काला अपने आला को उकेर देगी, लेकिन जब तक स्तर वास्तव में भाषा / संकलक / जो कुछ भी नहीं बनते हैं, मैं शुरुआती 1-2 साल की उत्साहित उत्पादकता के बाद एक रखरखाव सिरदर्द को टीमों पर देखता हूं।

देखें इस संबंधित जवाब अधिक जानकारी के लिए।


क्या यह समस्या अन्य बहु प्रतिमान भाषाओं में होती है या क्या यह स्काला की अधिक विशिष्ट है?
DPM

2
स्काला के अधिक विशिष्ट होने के कारण, कुछ अतिरिक्त भाषा सुविधाएँ कुछ अन्य भाषा सुविधाओं के साथ मूल रूप से एकीकृत नहीं थीं, इसकी "किचन सिंक" प्रतिष्ठा के कारणों में से एक है।
मार्टिजेन वर्बर्ग

12

स्काला का उपयोग वर्तमान में ट्विटर और द गौर्डियन द्वारा किया जाता है, इसलिए यह निश्चित रूप से गैर-तुच्छ अनुप्रयोगों के लिए तैयार है।

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

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

कई जावा उपकरण अच्छी तरह से काम करेंगे, हालांकि इंटेलीज आइडिया शायद ग्रहण से अधिक निवेश के लायक होगा।

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


स्काला के साथ ट्विटर क्या करते हैं?
Anto

1
उदाहरण के लिए देखें @Anto infoq.com/interviews/kallen-scala-twitter
जेस्पर

10
मैं परिपक्वता और मजबूती के सबूत के रूप में ट्विटर के इंजीनियरिंग निर्णयों पर भरोसा नहीं करता।
लाल-गंदगी

6

मेरी धारणा है, कि "पारंपरिक" भाषाओं (जावा के रूप में) के साथ आने वाले इको-सिस्टम का अधिकांश उद्देश्य उनके अनाड़ीपन के लिए है।

सवाल यह नहीं है कि किसी दिए गए भाषा (स्काला) के लिए कितने उपकरण हैं, लेकिन क्या उस भाषा के मौजूदा उपकरण संदर्भ भाषा (जावा) के लिए मौजूदा टूल से बेहतर हैं। क्योंकि 100 औसत दर्जे के उपकरण आपको नहीं देंगे, एक अच्छा उपकरण आपको क्या दे सकता है। और एक चीज जिसे आपको नहीं भूलना चाहिए, वह यह है कि भाषा स्वयं उन उपकरणों का हिस्सा है।

एक भाषा की घोषणा

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

उदाहरण के लिए, मैं एक बार रूबी आदमी द्वारा एक भयानक ब्लॉग पोस्ट पढ़ता हूं, जिसने कहा कि स्थैतिक टाइपिंग व्यर्थ है, क्योंकि आपके परीक्षण प्रकार की सुरक्षा को कवर करेंगे। यह स्पष्ट रूप से किसी व्यक्ति से आया था, जिसने अभी तक एक अभिव्यंजक स्थिर प्रकार की प्रणाली के साथ काम नहीं किया था। यह मानते हुए कि मैं सभी प्रकार के संबंधों को एक भाषा शब्दार्थ में प्रस्तुत कर सकता हूं और यह करना बहुत काम नहीं है (और यह नहीं है, क्योंकि अधिकांश आधुनिक भाषाएं प्रकार के अनुमान का समर्थन करती हैं), मुझे यह सब मुफ्त में मिलता है।

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

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

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


5

मान लें कि "गैर-तुच्छ" एक बहु-वर्ष, बहु-रिलीज़, 10-20 डेवलपर्स परियोजना है।

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

मुझे संदेह है कि गोद लेने से काम चल जाएगा।

यह एक ऐसे हिस्से पर काम करने वाले लोगों के रूप में शुरू होने की अधिक संभावना है जहां जोखिम POC, गैर-महत्वपूर्ण घटकों, परीक्षण, या उन हिस्सों में समाहित होता है, जहां समस्या सिर्फ विकल्प की तुलना में Scala द्वारा बहुत बेहतर प्रतीत होती है (शायद कुछ में शामिल हो तो उदाहरण के लिए अभिनेता) ... फिर जैसे-जैसे उपकरण परिपक्व होते हैं, समुदाय बढ़ता है, कंपनी में जान-पहचान बढ़ती है, तब उसका विस्तार हो सकता है।


5

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

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


4

@Huynhjl और @FarmBoy से चेरी-अंक:

  • बड़ी संख्या में अनुभवी स्काला प्रोग्रामर को ढूंढना मुश्किल हो सकता है।

  • स्काला के लिए "सबसे अच्छा अभ्यास" हठधर्मिता अभी भी विकसित हो रही है (*)।

  • स्टाइल गाइड, कन्वेंशन, आदि अभी भी विकसित हो रहे हैं (*)।

  • उपकरण समर्थन अभी भी विकसित हो रहा है (*)।

इन्हें एक साथ खींचना, शायद आपके लिए एक बेहतर सवाल है (अपने आप को / खुद को) पूछने के लिए कि क्या आपका संगठन "नॉन-ट्रिवियल" प्रोजेक्ट पर स्काला का उपयोग करने के लिए तैयार है? क्या आपके पास ऐसे लोग हैं जो एक बड़ी परियोजना को "अभी भी विकसित हो रहे हैं" के साथ कर सकते हैं? इसके विपरीत, क्या पहले एक छोटी परियोजना करना बेहतर होगा?

(* वास्तव में, अधिकांश भाषाएं अभी भी इनमें से एक या अधिक मामलों में विकसित हो रही हैं। यहां मुद्दा परिवर्तन / प्रवाह की दर है ... और क्या आपकी टीम इसके साथ सामना कर सकती है।)


1
स्केल डेवलपर्स की 'बड़ी पर्याप्त संख्या' जावा डेवलपर्स की 'बड़ी पर्याप्त संख्या' की तुलना में बहुत छोटी होगी।
केविन क्लाइन

3

गुड स्टफ पर डेविड पोलाक के पास एक उत्कृष्ट ब्लॉग पोस्ट है जिसका शीर्षक है फंक्शनल लैंग्वेजेज रूल (लेकिन इस साल नहीं) जो सामान्य रूप से कार्यात्मक भाषाओं की नॉटी ग्रिट्टी में जाती है, और स्काला के बारे में विस्तार से बताती हूं कि अगर स्कला तैयार है तो मैं इसे बेहतर ढंग से पढ़ने की सलाह देता हूं। प्राइम टाइम के लिए।


0

मैंने कभी भी कार्यक्रमों enterpriseऔर non enterpriseकार्यक्रमों के बीच अंतर को नहीं समझा ।

मैं घर पर काम पर बहुत ही कार्यक्रमों का उपयोग करता हूं। मैं अपने खाली समय में एक औसत कार्यक्रम का उपयोग नहीं करता - मुझे क्यों करना चाहिए?

एक गैर-पेशेवर कार्यक्रम क्या है? मैंने देखा है कि खराब अनुप्रयोगों का उपयोग किया गया है, क्योंकि उपयोगकर्ता को बेहतर नहीं पता था, क्योंकि संगतता समस्याएं हैं, या उपयोगकर्ता ने कुछ नया करने से इनकार कर दिया है।

लेकिन यह पुराने सॉफ्टवेयर की समस्या है, और लक्ष्यों की, डेवलपर को ध्यान में था - भाषा का नहीं, कार्यक्रम में लिखा गया था। यदि आप सोचना शुरू करते हैं, तो जिस भाषा में एक कार्यक्रम लिखा गया है, वह पहले से ही खत्म हो गया है: असफल।

Enterprise-प्प्लीकेशन एक मार्कटिंग शब्द है, जो गंभीर चर्चा के लिए उपयोगी नहीं है।

और कौन सा ग्राहक जानता है कि आपने किस भाषा में अपना काम किया है कभी-कभी वे देखभाल करते हैं, कभी-कभी वे नहीं करते हैं।

आपके पास ऐसे प्रश्न हो सकते हैं जो किसी भाषा की परिपक्वता से संबंधित हों - लेकिन आप सभी प्रकार के उद्यमों और सभी अनुप्रयोगों के लिए प्रश्न का उत्तर नहीं दे सकते।


1
एंटरप्राइज एक मार्केटिंग शब्द की तुलना में बहुत अधिक है ... इसका मूल रूप से मतलब यह है कि जिस कंपनी से हम यह उपकरण खरीद रहे हैं वह कम से कम तब तक रहने वाली है जब तक हम हैं, और इसे वापस करने के लिए संसाधन हैं । आप ऊपर कंपनी के लिए खुला स्रोत संगठन स्थानापन्न कर सकते हैं .... अंत में, मुख्य रूप से एक व्यक्ति द्वारा संचालित भाषा चुनने के बीच एक बड़ा अंतर है, एक छोटी सी टीम बनाम एक विशाल ओपन सोर्स फाउंडेशन बनाम एक फॉर्च्यून 100 टेक कंपनी।
लाल-गंदगी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.