क्या डेटा संरचनाओं को भाषा में (पायथन के रूप में) एकीकृत किया जाना चाहिए या मानक पुस्तकालय (जावा में) के रूप में प्रदान किया जाना चाहिए?


21

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

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

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


1
क्या हम वस्तु और हैशमैप को छोड़कर?
परिक्रमा

3
@Anto: ठीक है कई भाषाओं साहचर्य सरणियों, पर्ल, पीएचपी, जे एस (तकनीकी तौर पर एक यहाँ वस्तु), आदि के रूप में HashMaps है
Orbling

1
शायद आप इस बारे में और अधिक विशिष्ट हो सकते हैं कि आप किन डेटा संरचनाओं के बारे में सोच रहे हैं, एक तरफ से सरणियों, सूचियों, हैशमैप / सहयोगी सरणियों?
फ्रस्ट्रेटेडविथफॉर्म्सडिजाइनर

1
"जटिल डेटा संरचनाओं" के रूप में हैशमैप, सूचियों और अधिक उन्नत चीज़ों को शामिल करें और बहुत सरल के रूप में सरणियों को फेंक दें।
Anto

1
मुझे लगता है कि एक अधिक समझदार शीर्षक कुछ इस तरह होगा: "क्या डेटा संरचनाओं को भाषा में शामिल किया जाना चाहिए, और पुस्तकालय में क्या होगा?" एक सार्थक उत्तर भाषा पर बहुत अधिक निर्भर करता है: अधिक स्पष्ट रूप से पुस्तकालय को भाषा में एकीकृत किया जाता है, संरचनाओं को पुस्तकालय में स्थानांतरित करने के लिए उतना ही उचित है।
जेरी कॉफ़िन

जवाबों:


13

यह निर्भर करता है कि भाषा किस लिए है।

कुछ उदाहरण (कुछ अन्य उत्तरों से चुराए गए):

  • पर्ल के पास हैशटेबल्स, एरेज़, स्ट्रिंग्स के लिए विशेष सिंटैक्स है। पर्ल को अक्सर स्क्रिप्टिंग के लिए उपयोग किया जाता है, ये स्क्रिप्टिंग के लिए उपयोगी होते हैं।
  • मैटलैब के पास सूचियों, मैट्रिस, संरचनाओं के लिए विशेष वाक्यविन्यास है। Matlab इंजीनियरिंग के लिए मैट्रिक्स और वेक्टर गणित करने के लिए है।
  • जावा / .NET समर्थन स्ट्रिंग और सरणियाँ। ये सामान्य प्रयोजन की भाषाएं हैं जिनमें अक्सर सरणियों और तारों का उपयोग किया जाता है (नए संग्रह वर्गों के उपयोग के साथ कम और कम)
  • C / C ++ समर्थन सरणियाँ। ये ऐसी भाषाएं हैं जो आपसे हार्डवेयर नहीं छिपाती हैं। स्ट्रिंग्स का आंशिक रूप से समर्थन किया जाता है (कोई समाकलन नहीं, स्ट्रैची का उपयोग करें, आदि)

मुझे लगता है कि यह निर्भर करता है कि आपकी भाषा का उद्देश्य / भावना / दर्शक क्या है; कितना सार और कितना दूर हार्डवेयर से आप यह चाहते हैं। आम तौर पर जो भाषाएं सूची को आधार मानती हैं, वे आपको असीम रूप से लंबी सूची बनाने की अनुमति देती हैं। हालांकि निम्न स्तर जैसे कि C / C ++ में ये कभी नहीं होंगे, क्योंकि यह लक्ष्य नहीं है, उन भाषाओं की भावना।

मेरे लिए, कचरा संग्रह एक ही तर्क का पालन करता है: क्या आपकी भाषा के दर्शकों को यह जानने की परवाह है कि स्मृति कब आवंटित या मुक्त की जा रही है? यदि हाँ, तो Malloc / मुक्त; यदि नहीं, तो कचरा संग्रह।


6
यह "C / C ++" शब्द का उपयोग करने के लिए एक बुरी जगह है, क्योंकि C ++ में उच्च-स्तरीय टेम्पलेट प्रकारों की उपस्थिति दो भाषाओं के बीच एक बड़ा अंतर है।
dan04

कचरा संग्रह एक निर्धारक फैशन में किया जा सकता है, आपको बस रैखिक प्रकार (या उनके गरीब आदमी के प्रतिस्थापन: RAII) की आवश्यकता है।
pyon

@ EduardoLeón, यद्यपि आप एक नियतात्मक बिंदु पर कचरा संग्रह कह सकते हैं, मुझे नहीं लगता कि यह कितने समय तक निर्धारक होगा (उसी कारण से mallocऔर newC / C ++ में गैर-निर्धारक हैं)।
इयरलैमलेस

