क्या किसी के संगठन ने जावा से स्काला में प्रवास शुरू किया है? यदि हाँ, तो आप कैसे करते हैं? मैं अपने सहयोगियों को भी ऐसा करने के लिए प्रोत्साहित करने के लिए क्या कर सकता हूं?
क्या किसी के संगठन ने जावा से स्काला में प्रवास शुरू किया है? यदि हाँ, तो आप कैसे करते हैं? मैं अपने सहयोगियों को भी ऐसा करने के लिए प्रोत्साहित करने के लिए क्या कर सकता हूं?
जवाबों:
संभवतः सबसे आसान तरीका यह है कि पहले केवल परीक्षण के लिए स्काला का उपयोग करें। इस मामले में, आपको अपने बॉस को यह बताने की जरूरत नहीं होगी कि अगर वह पूछता है, तो उसे बताएं कि "यह सिर्फ मेरा निजी परीक्षण का मामला है, इसके लिए स्काला का उपयोग करना इतना आसान और तेज़ है"। एक बार जब आप (और आपके संगठन) को स्काला के साथ पर्याप्त अनुभव होता है, तो आप इसे 'वास्तविक' कोड के लिए उपयोग करना शुरू कर सकते हैं।
कंपनियों के दृष्टिकोण से, जावा के साथ रहना बेहतर है यदि कोई अलग लाभ नहीं है जो उन्हें स्काला की ओर पलायन करके मिलेगा। उनके लिए एप्लिकेशन बनाने और बनाए रखने के लिए जावा प्रोग्रामर को किराए पर लेना आसान है। आप स्काला में सब कुछ लागू करने के बाद बस छोड़ सकते हैं :-) कोई अपराध नहीं :-)
क्या आपके बॉस ने इस तरह के अनुभव पढ़े हैं:
मैं अभी स्कैला में अपने ज्यादातर काम कर रहा हूं। (मुझे यह उल्लेख करना चाहिए कि मुझे लगता है कि कुछ समय पहले पहिया के आविष्कार के बाद से स्काला सबसे अच्छी चीज है ।:-D)
मेरी विनम्र राय में यह एकमात्र ऐसी भाषा है जो वास्तव में लोगों को (अधिक) वस्तु-उन्मुख और (अधिक) कार्यात्मक तरीकों के बीच कुछ अनावश्यक विभाजन के बिना किसी कार्य के लिए सबसे अच्छा दृष्टिकोण चुनने की अनुमति देती है।
पहले कुछ इस तरह का दावा करने वाली भाषाओं को देखते हुए, मैं मूल रूप से दो प्रतिस्पर्धी भाषा डिजाइन शिविर देख सकता हूं:
ऑब्जेक्ट-ओरिएंटेड साइड से लोगों ने देखा कि कार्यात्मक प्रोग्रामिंग ने कुछ कर्षण हाल ही में प्राप्त किया और सोचा "ठीक है, हम वास्तव में उस कार्यात्मक चीज़ को नहीं समझते हैं, लेकिन चलो कुछ फैंसी सिंटैक्टिकल चीनी को हमारी भाषा में जोड़ते हैं, इसलिए हम दावा कर सकते हैं कि यह कार्यात्मक है भी! " (उदाहरण: जावा, पायथन)
तब कार्यात्मक पक्ष के लोग, जिन्होंने सोचा था "ठीक है, हमारा कार्यात्मक दृष्टिकोण किसी भी चीज़ से बहुत बेहतर है और यह वस्तु-उन्मुख बकवास कष्टप्रद है, लेकिन चलो कुछ अतिरिक्त कीवर्ड हमारी भाषा में डालते हैं, जिससे हमारी भाषा निश्चित रूप से बच निकलेगी। ! " (उदाहरण: F #, OCaml)
स्काला के डिजाइनरों ने दोनों पक्षों से आने वाले कई दृष्टिकोणों को एकीकृत किया और कुछ अच्छी तरह से डिज़ाइन की गई भाषा बनाई, जो है - मेरी विनम्र राय में - अन्य भाषाओं के लिए सबसे बड़ा अंतर, जिसने प्रोग्रामिंग भाषा डिजाइन के लिए "फ्रेंकस्टीन" दृष्टिकोण लेने का फैसला किया।
लिफ्ट के साथ अभी तक केवल छोटी चीजों के साथ और रेल और Django के साथ केवल सतही अनुभव करने के बाद, मुझे यह स्वीकार करना होगा कि जब मैं सोचता था कि लिफ्ट में कुछ क्यों मैंने जो उम्मीद की थी उससे अलग तरीके से काम किया, यह इस तथ्य के कारण था कि मेरी अपेक्षाएं थीं त्रुटिपूर्ण और लिफ्ट का दृष्टिकोण बेहतर है।
लिफ्ट निश्चित रूप से "स्काला का आसान परिचय" नहीं है, लेकिन यह सीखना कि लिफ्ट कैसे काम करती है, लगभग उतना ही फायदेमंद है जितना कि स्काला को सीखना।
इसमें किसी भी तर्क के बिना "स्वच्छ" दृश्य रखने की क्षमता अन्य रूपरेखाओं के लिए एक महान सुधार है जो समान दावा करते थे, लेकिन इससे कम हो गए। स्काला के XML शाब्दिक समर्थन से आपकी प्रतिक्रिया की अच्छी तरह से गठितता को सत्यापित करना संभव हो जाता है: कंपाइलर संकलन समय पर साबित होगा कि आप केवल क्लाइंट के लिए अच्छी तरह से गठित XML का उत्सर्जन करते हैं।
लिफ्ट व्यवहार्य प्रौद्योगिकी है और इस समय एकमात्र वास्तविक दृष्टिकोण यदि आप वेब एप्लिकेशन बनाना चाहते हैं, जो कोड की मात्राओं को लिखे बिना "वास्तविक" डेस्कटॉप अनुप्रयोगों की तरह दिखते, महसूस और व्यवहार करते हैं।
[ स्रोत ]
पिछले दो वर्षों में हमने guardian.co.uk पर इस यात्रा के साथ एक निष्पक्ष तरीके से प्रगति की है - हमारा ओपन प्लेटफॉर्म स्काला पर बनाया गया है, हमारा कोर सीएमएस (मूल रूप से जावा में) धीरे-धीरे अधिक स्काला को शामिल कर रहा है (हम जल्द ही इससे आगे बढ़ रहे हैं मावेन को एसबीटी हमारे निर्माण के लिए ) और यह एक अद्भुत अनुभव रहा है - वास्तव में हमारे देवों को खुश करते हुए, जिनमें से कुछ जावा के साथ थोड़ा सा परेशान हो रहे थे :)
मैं आपको हमारे संक्रमण के बारे में इन दो लेखों को पढ़ने के लिए प्रोत्साहित करता हूं, और शायद उन्हें अपने नुकीले बालों वाले समर्थन सबूत के रूप में उपयोग करें:
http://skillsmatter.com/podcast/home/how-we-moved-from-java-to-scala
http://www.infoq.com/articles/guardian_scala
कुछ त्वरित सुझाव:
अपने परीक्षणों को स्काला में लिखना शुरू करें - इस तरह से आप भाषा से परिचित हो सकते हैं, उसमें अपना आत्मविश्वास बढ़ा सकते हैं, और किसी भी आशंका पर विजय प्राप्त करने के लिए नहीं जो आपके उत्पादन सर्वरों के रनटाइम को सीधे जोड़ने के बारे में हो सकती है।
नई तकनीकों को आज़माने के लिए अनुमति न माँगें । अगर आपको :-)
यह सवाल एक और सवाल में कबूतरबाजी करता है। यह है कि किस प्रकार या परियोजनाओं के लिए स्काला में प्रवास करने से अतिरिक्त मूल्य मिलता है? मैं अपने दिन की नौकरी के लिए जावा दिन करता हूं, लेकिन उस दिन के बारे में सपना देखता हूं जिसमें मैं "गुस्से में" स्काला का उपयोग कर सकता हूं।
मेरे स्वयं के प्रश्न का एक युगल उत्तर देता है:
ऐसी समस्याएं जिनके लिए अभिनेता आधारित संगति महान लाभ प्रदान करेगी (अक्का)
COMET (लिफ्ट) के माध्यम से डेटा की तुलना में वेब अनुप्रयोगों को उनके पास धकेल दिया जाता है
किसी भी अन्य अंतर्दृष्टि या बेहतर अभी तक अनुभव?
मैं स्काला में अपने जावा ऐप्स के लिए परीक्षण लिख रहा हूं और सहमत हूं कि यह एक अच्छी जगह है। मेरा परीक्षण कवरेज बेहतर है क्योंकि यह उन्हें लिखने के लिए तेज और आसान है (जब से मुझे स्काला का उपयोग करने के लिए मिलता है, मैं स्वेच्छा से परीक्षण लेखन पर ध्यान केंद्रित करता हूं)।
मैं भी बहुत विशेष रूप से स्काला में प्रोटोटाइप और थ्रो पॉक्स कर रहा हूं। मैं प्रबंधकों और पर्यवेक्षकों को यथासंभव जागरूक बनाने की कोशिश करता हूं कि मैंने इन वन-ऑफ्स के लिए स्काला का उपयोग किया और इस बात पर जोर दिया कि मैं स्काला की वजह से जल्दी से कुछ पाने और चलाने में सक्षम था। हमें अपनी छुट्टी पार्टी सफेद हाथी खेल पर नज़र रखने के लिए एक अच्छी तरह से ज़रूरत थी (अच्छी तरह की ज़रूरत है) एक वेब ऐप - स्कैलट्रा और मोंगोबीडी के साथ 1.5 घंटे और मेरा पूरा विभाग इस ऐप को देख रहा है और इसके बारे में पूछ रहा है। आइए इसका सामना करते हैं, आप कभी भी प्रबंधकों को यह बताने से नहीं चूकेंगे कि भाषा कितनी अधिक अभिव्यंजक है या यह है कि इसका निर्णायक मॉडल इतना बेहतर है। लेकिन अगर आप उन्हें दिखाते हैं कि आप और अधिक तेज़ी से काम कर सकते हैं, तो आप जमीन हासिल करेंगे।
लेकिन मुझे लगता है कि सबसे बड़ा टुकड़ा डेवलपर्स को स्काला के बारे में उत्साहित कर रहा है। मुझे यकीन है कि हम सभी डेवलपर के साथ काम करते हैं जो नई तकनीक के साथ सक्रिय रूप से नहीं रखते हैं, और कभी-कभी उन लोगों को कुछ भी नया करने के बारे में उत्साहित करना मुश्किल होता है (क्यों, मैं वास्तव में समझ में नहीं आता)। उन लोगों को स्काला के कुछ लाभों को दिखाने (REPL का प्रयास करें) प्रमुख है। यदि आपको उत्पादकता के समान लाभों के बारे में चर्चा करने के लिए पर्याप्त डेवलपर्स मिलते हैं, तो आपको अपने संगठन में आधिकारिक तौर पर अपनाए गए स्काला को प्राप्त करने की अधिक संभावना है।
2011 में इस शब्द को फैलाना और उस जमीनी प्रयास को रोल करना मेरा प्रमुख लक्ष्य है। हम देखेंगे कि यह कैसे निकलता है, क्योंकि मैं उस दिन का इंतजार नहीं कर सकता जिस दिन मैं अपने काम के लिए स्कैला का उपयोग करता हूं।
मैं सोच रहा हूं कि एक या दूसरे को क्यों चुना? जावा को दरवाजे से बाहर फेंकने और स्काला को हर तरफ जाने का फैसला क्यों?
नौकरी के लिए एकदम सही उपकरण जैसी कोई चीज नहीं है। एक भाषा में विशेषज्ञता को पूरी तरह से बाहर फेंकने और इसे दूसरे के साथ बदलने का कोई कारण नहीं है।
मैं एक ऐसी कंपनी में (अब) काम नहीं करना चाहूंगा जो एक भाषा या पर्यावरण, tbh पर केंद्रित हो। कई चीजों को जानना और नौकरी के लिए सही उपकरण चुनना बेहतर है।
इसके आगे, यह मुश्किल है कि यदि आपके संगठन को स्केल पर पूरी तरह से स्विच करने के लिए असंभव नहीं है। इसके बजाय, मैं ऑल-या-कुछ भी दृष्टिकोण के लिए जाने के बजाय स्काला में किए गए कुछ प्रोजेक्ट (या परियोजनाओं के कुछ हिस्सों) को प्राप्त करने की कोशिश करूंगा। उदाहरण के लिए, आप Specs2 के साथ अपने जावा कोड का परीक्षण कर सकते हैं, जिसमें सादे पुराने JUnit की तुलना में बहुत अच्छा वाक्यविन्यास है - और यह जटिल नहीं है, भ्रामक है और हार्ड स्काला कोड और प्रतिमान हैं, बस आपके आवेदन के व्यवहार को परिभाषित करने के लिए वाक्यविन्यास चीनी है। ।
एक अच्छा तरीका एक ही कार्यक्रम के दो संस्करणों को प्रदर्शित करना है। ऐसा करके आप अपने सहकर्मियों को दिखा सकते हैं (व्यवहार में) स्काला की अभिव्यक्ति । अन्य समस्याओं के लिए एक ही काम करना (एक्सएमएल, कॉन्सिक्वैरिटी, आदि) विशिष्ट समस्याओं से निपटने के लिए जावा के बजाय स्काला का उपयोग करने के लाभों को प्रदर्शित कर सकता है।
बेशक एक दिन में प्रवास होने की उम्मीद न करें। कई समस्याएं हैं जिन्हें आप कम कर सकते हैं: सीखने की अवस्था, मौजूदा कोडबेस, आदि।