نوع البيانات الأولية
في علوم الحاسوب ، تُعرَّف أنواع البيانات الأولية بأنها مجموعات من أنواع البيانات الأساسية التي تُبنى منها جميع أنواع البيانات الأخرى. [ 1 ] ويُشير هذا المصطلح تحديدًا إلى مجموعة محدودة من تمثيلات البيانات التي يستخدمها معالج معين ، والتي يجب على جميع البرامج المُترجمة استخدامها. تدعم معظم المعالجات مجموعة مماثلة من أنواع البيانات الأولية، على الرغم من اختلاف التمثيلات المحددة. [ 2 ] وبشكل أعم، قد تُشير أنواع البيانات الأولية إلى أنواع البيانات القياسية المُدمجة في لغة البرمجة ( الأنواع المُدمجة ). [ 3 ] [ 4 ] أما أنواع البيانات غير الأولية فتُسمى أنواعًا مُشتقة أو مُركبة . [ 3 ]
الأنواع الأولية هي في الغالب أنواع قيم ، ولكن الأنواع المركبة قد تكون أيضًا أنواع قيم. [ 5 ]
أنواع البيانات الأولية الشائعة
أكثر أنواع البيانات الأولية شيوعًا هي تلك التي تستخدمها وتدعمها أجهزة الحاسوب، مثل الأعداد الصحيحة بمختلف أحجامها، والأعداد العشرية ، والقيم المنطقية . عادةً ما تكون العمليات على هذه الأنواع فعّالة للغاية. ترتبط أنواع البيانات الأولية الأصلية للمعالج ارتباطًا مباشرًا بالكائنات في ذاكرة الحاسوب، وغالبًا ما تكون العمليات عليها هي الأسرع في معظم الحالات. [ 6 ] على سبيل المثال، يمكن إجراء عملية جمع الأعداد الصحيحة بتعليمات واحدة، وتوفر بعض المعالجات تعليمات محددة لمعالجة سلاسل الأحرف بتعليمات واحدة . [ 7 ] لكن اختيار نوع البيانات الأولية قد يؤثر على الأداء، فعلى سبيل المثال، يكون استخدام عمليات وأنواع بيانات SIMD أسرع عند التعامل مع مصفوفة من الأعداد العشرية. [ 6 ] : 113
الأعداد الصحيحة
يمثل نوع البيانات العددية نطاقًا معينًا من الأعداد الصحيحة الرياضية. قد تكون الأعداد الصحيحة إما مُوقّعة (تسمح بالقيم السالبة) أو غير مُوقّعة ( أعداد صحيحة غير سالبة فقط). النطاقات الشائعة هي:
| الحجم ( بايت ) | الحجم ( بت ) | الأسماء | المدى الموقّع (تمثيل المتمم الثنائي ) | نطاق غير موقع |
|---|---|---|---|---|
| 1 بايت | 8 بت | بايت ، ثمانية بتات ، الحد الأدنى لحجم CHAR_BIT charفي C99 (انظر limits.h CHAR_BIT) | من -128 إلى +127 | من 0 إلى 255 |
| 2 بايت | 16 بت | كلمة x86 ، الحد الأدنى لحجمها shortفي intلغة C | من -32,768 إلى +32,767 | من 0 إلى 65,535 |
| 4 بايت | 32 بت | كلمة مزدوجة x86، الحد الأدنى لحجمها longفي لغة C، الحجم الفعلي intلمعظم مترجمات لغة C الحديثة، [ 8 ] مؤشر للمعالجات المتوافقة مع IA-32 | من -2,147,483,648 إلى +2,147,483,647 | من 0 إلى 4,294,967,295 |
| 8 بايت | 64 بت | كلمة رباعية x86، الحد الأدنى لحجمها long longفي لغة C، الحجم الفعلي longلمعظم مترجمات لغة C الحديثة، [ 8 ] مؤشر للمعالجات المتوافقة مع x86-64 | من -9,223,372,036,854,775,808 إلى +9,223,372,036,854,775,807 | من 0 إلى 18,446,744,073,709,551,615 |
الأرقام العشرية
يمثل العدد ذو الفاصلة العائمة عددًا نسبيًا محدود الدقة قد يحتوي على جزء كسري. تُخزَّن هذه الأعداد داخليًا بتنسيق مكافئ للتدوين العلمي ، عادةً بالنظام الثنائي ولكن أحيانًا بالنظام العشري . نظرًا لأن الأعداد ذات الفاصلة العائمة محدودة الدقة، فإن مجموعة فرعية فقط من الأعداد الحقيقية أو النسبية قابلة للتمثيل بدقة؛ بينما يمكن تمثيل الأعداد الأخرى تقريبًا فقط. تحتوي العديد من لغات البرمجة على نوعين: أحادي الدقة (يُسمى غالبًا float ) وثنائي الدقة (يُسمى غالبًا double ).
القيم المنطقية
النوع المنطقي ، الذي يُرمز إليه عادةً بـ bool أو boolean ، هو نوع منطقي يمكن أن يأخذ إما القيمة true أو القيمة false . على الرغم من أن بتًا واحدًا فقط يكفي لتمثيل القيمتين true و false ، إلا أن لغات البرمجة عادةً ما تُنفذ الأنواع المنطقية باستخدام بايت واحد أو أكثر.
تُطبّق العديد من لغات البرمجة (مثل جافا ، وباسكال، وآدا ) القيم المنطقية (Boolean ) وفقًا لمفهومها كنوع منطقي مستقل. مع ذلك، قد تُحوّل بعض اللغات القيم المنطقية ضمنيًا إلى أنواع عددية في بعض الأحيان لإضفاء دلالات موسعة عليها وعلى تعابيرها، أو لتحقيق التوافق مع الإصدارات السابقة من اللغة. على سبيل المثال، لم تكن الإصدارات الأولى من لغة البرمجة C، التي اتبعت معيار ANSI C ومعاييره السابقة، تحتوي على نوع منطقي مُخصّص. بدلًا من ذلك، تُفسّر القيمة العددية صفر على أنها خطأ ، وأي قيمة أخرى تُفسّر على أنها صواب . [ 9 ] أضاف معيار C99 الأحدث نوعًا منطقيًا مُخصّصًا _Bool(نُقل لاحقًا إلى C23bool ، بالإضافة إلى الكلمات المفتاحية true trueو false )، [ 10 ]false وتدعم لغة C++ النوع المنطقي المُضمّن، والكلمات true و false ككلمات محجوزة. [ 11 ]bool
لغات محددة
الأنواع الأساسية في لغتي C و C++
في لغتي C و C++ ، يوجد أربعة أنواع على الأقل، هي `int` charو int`int` floatو `int` و `int` ، doubleولكن المحددات `int` و `int` و `int` تعني أن لغة C تحتوي على العديد من أنواع البيانات الأولية للأعداد الصحيحة والعشرية التي تعتمد على الهدف. [ 12 ] سمحت معيار C99 باستخدام المُعدِّل `int` مرتين مع `int` (على سبيل المثال، `int` ). [ 13 ] وبالمثل، يمكن استخدام `int` و `int` كمُعدِّلات للأنواع الصحيحة. قدم معيار C23 النوع `int` كنوع بيانات أساسي، بينما كان دائمًا نوعًا أساسيًا في لغة C++. كما تتميز لغة C++ بنوع `int` (على غرار لغة Java).shortlongsignedunsignedlongintlong long intsignedunsignedboolstd::byte
تحتوي لغتا C و C++ أيضًا على أنواع بيانات عددية صحيحة أخرى size_t، intptr_tمثل فهرسة المصفوفات والمجموعات. هذه ليست أنواع بيانات مستقلة، بل هي في الغالب أسماء بديلة، ويتم تعريفها بواسطة النظام. ربما تكون هذه الأنواع مشابهة لأنواع البيانات في لغة usizeRust isize.
جافا
تتشابه الأنواع الأساسية للغة جافا مع تلك الخاصة بلغة سي. تتكون مجموعة أنواع البيانات الأولية للآلة الافتراضية لجافا من: [ 14 ]
byte،short،int،long،char( أنواع الأعداد الصحيحة ذات نطاقات متنوعة)floatوأرقام الفاصلة العائمة ذات الدقةdoubleالمفردة والمزدوجةboolean، نوع منطقي ذو قيم منطقيةtrueوfalsereturnAddress، وهي قيمة تشير إلى عنوان ذاكرة قابل للتنفيذ. لا يمكن الوصول إلى هذه القيمة من لغة برمجة جافا، وعادةً ما يتم حذفها. [ 15 ] [ 16 ]
مخطط XML
توفر لغة تعريف مخطط XML مجموعة من 19 نوعًا من البيانات الأولية: [ 17 ]
stringسلسلة نصية ، وهي عبارة عن تسلسل من نقاط ترميز يونيكود.boolean: قيمة منطقيةdecimal: عدد يُمثَّل بالترميز العشريfloatوdouble: أعداد الفاصلة العائمةduration،dateTime،time،date، ،gYearMonth،gYear،gMonthDay،gDayوgMonth: تواريخ وأوقات التقويمhexBinaryوbase64Binary: بيانات ثنائية مشفرة بنظام العد الست عشري أو Base64anyURI: معرف موارد موحد (URI)QNameاسم مؤهلNOTATION: اسم مؤهل (QName) مُعلن عنه كرمز في المخطط. تُستخدم الرموز لتضمين أنواع بيانات غير XML. [ 18 ] لا يمكن استخدام هذا النوع مباشرةً - يُسمح فقط باستخدام الأنواع المشتقة التي تُعدد مجموعة محدودة من الأسماء المؤهلة (QNames).
جافا سكريبت
في لغة جافا سكريبت، توجد سبعة أنواع بيانات أساسية: السلسلة النصية، والرقم، والعدد الصحيح الكبير، والقيمة المنطقية، والرمز، والقيمة غير المعرفة، والقيمة الفارغة. [ 19 ] تُعتبر قيمها غير قابلة للتغيير . هذه الأنواع ليست كائنات، ولا تحتوي على أي توابع أو خصائص ؛ ومع ذلك، فإن جميع الأنواع الأساسية، باستثناء القيمة غير المعرفة والقيمة الفارغة، لها أغلفة كائنية . [ 20 ]
فيجوال بيسك دوت نت
في لغة Visual Basic .NET ، تتكون أنواع البيانات الأولية من 4 أنواع صحيحة، ونوعين من الأعداد العشرية، ونوع عشري 16 بايت، ونوع منطقي، ونوع تاريخ/وقت، ونوع حرف Unicode، ونوع سلسلة Unicode. [ 21 ]
الصدأ
تحتوي لغة Rust على أعداد صحيحة أولية ثابتة العرض، سواءً كانت غير مُوقَّعة أو مُوقَّعة، بالصيغة `n` uأو i`n` على التوالي، متبوعة بأي عرض بتّي يكون قوة للعدد اثنين بين `n` 8و`n`، 128مما يُعطي الأنواع u8` u16n` u32و` n` u64و` n` u128و` i8n` و` i16n` و`n` و`n` i32و` i64n` i128. [ 22 ] كما يتوفر النوعان `n` و`n` usize، isizeوهما عددان صحيحان غير مُوقَّعين ومُوقَّعان لهما نفس عرض البتّ كمرجع، حيث usizeيُستخدم النوع `n` للفهارس في المصفوفات وأنواع المجموعات القابلة للفهرسة. [ 22 ]
يحتوي Rust أيضًا على:
boolبالنسبة للنوع المنطقي . [ 22 ]f32وبالنسبة للأرقام العشرية ذاتf6432 و 64 بت . [ 22 ]charبالنسبة لحرف يونيكود . في الواقع، هذه أعداد صحيحة غير موقعة من 32 بت، بقيم تتوافق معcharنقطة الترميز الخاصة بالحرف، ولكن القيم الصالحة هي فقط تلك التي تتوافق مع قيمة عددية يونيكود صالحة. [ 22 ]
الأنواع المدمجة
تتميز الأنواع المضمنة عن غيرها بدعمها الخاص في المُصرّف أو وقت التشغيل، لدرجة أنه لا يمكن تعريفها ببساطة في ملف رأس أو وحدة مكتبة قياسية. [ 23 ] بالإضافة إلى الأعداد الصحيحة، والأعداد العشرية، والقيم المنطقية، تشمل الأنواع المضمنة الأخرى ما يلي:
- نوع void ونوع المؤشر الفارغ
nullptr_tفي C++11 و C23 - الأحرف والسلاسل النصية (انظر أدناه )
- Tuple في Standard ML ، Python ، Scala ، Swift ، Elixir
- قائمة في لغات البرمجة Common Lisp و Python و Scheme و Haskell
- رقم ذو نقطة ثابتة مع مجموعة متنوعة من الدقة ومقياس يختاره المبرمج .
- العدد المركب في لغات البرمجة C99 ، وFortran ، و Common Lisp ، وPython ، و D ، وGo . يتكون هذا العدد من عددين عشريين، جزء حقيقي وجزء تخيلي.
- تسلسل أنواع مُعدّد للأسماء الخاصة بالقيم المسموح بها؛ يمكن أن يحسن قابلية القراءة والتحقق من النوع.
- العدد النسبي في لغة Common Lisp
- أنواع البيانات ذات الدقة العشوائية
Integerفي لغات البرمجة Common Lisp و Erlang و Haskell - المصفوفات الترابطية ، أو السجلات ، أو المجموعات في لغات البرمجة Perl ، و PHP ، و Python ، وRuby ، و JavaScript ، و Lua ، و D ، وGo
- المرجع (ويسمى أيضًا المؤشر أو المقبض أو الواصف )،
- الرموز ، في لغة ليسب
- دالة من الدرجة الأولى ، في جميع اللغات الوظيفية ، جافا سكريبت ، لوا ، دي ، جو ، وفي المعايير الأحدث للغات سي++ ، جافا ، سي# ، بيرل
الأحرف والسلاسل
نوع الأحرف هو نوع بيانات قادر على تمثيل جميع أحرف يونيكود ، وبالتالي يجب أن يكون عرضه 21 بت على الأقل. تتضمن بعض اللغات، مثل جوليا، نوع أحرف يونيكود حقيقيًا 32 بت كنوع بيانات أساسي. [ 24 ] أما لغات أخرى، مثل جافا سكريبت ، وبايثون ، وروبي ، والعديد من لهجات لغة بيسك، فلا تحتوي على نوع أحرف أساسي، بل تضيف السلاسل النصية كنوع بيانات أساسي، باستخدام ترميز UTF-8 عادةً . تُستخدم السلاسل النصية التي يبلغ طولها بتًا واحدًا عادةً لتمثيل الأحرف المفردة.
تحتوي بعض اللغات على أنواع أحرف صغيرة جدًا بحيث لا تستطيع تمثيل جميع أحرف يونيكود. يُصنف هذا النوع بشكل أدق كنوع عدد صحيح يحمل اسمًا مُضللًا. على سبيل المثال، تتضمن لغة C charنوعًا يُسمى `<T>`، ولكنه مُعرّف على أنه أصغر وحدة ذاكرة قابلة للعنونة، والتي تتطلب العديد من المعايير (مثل POSIX ) أن تكون 8 بت . تشير الإصدارات الحديثة من هذه المعايير إلى `<T>` charكنوع عددي. charيُستخدم `<T>` أيضًا لنوع عدد صحيح 16 بت في جافا ، ولكنه ليس نوع حرف يونيكود. [ 25 ]
لا يشير مصطلح "السلسلة" دائمًا إلى تسلسل من أحرف يونيكود، بل يشير إلى تسلسل من البايتات. على سبيل المثال، تحتوي معمارية x86-64 على تعليمات للسلاسل لنقل أو تعيين أو البحث أو مقارنة تسلسل من العناصر، حيث يمكن أن يكون طول العنصر 1 أو 2 أو 4 أو 8 بايتات. [ 26 ]
انظر أيضاً
- اللغة البدائية – الشفرة المصغرة في لغة البرمجة
- قائمة هياكل البيانات § أنواع البيانات
- نوع الكائن – مفهوم لغة البرمجة: صفحات تعرض أوصافًا مختصرة لأهداف إعادة التوجيه
- فئة التغليف الأولية
- المتغير (لغة برمجة عالية المستوى) - حاوية مُسماة لنوع معين من البيانات
مراجع
- ↑ ستون، آر جي؛ كوك، دي جيه (5 فبراير 1987). بناء البرامج . مطبعة جامعة كامبريدج. ص 18. ISBN 978-0-521-31883-9.
- ↑ ويكاندر، يان؛ سفينسون، بيرتيل (31 مايو 1998). أنظمة الوقت الحقيقي في تطبيقات الميكاترونيك . سبرينغر ساينس آند بيزنس ميديا. ص 101. ISBN 978-0-7923-8159-4.
- 1 2 خورانا، روهيت. بنية البيانات والملفات (لـ GTU)، الطبعة الثانية . دار نشر فيكاس. ص 2. ISBN 978-93-259-6005-3.
- ↑ تشون، ويسلي (2001). برمجة بايثون الأساسية . برنتيس هول بروفيشنال. ص 77. ISBN 978-0-13-026036-9.
- ↑ أولسن، جير؛ أليسون، دامون؛ سبير، جيمس (1 يناير 2008). دليل تصميم فئات Visual Basic .NET: برمجة الفئات الفعالة . Apress. ص 80. ISBN 978-1-4302-0780-1.
- 1 2 فوغ، أغنر. "تحسين البرمجيات في لغة C++" ( ملف PDF) . ص 29. تم الاطلاع عليه بتاريخ 28 يناير 2022.
عمليات الأعداد الصحيحة سريعة في معظم الحالات، [...]
- ↑ هينيسي، جون ل.؛ باترسون، ديفيد أ. (أغسطس 2011). هندسة الحاسوب، الطبعة الخامسة: منهج كمي (الطبعة الخامسة ). سان فرانسيسكو، كاليفورنيا، الولايات المتحدة الأمريكية: دار مورغان كوفمان للنشر. ISBN 978-0-12-383872-8.
- 1 2 فوغ، أغنر (16 فبراير 2010). "اصطلاحات الاستدعاء لمترجمات لغة C++ المختلفة وأنظمة التشغيل: الفصل 3، تمثيل البيانات" (ملف PDF) . تم الاطلاع عليه بتاريخ 30 أغسطس 2010 .
- ↑ كيرنيغان، برايان دبليو ؛ ريتشي ، دينيس إم (1978). لغة البرمجة سي ( الطبعة الأولى). إنجلوود كليفس، نيوجيرسي : برنتيس هول . ص 41. ISBN 0-13-110163-3.
- ↑ "مكتبة دعم الأنواع المنطقية" . devdocs.io . تم الاطلاع عليه بتاريخ 15 أكتوبر 2020 .
- ↑ "نوع البيانات المنطقية في لغة C++" . GeeksforGeeks . 5 يونيو 2017. تم الاطلاع عليه في 15 أكتوبر 2020 .
- ↑ كيرنيغان، برايان دبليو؛ ريتشي، دينيس إم. (1988). "2.2 أنواع البيانات وأحجامها". لغة البرمجة سي ( الطبعة الثانية). إنجلوود كليفس، نيوجيرسي، ص 36. ISBN 0131103709.
{{cite book}}: CS1 maint: موقع الناشر مفقود ( رابط ) - ↑ مواصفات ISO/IEC 9899:1999، TC3 (PDF) . ص 255، § 6.2.5 الأنواع .
- ↑ ليندهولم، تيم؛ يلين، فرانك؛ براخا، جلعاد؛ باكلي، أليكس (13 فبراير 2015). "الفصل 2. بنية آلة جافا الافتراضية". مواصفات آلة جافا الافتراضية .
- ↑ كويل، جون (18 فبراير 1997). أساسيات جافا السريعة: كيفية كتابة برامج كائنية التوجه للإنترنت . سبرينغر ساينس آند بيزنس ميديا. ص 27. ISBN 978-3-540-76052-8.
- ↑ راكشيت، سانديب؛ بانيغراهي، غوتام (ديسمبر 1995). دليل البرمجة الكائنية باستخدام جافا . دار نشر إس. تشاند. ص 11. ISBN 978-81-219-3001-7.
- ↑ بيرون، بول ف.؛ مالهوترا، أشوك. "مخطط XML الجزء 2: أنواع البيانات" . www.w3.org ( الطبعة الثانية) . تم الاطلاع عليه بتاريخ 29 يناير 2022 .
- ↑ فيليبس، لي آن (18 يناير 2002). "تعريف الترميز | فهم تعريفات أنواع مستندات XML" . www.informit.com . تم الاطلاع عليه بتاريخ 29 يناير 2022 .
- ↑ "مصطلحات بدائية - مسرد وثائق الويب من MDN: تعريفات المصطلحات المتعلقة بالويب" . MDN. 8 يونيو 2023.
- ↑ "أنواع البيانات وهياكل البيانات في جافا سكريبت" . MDN. 9 يوليو 2024.
- ↑ "أنواع البيانات في فيجوال بيسك" . مستندات مايكروسوفت . 18 سبتمبر 2021. تم الاطلاع عليه في 18 مايو 2022 .
- 1 2 3 4 5 "أنواع البيانات - لغة برمجة Rust" . doc.rust-lang.org . تم الاطلاع عليه بتاريخ 17-10-2023 .
- ↑ "الأنواع المضمنة (C++)" . learn.microsoft.com . 17 أغسطس 2021.
- ↑ "السلاسل النصية · لغة جوليا" . docs.julialang.org . تم الاطلاع عليه بتاريخ 29 يناير 2022 .
- ↑ منصور، عمر (8 مايو 2016). "نوع البيانات char في جافا معطوب" . CodeAhoy . تم الاطلاع عليه بتاريخ 10 فبراير 2020 .
- ↑ "تعليمات الإدخال/الإخراج والسلاسل النصية" . تم الاطلاع عليه بتاريخ 29 يناير 2022 .
روابط خارجية
الوسائط المتعلقة بالأنواع البدائية في ويكيميديا كومنز- الاختلافات بين الأنواع الأولية والكائنات
- أنواع البيانات
- الأنواع الأولية
