प्रोग्रामिंग भाषा को व्यवस्थित रूप से चुनना [बंद]


24

मैं भाषा चुनने के लिए एक पद्धति की तलाश कर रहा हूं। मैं भाषाओं के बारे में राय नहीं पूछ रहा हूं। मुझे हमारी दुकान की वर्तमान भाषा की तुलना दूसरों से करने की प्रक्रिया के साथ किया गया है जो उपलब्ध हैं। हम एक वेब डेवलपमेंट शॉप हैं।

हमारे सीईओ सभी वेब आधारित भाषाओं के बारे में एक पूर्ण श्वेत पत्र चाहते हैं जो उपलब्ध हैं, वे किस मूल भाषा से व्युत्पन्न हैं (जैसे java java से है जो c / c ++ से है)। मुझे एक विशेष भाषा के सभी प्रमुख कारकों के साथ एक मैट्रिक्स बनाने की जरूरत है और उस दी गई भाषा की संक्षिप्त कॉमेडी। क्या भाषा मंच द्वारा सीमित है, क्या इसे कार्यात्मक प्रोग्रामिंग, प्रक्रियात्मक या OO के लिए डिज़ाइन किया गया है या इसका उपयोग किसी प्रोग्रामिंग प्रतिमान के साथ किया जा सकता है?

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

हमने इन सभी चीजों को समझने में हमारी मदद करने के लिए एक सलाहकार की तलाश शुरू की, लेकिन हमने यह क्या पाया है कि ज्यादातर सलाहकार एक विकास पृष्ठभूमि से आ रहे हैं और अक्सर ऐसा लगता है कि इसका जवाब है " xxx सबसे अच्छी भाषा है क्योंकि यह वह है जो मैं है पिछले n वर्षों में सबसे अधिक उपयोग किया है और इसने मुझे कभी निराश नहीं किया है। आप इसे अंतिम छोर के लिए yyy के साथ पूरक कर सकते हैं और zzz लाइब्रेरी का उपयोग कर सकते हैं "

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

क्या किसी और को इस अभ्यास से गुजरना पड़ा है? यदि आपके पास प्रक्रिया के माध्यम से जाने के लिए उपयोग किए गए चरणों और / या कार्यप्रणाली को साझा कर सकते हैं?


21
क्या सीईओ वास्तव में इस मैट्रिक्स का उपयोग करने की योजना बनाते हैं जैसे कि "हम $ {भाषा का उपयोग करेंगे" $ {nextBroProject। "बनाने के लिए! कुछ ऐसा बनाने के लिए जो वास्तव में इसके लिए उपयोगी हो सकता है (हालांकि मुझे यकीन नहीं है कि यह कभी भी गंभीर रूप से उपयोगी होगा) संभवतः एक महत्वपूर्ण राशि लेगा, और इस पर रखरखाव भी होगा।
FrustratedWithFormsDesigner

3
मुझे लगता है कि किसी परियोजना के लिए भाषा / वातावरण चुनने के लिए एक सामान्य मार्गदर्शिका पहले उस विशिष्ट समस्या की गहरी समझ पाने की कोशिश कर सकती है जिसे परियोजना हल करने की कोशिश कर रही है (भाषा-अज्ञेय तरीके से), उपकरण / पुस्तकालयों की तलाश करें उस समय इसे हल करने में सबसे अच्छी मदद , फिर उन उपकरणों / पुस्तकालयों के साथ काम करने के लिए आपको किन भाषाओं को जानने की आवश्यकता है। शायद यह आपको भाषाओं की शॉर्टलिस्ट करेगा, और वहां से आप इसे अपने परिचितों के साथ, विक्रेता समर्थन, बजट, आदि के आधार पर जीत सकते हैं ...
FrustratedWithFormsDesigner

9
जवाब देने के लिए सबसे पहला सवाल है, "क्या हमें बिल्कुल बदलने की ज़रूरत है?" भाषा की आपकी वर्तमान पसंद से क्या समस्याएं हल नहीं हो रही हैं?
जॉन बोडे

4
ढेर अतिप्रवाह कैसे डेवलपर्स को प्रौद्योगिकियों का मूल्यांकन करने में मदद कर सकता है? "आज सुबह मेरे सामने लगभग 8 चौखटें थीं, जो यह तय करने की कोशिश कर रहा था कि मैं
किसका

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

जवाबों:


53

@FrustratedWithFormsDesigner ऊपर इस पर संकेत दिया है, मैं और अधिक कुंद हो जाएगा: आप एक महंगी लेकिन बेकार काम के साथ आरोप लगाया गया है।

मुझे लगता है कि CEO को अकाट्य, वस्तुनिष्ठ साक्ष्य की तलाश है जो उसकी भाषा की पसंद का समर्थन करेगा। समस्या यह है कि श्वेत-पत्र के लिए भाषा की प्राथमिकता बहुत अधिक व्यक्तिपरक और बाहरी कारकों से भरी हुई है, जो अकेले सार्थक होने के लिए उपयोगी है।

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

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


6
हा, मुझे पिछले पैराग्राफ के लापरवाह उत्साह से प्यार है। मैं कहूंगा कि यह सीईओज़ डोमेन है जिसकी वजह से 6 महीने का आपने उल्लेख किया है, जो आपको उसके बारे में बताने की जरूरत है।
नाथन कूपर

1
"फिजिकल चर्च-ट्यूरिंग थीसिस" चलो वहाँ नहीं जाते हैं। बहुत कम प्रोग्रामिंग भाषाओं में एक औपचारिक शब्दार्थ होता है, ट्यूरिंग पूरा होने के लिए बहुत जरूरी है। (एक के बिना, यह गणना का एक मॉडल भी नहीं है।)
Rhymoid

4
बस लिस्प चुनें और इसके साथ किया जाए।
एरिक

1
लिस्प द्वारा, आप का मतलब क्लोजुरस्क्रिप्ट निश्चित रूप से है। :-)
ब्रायन नोब्लुच

