डेटा प्रकार

From Vigyanwiki
Revision as of 17:55, 3 February 2023 by alpha>Indicwiki (Created page with "{{Short description|Attribute of data}} {{distinguish|data structure}} {{more citations needed|date=June 2021}} File:Python 3. The standard type hierarchy.png|thumb|[[पा...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
पायथन (प्रोग्रामिंग भाषा) का मानक प्रकार पदानुक्रम 3

कंप्यूटर विज्ञान और कंप्यूटर प्रोग्रामिंग में, डेटा प्रकार (या बस प्रकार) डेटा मानों का संग्रह या समूह है, आमतौर पर संभावित मानों के एक सेट द्वारा निर्दिष्ट, इन मूल्यों पर अनुमत संचालन का एक सेट, और/या इन मूल्यों का प्रतिनिधित्व मशीन के प्रकार के रूप में।[1] एक प्रोग्राम में एक डेटा प्रकार विनिर्देश उन संभावित मानों को विवश करता है जो एक अभिव्यक्ति (कंप्यूटर विज्ञान), जैसे कि एक चर या फ़ंक्शन कॉल, ले सकते हैं। लिटरल डेटा पर, यह संकलक या इंटरप्रेटर (कंप्यूटिंग) को बताता है कि प्रोग्रामर डेटा का उपयोग कैसे करना चाहता है। अधिकांश प्रोग्रामिंग लैंग्वेज बुनियादी डेटा प्रकार के पूर्णांक (कंप्यूटर विज्ञान) संख्याओं (विभिन्न आकारों के), तैरनेवाला स्थल | फ़्लोटिंग-पॉइंट नंबरों (जो वास्तविक संख्याओं का अनुमान लगाते हैं), चरित्र (कंप्यूटिंग) और बूलियन डेटा प्रकार का समर्थन करते हैं।[2][3]


अवधारणा

डेटा प्रकार कई कारणों से निर्दिष्ट किया जा सकता है: समानता, सुविधा, या ध्यान केंद्रित करने के लिए। यह अक्सर अच्छे संगठन की बात होती है जो जटिल परिभाषाओं को समझने में सहायता करता है। लगभग सभी प्रोग्रामिंग भाषाओं में स्पष्ट रूप से डेटा प्रकार की धारणा शामिल होती है, हालांकि संभावित डेटा प्रकार अक्सर सादगी, संगणनीयता या नियमितता के विचार से प्रतिबंधित होते हैं। एक स्पष्ट डेटा प्रकार की घोषणा आम तौर पर संकलक को एक कुशल मशीन प्रतिनिधित्व चुनने की अनुमति देती है, लेकिन डेटा प्रकारों द्वारा प्रस्तुत वैचारिक संगठन को छूट नहीं दी जानी चाहिए।[4] अलग-अलग भाषाएँ अलग-अलग डेटा प्रकारों या समान प्रकारों का अलग-अलग शब्दार्थों के साथ उपयोग कर सकती हैं। उदाहरण के लिए, पायथन (प्रोग्रामिंग भाषा) में, int एक मनमाना-परिशुद्धता अंकगणित का प्रतिनिधित्व करता है। मनमाना-परिशुद्धता पूर्णांक जिसमें पारंपरिक संख्यात्मक संचालन जैसे कि जोड़, घटाव और गुणा होता है। हालाँकि जावा (प्रोग्रामिंग भाषा) में, type 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 type
random vector list or array
random matrix two-dimensional array
random tree tree


परिभाषा

Parnas, Shore & Weiss (1976) एक प्रकार की पाँच परिभाषाओं की पहचान की जिनका उपयोग किया गया था - कभी-कभी निहित रूप से - साहित्य में:

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

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

वर्गीकरण

डेटा प्रकारों को कई कारकों के अनुसार वर्गीकृत किया जा सकता है:

  • आदिम डेटा प्रकार या बिल्ट-इन डेटा प्रकार वे प्रकार होते हैं जो किसी भाषा कार्यान्वयन के लिए बिल्ट-इन होते हैं। उपयोगकर्ता-परिभाषित डेटा प्रकार गैर-आदिम प्रकार हैं। उदाहरण के लिए, जावा के न्यूमेरिक प्रकार प्रिमिटिव हैं, जबकि क्लासेस यूज़र-डिफ़ाइंड हैं।
  • परमाणु प्रकार का मान एक एकल डेटा आइटम है जिसे घटक भागों में नहीं तोड़ा जा सकता है। समग्र प्रकार या समग्र प्रकार का मान डेटा आइटम्स का एक संग्रह है जिसे व्यक्तिगत रूप से एक्सेस किया जा सकता है।[6] उदाहरण के लिए, एक पूर्णांक को आमतौर पर परमाणु माना जाता है, हालांकि इसमें बिट्स का एक क्रम होता है, जबकि पूर्णांकों की एक सरणी निश्चित रूप से समग्र होती है।
  • मूल डेटा प्रकार या मौलिक डेटा प्रकार स्वयंसिद्ध रूप से मौलिक धारणाओं से या उनके तत्वों की गणना से परिभाषित होते हैं। उत्पन्न डेटा प्रकार या व्युत्पन्न डेटा प्रकार अन्य डेटा प्रकारों के संदर्भ में निर्दिष्ट और आंशिक रूप से परिभाषित होते हैं। सभी मूल प्रकार परमाणु हैं।[7] उदाहरण के लिए, पूर्णांक गणित में परिभाषित एक मूल प्रकार हैं, जबकि पूर्णांकों की एक सरणी एक सरणी प्रकार जनरेटर को पूर्णांक प्रकार पर लागू करने का परिणाम है।

शब्दावली भिन्न होती है - साहित्य में, आदिम, अंतर्निर्मित, मूल, परमाणु और मौलिक का परस्पर उपयोग किया जा सकता है।[8]


उदाहरण

मशीन डेटा प्रकार

डिजिटल इलेक्ट्रॉनिक्स पर आधारित कंप्यूटरों में सभी डेटा को निम्नतम स्तर पर बिट्स (विकल्प 0 और 1) के रूप में दर्शाया जाता है। डेटा की सबसे छोटी पता योग्य इकाई आमतौर पर बिट्स का एक समूह होता है जिसे बाइट कहा जाता है (आमतौर पर एक ऑक्टेट (कंप्यूटिंग), जो 8 बिट होता है)। मशीन कोड निर्देशों द्वारा संसाधित इकाई को वर्ड (डेटा प्रकार) कहा जाता है (as of 2011, आमतौर पर 32 या 64 बिट)।

मशीन डेटा प्रकार हार्डवेयर पर ठीक-ठाक नियंत्रण को उजागर करते हैं या उपलब्ध कराते हैं, लेकिन यह उन कार्यान्वयन विवरणों को भी उजागर कर सकता है जो कोड को कम पोर्टेबल बनाते हैं। इसलिए मशीन प्रकार मुख्य रूप से सिस्टम प्रोग्रामिंग या निम्न-स्तरीय प्रोग्रामिंग भाषाओं में उपयोग किए जाते हैं। उच्च-स्तरीय भाषाओं में अधिकांश डेटा प्रकार अमूर्त होते हैं क्योंकि उनके पास भाषा-परिभाषित मशीन प्रतिनिधित्व नहीं होता है। सी प्रोग्रामिंग भाषा, उदाहरण के लिए, बूलियन्स, पूर्णांक, फ़्लोटिंग-पॉइंट नंबर इत्यादि जैसे प्रकारों की आपूर्ति करती है, लेकिन इन प्रकारों के सटीक बिट प्रतिनिधित्व कार्यान्वयन-परिभाषित हैं। एक सटीक मशीन प्रतिनिधित्व वाला एकमात्र C प्रकार है char प्रकार जो एक बाइट का प्रतिनिधित्व करता है।[9]


बूलियन प्रकार

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

संख्यात्मक प्रकार

लगभग सभी प्रोग्रामिंग भाषाएँ एक या अधिक पूर्णांक (कंप्यूटिंग) डेटा प्रकारों की आपूर्ति करती हैं। वे या तो कुछ श्रेणियों तक सीमित पूर्वनिर्धारित उपप्रकारों की एक छोटी संख्या की आपूर्ति कर सकते हैं (जैसे short और long और उनके अनुरूप unsigned C/C++ में वेरिएंट); या उपयोगकर्ताओं को 1..12 (जैसे पास्कल (प्रोग्रामिंग भाषा)/एडा (प्रोग्रामिंग भाषा)) जैसी उपश्रेणियों को स्वतंत्र रूप से परिभाषित करने की अनुमति दें। यदि लक्ष्य प्लेटफ़ॉर्म पर संबंधित मूल प्रकार मौजूद नहीं है, तो संकलक मौजूद प्रकारों का उपयोग करके उन्हें कोड में तोड़ देगा। उदाहरण के लिए, यदि 16 बिट प्लेटफ़ॉर्म पर 32-बिट पूर्णांक का अनुरोध किया जाता है, तो संकलक इसे दो 16 बिट पूर्णांकों की एक सरणी के रूप में व्यवहार करेगा।

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

मौद्रिक मूल्यों का प्रतिनिधित्व करने के लिए निश्चित बिंदु (कंप्यूटिंग) डेटा प्रकार सुविधाजनक हैं। वे अक्सर आंतरिक रूप से पूर्णांक के रूप में लागू होते हैं, जिससे पूर्वनिर्धारित सीमाएं होती हैं।

आर्किटेक्चर विवरण से आजादी के लिए, एक बिग्नम या मनमाने ढंग से सटीक numeric प्रकार की आपूर्ति की जा सकती है। यह सिस्टम पर उपलब्ध मेमोरी और कम्प्यूटेशनल संसाधनों द्वारा सीमित सटीकता के लिए एक पूर्णांक या तर्कसंगत का प्रतिनिधित्व करता है। मशीन-आकार के मूल्यों पर अंकगणितीय संचालन का बिग्नम कार्यान्वयन, संबंधित मशीन संचालन की तुलना में काफी धीमा है।[10]


गणना

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

स्ट्रिंग और पाठ प्रकार

स्ट्रिंग (कंप्यूटर विज्ञान) शब्दों या सादे पाठ को संग्रहीत करने के लिए उपयोग किए जाने वाले वर्ण (कंप्यूटिंग) का एक क्रम है, जो अक्सर स्वरूपित पाठ का प्रतिनिधित्व करने वाली पाठ्य मार्कअप भाषाएं होती हैं। वर्ण कुछ वर्णमाला का एक अक्षर, एक अंक, एक रिक्त स्थान, एक विराम चिह्न आदि हो सकते हैं। वर्ण एक वर्ण सेट जैसे ASCII से तैयार किए जाते हैं। वर्ण एन्कोडिंग के अनुसार वर्ण और स्ट्रिंग प्रकारों के अलग-अलग उपप्रकार हो सकते हैं। मूल 7-बिट चौड़ा ASCII सीमित पाया गया था, और 8, 16 और 32-बिट सेटों द्वारा अधिगृहीत किया गया था, जो गैर-लैटिन वर्णमाला (जैसे हिब्रू और चीनी भाषा) और अन्य प्रतीकों की एक विस्तृत विविधता को सांकेतिक शब्दों में बदल सकता है। स्ट्रिंग या तो परिवर्तनीय लंबाई या निश्चित लंबाई के हो सकते हैं, और कुछ प्रोग्रामिंग भाषाओं में दोनों प्रकार होते हैं। उन्हें उनके अधिकतम आकार से उपप्रकार भी किया जा सकता है।

चूंकि अधिकांश कैरेक्टर सेट में संख्यात्मक अंक शामिल होता है, इसलिए एक न्यूमेरिक स्ट्रिंग होना संभव है, जैसे कि "1234". ये संख्यात्मक तार आमतौर पर संख्यात्मक मानों से अलग माने जाते हैं जैसे 1234, हालांकि कुछ भाषाएं उनके बीच अपने आप रूपांतरित हो जाती हैं।

संघ प्रकार

एक संघ प्रकार की परिभाषा निर्दिष्ट करेगी कि कितने अनुमत उपप्रकारों को इसके उदाहरणों में संग्रहीत किया जा सकता है, उदा। फ्लोट या लंबा पूर्णांक। एक रिकॉर्ड (कंप्यूटर विज्ञान) के विपरीत, जिसे एक फ्लोट और एक पूर्णांक के रूप में परिभाषित किया जा सकता है, एक संघ में एक समय में केवल एक उपप्रकार हो सकता है।

एक टैग की गई यूनियन (जिसे भिन्न प्रकार, वेरिएंट रिकॉर्ड, डिस्क्रिमिनेटेड यूनियन या डिसजॉइंट यूनियन भी कहा जाता है) में एक अतिरिक्त फ़ील्ड होता है जो उन्नत प्रकार की सुरक्षा के लिए इसके वर्तमान प्रकार को दर्शाता है।

बीजगणितीय डेटा प्रकार

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

यदि केवल एक कंस्ट्रक्टर है, तो ADT एक उत्पाद प्रकार से मेल खाता है जो एक टपल या रिकॉर्ड के समान है। बिना फ़ील्ड वाला एक कन्स्ट्रक्टर खाली उत्पाद (इकाई प्रकार) से मेल खाता है। यदि सभी कंस्ट्रक्टर्स के पास कोई फ़ील्ड नहीं है, तो ADT एक एन्युमरेटेड प्रकार से मेल खाता है।

एक आम एडीटी विकल्प प्रकार है, जिसे हास्केल में परिभाषित किया गया है data Maybe a = Nothing | Just a.[11]


डेटा संरचना

कुछ प्रकार डेटा को संग्रहीत करने और पुनर्प्राप्त करने के लिए बहुत उपयोगी होते हैं और डेटा संरचना कहलाते हैं। सामान्य डेटा संरचनाओं में शामिल हैं:

  • एक सरणी डेटा प्रकार (जिसे वेक्टर, सूची (सार डेटा प्रकार), या अनुक्रम भी कहा जाता है) कई तत्वों को संग्रहीत करता है और व्यक्तिगत तत्वों को यादृच्छिक पहुंच प्रदान करता है। एक सरणी के तत्व आम तौर पर (लेकिन सभी संदर्भों में नहीं) एक ही प्रकार के होने के लिए आवश्यक होते हैं। सारणियाँ निश्चित-लंबाई या विस्तार योग्य हो सकती हैं। एक सरणी में सूचकांकों को आम तौर पर एक विशिष्ट श्रेणी से पूर्णांक (यदि नहीं, तो एक साहचर्य सरणी के बारे में बोलकर इस छूट पर जोर दिया जा सकता है) की आवश्यकता होती है (यदि उस सीमा में सभी सूचकांक तत्वों के अनुरूप नहीं हैं, तो यह एक विरल सरणी हो सकती है)।
  • रिकॉर्ड (कंप्यूटर विज्ञान) (जिसे टपल या स्ट्रक्चर भी कहा जाता है) रिकॉर्ड सबसे सरल डेटा संरचनाओं में से हैं। एक रिकॉर्ड एक मान है जिसमें अन्य मान होते हैं, आमतौर पर निश्चित संख्या और अनुक्रम में और आमतौर पर नामों से अनुक्रमित होते हैं। रिकॉर्ड के तत्वों को आमतौर पर फ़ील्ड या सदस्य कहा जाता है।
  • एक वस्तु (कंप्यूटर विज्ञान) में रिकॉर्ड की तरह कई डेटा फ़ील्ड होते हैं, और उन्हें एक्सेस करने या संशोधित करने के लिए कई सबरूटीन्स भी प्रदान करता है, जिसे मेथड (कंप्यूटर प्रोग्रामिंग) कहा जाता है।
  • एकल लिंक्ड सूची, जिसका उपयोग कतार (सार डेटा प्रकार) को लागू करने के लिए किया जा सकता है और हास्केल में एडीटी के रूप में परिभाषित किया गया है data List a = Nil | Cons a (List a), और
  • बाइनरी ट्री, जो तेजी से खोज की अनुमति देता है, और हास्केल में ADT के रूप में परिभाषित किया जा सकता है 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]


