نوع البيانات الأولية

في علوم الحاسوب ، تُعرَّف أنواع البيانات الأولية بأنها مجموعات من أنواع البيانات الأساسية التي تُبنى منها جميع أنواع البيانات الأخرى. [ 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وfalse
  • returnAddress، وهي قيمة تشير إلى عنوان ذاكرة قابل للتنفيذ. لا يمكن الوصول إلى هذه القيمة من لغة برمجة جافا، وعادةً ما يتم حذفها. [ 15 ] [ 16 ]

مخطط XML

توفر لغة تعريف مخطط XML مجموعة من 19 نوعًا من البيانات الأولية: [ 17 ]

جافا سكريبت

في لغة جافا سكريبت، توجد سبعة أنواع بيانات أساسية: السلسلة النصية، والرقم، والعدد الصحيح الكبير، والقيمة المنطقية، والرمز، والقيمة غير المعرفة، والقيمة الفارغة. [ 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وبالنسبة للأرقام العشرية ذاتf64 32 و 64 بت . [ 22 ]
  • charبالنسبة لحرف يونيكود . في الواقع، هذه أعداد صحيحة غير موقعة من 32 بت، بقيم تتوافق مع charنقطة الترميز الخاصة بالحرف، ولكن القيم الصالحة هي فقط تلك التي تتوافق مع قيمة عددية يونيكود صالحة. [ 22 ]

الأنواع المدمجة

تتميز الأنواع المضمنة عن غيرها بدعمها الخاص في المُصرّف أو وقت التشغيل، لدرجة أنه لا يمكن تعريفها ببساطة في ملف رأس أو وحدة مكتبة قياسية. [ 23 ] بالإضافة إلى الأعداد الصحيحة، والأعداد العشرية، والقيم المنطقية، تشمل الأنواع المضمنة الأخرى ما يلي:

الأحرف والسلاسل

نوع الأحرف هو نوع بيانات قادر على تمثيل جميع أحرف يونيكود ، وبالتالي يجب أن يكون عرضه 21 بت على الأقل. تتضمن بعض اللغات، مثل جوليا، نوع أحرف يونيكود حقيقيًا 32 بت كنوع بيانات أساسي. [ 24 ] أما لغات أخرى، مثل جافا سكريبت ، وبايثون ، وروبي ، والعديد من لهجات لغة بيسك، فلا تحتوي على نوع أحرف أساسي، بل تضيف السلاسل النصية كنوع بيانات أساسي، باستخدام ترميز UTF-8 عادةً . تُستخدم السلاسل النصية التي يبلغ طولها بتًا واحدًا عادةً لتمثيل الأحرف المفردة.

تحتوي بعض اللغات على أنواع أحرف صغيرة جدًا بحيث لا تستطيع تمثيل جميع أحرف يونيكود. يُصنف هذا النوع بشكل أدق كنوع عدد صحيح يحمل اسمًا مُضللًا. على سبيل المثال، تتضمن لغة C charنوعًا يُسمى `<T>`، ولكنه مُعرّف على أنه أصغر وحدة ذاكرة قابلة للعنونة، والتي تتطلب العديد من المعايير (مثل POSIX ) أن تكون 8 بت . تشير الإصدارات الحديثة من هذه المعايير إلى `<T>` charكنوع عددي. charيُستخدم `<T>` أيضًا لنوع عدد صحيح 16 بت في جافا ، ولكنه ليس نوع حرف يونيكود. [ 25 ]

لا يشير مصطلح "السلسلة" دائمًا إلى تسلسل من أحرف يونيكود، بل يشير إلى تسلسل من البايتات. على سبيل المثال، تحتوي معمارية x86-64 على تعليمات للسلاسل لنقل أو تعيين أو البحث أو مقارنة تسلسل من العناصر، حيث يمكن أن يكون طول العنصر 1 أو 2 أو 4 أو 8 بايتات. [ 26 ]

انظر أيضاً

مراجع

  1. ستون، آر جي؛ كوك، دي جيه (5 فبراير 1987). بناء البرامج . مطبعة جامعة كامبريدج. ص  18. ISBN 978-0-521-31883-9.
  2. ويكاندر، يان؛ سفينسون، بيرتيل (31 مايو 1998). أنظمة الوقت الحقيقي في تطبيقات الميكاترونيك . سبرينغر ساينس آند بيزنس ميديا. ص 101. ISBN  978-0-7923-8159-4.
  3. 1 2 خورانا، روهيت. بنية البيانات والملفات (لـ GTU)، الطبعة الثانية . دار نشر فيكاس. ص 2. ISBN  978-93-259-6005-3.
  4. تشون، ويسلي (2001). برمجة بايثون الأساسية . برنتيس هول بروفيشنال. ص 77. ISBN  978-0-13-026036-9.
  5. أولسن، جير؛ أليسون، دامون؛ سبير، جيمس (1 يناير 2008). دليل تصميم فئات Visual Basic .NET: برمجة الفئات الفعالة . Apress. ص 80. ISBN  978-1-4302-0780-1.
  6. 1 2 فوغ، أغنر. "تحسين البرمجيات في لغة C++" ( ملف PDF) . ص 29. تم الاطلاع عليه بتاريخ 28 يناير 2022. عمليات الأعداد الصحيحة سريعة في معظم الحالات، [...] 
  7. هينيسي، جون ل.؛ باترسون، ديفيد أ. (أغسطس 2011). هندسة الحاسوب، الطبعة الخامسة: منهج كمي (الطبعة الخامسة ). سان فرانسيسكو، كاليفورنيا، الولايات المتحدة الأمريكية: دار مورغان كوفمان للنشر. ISBN  978-0-12-383872-8.
  8. 1 2 فوغ، أغنر (16 فبراير 2010). "اصطلاحات الاستدعاء لمترجمات لغة C++ المختلفة وأنظمة التشغيل: الفصل 3، تمثيل البيانات" (ملف PDF) . تم الاطلاع عليه بتاريخ 30 أغسطس 2010 .
  9. كيرنيغان، برايان دبليو ؛ ريتشي ، دينيس إم (1978). لغة البرمجة سي ( الطبعة الأولى). إنجلوود كليفس، نيوجيرسي : برنتيس هول . ص 41. ISBN   0-13-110163-3.
  10. "مكتبة دعم الأنواع المنطقية" . devdocs.io . تم ​​الاطلاع عليه بتاريخ 15 أكتوبر 2020 .
  11. "نوع البيانات المنطقية في لغة C++" . GeeksforGeeks . 5 يونيو 2017. تم الاطلاع عليه في 15 أكتوبر 2020 .
  12. كيرنيغان، برايان دبليو؛ ريتشي، دينيس إم. (1988). "2.2 أنواع البيانات وأحجامها". لغة البرمجة سي ( الطبعة الثانية). إنجلوود كليفس، نيوجيرسي، ص 36. ISBN   0131103709.{{cite book}}: CS1 maint: موقع الناشر مفقود ( رابط )
  13. مواصفات ISO/IEC 9899:1999، TC3 (PDF) . ص 255، § 6.2.5 الأنواع .
  14. ليندهولم، تيم؛ يلين، فرانك؛ براخا، جلعاد؛ باكلي، أليكس (13 فبراير 2015). "الفصل 2. بنية آلة جافا الافتراضية". مواصفات آلة جافا الافتراضية .
  15. كويل، جون (18 فبراير 1997). أساسيات جافا السريعة: كيفية كتابة برامج كائنية التوجه للإنترنت . سبرينغر ساينس آند بيزنس ميديا. ص 27. ISBN  978-3-540-76052-8.
  16. راكشيت، سانديب؛ بانيغراهي، غوتام (ديسمبر 1995). دليل البرمجة الكائنية باستخدام جافا . دار نشر إس. تشاند. ص 11. ISBN  978-81-219-3001-7.
  17. بيرون، بول ف.؛ مالهوترا، أشوك. "مخطط XML الجزء 2: أنواع البيانات" . www.w3.org ( الطبعة الثانية) . تم الاطلاع عليه بتاريخ 29 يناير 2022 . 
  18. فيليبس، لي آن (18 يناير 2002). "تعريف الترميز | فهم تعريفات أنواع مستندات XML" . www.informit.com . تم الاطلاع عليه بتاريخ 29 يناير 2022 .
  19. "مصطلحات بدائية - مسرد وثائق الويب من MDN: تعريفات المصطلحات المتعلقة بالويب" . MDN. 8 يونيو 2023.
  20. "أنواع البيانات وهياكل البيانات في جافا سكريبت" . MDN. 9 يوليو 2024.
  21. "أنواع البيانات في فيجوال بيسك" . مستندات مايكروسوفت . 18 سبتمبر 2021. تم الاطلاع عليه في 18 مايو 2022 .
  22. 1 2 3 4 5 "أنواع البيانات - لغة برمجة Rust" . doc.rust-lang.org . تم الاطلاع عليه بتاريخ 17-10-2023 .
  23. "الأنواع المضمنة (C++)" . learn.microsoft.com . 17 أغسطس 2021.
  24. "السلاسل النصية · لغة جوليا" . docs.julialang.org . تم الاطلاع عليه بتاريخ 29 يناير 2022 .
  25. منصور، عمر (8 مايو 2016). "نوع البيانات char في جافا معطوب" . CodeAhoy . تم الاطلاع عليه بتاريخ 10 فبراير 2020 .
  26. "تعليمات الإدخال/الإخراج والسلاسل النصية" . تم الاطلاع عليه بتاريخ 29 يناير 2022 .