अगर कोई भाषा जल्दी से बदल जाती है, तो क्या यह अच्छी बात है?


14

मैंने कुछ भाषाओं को देखा है जो जल्दी से बदलते हैं (मेरा मतलब है कि वे हर साल उदाहरण के लिए बेहतर होते हैं) और कुछ अन्य जो धीरे-धीरे सुधारे जाते हैं।

मेरा सवाल है, अगर कोई भाषा जल्दी से बदलती है तो यह प्रोग्रामर के लिए अच्छी बात है या बुरी चीज? क्या प्रोग्रामर भाषा में नई चीज़ सीखना पसंद करते हैं या वे जो पहले से जानते हैं उसके साथ रहना पसंद करते हैं?


4
-1: बहुत अस्पष्ट और काल्पनिक जवाब दिया जाना है। क्या "जल्दी" है? "बेहतर" क्या है? यदि परिवर्तन सभी पिछड़े संगत हैं, तो इससे क्या फर्क पड़ता है? कृपया प्रश्न को और अधिक विशिष्ट बनाने के लिए सुधार करें। एक ठोस भाषा जो जल्दी से बदल रही है वह मदद कर सकती है।
S.Lott

क्या पुराने कार्यक्रम अभी भी अपरिवर्तित हैं?

4
मैं निश्चित रूप से एक ऐसी भाषा को पसंद करता हूं जो बिल्कुल भी नहीं बदलती है, लेकिन पुस्तकालयों के रूप में मनमानी नई सुविधाओं को जोड़ने की अनुमति देने के लिए पर्याप्त रूप से लचीला है। विशाल और अनाड़ी भाषाएं जो सभी अखंड मोनों में दफन हो जाती हैं, सड़ने के लिए बर्बाद होती हैं।
एसके-तर्क

"परिवर्तन" और "पीछे की ओर संगतता को तोड़ता है" पूरी तरह से अलग चीजें हैं। बाद वाला असली मुद्दा है।
user16764

जवाबों:


16

अगर कोई भाषा जल्दी से बदलती है तो यह प्रोग्रामर के लिए एक अच्छी बात है या बुरी चीज है?

अच्छा

  • बदलावों में कुछ अच्छे सिन्थेटिक चीनी बनाने से भविष्य के कोड को कम बग के साथ लिखना आसान हो सकता है
  • परिवर्तन एक सामान्य मुहावरे / डिजाइन पैटर्न को मानकीकृत कर सकते हैं जो प्रोग्रामर को खुद को लागू करने या 3 जी पार्टियों पर भरोसा करने के लिए किया है।
  • परिवर्तनों को उन तकनीकों के साथ एकीकृत करना आसान हो सकता है जो भाषा आमतौर पर उपयोग की जाती है
  • परिवर्तन सामान्य गलतियों को रोकने में मदद कर सकते हैं
  • परिवर्तन खतरनाक प्रोग्रामिंग प्रथाओं को चित्रित या समाप्त कर सकते हैं
  • जिन सामानों के लिए मुझे खुद को लागू करना पड़ता था या जिनके लिए 3 पार्टियों पर निर्भर रहना पड़ता था, उनके लिए भाषा की मानक लाइब्रेरी में परिवर्तनों में उपयोगी जोड़ हो सकते हैं।

खराब

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

क्या प्रोग्रामर भाषा में नई चीज़ सीखना पसंद करते हैं या वे जो पहले से जानते हैं उसके साथ रहना पसंद करते हैं?

कई प्रोग्रामर नई विशेषताओं के साथ खेलकर अपनी जिज्ञासा को संतुष्ट करते हैं। हालांकि इसका मतलब यह नहीं है कि नई सुविधाएँ हमेशा उत्पादन कोड में उपयुक्त होती हैं। यह एक केस-बाय-केस निर्णय है जिसे नई सुविधाओं के लाभ बनाम किसी की विशिष्ट स्थिति में उन्नयन की लागत से तौलना है।

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


C ++ C का विकास नहीं है, यह एक नई भाषा है जो सी के साथ संगत है
निक्को