यह भी देखें

संदर्भ

  1. Parnas, Shore & Weiss 1976.
  2. type at the Free On-line Dictionary of Computing
  3. Shaffer, C. A. (2011). Data Structures & Algorithm Analysis in C++ (3rd ed.). Mineola, NY: Dover. 1.2. ISBN 978-0-486-48582-9.
  4. Scott, Dana (September 1976). "Data Types as Lattices". SIAM Journal on Computing. 5 (3): 540–541. doi:10.1137/0205037.
  5. "Rust RFCs - Integer Overflow". The Rust Programming Language. 12 August 2022.
  6. 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.
  7. ISO/IEC 11404, 6.4
  8. 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.
  9. "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
  10. "Integer benchmarks — mp++ 0.27 documentation". bluescarni.github.io.
  11. "6 Predefined Types and Classes". www.haskell.org. Retrieved 2022-06-15.
  12. Suresh, S P. "Programming in Haskell: Lecture 22" (PDF). Chennai Mathematical Institute. Retrieved 10 August 2022.
  13. Ehrig, H. (1985). Fundamentals of Algebraic Specification 1 - Equations and Initial Semantics. Springer-Verlag. ISBN 0-387-13718-1.
  14. Wechler, Wolfgang (1992). Universal Algebra for Computer Scientists. Springer-Verlag. ISBN 0-387-54280-9.
  15. 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.
  16. Flanagan, David (1997). "6.2 Functions as Data Types". JavaScript: the definitive guide (2nd ed.). Cambridge: O'Reilly & Associates. ISBN 9781565922341.
  17. 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), [...]
  18. "Introduction to data types and field properties". support.microsoft.com. Retrieved 28 January 2022.
  19. 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)


आगे की पढाई


बाहरी कड़ियाँ