डेटा प्रकार
This article needs additional citations for verification. (June 2021) (Learn how and when to remove this template message) |
कंप्यूटर विज्ञान और कंप्यूटर प्रोग्रामिंग में, डेटा प्रकार(या बस प्रकार) डेटा मानों का संग्रह या समूह है, सामान्यतः संभावित मानों के एक समुच्चय द्वारा निर्दिष्ट, इन मूल्यों पर अनुमत संचालन का एक समुच्चय, और/या इन मूल्यों का प्रतिनिधित्व मशीन के प्रकार के रूप में होता है।[1] एक प्रोग्राम में एक डेटा प्रकार विनिर्देश उन संभावित मानों को प्रतिबंधित करता है जो एक अभिव्यक्ति (कंप्यूटर विज्ञान), जैसे कि एक चर या फ़ंक्शन कॉल, ले सकते हैं। शाब्दिक डेटा पर, यह संकलक या अनुवादक(कंप्यूटिंग) को बताता है कि प्रोग्रम लिखने वाला डेटा का उपयोग कैसे करना चाहता है। अधिकांश प्रोग्रामन भाषा बुनियादी डेटा प्रकार के पूर्णांक (कंप्यूटर विज्ञान) संख्याओं(विभिन्न आकारों के), तैरनेवाला स्थल फ़्लोटिंग-पॉइंट नंबरों (जो वास्तविक संख्याओं का अनुमान लगाते हैं), चरित्र(कंप्यूटिंग) और बूलियन डेटा प्रकार का समर्थन करते हैं।[2][3]
अवधारणा
डेटा प्रकार कई कारणों से निर्दिष्ट किया जा सकता है: समानता, सुविधा, या ध्यान केंद्रित करने के लिए। यह प्रायः अच्छे संगठन का विषय होता है जो जटिल परिभाषाओं को समझने में सहायता करता है।
लगभग सभी प्रोग्रामिंग भाषाओं में स्पष्ट रूप से डेटा प्रकार की धारणा सम्मिलित होती है, हालांकि संभावित डेटा प्रकार प्रायः सादगी, संगणनीयता या नियमितता के विचार से प्रतिबंधित होते हैं। एक स्पष्ट डेटा प्रकार की घोषणा सामान्यतः संकलक को एक कुशल मशीन प्रतिनिधित्व चुनने की अनुमति देती है, लेकिन डेटा प्रकारों द्वारा प्रस्तुत वैचारिक संगठन को छूट नहीं दी जानी चाहिए।[4]
अलग-अलग भाषाएँ अलग-अलग डेटा प्रकारों या समान प्रकारों का अलग-अलग शब्दार्थों के साथ उपयोग कर सकती हैं। उदाहरण के लिए, पायथन (प्रोग्रामिंग भाषा) में,int
एक मनमाना-पूर्णांक अंकगणित का प्रतिनिधित्व करता है। मनमाना-पूर्णांक पूर्णांक जिसमें पारंपरिक संख्यात्मक संचालन जैसे कि जोड़, घटाव और गुणा होता है। हालाँकि जावा (प्रोग्रामिंग भाषा) में, टाइप int
-2,147,483,648 से लेकर 2,147,483,647 तक के मूल्य वाले 32-बिट पूर्णांक (कंप्यूटर विज्ञान) के समुच्चय का प्रतिनिधित्व करता है, अंकगणितीय संचालन के साथ जो पूर्णांक अतिप्रवाह पर लपेटता है। जंग (प्रोग्रामिंग भाषा) रस्ट में इस 32-बिट पूर्णांक प्रकार को i32 के रूप में दर्शाया गया है और डिबग मोड में ओवरफ्लो होने पर घबराहट होती है।[5]
अधिकांश प्रोग्रामिंग भाषाएँ प्रोग्रम लिखने वाला को अतिरिक्त डेटा प्रकारों को परिभाषित करने की अनुमति देती हैं, सामान्यतः अन्य प्रकार के कई तत्वों को जोड़कर और नए डेटा प्रकार के वैध संचालन को परिभाषित करती हैं। उदाहरण के लिए, एक प्रोग्रम लिखने वाला जटिल संख्या नाम का एक नया डेटा प्रकार बना सकता है जिसमें वास्तविक और काल्पनिक भाग सम्मिलित होंगे, या एक रंग डेटा प्रकार तीन बाइट्स द्वारा दर्शाया जाएगा जो प्रत्येक लाल, हरे और नीले रंग की मात्रा को दर्शाता है, और रंग के नाम का प्रतिनिधित्व करने वाली एक स्ट्रिंग का प्रतिनिधित्व करता है। डेटा संरचना नाम स्वयं को इंगित करता है कि डेटा को स्मृति में व्यवस्थित करना। मेमोरी में डेटा को व्यवस्थित करने के कई तरीके हैं क्योंकि हम पहले से ही सी भाषा में डेटा संरचनाओं में से एक, यानी सरणी देख चुके हैं। ऐरे मेमोरी तत्वों का एक संग्रह है जिसमें डेटा क्रमिक रूप से संग्रहीत किया जाता है, अर्थात एक के बाद एक। दूसरे शब्दों में, हम कह सकते हैं कि सरणी तत्वों को निरंतर तरीके से संग्रहीत करती है। डेटा का यह संगठन डेटा संरचनाओं की एक सरणी की सहायता से किया जाता है।
डेटा प्रकारों का उपयोग प्रकार प्रणालियों के भीतर किया जाता है, जो उन्हें परिभाषित करने, लागू करने और उनका उपयोग करने के विभिन्न तरीकों की पेशकश करते हैं। एक प्रकार की प्रणाली में, एक डेटा प्रकार कंप्यूटर मेमोरी में संग्रहीत मूल्य (कंप्यूटर विज्ञान) या वस्तुओं(कंप्यूटर विज्ञान) के प्रतिनिधित्व, व्याख्या और संरचना का वर्णन करते हुए, डेटा की व्याख्या पर रखी गई बाधा का प्रतिनिधित्व करता है। टाइप सिस्टम डेटा प्रकार की जानकारी का उपयोग कंप्यूटर प्रोग्राम की शुद्धता की जांच करने के लिए करता है जो डेटा तक पहुंच या हेरफेर करता है। एक कंपाइलर अपनी जरूरत के स्टोरेज को सुधारने करने के लिए स्टैटिक टाइप वैल्यू का इस्तेमाल कर सकता है और वैल्यू पर संक्रिया के लिए एल्गोरिदम का चुनाव कर सकता है। कई C (प्रोग्रामिंग लैंग्वेज) में कंपाइलर float
डेटा प्रकार, उदाहरण के लिए एकल-सटीक फ़्लोटिंग पॉइंट नंबरों के लिए, IEEE 754-2008 के अनुसंक्षेप 32 बिट्स में दर्शाया गया है। एकल-पूर्णांक फ़्लोटिंग पॉइंट नंबरों के लिए IEEE विनिर्देश। इस प्रकार वे उन मूल्यों पर फ़्लोटिंग-पॉइंट-विशिष्ट निर्देश समुच्चय (फ़्लोटिंग-पॉइंट जोड़, गुणा, आदि) का उपयोग करेंगे।
अधिकांश सांख्यिकीय डेटा प्रकार के कंप्यूटर प्रोग्रामिंग में तुलनीय प्रकार होते हैं, और इसके विपरीत, जैसा कि निम्न तालिका में दिखाया गया है:
Statistics | Programming |
---|---|
real-valued (interval scale) | floating-point |
real-valued (ratio scale) | |
count data (usually non-negative) | integer |
binary data | Boolean |
categorical data | enumerated टाइप |
random vector | list or array |
random matrix | two-dimensional array |
random tree | tree |
परिभाषा
Parnas, Shore & Weiss (1976) एक प्रकार की पाँच परिभाषाओं की पहचान की जिनका उपयोग किया गया था - कभी-कभी निहित रूप से - साहित्य में:
- वाक्य-रचना के नियमों के अनुसार
- एक प्रकार एक विशुद्ध रूप से वाक्य - विन्यास लेबल है जो एक चर (कंप्यूटर विज्ञान) से जुड़ा होता है जब इसे घोषित किया जाता है। यद्यपि उन्नत प्रकार की प्रणालियों जैसे कि अवसंरचनात्मक प्रकार की प्रणालियों के लिए उपयोगी, ऐसी परिभाषाएँ प्रकारों का कोई सहज अर्थ प्रदान नहीं करती हैं।
- प्रतिनिधित्व
- एक प्रकार को अधिक आदिम प्रकारों की संरचना के संदर्भ में परिभाषित किया जाता है - प्रायः मशीन प्रकार।
- प्रतिनिधित्व और व्यवहार
- एक प्रकार को इसके प्रतिनिधित्व के रूप में परिभाषित किया गया है और इन प्रतिनिधित्वों में हेरफेर करने वाले ऑपरेटर (कंप्यूटर प्रोग्रामिंग) का एक समुच्चय है।
- मूल्य स्थान
- एक प्रकार संभावित मूल्यों का एक समूह है जो एक चर के पास हो सकता है। इस तरह की परिभाषाएँ (विघटित संघ) संघ (समुच्चय सिद्धांत) या कार्तीय गुणन के उत्पादों के बारे में बोलना संभव बनाती हैं।
- मूल्य स्थान और व्यवहार
- एक प्रकार मूल्यों का एक समूह है जो एक चर के पास हो सकता है और फ़ंक्शन (कंप्यूटर विज्ञान) का एक समुच्चय है जो इन मूल्यों पर लागू हो सकता है।
एक प्रतिनिधित्व के संदर्भ में परिभाषा प्रायः एएलजीओएल और पास्कल(प्रोग्रामिंग भाषा) जैसी अनिवार्य भाषाओं में की जाती थी, जबकि मूल्य स्थान और व्यवहार के संदर्भ में परिभाषा उच्च स्तरीय भाषाओं जैसे सिमुला और सीएलयू (प्रोग्रामिंग भाषा) में उपयोग की जाती थी। . व्यवहार सहित प्रकार वस्तु-उन्मुख मॉडल के साथ अधिक निकटता से संरेखित होते हैं, जबकि एक संरचित प्रोग्रामिंग मॉडल में कोड सम्मिलित नहीं होता है, और इसे सप्ष्ट तौर से पुराने डेटा संरचना कहा जाता है।
वर्गीकरण
डेटा प्रकारों को कई कारकों के अनुसंक्षेप वर्गीकृत किया जा सकता है:
साधारण डेटा प्रकार या बिल्ट-इन डेटा प्रकार वे प्रकार होते हैं जो किसी भाषा कार्यान्वयन के लिए बिल्ट-इन होते हैं। उपयोगकर्ता-परिभाषित डेटा प्रकार गैर-आदिम प्रकार हैं। उदाहरण के लिए, जावा के संख्यात्मक प्रकार साधारण हैं, जबकि क्लासेस यूज़र-डिफ़ाइंड हैं।
- परमाणु प्रकार का मान एक एकल डेटा विषय सूची है जिसे घटक भागों में नहीं तोड़ा जा सकता है। समग्र प्रकार या समग्र प्रकार का मान डेटा आइटम्स का एक संग्रह है जिसे व्यक्तिगत रूप से अभिगम किया जा सकता है।[6] उदाहरण के लिए, एक पूर्णांक को सामान्यतः परमाणु माना जाता है, हालांकि इसमें बिट्स का एक क्रम होता है, जबकि पूर्णांकों की एक सरणी निश्चित रूप से समग्र होती है।
- मूल डेटा प्रकार या मौलिक डेटा प्रकार स्वयंसिद्ध रूप से मौलिक धारणाओं से या उनके तत्वों की गणना से परिभाषित होते हैं। उत्पन्न डेटा प्रकार या व्युत्पन्न डेटा प्रकार अन्य डेटा प्रकारों के संदर्भ में निर्दिष्ट और आंशिक रूप से परिभाषित होते हैं। सभी मूल प्रकार परमाणु हैं।[7] उदाहरण के लिए, पूर्णांक गणित में परिभाषित एक मूल प्रकार हैं, जबकि पूर्णांकों की एक सरणी एक सरणी प्रकार जनरेटर को पूर्णांक प्रकार पर लागू करने का परिणाम है।
शब्दावली अलग-अलग होती है - साहित्य में, आदिम, अंतर्निर्मित, मूल, परमाणु और मौलिक का एक दूसरे के स्थान पर उपयोग किया जा सकता है।[8]
उदाहरण
मशीन डेटा प्रकार
डिजिटल इलेक्ट्रॉनिक्स पर आधारित कंप्यूटरों में सभी डेटा को निम्नतम स्तर पर बिट्स (विकल्प 0 और 1) के रूप में दर्शाया जाता है। डेटा की सबसे छोटी पता योग्य इकाई सामान्यतः बिट्स का एक समूह होता है जिसे बाइट कहा जाता है (सामान्यतः एक ऑक्टेट(कंप्यूटिंग), जो 8 बिट होता है)। मशीन कोड निर्देशों द्वारा संसाधित इकाई को वर्ड (डेटा प्रकार) कहा जाता है (2011 तक, सामान्यतः 32 या 64 बिट)।
मशीन डेटा प्रकार हार्डवेयर पर ठीक-ठाक नियंत्रण को उजागर करते हैं या उपलब्ध कराते हैं, लेकिन यह उन कार्यान्वयन विवरणों को भी उजागर कर सकता है जो कोड को कम सुवाह्य बनाते हैं। इसलिए मशीन प्रकार मुख्य रूप से सिस्टम प्रोग्रामिंग या निम्न-स्तरीय प्रोग्रामिंग भाषाओं में उपयोग किए जाते हैं। उच्च-स्तरीय भाषाओं में अधिकांश डेटा प्रकार अमूर्त होते हैं क्योंकि उनके पास भाषा-परिभाषित मशीन प्रतिनिधित्व नहीं होता है। सी प्रोग्रामिंग भाषा, उदाहरण के लिए, बूलियन्स, पूर्णांक, फ़्लोटिंग-पॉइंट नंबर इत्यादि जैसे प्रकारों की आपूर्ति करती है, लेकिन इन प्रकारों के सटीक बिट प्रतिनिधित्व कार्यान्वयन-परिभाषित हैं। एक सटीक मशीन प्रतिनिधित्व वाला एकमात्र C प्रकार है char
प्रकार जो एक बाइट का प्रतिनिधित्व करता है।[9]
बूलियन प्रकार
बूलियन प्रकार तार्किक सत्य और असत्य (तर्क) मूल्यों का प्रतिनिधित्व करता है। हालांकि केवल दो मान संभव हैं, वे अधिक बार एक बिट के अतिरिक्त एक शब्द के रूप में प्रस्तुत किए जाते हैं क्योंकि इसमें एक बिट को संग्रहीत करने और पुनः प्राप्त करने के लिए अधिक मशीन निर्देशों की आवश्यकता होती है। कई प्रोग्रामिंग भाषाओं में एक स्पष्ट बूलियन प्रकार नहीं होता है, इसके अतिरिक्त एक पूर्णांक प्रकार का उपयोग किया जाता है और (उदाहरण के लिए) 0 को गलत और अन्य मानों को सत्य के रूप में व्याख्या की जाती है। बूलियन डेटा तार्किक संरचना को संदर्भित करता है कि मशीन भाषा में भाषा की व्याख्या कैसे की जाती है। इस मामले में एक बूलियन 0 तर्क को गलत बताता है। सत्य हमेशा एक गैर शून्य होता है, विशेष रूप से वह जिसे बूलियन 1 के रूप में जाना जाता है।
संख्यात्मक प्रकार
लगभग सभी प्रोग्रामिंग भाषाएँ एक या अधिक पूर्णांक (कंप्यूटिंग) डेटा प्रकारों की आपूर्ति करती हैं। वे या तो कुछ श्रेणियों तक सीमित पूर्वनिर्धारित उपप्रकारों की एक छोटी संख्या की आपूर्ति कर सकते हैं (जैसे छोटा और लंबा और उनके अनुरूप अचिहिनत C/C++ में वेरिएंट); या उपयोगकर्ताओं को 1..12 (जैसे पास्कल (प्रोग्रामिंग भाषा)/एडा (प्रोग्रामिंग भाषा)) जैसी उपश्रेणियों को स्वतंत्र रूप से परिभाषित करने की अनुमति दें। यदि लक्ष्य प्लेटफ़ॉर्म पर संबंधित मूल प्रकार उपस्थित नहीं है, तो संकलक उपस्थित प्रकारों का उपयोग करके उन्हें कोड में तोड़ देगा। उदाहरण के लिए, यदि 16 बिट प्लेटफ़ॉर्म पर 32-बिट पूर्णांक का अनुरोध किया जाता है, तो संकलक इसे दो 16 बिट पूर्णांकों की एक सरणी के रूप में व्यवहार करेगा।
फ़्लोटिंग पॉइंट डेटा प्रकार कुछ आंशिक मानों (तर्कसंगत संख्या, गणितीय रूप से) का प्रतिनिधित्व करते हैं। हालांकि उन्होंने अपने अधिकतम मूल्यों और उनकी सटीकता दोनों पर पूर्वनिर्धारित सीमाएँ रखी हैं, उन्हें कभी-कभी भ्रामक रूप से वास्तविक कहा जाता है (गणितीय वास्तविक संख्याओं का विचारोत्तेजक)। वे सामान्यतः आंतरिक रूप से रूप में संग्रहीत होते हैं a × 2b (कहाँ a और b पूर्णांक हैं), लेकिन परिचित दशमलव रूप में प्रदर्शित होते हैं।
मौद्रिक मूल्यों का प्रतिनिधित्व करने के लिए निश्चित बिंदु (कंप्यूटिंग) डेटा प्रकार सुविधाजनक हैं। वे प्रायः आंतरिक रूप से पूर्णांक के रूप में लागू होते हैं, जिससे पूर्वनिर्धारित सीमाएं होती हैं।
आर्किटेक्चर विवरण से आजादी के लिए, एक बिग्नम या मनमाने ढंग से सटीक संख्यांक प्रकार की आपूर्ति की जा सकती है। यह सिस्टम पर उपलब्ध मेमोरी और कम्प्यूटेशनल संसाधनों द्वारा सीमित सटीकता के लिए एक पूर्णांक या तर्कसंगत का प्रतिनिधित्व करता है। मशीन-आकार के मूल्यों पर अंकगणितीय संचालन का बिग्नम कार्यान्वयन, संबंधित मशीन संचालन की तुलना में काफी धीमा है।[10]
गणना
प्रगणित प्रकार के अलग-अलग मान होते हैं, जिनकी तुलना और नियत की जा सकती है, लेकिन जिनका कंप्यूटर की मेमोरी में कोई विशेष ठोस प्रतिनिधित्व नहीं होता है; संकलक और दुभाषिए मनमाने ढंग से उनका प्रतिनिधित्व कर सकते हैं। उदाहरण के लिए, ताश के पत्तों की एक गड्डी में चार सूट क्लब, डायमंड, हार्ट, स्पैड नामक चार प्रगणक हो सकते हैं, जो एक प्रगणित प्रकार के सूट से संबंधित हैं। यदि एक चर V को उसके डेटा प्रकार के रूप में सूट के रूप में घोषित किया जाता है, तो कोई भी उन चार मानों में से किसी को भी निर्दिष्ट कर सकता है। कुछ कार्यान्वयन प्रोग्रम लिखने वाला को गणना मानों के लिए पूर्णांक मान निर्दिष्ट करने की अनुमति देते हैं, या उन्हें पूर्णांक के प्रकार-समतुल्य के रूप में भी मानते हैं।
स्ट्रिंग और टेक्स्ट प्रकार
स्ट्रिंग(कंप्यूटर विज्ञान) शब्दों या सादे टेक्स्ट को संग्रहीत करने के लिए उपयोग किए जाने वाले वर्ण (कंप्यूटिंग) का एक क्रम है, जो प्रायः स्वरूपित टेक्स्ट का प्रतिनिधित्व करने वाली पाठ्य मार्कअप भाषाएं होती हैं। वर्ण कुछ वर्णमाला का एक अक्षर, एक अंक, एक रिक्त स्थान, एक विराम चिह्न आदि हो सकते हैं। वर्ण एक वर्ण समुच्चय जैसे ASCII से तैयार किए जाते हैं। वर्ण एन्कोडिंग के अनुसंक्षेप वर्ण और स्ट्रिंग प्रकारों के अलग-अलग उपप्रकार हो सकते हैं। मूल 7-बिट चौड़ा ASCII सीमित पाया गया था, और 8, 16 और 32-बिट समुच्चयों द्वारा अधिगृहीत किया गया था, जो गैर-लैटिन वर्णमाला (जैसे हिब्रू और चीनी भाषा) और अन्य प्रतीकों की एक विस्तृत विविधता को सांकेतिक शब्दों में बदल सकता है। स्ट्रिंग या तो परिवर्तनीय लंबाई या निश्चित लंबाई के हो सकते हैं, और कुछ प्रोग्रामिंग भाषाओं में दोनों प्रकार होते हैं। उन्हें उनके अधिकतम आकार से उपप्रकार भी किया जा सकता है।
चूंकि अधिकांश वर्ण समुच्चय में संख्यात्मक अंक सम्मिलित होता है, इसलिए एक संख्यात्मक स्ट्रिंग होना संभव है, जैसे कि "1234"।
ये संख्यात्मक तार सामान्यतः संख्यात्मक मानों से अलग माने जाते हैं जैसे 1234
, हालांकि कुछ भाषाएं उनके बीच अपने आप परिवर्तित हो जाती हैं।
संघ प्रकार
एक संघ प्रकार की परिभाषा निर्दिष्ट करेगी कि कितने अनुमत उपप्रकारों को इसके उदाहरणों में संग्रहीत किया जा सकता है, उदा। फ्लोट या लंबा पूर्णांक। एक रिकॉर्ड (कंप्यूटर विज्ञान) के विपरीत, जिसे एक फ्लोट और एक पूर्णांक के रूप में परिभाषित किया जा सकता है, एक संघ में एक समय में केवल एक उपप्रकार हो सकता है।
एक टैग की गई संघ (कंप्यूटर विज्ञान) (जिसे भिन्न प्रकार, वेरिएंट रिकॉर्ड, विभेदित संघ या असंयुक्त संघ भी कहा जाता है) में एक अतिरिक्त फ़ील्ड होता है जो उन्नत प्रकार की सुरक्षा के लिए इसके वर्तमान प्रकार को दर्शाता है।
बीजगणितीय डेटा प्रकार
एक बीजगणितीय डेटा प्रकार (एडीटी) उत्पाद प्रकारों का एक संभावित पुनरावर्ती योग प्रकार है। एडीटी के एक मूल्य में शून्य या अधिक फ़ील्ड मानों के साथ एक कन्स्ट्रक्टर टैग होता है, जिसमें कन्स्ट्रक्टर द्वारा निर्धारित फ़ील्ड मानों की संख्या और प्रकार होता है। एडीटी के सभी संभावित मूल्यों का समुच्चय समुच्चय -थ्योरिटिक डिसजॉइंट संघ (योग) है, इसके वेरिएंट (फ़ील्ड के उत्पाद) के सभी संभावित मूल्यों के समुच्चय का। बीजगणितीय प्रकारों के मूल्यों का पैटर्न मिलान के साथ विश्लेषण किया जाता है, जो मूल्य के निर्माता की पहचान करता है और इसमें सम्मिलित क्षेत्रों को निकालता है।
यदि केवल एक निर्माता है, तो एडीटी एक उत्पाद प्रकार से मेल खाता है जो एक टपल या रिकॉर्ड के समान है। बिना फ़ील्ड वाला एक कन्स्ट्रक्टर खाली उत्पाद (इकाई प्रकार) से मेल खाता है। यदि सभी कंस्ट्रक्टर्स के पास कोई फ़ील्ड नहीं है, तो एडीटी एक एन्युमरेटेड प्रकार से मेल खाता है।
एक आम एडीटी विकल्प प्रकार है, जिसे हास्केल में परिभाषित किया गया है data Maybe a = Nothing | Just a
.[11]
डेटा संरचना
कुछ प्रकार डेटा को संग्रहीत करने और पुनर्प्राप्त करने के लिए बहुत उपयोगी होते हैं और डेटा संरचना कहलाते हैं। सामान्य डेटा संरचनाओं में सम्मिलित हैं:
- एक सरणी डेटा प्रकार (जिसे वेक्टर, सूची (संक्षेप डेटा प्रकार), या अनुक्रम भी कहा जाता है) कई तत्वों को संग्रहीत करता है और व्यक्तिगत तत्वों को यादृच्छिक पहुंच प्रदान करता है। एक सरणी के तत्व सामान्यतः (लेकिन सभी संदर्भों में नहीं) एक ही प्रकार के होने के लिए आवश्यक होते हैं। सारणियाँ निश्चित-लंबाई या विस्तार योग्य हो सकती हैं। एक सरणी में सूचकांकों को सामान्यतः एक विशिष्ट श्रेणी से पूर्णांक (यदि नहीं, तो एक साहचर्य सरणी के बारे में बोलकर इस छूट पर जोर दिया जा सकता है) की आवश्यकता होती है (यदि उस सीमा में सभी सूचकांक तत्वों के अनुरूप नहीं हैं, तो यह एक विरल सरणी हो सकती है)।
- रिकॉर्ड (कंप्यूटर विज्ञान) (जिसे टपल या स्ट्रक्चर भी कहा जाता है) रिकॉर्ड सबसे सरल डेटा संरचनाओं में से हैं। एक रिकॉर्ड एक मान है जिसमें अन्य मान होते हैं, सामान्यतः निश्चित संख्या और अनुक्रम में और सामान्यतः नामों से अनुक्रमित होते हैं। रिकॉर्ड के तत्वों को सामान्यतः फ़ील्ड या सदस्य कहा जाता है।
- एक वस्तु (कंप्यूटर विज्ञान) में रिकॉर्ड की तरह कई डेटा फ़ील्ड होते हैं, और उन्हें अभिगम करने या संशोधित करने के लिए कई सबरूटीन्स भी प्रदान करता है, जिसे मेथड (कंप्यूटर प्रोग्रामिंग) कहा जाता है।
- एकल लिंक्ड सूची, जिसका उपयोग कतार (संक्षेप डेटा प्रकार) को लागू करने के लिए किया जा सकता है और हास्केल में एडीटी के रूप में परिभाषित किया गया है
data List a = Nil | Cons a (List a)
, और - बाइनरी ट्री, जो तेजी से खोज की अनुमति देता है, और हास्केल में एडीटी के रूप में परिभाषित किया जा सकता है
data BTree a = Nil | Node (BTree a) a (BTree a)
[12]
संक्षेप डेटा प्रकार
एक संक्षेप डेटा प्रकार एक डेटा प्रकार है जो डेटा के ठोस प्रतिनिधित्व को निर्दिष्ट नहीं करता है। इसके अतिरिक्त , इसका वर्णन करने के लिए डेटा प्रकार के संचालन के आधार पर एक औपचारिक विनिर्देश का उपयोग किया जाता है। विनिर्देश के किसी भी कार्यान्वयन को दिए गए नियमों को पूरा करना चाहिए। उदाहरण के लिए, एक स्टैक (संक्षेप डेटा प्रकार) में पुश/पॉप संक्रिया होते हैं जो लास्ट-इन-फर्स्ट-आउट नियम का पालन करते हैं, और किसी सूची या सरणी का उपयोग करके ठोस रूप से कार्यान्वित किया जा सकता है। एक अन्य उदाहरण एक समुच्चय (अमूर्त डेटा प्रकार) है जो बिना किसी विशेष अनुक्रम के मूल्यों को संग्रहीत करता है, और कोई दोहराया मान नहीं है। मूल्यों को स्वयं समुच्चय से पुनर्प्राप्त नहीं किया जाता है, बल्कि सदस्यता के लिए एक बूलियन प्राप्त करने या न करने के लिए सदस्यता के मूल्य का परीक्षण किया जाता है।
संक्षेप डेटा प्रकार औपचारिक शब्दार्थ विज्ञान (कंप्यूटर विज्ञान) और कार्यक्रम औपचारिक सत्यापन में और डिज़ाइन में कम सख्ती से उपयोग किए जाते हैं। सत्यापन से परे, एक विनिर्देश को तुरंत कार्यान्वयन में बदल दिया जा सकता है। ओबीजे (प्रोग्रामिंग भाषा) प्रोग्रामन भाषा का परिवार उदाहरण के लिए इस विकल्प पर आधारित है, जो उन्हें चलाने के लिए विनिर्देशन और पुनर्लेखन के लिए समीकरणों का उपयोग करता है। बीजगणितीय विनिर्देश[13] 1980 के आसपास सीएस में शोध का एक महत्वपूर्ण विषय था और उस समय अमूर्त डेटा प्रकारों का लगभग एक पर्याय था। यूनिवर्सल बीजगणित में इसका गणितीय आधार है।[14] केवल समीकरणों की तुलना में अन्य सूत्रों को अनुमति देकर विनिर्देशन भाषा को अधिक अभिव्यंजक बनाया जा सकता है।
एक अधिक सम्मिलित उदाहरण बाइनरी ट्री, सूची (संक्षेप डेटा प्रकार), समुच्चय (संक्षेप डेटा प्रकार) # मल्टीसमुच्चय और समुच्चय (कंप्यूटर विज्ञान) संक्षेप डेटा प्रकारों का बूम पदानुक्रम है।[15] इन सभी डेटा प्रकारों को तीन ऑपरेशनों द्वारा घोषित किया जा सकता है: अशक्त, जो खाली कंटेनर का निर्माण करता है, सिंगल, जो एक तत्व से एक कंटेनर का निर्माण करता है और एपेंड करता है, जो एक ही प्रकार के दो कंटेनरों को जोड़ता है। चार डेटा प्रकारों के लिए पूर्ण विनिर्देश इन परिचालनों पर निम्नलिखित नियमों को क्रमिक रूप से जोड़कर दिया जा सकता है:
- null is the left and right neutral for a tree: | append(null,A) = A, append(A,null) = A. |
- lists add that append is associative: | append(append(A,B),C) = append(A,append(B,C)). |
- bags add commutativity: | append(B,A) = append(A,B). |
- finally, sets are also idempotent: | append(A,A) = A. |
डेटा तक पहुंच तीन परिचालनों पर पैटर्न-मिलान द्वारा निर्दिष्ट की जा सकती है, उदा। इन कंटेनरों के लिए एक सदस्य कार्य करता है:
- member(X,single(Y)) = eq(X,Y) |
- member(X,null) = false |
- member(X,append(A,B)) = or(member(X,A), member(X,B)) |
यह सुनिश्चित करने के लिए ध्यान रखा जाना चाहिए कि डेटा प्रकार के प्रासंगिक नियमों के तहत फ़ंक्शन अपरिवर्तनीय है। समीकरणों के चुने हुए सबसमुच्चय द्वारा निहित प्रत्येक तुल्यता वर्ग के भीतर, इसे अपने सभी सदस्यों के लिए समान परिणाम देना होगा।
संदर्भ और संदर्भ
मुख्य गैर-समग्र, व्युत्पन्न प्रकार संदर्भ (कंप्यूटर प्रोग्रामिंग) है, एक डेटा प्रकार जिसका मान सीधे (या इंगित करता है) किसी अन्य मान को उसके मेमोरी पते का उपयोग करके कंप्यूटर मेमोरी में संग्रहीत किया जाता है। यह एक आदिम प्रकार का संदर्भ (कंप्यूटर विज्ञान) है। (रोजमर्रा के संदर्भ में, किसी पुस्तक में पृष्ठ संख्या को डेटा का एक टुकड़ा माना जा सकता है जो किसी अन्य को संदर्भित करता है)। पॉइंटर्स को प्रायः पूर्णांक के समान प्रारूप में संग्रहित किया जाता है; हालांकि, एक संदर्भ को हटाने या देखने का प्रयास जिसका मान कभी वैध स्मृति पता नहीं था, प्रोग्राम को क्रैश करने का कारण बनता है। इस संभावित समस्या को कम करने के लिए, पॉइंटर्स को उनके द्वारा इंगित डेटा के प्रकार के लिए एक अलग प्रकार माना जाता है, भले ही अंतर्निहित प्रतिनिधित्व समान हो।
कार्य प्रकार
कार्यात्मक प्रोग्रामिंग भाषाएं कार्यों को एक अलग डेटाटाइप के रूप में मानती हैं और इस प्रकार के मूल्यों को चर में संग्रहीत करने और कार्यों को पास करने की अनुमति देती हैं। कुछ बहु-प्रतिमान भाषाओं जैसे कि जावास्क्रिप्ट में कार्यों को डेटा के रूप में व्यवहार करने के लिए तंत्र भी हैं।[16] अधिकांश समकालीन प्रकार की प्रणालियाँ जावास्क्रिप्ट के सरल प्रकार के फ़ंक्शन ऑब्जेक्ट से परे जाती हैं और तर्क और रिटर्न प्रकारों द्वारा विभेदित फ़ंक्शन प्रकारों का एक परिवार होता है, जैसे कि प्रकार Int -> Bool
एक पूर्णांक लेने और एक बूलियन वापस करने वाले कार्यों को निरूपित करना है। C में, एक फ़ंक्शन प्रथम श्रेणी का डेटा प्रकार नहीं है, लेकिन प्रोग्राम द्वारा समारोह संदर्भ में हेरफेर किया जा सकता है। जावा और सी ++ में मूल रूप से फ़ंक्शन मान नहीं थे लेकिन उन्हें सी ++ 11 और जावा 8 में जोड़ा गया है।
गणितीय तर्क में, प्रथम-क्रम तर्क फ़ंक्शन या विधेय नामों पर परिमाणक (तर्क) के अनुप्रयोग की अनुमति नहीं देता है, हालांकि द्वितीय-क्रम तर्क करता है।
निर्माता टाइप करें
एक प्रकार का निर्माता पुराने से नए प्रकार बनाता है, और एक ऑपरेटर के रूप में सोचा जा सकता है जो तर्क के रूप में शून्य या अधिक प्रकार लेता है और एक प्रकार का उत्पादन करता है। उत्पाद प्रकार, फ़ंक्शन प्रकार, पावर प्रकार और सूची प्रकार टाइप निर्माता में बनाए जा सकते हैं।
परिमाणित प्रकार
सार्वभौमिक रूप से परिमाणित और अस्तित्वगत रूप से परिमाणित प्रकार विधेय तर्क पर आधारित होते हैं। सार्वभौमिक परिमाणीकरण के रूप में लिखा गया है या forall x. f x
और सभी प्रकारों पर चौराहा है x
शरीर का f x
, यानी मान प्रकार का है f x
हर एक के लिए x
. अस्तित्वगत परिमाणीकरण के रूप में लिखा गया है या exists x. f x
और सब प्रकार की एकता है x
शरीर का f x
, यानी मान प्रकार का है f x
कुछ के लिए x
.
हास्केल में, सार्वभौमिक परिमाणीकरण का सामान्यतः उपयोग किया जाता है, लेकिन अस्तित्वगत प्रकारों को रूपांतरित करके एन्कोड किया जाना चाहिए exists a. f a
को forall r. (forall a. f a -> r) -> r
या एक समान प्रकार।
शोधन प्रकार
एक परिशोधन प्रकार एक प्रकार है जो एक विधेय के साथ संपन्न होता है जिसे परिष्कृत प्रकार के किसी भी तत्व के लिए माना जाता है। उदाहरण के लिए, 5 से बड़ी प्राकृत संख्याओं के प्रकार को इस प्रकार लिखा जा सकता है
आश्रित प्रकार
आश्रित प्रकार एक प्रकार है जिसकी परिभाषा मूल्य पर निर्भर करती है। आश्रित प्रकार के दो सामान्य उदाहरण आश्रित कार्य और आश्रित जोड़े हैं। एक निर्भर फ़ंक्शन का वापसी प्रकार इसके तर्कों में से एक के मान (केवल प्रकार नहीं) पर निर्भर हो सकता है। एक आश्रित जोड़ी का दूसरा मान हो सकता है जिसका प्रकार पहले मान पर निर्भर करता है।
मेटा प्रकार
कुछ प्रोग्रामिंग भाषाएं प्रकार की जानकारी को डेटा के रूप में प्रस्तुत करती हैं, प्रकार आत्मनिरीक्षण और प्रतिबिंब (कंप्यूटर प्रोग्रामिंग) को सक्षम करती हैं। इसके विपरीत, निर्माता टाइप करें प्रकार सिस्टम, जबकि प्रकारों को अन्य प्रकारों से बनाने की अनुमति देते हैं और मूल्यों के रूप में कार्यों को पास करते हैं, सामान्यतः उन पर कम्प्यूटेशनल निर्णय लेने से बचते हैं।[citation needed]
सुविधा के प्रकार
सुविधा के लिए, उच्च-स्तरीय भाषाएँ और डेटाबेस तैयार किए गए वास्तविक विश्व डेटा प्रकारों की आपूर्ति कर सकते हैं, उदाहरण के लिए समय, दिनांक और मौद्रिक मूल्य (मुद्रा)।[17][18] इन्हें भाषा में अंतर्निहित किया जा सकता है या पुस्तकालय में समग्र प्रकार के रूप में कार्यान्वित किया जा सकता है।[19]
यह भी देखें
- सी डेटा प्रकार
- डेटा शब्दकोश
- कार्यात्मक प्रोग्रामिंग
- दयालु (प्रकार सिद्धांत)
- प्रकार (मॉडल सिद्धांत)
- प्रकार के गणितीय मॉडल के लिए सिद्धांत टाइप करें
- प्रोग्रामन भाषा टाइपिंग में विभिन्न विकल्पों के लिए टाइप सिस्टम
- प्रकार रूपांतरण
- आईएसओ/आईईसी 11404, सामान्य प्रयोजन डेटा प्रकार
संदर्भ
- ↑ Parnas, Shore & Weiss 1976.
- ↑ type at the Free On-line Dictionary of Computing
- ↑ Shaffer, C. A. (2011). Data Structures & Algorithm Analysis in C++ (3rd ed.). Mineola, NY: Dover. 1.2. ISBN 978-0-486-48582-9.
- ↑ Scott, Dana (September 1976). "Data Types as Lattices". SIAM Journal on Computing. 5 (3): 540–541. doi:10.1137/0205037.
- ↑ "Rust RFCs - Integer Overflow". The Rust Programming Language. 12 August 2022.
- ↑ Dale, Nell B.; Weems, Chip; Headington, Mark R. (1998). Programming in C++ (in English). Jones & Bartlett Learning. p. 349. ISBN 978-0-7637-0537-4.
- ↑ ISO/IEC 11404, 6.4
- ↑ BHATNAGAR, SEEMA (19 August 2008). TEXTBOOK OF COMPUTER SCIENCE FOR CLASS XI (in English). PHI Learning Pvt. Ltd. p. 182. ISBN 978-81-203-2993-5.
- ↑ "SC22/WG14 N2176" (PDF). Wayback Machine. Section 6.2.6.2. Archived from the original (PDF) on 30 December 2018.
Which of [sign and magnitude, two's complement, one's complement] applies is implementation-defined
- ↑ "Integer benchmarks — mp++ 0.27 documentation". bluescarni.github.io.
- ↑ "6 Predefined Types and Classes". www.haskell.org. Retrieved 2022-06-15.
- ↑ Suresh, S P. "Programming in Haskell: Lecture 22" (PDF). Chennai Mathematical Institute. Retrieved 10 August 2022.
- ↑ Ehrig, H. (1985). Fundamentals of Algebraic Specification 1 - Equations and Initial Semantics. Springer-Verlag. ISBN 0-387-13718-1.
- ↑ Wechler, Wolfgang (1992). Universal Algebra for Computer Scientists. Springer-Verlag. ISBN 0-387-54280-9.
- ↑ Bunkenburg, Alexander (1994). "The Boom Hierarchy". Functional Programming, Glasgow 1993. Workshops in Computing: 1–8. CiteSeerX 10.1.1.49.3252. doi:10.1007/978-1-4471-3236-3_1. ISBN 978-3-540-19879-6.
- ↑ Flanagan, David (1997). "6.2 Functions as Data Types". JavaScript: the definitive guide (2nd ed.). Cambridge: O'Reilly & Associates. ISBN 9781565922341.
- ↑ West, Randolph (27 May 2020). "How SQL Server stores data types: money". Born SQL. Retrieved 28 January 2022.
Some time ago I described MONEY as a "convenience" data type which is effectively the same as DECIMAL(19,4), [...]
- ↑ "Introduction to data types and field properties". support.microsoft.com. Retrieved 28 January 2022.
- ↑ Wickham, Hadley (2017). "16 Dates and times". R for data science: import, tidy, transform, visualize, and model data. Sebastopol, CA. ISBN 978-1491910399. Retrieved 28 January 2022.
{{cite book}}
: CS1 maint: location missing publisher (link)
आगे की पढाई
- Parnas, David L.; Shore, John E.; Weiss, David (1976). "Abstract types defined as classes of variables". Proceedings of the 1976 Conference on Data: Abstraction, Definition and Structure: 149–154. doi:10.1145/800237.807133. S2CID 14448258.
- Cardelli, Luca; Wegner, Peter (December 1985). "On Understanding Types, Data Abstraction, and Polymorphism" (PDF). ACM Computing Surveys. 17 (4): 471–523. CiteSeerX 10.1.1.117.695. doi:10.1145/6041.6042. ISSN 0360-0300. S2CID 2921816. Archived (PDF) from the original on 2008-12-03.
- Cleaveland, J. Craig (1986). An Introduction to Data Types. Addison-Wesley. ISBN 978-0201119404.
बाहरी कड़ियाँ
- Media related to Data types at Wikimedia Commons