डी के रचनाकारों में से एक के रूप में मेरी स्थिति और स्पष्ट पूर्वाग्रह के बावजूद, मैं खुलकर जवाब देने की कोशिश करूंगा; मैंने गो और रस्ट के रास्तों का अनुसरण किया, और मुझे पूरी तरह से पता है कि गंदे कपड़े धोने का स्थान डी में कहाँ धोया जाता है। मैं रस्ट और गो समुदायों में समान पदों पर लोगों को अपनी राय साझा करने के लिए प्रोत्साहित करता हूं। तो यहाँ है।
शुरुआत के लिए, प्रश्न में कहीं सी + + दिखाई देना चाहिए। चाहे इसे C से बदला जाए, या C को बदलने के लिए उम्मीदवारों में से एक हो, लेकिन किसी भी स्थिति में, C ++ समीकरण का एक प्रमुख तत्व है। यह सी के लिए निकटतम भाषा है और एक स्पष्ट कदम आगे है। सी ++ की आयु को देखते हुए, मैं इस मामले में आगे मानता हूं कि सी ++, सी के साथ मिलकर प्रतिस्थापन के लिए लक्ष्य है।
प्रत्येक भाषा में कई मूलभूत लाभ हैं (मैं उन्हें "परिमाण लाभ का एक आदेश" कहता हूं, इसके बाद "10x बोनस" के रूप में संदर्भित किया जाता है, क्योंकि वे विशिष्ट दृष्टिकोण के संबंध में प्रमुख लीग के लिए योग्य हैं), और कई समस्याएं हैं। इन भाषाओं का भविष्य और सी को बाहर निकालने में उनकी सफलता इस बात पर निर्भर करती है कि वे रणनीतिक रूप से अपने 10x बोनस को कैसे तैनात करते हैं और उनकी समस्याओं को कैसे दूर करते हैं।
मुझे पहले डी से छुटकारा दिलाओ
जाहिर है कि यह मेरे अपने घर का प्रदर्शन है, इसलिए मैं जानता हूं कि जहां जरूरत है उसे ठीक से दिखाने के लिए कहां जाना है और गंदी जगहों को छिपाना है। मैं बाकी जोड़ियों की तुलना में डी के बारे में अधिक बात कर सकता हूं, साधारण कारण से कि मैं उसे बहुत बेहतर जानता हूं। कच्चे सीधेपन के साथ बोलते हुए, डी की मुख्य समस्याएं हैं:
- नाममात्र के अस्तित्व के कई वर्षों के बाद जनता द्वारा खराब स्वागत। समुदाय के लंबे-लंबे गोताखोर इस तरह के बयान की आलोचना कर सकते हैं (डी अपने वर्तमान रूप में अपेक्षाकृत युवा है, लोकप्रियता बढ़ रही है, आदि)। लेकिन यह रवैया जारी है और लोकप्रियता के विकास को प्रभावित करता है और यह एक तथ्य है। नतीजतन, प्रबंधकों और इंजीनियरों को एक ऐसी भाषा को लोकप्रिय बनाने के बारे में संदेह है जो इतने लंबे समय से हारे हुए हैं। इसके अलावा, समय डी के खिलाफ काम करता है जब तक कि लोकप्रियता में कोई स्पष्ट वृद्धि न हो।
- कचरा संग्रह (जीसी) से संबंधित डी की दुखद कहानी। जीसी एक महान आविष्कार है, लेकिन डी में इसका उपयोग करने के निर्णय ने इसे मुख्य लक्ष्य दर्शकों - सी और सी ++ प्रोग्रामर से तुरंत अलग कर दिया। उनके लिए पार्टी की लाइन ऐसी लग रही थी जैसे "जीसी नहीं चाहिए? कोई बात नहीं! आप आरएआई के साथ या मैनुअल नियंत्रण के साथ भी डी का उपयोग कर सकते हैं! " इस तथ्य के बावजूद कि सामान्य रूप से यह सच है, इस तरह के एक मानक पुस्तकालय के लिए समर्थन की कमी के कारण यह दृष्टिकोण व्यावहारिक रूप से बेकार था, जिसका मतलब था कि उपयोगकर्ता को शॉर्ट्स से छीन लिया जाए और एक बुनियादी ढांचे के निर्माण के साथ शुरू किया जाए। यहां तक कि उन लोगों के लिए जो जीसी को बुरा नहीं मानते थे, इसके कार्यान्वयन की गुणवत्ता असंगत थी। सामान्य तौर पर, हम कह सकते हैं कि डी को जीसी की सभी कमियां मिलीं, लेकिन फायदा नहीं हुआ।
- दूरदर्शी व्यक्तियों की ऐतिहासिक प्रचलित कमी है। कॉर्पोरेट समर्थन से वंचित, डी ने समुदाय को आगे बढ़ाया, जिसमें एक परियोजना प्रबंधक या करिश्माई नेता की तुलना में एक सूक्ष्म इंजीनियर को खोजना आसान है। समय के साथ, पदोन्नति और आत्म-प्रचार में डी के प्रयासों की सफलता का नकारात्मक परिणाम हुआ। पहला नियोजन दस्तावेज़ 1 जनवरी, 2015 को दिनांकित है, और अगली पुनरावृत्ति (विजन / 2015H2 - डी विकी) योजना के मुकाबले चार महीने बाद सामने आया, जो योजना के संदर्भ में आत्म-विडंबना का एक बड़ा उदाहरण है
बेशक, अन्य परेशानियां थीं, लेकिन वे या तो उपरोक्त परिणाम थे, या बहुत छोटे परिणाम थे।
मुझे लगता है कि डी के लिए 10x बोनस इस प्रकार हैं (एक बार फिर, जब मैं 10 बार कहता हूं, तो यह बोलचाल की भाषा "एक आदेश द्वारा बेहतर" है):
- तुलनीय कोड के लिए 10x में, संकलन C ++ से तेज है। यह छेद मूल रूप से C ++ में बंद नहीं किया जा सकता है, और किसी भी अन्य भाषा में कूदना बेहद मुश्किल है। (गो, डी की तुलना में थोड़ा तेज संकलन करता है, लेकिन परिणामी कोड धीमा होता है) एक प्रणाली भाषा का उपयोग करने का अनुभव जो इतनी तेजी से कोड में संकलित करता है, पुरानी प्रथाओं का परिवर्तन और बहुत आशाजनक है। डी में अमूर्तता की शक्ति के साथ संयुक्त, यह अनिवार्य रूप से डी को सरल कारण के लिए अत्यधिक अनुकूलित कोड लिखने के लिए एक अच्छा विकल्प बनाता है जो प्रयोग करना सस्ता है।
- तुलनीय सुविधाओं के साथ स्क्रिप्टिंग भाषाओं की तुलना में 10 गुना तेज। डी आसानी से रोजमर्रा के कार्यों की पटकथा के लिए अनुकूल है। संकलन / लॉन्च चक्र बस के रूप में तेजी से रहता है, और गति में लाभ काफी हैं। इसके अलावा, कोई समस्या नहीं है "सीमाओं में चलाएं" - यदि स्क्रिप्ट बड़ी हो जाती है, तो डी में हमेशा पर्याप्त भाषा उपकरण और प्रतिरूपता होती है। बेशक, मरहम में एक मक्खी है, उदाहरण के लिए पायथन में बहुत अधिक तैयार किए गए पुस्तकालय हैं। लेकिन 10x बोनस यहां मौलिक है - सिस्टम भाषाओं में इतनी अधिक मात्रा में चीनी नहीं है, और स्क्रिप्टिंग भाषाएं गति में निराशाजनक रूप से पीछे हैं।
- 10x किसी भी अन्य भाषा की तुलना में C और C ++ के साथ एकीकृत करना आसान है। डी मेमोरी में समान संरचनाओं का उपयोग करता है जैसे सी और सी ++; और उनके ऊपर बनाता है, लेकिन अंतर्निहित परतों को पढ़ना गति के मामले में मुक्त रहता है। मानक सी लाइब्रेरी बिना किसी दंड के पूरी तरह से सुलभ है - न तो गति के संदर्भ में, न ही वाक्य रचना में, और यद्यपि सी ++ पुस्तकालय के संदर्भ में समान सादगी के लिए कुछ सुधारों की आवश्यकता है, कई सी लाइब्रेरी पहले से ही उपलब्ध हैं (https://github.com/D- प्रोग्रामिंग ...)। यह शाब्दिक रूप से कहा जा सकता है कि कोई अन्य भाषा इस स्तर के एकीकरण को प्राप्त नहीं कर सकती है।
- जेनेरिक और मेटाप्रोग्रामिंग में किसी भी अन्य सिस्टम भाषा की तुलना में 10 गुना बेहतर है। डी में, स्थिर आत्मनिरीक्षण, संकलन-समय कंप्यूटिंग (CTFE), और मिक्स- आधारित (कोड-मिक्सिंग) कोड पीढ़ी मोलोटोव कॉकटेल बनाती है, जो अन्य भाषाओं में सही तरीके से मिश्रण करना बहुत मुश्किल है, न तो नया और न ही बचे; इस खेल में गो इतना पागल है कि उसने एक चिप भी नहीं काटी; सी ++ 17 निराशाजनक रूप से एक अंधेरे जंगल में खो गया है; और जंग सिर्फ प्रलाप करने की कोशिश कर रहा है।
गो टू गो
मुझे इस बात पर जोर देना चाहिए कि यह पूरी तरह से मेरी राय है, फिर भी आपके ध्यान के लायक है। गो की समस्याएं इस प्रकार हैं:
- अप्रत्यक्ष कॉल और कचरा संग्रहकर्ता (जीसी) के कारण मौलिक मंदी। लगभग कोई महत्वपूर्ण गो एप्लिकेशन अप्रत्यक्ष कॉल और जीसी का सहारा लिए बिना नहीं लिखा जा सकता है, जो केंद्र की कार्यक्षमता हैं। ये प्रमुख प्रदर्शन के लिए प्रमुख बाधाएं हैं। जीओ की प्रतिक्रिया ज्यादातर सामरिक थी - उदाहरण के लिए, जीसी के प्रदर्शन में सुधार। हालांकि, सी को रणनीतिक रूप से बदलने की चुनौती जीतने की संभावना नहीं है।
- नीति। गो में पार्टी लाइन छोटे और बड़े दोनों ही मुद्दों पर असंगत रूप से मजबूत और सख्त है। एक बड़ी समस्या का एक उदाहरण यह है कि जेनरिक का दृष्टिकोण इतना निरर्थक और निर्मम था कि उसने जेनरिक शब्द को "G" अक्षर से बना दिया; पूरे विषय को खूनी आँसू में बदल दिया, एक रचनात्मक संवाद स्थापित करने के किसी भी प्रयास में बाधा। मुझे लगता है कि लंबे समय में तकनीकी मुद्दों का राजनीतिकरण करना एक अत्यंत हानिकारक मॉडल है, और मुझे आशा है कि गो को इसे ठीक करने का एक तरीका मिल जाएगा।
- सादगी चोरी से भी बदतर है। जाने के लिए बहुत सरल है (दंड, गो - वॉक, नोट) - इसके बारे में चुटकुले भी हैं। हालांकि, समय के साथ यह समस्याग्रस्त हो जाता है; Go कोड निराशाजनक रूप से पैदल यात्री है - Go कोडर्स खुद को चींटी के दृष्टिकोण से एक ही चीज़ को बार-बार लिखते हुए पाते हैं, क्योंकि Go सरलतम अवधारणाओं या एल्गोरिदम को भी सार नहीं कर सकता है। एकीकरण लाइब्रेरी द्वारा अभी तक लागू नहीं की गई अवधारणाओं को लागू करना मुश्किल है। प्रोग्रामर की एक नकारात्मक प्रतिक्रिया है जिन्होंने एक परियोजना के लिए गो का उपयोग किया था और अब इसे फिर से उपयोग नहीं करना चाहते हैं। यह अच्छा होगा अगर गो ने नियमित ग्राहकों के लिए जीवन को बेहतर बनाया।
मेरी धारणा में 10x बोनस इस प्रकार हैं:
- कौशल रणनीति में 10x। एक संक्षिप्त अवधि के बाद जब गो को एक सिस्टम भाषा के रूप में तैनात किया गया था, इसे नेटवर्क सेवाओं के लिए स्थान देने का निर्णय लिया गया था। यह एक महान विपणन चाल थी जिसने गो टीम की ताकत (दुनिया के कुछ सर्वश्रेष्ठ नेटवर्क सेवा इंजीनियरों) को मजबूत किया। यह एक बहुत ही गर्म बाजार है और गो केवल दुनिया के लिए ताजी हवा की सांस बन गया है, जो पहले जावा ईई द्वारा अपने लाल टेप और धीमी स्क्रिप्टिंग भाषाओं के साथ हावी था। अब गो इस क्षेत्र का मुख्य खिलाड़ी है और इसे स्थानांतरित करना मुश्किल होगा।
- कौशल इंजीनियरिंग में 10x। गो के पास इसके पीछे इंजीनियरों की एक मजबूत टीम है, और यह भाषा की गुणवत्ता और विशेष रूप से नेटवर्क लाइब्रेरी और टूलसेट को प्रभावित करने वाला मुख्य कारक है। अब तक, अच्छी इंजीनियरिंग ने भाषा की कमजोरी के लिए पूरी तरह से मुआवजा दिया है।
- कौशल ब्रांडिंग में 10x। हम में से कई लोग यह स्वीकार करने के लिए तैयार हैं कि गो का उपयोग करने के लिए मुख्य प्रेरक Google के साथ इसका संबंध है। यह उसे व्यावसायिकता, गुणवत्ता और स्थिरता का अधिकार देता है। बेशक, एक ब्रांड सब कुछ नहीं है, लेकिन यह पहले से ही गो को एक योग्य भाषा बनाता है; उसे काल्पनिक रूप से अच्छा नहीं होना चाहिए। ब्रांड बाकी काम करेंगे।
पिछले नहीं बल्कि कम से कम, जंग
मैं आपको फिर से याद दिला दूं कि यह केवल मेरी राय है। मुझे लगता है कि जंग कुछ दिलचस्प समस्याओं का सामना कर रही है:
- असभ्य व्यक्तित्व। रस्ट कोड की एक निश्चित मात्रा को पढ़ने के बाद, "ड्यूड मिस्ड डेज ऑफ लेग्स स्विंगिंग" जैसे उपाख्यानों को दिखाया गया है , जिसमें कॉमिक्स द्वारा एक धड़ और पैरों के साथ लोगों को चित्रित किया गया है (लगभग। अनुवाद। रूसी में, "मिट्टी के पैरों के साथ कोलोसस", लेकिन गलत) जंग लगाता है। सटीक और सुरक्षित मेमोरी प्रबंधन पहले आता है और यह दुनिया के केंद्र का प्रतिनिधित्व करता है। अचानक, यह शायद ही कभी एक समस्या क्षेत्र है, जो इस तथ्य की ओर जाता है कि नियोजन और कोडिंग का एक बड़ा हिस्सा समर्पित है, वास्तव में, लिपिकीय कार्य (जिसे जीसी के साथ भाषाएं बिना देखे स्वचालित करती हैं)। सुरक्षित, पूर्वनिर्धारित मेमोरी का पुन: उपयोग एक गंभीर कार्य है, लेकिन केवल यही नहीं, या कम से कम कार्यक्रम में सबसे महत्वपूर्ण नहीं है। नतीजतन, रूस्ट बस उस पर भाषा डिजाइन संसाधनों की एक विषम राशि खर्च करता है। यह देखना दिलचस्प होगा कि भाषा के अन्य पहलुओं के लिए जंग कैसे सूजती है; एकमात्र विकल्प भाषा का विस्तार करना है, लेकिन सवाल यह है कि सभी स्तरों पर संसाधनों को नियंत्रित करने की अप्रिय आवश्यकता के साथ अमूर्तता कितनी मदद कर सकती है।
- विदेशी वाक्य रचना। जंग का सिंटैक्स अलग है [सभी से], लेकिन इस तरह के विदेशीवाद में कोई स्पष्ट लाभ नहीं है। यह उन लोगों को परेशान करता है जो अल्गोल परिवार की भाषाओं से आते हैं, जिन्हें संसाधनों के साथ सभी लेखांकन को मैन्युअल रूप से प्रबंधित करने की आवश्यकता के अलावा, मौलिक रूप से अलग वाक्यविन्यास से निपटना पड़ता है।
जंग के 10x बोनस हैं:
- 10 बार सर्वश्रेष्ठ सिद्धांतकार। इन तीनों में से, केवल रस्ट में विश्व स्तरीय सिद्धांतकारों की एक कोडिंग भाषा विकसित की गई है। इसे भाषा के तकनीकी विवरण की सटीकता और तकनीकी दृष्टिकोण की गहराई में देखा जा सकता है।
- अन्य सिस्टम भाषाओं की तुलना में 10 गुना अधिक सुरक्षा। बेशक, यह यहां होना चाहिए, हम केवल इस दृष्टिकोण की लागत पर बहस कर सकते हैं।
- 10 गुना सबसे अच्छा पीआर (पीआर, विज्ञापन, विज्ञापन, लगभग।) रुस्त समुदाय के पसंदीदा होने के बजाय एक लंबी अवधि थी, जिसे गलत नहीं किया जा सकता था: किसी भी समस्या के लिए, रस्ट या तो एक समाधान था या 1.0 की रिहाई के साथ इसे प्राप्त करना था। 1.0 की रिहाई की वास्तविकता ने इस हनीमून को बाधित किया और सामान्य हित में तेज कमी से (मेरे माप और अपेक्षाओं में) चिह्नित किया गया था, हालांकि ये कारक लंबे समय तक चलते हैं। इसके अलावा, अंत में, रस्ट वास्तविक उपलब्धियों के साथ एक सभ्य भाषा है, और इस प्रचलित प्रचार को एक स्थिर बाजार में बदलने के लिए अच्छी तरह से तैनात है।
संक्षिप्त
क्या इन भाषाओं में से कोई भी C, C ++, या मौजूदा सॉफ्टवेयर सिस्टम में दोनों भाषाओं को बदलने में सक्षम है, और क्या ये भाषा उन परियोजनाओं के लिए प्राथमिकता बन जाएगी, जो आज डिफ़ॉल्ट रूप से C या C ++ को चुनते हैं, यह सब इन भाषाओं की उपयोग करने की क्षमता पर निर्भर करता है उनके लाभ और उनकी संबंधित समस्याओं के लिए रचनात्मक समाधान खोजें।
नोट अनुवादक।पुराने लेख के लिए क्षमा करें, मैं विश्वसनीय प्रोग्रामिंग पर अपनी श्रृंखला के अंत में बस इसके पार आया था, और उद्धरण के लिए पर्याप्त मजेदार लगा। RuNet में, हालांकि, एक अनुवाद, और वास्तव में एक पूर्ण चर्चा नहीं मिली।