@lsNameless: यह संसाधन के उपयोग के सापेक्ष निर्धारक है: रैखिक प्रकार (या अद्वितीयता प्रकार, जो समान हैं) इसे एक प्रकार की त्रुटि बनाते हैं (और, इस प्रकार, संकलन त्रुटि) मुक्त संसाधनों (संभवत: संभवत: प्रकार द्वारा कब्जा नहीं किया गया है) प्रणाली, किसी भी असामान्य कार्यक्रम की समाप्ति), या उनके निपटान के बाद उनका उपयोग करने के लिए।
पियोन

5

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

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

आप कम सामान्यतः देशी समर्थित संरचनाओं के लिए नई धारणा का आविष्कार करना होगा ... इसे सरल रखें!


उदाहरण के लिए, पेड़ों के लिए एक शाब्दिक वाक्य रचना का आविष्कार करने की कोई आवश्यकता नहीं है - वे दुर्लभ हैं, वे कई भाषाओं के stdlib में भी नहीं हैं! इसी तर्क से, कोई भी ऑपरेटरों को शामिल करने का विरोध कर सकता है क्योंकि "आपको कम इस्तेमाल किए जाने वाले संचालन के लिए नए नोटेशन का आविष्कार करना होगा"।

@ डायलेन: जिस तरह से मैंने इसे समझा वह एक नई भाषा को डिजाइन करने के दृष्टिकोण से था और सोच रहा था कि सरणियों के अलावा डेटा संरचनाओं को मूल रूप से नए सिंटैक्स द्वारा समर्थित किया जाना चाहिए या यदि उन्हें लाइब्रेरी शामिल करके समर्थित होना चाहिए।
FrustratedWithFormsDesigner

ठीक है, पहला वाक्य स्पष्ट रूप से "सामान्य डेटा संरचनाओं" के बारे में बात करता है, इसलिए मुझे लगता है कि ओपी पर्याप्त पागल नहीं है जो कभी भी आविष्कार किए गए प्रत्येक अस्पष्ट डेटा संरचना के लिए विशेष वाक्यविन्यास जोड़ने की कोशिश करता है।

@ डायलेन: ... और फिर ओपी एलआईएसपी सूचियों और सरणियों को बाहर करने के लिए आगे बढ़ता है (सामान्य रूप से) "... एलआईएसपी की एकीकृत सूची सिंटैक्स को एक तरफ रख दें, मैं किसी भी अन्य भाषाओं के बारे में नहीं सोच सकता जो मुझे पता है कि किसी तरह का प्रदान करता है सरणी के ऊपर डेटा संरचना उनके सिंटैक्स के एक एकीकृत भाग के रूप में "... तो मैंने सोचा कि वे सरणियों / सूचियों की तुलना में डेटा संरचनाओं को अधिक आकर्षक बना रहे थे ...
FrustratedWithFormsDesigner

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

5

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

लुआ इतनी आश्चर्यजनक सरल भाषा है, लेकिन टेबल डेटा संरचना का लचीलापन इसे काफी शक्तिशाली बनाता है।


2
जावास्क्रिप्ट ऑब्जेक्ट वास्तव में उसी तरह हैं - उदाहरण के लिए, Arrays केवल संख्यात्मक गुणों और लंबाई के साथ वास्तव में ऑब्जेक्ट हैं।
तिखन जेल्विस

1
Lua टेबल जावास्क्रिप्ट ऑब्जेक्ट्स के लिए अलग हैं: जावास्क्रिप्ट {}में [], Lua में आप {}दोनों के लिए नहीं है। लिआ टेबल बेहतर लिस्प में सूचियों की तुलना करते हैं।
याकूब

मुझे लगता है कि जावास्क्रिप्ट में, "सब कुछ एक वस्तु है" - सरणियों सहित - लेकिन सब कुछ एक सरणी नहीं है। लुआ में, सब कुछ एक मेज है।
डीन हार्डिंग

3

आपको हर उच्च-स्तरीय डेटा प्रकार के लिए सिंटैक्स समर्पित करने की आवश्यकता नहीं है । उदाहरण के लिए, इसकी जगह सहिष्णु है set([1, 2, 3])(जैसा कि पायथन 2.x ने किया था) {1, 2, 3}

महत्वपूर्ण बात यह है कि उच्च-स्तरीय डेटा संरचना का निर्माण करने के लिए कुछ सुविधाजनक तरीका है। आप से बचना चाहते हैं जैसे कोड है:

s = set()
s.add(1)
s.add(2)
s.add(3)

जो मुझे बहुत गुस्सा दिलाती है जब मैं का उपयोग करें std::vector, std::setऔर std::mapC ++। शुक्र है, नया मानक होगा std::initializer_list