अधिकांश लोग C ++ का ठीक से उपयोग नहीं करते हैं, वे इसका उपयोग ऐसे करते हैं जैसे यह C था, ठीक है, वे कर सकते हैं। और, C ++ जब सही तरीके से उपयोग किया जाता है, अप्रिय रूप से जटिल है और सभी भाषा सुविधाओं का समर्थन नहीं करने वाले कुछ संकलनकर्ताओं का इतिहास रहा है।
सिल्वानार

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

@ निक्को मैं सहमत हूं, लेकिन यह काफी हद तक सी के साथ संगत है, जो बहुत सारी मजेदार समस्याएं पैदा करता है :)
डौग टी।

11

सुधार महान हैं ... अगर वे पीछे संगत हैं

सी # यह अच्छी तरह से करता है। वे चीजों को लाम्बा भाव, मल्टीथ्रेडिंग के लिए बेहतर समर्थन, लाइनक जोड़ते हैं, ... लेकिन आपका पांच साल पुराना सी # 2.0 प्रोग्राम अभी भी बिना किसी बदलाव की आवश्यकता के अच्छी तरह से काम करेगा और बिना किसी बदलाव की आवश्यकता के आसानी से सी # 4.0 में अपग्रेड किया जा सकता है।

नया सामान सीखना बहुत अच्छा है यदि यह आपको अपने कार्यों को आसान, तेज़ तरीके से करने की अनुमति देता है। यदि एक घंटे सीखने में खर्च करने का मतलब है कि विकास के समय में अपने घंटे की बचत करना, यह अच्छी तरह से लायक है।


5

मैं नियमित रूप से सुधार चाहता हूं, लेकिन मैं नहीं चाहता कि यह 500 kloc कोडबेस को तोड़ दे और एक बड़े पैमाने पर "अपग्रेड प्रोजेक्ट" को ट्रिगर करे ताकि कोड उस तरह से काम कर सके जैसा वह पिछले संस्करण के साथ करता है।


4

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

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

परिवर्तन भी सीखने की लागत और समय के साथ आता है। सभी नियोक्ता नई सुविधाओं में डेवलपर्स को शिक्षित करने के लिए तैयार नहीं हैं। यह खुद को प्रशिक्षित करने के लिए डेवलपर्स पर एक महत्वपूर्ण बोझ जोड़ता है - यह तुच्छ नहीं है, विशेष पाठ्यक्रम $ 1500- $ 3500 प्रत्येक हो सकते हैं!

निरंतर परिवर्तन डेवलपर्स को 'विरासत' सॉफ़्टवेयर में लॉक कर सकता है। एएसपी डेवलपर का मामला लें जो अब से 2 साल में एमवीवीएम के साथ नहीं पकड़ा गया या विंडोज फॉर्म डेवलपर के मामले में जिसने WPF नहीं सीखा। इस लॉकिंग से डेवलपर करियर को काफी नुकसान पहुंच सकता है।

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


2

मुझे नहीं लगता कि कोई एक उत्तर सही है।

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

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

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

मुझे लगता है कि भाषा की लोगों की धारणा पर भी बहुत कुछ निर्भर करता है। जो लोग एक भाषा का चयन करते हैं क्योंकि यह "अत्याधुनिक" है ऐसे बहुत से बदलाव हो सकते हैं जो बहुत सारे मौजूदा कोड को तोड़ते हैं, अगर ऐसा है तो इसे काटने के किनारे पर रखना है।

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


2

मेरे पास एक लड़का था जो मुझे बताता है कि वह अपने सी ++ को पसंद करता है और यह उसी तरह रहेगा। वह परवाह नहीं करता है या डी में रुचि रखता है, वह न तो जानना चाहता है और न ही सी # का उपयोग करता है। उन्होंने जावा सीखा क्योंकि उन्हें कई परियोजनाओं के लिए एचएडी की जरूरत थी जो वह करना चाहते थे और वे स्पष्ट रूप से उन भाषाओं में एक अच्छा काम करते हैं जो वह जानते हैं