1
+1। यह एक इंजीनियर के रूप में आपका काम है कि एक सीईओ को बताएं कि यह एक अच्छा दृष्टिकोण क्यों नहीं है। यह कठिन हो सकता है क्योंकि यह एक अच्छे दृष्टिकोण की तरह दिखता है, लेकिन यह आवश्यक है।
डीजेक्लाइन

25

कुछ व्यापक ब्रश स्ट्रोक पर विचार करने के लिए:

भाषा की लोकप्रियता

यह वास्तव में मायने नहीं रखता है, क्योंकि लोकप्रियता जरूरी उत्पादकता, अभिव्यंजना या किसी अन्य भाषा के गुणों के साथ समान नहीं है जो अधिक मायने रखती है, लेकिन यह विचार अक्सर अन्य सभी विचारों को प्रभावित करता है क्योंकि:

  1. एक लोकप्रिय भाषा में सॉफ्टवेयर डेवलपर्स खोजना आसान है।
  2. लोकप्रिय भाषा में टूल और लाइब्रेरी खोजना आसान है।
  3. निर्णय लेने वाले भाषा के व्यापार को समझ नहीं पाते हैं, इसलिए वे सुरक्षित निर्णय लेंगे ("कई कंपनियां इस भाषा का उपयोग करती हैं, इसलिए यह अच्छा होना चाहिए")।

समस्या डोमेन के लिए प्रयोज्यता

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

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

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

अभिव्यक्ति और उत्पादकता

कुछ भाषाएँ दूसरों की तुलना में अधिक अभिव्यंजक हैं। कोड की एक हजार लाइनों का उपयोग करके एक भाषा में क्या लिखा जा सकता है, कोड की सौ लाइनों का उपयोग करके अधिक अभिव्यंजक भाषा में लिखा जा सकता है। ट्रेडऑफ़ यह है कि कोड की सौ पंक्तियाँ शायद कम लोकप्रिय भाषा में लिखी जाती हैं, अधिक विशेषज्ञता वाले लोगों द्वारा।

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

कई भाषाओं का युग

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


7
मैं अंतिम बिंदु पर जोड़ूंगा कि यदि आप कई भाषाओं का उपयोग करना चाहते हैं, तो एक मंच पर विचार करना उपयोगी हो सकता है जो उनके बीच आसान अंतर का समर्थन करता है (.net CLR या JVM)।
18

9
@NathanCooper: आपका मतलब है कि आपने कभी वेब एप्लिकेशन नहीं लिखा है? छोटा भी है? या एक मोबाइल ऐप को कई प्लेटफार्मों पर पोर्ट करना पड़ा? या एम्बेडेड में काम किया? या SQL डेटाबेस से डेटा पुनर्प्राप्त किया गया?
रॉबर्ट हार्वे