3

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

  • किसी भाषा में जोड़ना सस्ता है। इससे आपको उस कीमती जटिलता के बजट का अधिक खर्च नहीं करना पड़ेगा:
    • व्याकरण मूल रूप से someBracket {expr ','} someBracketया someBracket {expr ':' expr ','} someBracket, कुछ मृत सरल अतिरिक्त के साथ है यदि आप वैकल्पिक ट्रेलिंग कॉमा जैसी चीजें चाहते हैं। नाव शाब्दिक आसानी से व्याकरण में लंबे समय तक हो सकता है।
    • कई भाषाओं में, लोकप्रिय सिंटैक्स में से कोई भी मौजूदा सिंटैक्स के साथ टकराता नहीं है (एक अपवाद जो मैं सोच सकता हूं कि यह ब्रेस जैसे ब्लॉक के साथ एक भाषा है जैसे कि भाव, अल्पविराम ऑपरेटर और कोई अर्धविराम, जैसा कि {1, 2})
    • शब्दार्थ को पांच से कम वाक्यों में परिभाषित किया जा सकता है, अनौपचारिक संस्करण "एक नया $ संग्रह तुरंत , फिर .add/ .append/ .setItemएक बार दिए गए भावों के साथ (उन) अभिव्यक्ति (तर्कों के रूप में)।
  • पिछले तीसरे बिंदु के कारण, इसे लागू करना भी बहुत आसान है।
  • यह अविश्वसनीय रूप से काम में आता है जब आपको एक की आवश्यकता होती है, और अन्य तत्वों के सिंटैक्स को प्रभावित करने की आवश्यकता नहीं होती है, अर्थात जब आप इसका उपयोग नहीं करते हैं तो आप इसके लिए "भुगतान" नहीं करते हैं।

3

क्लोजर एक लिस्प है लेकिन समर्थन करता है

Lists: (x1 x2)
Vectors: [x1 x2]
Maps: {k1 v1 k2 v2}
Sets: #{x1 x2}

2

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

विशिष्ट फ़ील्ड्स के लिए डिज़ाइन की गई भाषाएं कभी-कभी कुछ डेटा संरचनाओं में निर्मित भाषा से लाभ उठा सकती हैं, जैसे कि मैटलैब। लेकिन बहुत सारे आप पर हावी हो सकते हैं।


2

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

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


2

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

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

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

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


1

एपीएल (और संबंधित आधुनिक वेरिएंट, ए +, जे और के) में स्केलर, वेक्टर और मैट्रिक्स प्रथम श्रेणी के डेटा संरचनाओं के रूप में हैं।

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


एपीएल में नेस्टेड एरेज़ भी होते हैं, और एरेज़ में समरूप डेटा प्रकार नहीं होता है, जो सभी बहुत शक्तिशाली डेटा संरचनाओं के लिए बनाता है।
RFLack

1

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

सूची और मानचित्र शाब्दिक और एक सुविधाजनक बंद वाक्यविन्यास उच्च-स्तरीय भाषाओं की आवश्यक विशेषताएं हैं।

इस जावा कोड के बीच का अंतर:

Thing t = new Thing();
t.setFoo(3);
t.setBar(6.3);
t.setBaz(true);

और यह ग्रूवी कोड:

t = new Thing(foo: 3, bar: 6.3, baz: true)

बहुत बड़ा है। यह 40,000 लाइन प्रोग्राम और 10,000 लाइन प्रोग्राम के बीच का अंतर है। सिंटैक्स मायने रखता है।


C # में एक कर सकते हैं: var t = new Thing(foo: 3, bar: 6.3, baz: true);- केवल 4 और वर्ण।
नौकरी '

यह वास्तव में एक ही संख्या है; ग्रूवी कोड को '
डीई

1

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

  • क्रमबद्ध (1-आयामी): सरणी, कतार, स्टैक, सूचियाँ ...
  • आदेश दिया बहुआयामी संरचनाएं : तालिका, वेक्टर, मैट्रिस ।।
  • नक्शे : हैशमैप, शब्दकोश, सेट, मल्टीप ... (1-आयामी)
  • बहुआयामी नक्शे : फ़ंक्शंस, नक्शे के नक्शे ...
  • ग्राफ प्रकार : पेड़, रेखांकन निर्देशित ...

आप किसी अन्य संरचना के साथ किसी भी संरचना का अनुकरण कर सकते हैं - यह केवल इस बात पर निर्भर करता है कि प्रोग्रामिंग भाषा कितनी आसान और स्पष्ट है। उदाहरण के लिए:

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

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


1

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

बहुत सामान्य डेटा संरचना प्रकारों की एक छोटी संख्या के लिए एक अपवाद बनाना ठीक है। मैं शायद अधिकतम पर अनुमति दूंगा:

  • निश्चित-लंबाई सरणियाँ
  • सेट
  • HashMaps
  • अनुक्रम / सूची
  • अभिलेख / संरचना / वर्ग

कस्टम डेटा प्रकारों के लिए भाषा के सामान्य वाक्यविन्यास का उपयोग करते हुए, उससे अधिक परिष्कृत कुछ भी संभवतः पुस्तकालयों के लिए छोड़ दिया जाना चाहिए।

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

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