एक और C # से प्यार करता है और हर कीवर्ड को नहीं जानता है या .NET 4 लाइब्रेरियों (async और सभी) को जानता है, और अमूर्त कीवर्ड या उपयोग की गई विशेषताओं का उपयोग नहीं करता है।

मैं बस ज्यादातर लोगों को परवाह नहीं कह रहा हूँ

अब अपग्रेड का प्रभाव टूट रहा है (लिबास या संकलित कोड के लिए) लोग देखभाल करेंगे।


C ++ "विकासवाद" C ++ 11, नया मानदंड है। "सी #" या "डी" नहीं सी ++ विकास ने हैं .. के रूप में सी ++ सी के विकास नहीं है
निक्को

1
@ निक्को: आह हा। अच्छी बात। लेकिन मैं जानता हूँ कि C ++ प्रोग्रामर के एक छोटे से मुट्ठी भर भी C ++ 0x या C ++ 11 के बारे में सुना है। मुझे पूरा यकीन है कि वह परवाह नहीं करेगा और न ही सुविधाओं को देखेगा जब तक कि कंपनी अपग्रेड नहीं करती है और ऐसा कुछ देखने के लिए होता है जिससे उन्हें काफी उत्सुकता हो (मुझे उम्मीद है कि उनमें से एक चाल है)

@ acidzombie24: मैं सी ++ में लंबे समय से (1995 से) प्रोग्रामिंग कर रहा हूं और सी ++ 11 की मेरी पहली धारणा यह है कि यह भाषा की वास्तविक उत्पादकता से अधिक जटिलता को जोड़ता है: भाषा का शब्दार्थ इतना जटिल हो गया है कि यह बहुत ही सूक्ष्म और मुश्किल को स्पॉट करने के लिए बहुत आसान है। और इन लागत को ठीक करने के लिए समय, इस प्रकार उत्पादकता को कम करने। अगर मैं वास्तव में नए मानक का उपयोग करने के लिए मजबूर हूं, तो मैं अपनी राय बदल सकता हूं, लेकिन कुछ नई विशेषताओं को कुछ गहराई से देखने के बाद भी मेरी भावना में इतना सुधार नहीं हुआ है।
जियोर्जियो

0

मैं C # के लिए उत्तर दूंगा (लेकिन यह विश्लेषण स्केल पर भी लागू किया जा सकता है):

जब आप किसी भाषा की "शैली" के निकट आते हैं, तो यह सुविधा कुछ समस्याओं का कारण बनती है:

2011 में, C # कई अलग-अलग चीजें कर सकता है, और यह अच्छा है। दुर्भाग्य से इसके दो अलग-अलग प्रतिमान हैं (यदि अधिक नहीं):

  • OOP
  • कार्यात्मक (मेमने के कार्यों और LINQ के बारे में सोचें)

विभिन्न प्रकार की जाँच शैलियों

  • डायनामिक टाइपिंग
  • स्टेटिक टाइपिंग

जब आप एक या दूसरे का उपयोग करना चाहते हैं तो यह हमेशा स्पष्ट नहीं होता है।


0

मुझे लगता है कि यह वास्तव में भाषा और निम्नलिखित पर निर्भर करता है कि भाषा क्या है। उदाहरण के लिए, मुझे लगता है कि अगर C # और Java ने अधिक तीव्र गति से परिवर्तनों को पॉप करना शुरू कर दिया, तो इसे स्वीकार कर लिया जाएगा (जब तक कि वे Carra said की तरह पीछे संगत हैं )। हालाँकि, यदि भाषा ने अभी तक कर्षण प्राप्त नहीं किया है और यह अभी भी तेजी से बदल रहा है, तो मुझे पता है कि मैं इसके साथ परेशान नहीं होऊंगा क्योंकि एक मौका है जो मैं आज सीखने की कोशिश करता हूं वह 6 महीनों में बाहर की तुलना में पूरी तरह से अलग होगा और चूंकि भाषा नई है / अलोकप्रिय है, यह मेरे लिए हानिकारक नहीं होगा (मेरे लिए पढ़ें: मेरा कैरियर) मेरे लिए बस उस पर से गुजरने के लिए।

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