10
@ NPSF3000: स्वाभाविक रूप से, आपने टोना-टोटका के अपने तरीके का खुलासा करने की जहमत नहीं उठाई। मैं शीनिगन्स कहता हूं।
रॉबर्ट हार्वे

9
@ NPSF3000 जबकि C # आप जो भी करते हैं उसके लिए एक अच्छा विकल्प हो सकता है (हालांकि एकता का उपयोग निश्चित रूप से चीजों को थोड़ा बढ़ाता है क्योंकि यह स्पष्ट रूप से आपके लिए सभी बहु-भाषा भारी उठाने के लिए डिज़ाइन किया गया है), आपका एक किस्सा इस बिंदु को नहीं दोहराता है। निश्चित रूप से अधिकांश गैर-तुच्छ परियोजनाएं बहु-भाषा हैं इस अर्थ में कि वे एसक्यूएल और एक अन्य तकनीक का उपयोग करते हैं, लेकिन इससे परे भी, कई समानांतर में विभिन्न प्रोग्रामिंग भाषाओं का उपयोग करते हैं, या एक भाषा में अपना आवेदन लिखते हैं और दूसरे में उनके उपकरण, आदि। मुखर विवादास्पद बिल्कुल नहीं मिलता है।
क्रिस हेस

7
@ NPSF3000 यदि इसके साथ आपकी समस्या है, तो कहें । हमें इस कठोरता के माध्यम से जाने की कोशिश मत करो कि तुम क्या मतलब है। मुझे यकीन है कि रॉबर्ट को एक संपादन करने में खुशी होगी यदि आपने एकमुश्त कहा था कि "मैं असहमत हूं कि कुछ समस्या डोमेन को विशिष्ट भाषाओं की आवश्यकता है"। उस ने कहा, मुझे यहां बिल्कुल भी निहितार्थ नहीं दिखता कि कई भाषाओं में काम करना "डिफ़ॉल्ट रूप से फायदेमंद" है।
क्रिस हेस

5

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

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

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

सभी भाषाओं को कवर करने की कोशिश करने के बजाय, मैं विभिन्न प्रोग्रामिंग प्रतिमानों और रूपरेखा के प्रकारों के प्रतिनिधियों को प्राप्त करना चाहूंगा, और प्रत्येक में एक प्रोटोटाइप लागू करूंगा।

यहाँ बैक एंड श्रेणियों की एक मोटी सूची है:

  • माइक्रोसॉफ्ट। (उपश्रेणियाँ हो सकती हैं। मैं उनके बारे में कुछ नहीं जानता।)
  • Drupal की तरह हैवीवेट OOP।
  • लाइटवेट ओओपी, अजगर की बोतल की तरह।
  • स्काला का उपयोग कर खेलते हैं / लिफ्ट / स्केलट्रा।
  • जावा का उपयोग करके खेलें / उठायें।
  • जैसे वसंत।
  • Struts की तरह।
  • रेल की तरह।
  • हास्केल आधारित।
  • Node.js

सामने के छोर पर:

  • OOP- शैली जावास्क्रिप्ट
  • कार्यात्मक शैली जावास्क्रिप्ट, अंडरस्कोर के साथ की तरह
  • बेकन के साथ प्रतिक्रियाशील शैली के जावास्क्रिप्ट
  • Google वेब टूलकिट
  • एल्म

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

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


4

$ A के रूप में आपके मौजूदा विकास की प्रक्रिया में निहित कमियों को पहचानें और उन्हें लागत दें। $ B के रूप में किसी भी अन्य विकास प्रक्रिया में स्विच करने की लागत की पहचान करें।

अगर $ A कम है तो $ B, रुकें।

यदि आपकी ज्ञात कमियाँ परिवर्तन की लागत को कम कर देती हैं (और यह एक बड़ी बात है!) तो कमियों का विस्तार से विश्लेषण करें और एक ऐसी भाषा / विकास परिवेश / विकास प्रक्रिया परिवर्तन की तलाश शुरू करें जो उन्हें संबोधित करती हो, जो कि अन्य अधिक महंगी समस्याओं का परिचय नहीं देती है।

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

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

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