نوع داده

از ویکیپدیا، دانشنامه آزاد
پرش به ناوبری پرش به جستجو
سلسله مراتب نوع استاندارد پایتون 3

در علوم کامپیوتر و برنامه نویسی کامپیوتر ، نوع داده یا نوع ساده ، ویژگی داده ای است که به کامپایلر یا مفسر می گوید برنامه نویس چگونه قصد استفاده از داده ها را دارد. اکثر زبان های برنامه نویسی از انواع داده های پایه اعداد صحیح (با اندازه های مختلف)، اعداد ممیز شناور (که اعداد واقعی تقریبی هستند)، کاراکترها و بولی ها را پشتیبانی می کنند. یک نوع داده مقادیر یک عبارت را محدود می کند، مانند یک متغیر یا یک تابع، ممکن است. این نوع داده، عملیاتی را که می توان روی داده ها انجام داد، معنای داده ها و نحوه ذخیره مقادیر آن نوع را مشخص می کند. یک نوع داده مجموعه ای از مقادیر را ارائه می دهد که یک عبارت (مثلاً متغیر، تابع و غیره) ممکن است مقادیر خود را از آنها بگیرد. [1] [2]

مفهوم

انواع داده ها در سیستم های نوع استفاده می شوند که راه های مختلفی برای تعریف، پیاده سازی و استفاده از آنها ارائه می دهند. انواع سیستم های مختلف درجات مختلفی از ایمنی نوع را تضمین می کنند .

تقریباً همه زبان‌های برنامه‌نویسی به صراحت مفهوم نوع داده را شامل می‌شوند، اگرچه زبان‌های مختلف ممکن است از اصطلاحات متفاوتی استفاده کنند.

انواع داده های رایج عبارتند از:

به عنوان مثال، در زبان برنامه نویسی جاوا ، نوع int مجموعه ای از اعداد صحیح 32 بیتی را نشان می دهد که دارای مقادیری از 2,147,483,648- تا 2,147,483,647 هستند و همچنین عملیاتی را که می توان روی اعداد صحیح انجام داد، مانند جمع، تفریق و ضرب. از سوی دیگر، یک رنگ ممکن است با سه بایت نشان داده شود که مقادیر هر کدام از قرمز، سبز و آبی را نشان می دهد، و یک رشته نشان دهنده نام رنگ است.

اکثر زبان های برنامه نویسی همچنین به برنامه نویس اجازه می دهند تا انواع داده های اضافی را تعریف کند، معمولاً با ترکیب چندین عنصر از انواع دیگر و تعریف عملیات معتبر نوع داده جدید. به عنوان مثال، یک برنامه نویس ممکن است یک نوع داده جدید به نام " عدد مختلط " ایجاد کند که شامل بخش های واقعی و خیالی باشد. نوع داده همچنین محدودیتی را نشان می‌دهد که بر تفسیر داده‌ها در یک سیستم نوع اعمال می‌شود و نمایش، تفسیر و ساختار مقادیر یا اشیاء ذخیره‌شده در حافظه رایانه را توصیف می‌کند. سیستم نوع از اطلاعات نوع داده برای بررسی صحت برنامه های رایانه ای استفاده می کند که به داده ها دسترسی یا دستکاری می کنند.

اکثر انواع داده ها در آمار دارای انواع قابل مقایسه در برنامه نویسی کامپیوتری هستند و بالعکس، همانطور که در جدول زیر نشان داده شده است:

آمار برنامه نويسي
دارای ارزش واقعی ( مقیاس فاصله ) نقطه شناور
دارای ارزش واقعی ( مقیاس نسبت )
داده های شمارش (معمولاً غیر منفی) عدد صحیح
داده های باینری بولی
داده های طبقه بندی شده نوع برشماری شده
بردار تصادفی لیست یا آرایه
ماتریس تصادفی آرایه دو بعدی
درخت تصادفی درخت

تعریف

( پارناس، شور و ویس 1976 ) پنج تعریف از یک "نوع" را شناسایی کردند که - گاهی به طور ضمنی - در ادبیات استفاده می شد. انواعی از جمله رفتار بیشتر با مدل‌های شی‌گرا همسو می‌شوند، در حالی که یک مدل برنامه‌نویسی ساخت‌یافته تمایل دارد کد را شامل نشود و به آنها ساختارهای داده قدیمی می‌گویند .

پنج نوع عبارتند از:

نحوی
یک نوع یک برچسب صرفا نحوی است که با یک متغیر در هنگام اعلان مرتبط است. این گونه تعاریف از «نوع» هیچ معنای معنایی به انواع نمی دهد. [ توضیح لازم است ]
نمایندگی
یک نوع بر حسب ترکیب آن از انواع ابتدایی تر - اغلب انواع ماشینی - تعریف می شود.
نمایندگی و رفتار
یک نوع به عنوان نمایش آن و مجموعه ای از عملگرها که این نمایش ها را دستکاری می کنند، تعریف می شود.
فضای ارزش
نوع مجموعه ای از مقادیر ممکن است که یک متغیر می تواند داشته باشد. چنین تعاریفی این امکان را فراهم می کند که در مورد اتحادیه های ( جدا ) یا محصولات دکارتی از انواع صحبت کنیم.
ارزش فضا و رفتار
نوع مجموعه ای از مقادیر است که یک متغیر می تواند داشته باشد و مجموعه ای از توابع است که می توان برای این مقادیر اعمال کرد.

تعریف بر حسب بازنمایی اغلب در زبان‌های امری مانند ALGOL و پاسکال انجام می‌شد ، در حالی که تعریف بر حسب فضای ارزش و رفتار در زبان‌های سطح بالاتر مانند Simula و CLU استفاده می‌شد .

کلاس انواع داده

انواع داده های اولیه

انواع داده های اولیه معمولاً انواعی هستند که برای پیاده سازی زبان داخلی یا پایه هستند.

انواع داده های ماشین

تمام داده ها در رایانه های مبتنی بر الکترونیک دیجیتال به صورت بیت (جایگزین 0 و 1) در پایین ترین سطح نمایش داده می شوند. کوچکترین واحد آدرس پذیر داده معمولاً گروهی از بیت ها به نام بایت است (معمولاً یک اکتت که 8 بیت است). واحد پردازش شده توسط دستورالعمل های کد ماشین یک کلمه نامیده می شود (از سال 2011 ، معمولاً 32 یا 64 بیت). اکثر دستورالعمل ها کلمه را به عنوان یک عدد باینری تفسیر می کنند ، به طوری که یک کلمه 32 بیتی می تواند مقادیر صحیح بدون علامت از 0 تا را نشان دهد.یا مقادیر صحیح امضا شده ازبه. به دلیل مکمل دو ، زبان ماشین و ماشین در بیشتر موارد نیازی به تمایز بین این نوع داده های بدون علامت و امضا ندارند.

اعداد ممیز شناور که برای محاسبات ممیز شناور استفاده می شوند، تفسیر متفاوتی از بیت ها در یک کلمه دارند. برای جزئیات بیشتر به محاسبات ممیز شناور مراجعه کنید .

انواع داده‌های ماشین باید در معرض نمایش قرار گیرند یا در سیستم‌ها یا زبان‌های برنامه‌نویسی سطح پایین در دسترس قرار گیرند تا امکان کنترل دقیق روی سخت‌افزار فراهم شود. به عنوان مثال، زبان برنامه نویسی C ، انواع اعداد صحیح با عرض های مختلف، مانند shortو long. اگر یک نوع بومی متناظر در پلتفرم مورد نظر وجود نداشته باشد، کامپایلر آنها را با استفاده از انواع موجود به کد تجزیه می‌کند. به عنوان مثال، اگر یک عدد صحیح 32 بیتی در یک پلت فرم 16 بیتی درخواست شود، کامپایلر بطور ضمنی آن را به عنوان آرایه ای از دو عدد صحیح 16 بیتی در نظر می گیرد.

در برنامه‌نویسی سطح بالاتر، انواع داده‌های ماشین اغلب پنهان یا انتزاع می‌شوند به عنوان یک جزئیات پیاده‌سازی که در صورت افشای کد کمتر قابل حمل می‌شود. به عنوان مثال، یک numericنوع عمومی ممکن است به جای اعداد صحیح با عرض بیت خاص ارائه شود.

نوع بولی

نوع Boolean مقادیر true و false را نشان می دهد. اگرچه فقط دو مقدار امکان پذیر است، اما به دلایل کارایی به ندرت به عنوان یک رقم باینری پیاده سازی می شوند. بسیاری از زبان های برنامه نویسی نوع بولی صریح ندارند، در عوض 0 را به عنوان false و سایر مقادیر را درست تفسیر می کنند. داده های بولی به ساختار منطقی نحوه تفسیر زبان به زبان ماشین اشاره دارد. در این مورد یک بولی 0 به منطق False اشاره دارد. True همیشه یک غیر صفر است، به خصوص یک که به عنوان Boolean 1 شناخته می شود.

شمارش

نوع شمارش شده دارای مقادیر متمایزی است که قابل مقایسه و تخصیص است، اما لزوماً نمایش مشخص خاصی در حافظه رایانه ندارد. کامپایلرها و مفسرها می توانند خودسرانه آنها را نشان دهند. به عنوان مثال، چهار کت و شلوار در یک دسته کارت های بازی ممکن است چهار عدد شمارنده به نام های CLUB ، DIAMOND ، HEART ، SPADE باشند که متعلق به یک نوع شمارش شده به نام suit هستند. اگر متغیر V دارای مطابقت اعلام شودبه عنوان نوع داده آن، می توان هر یک از آن چهار مقدار را به آن اختصاص داد. برخی از پیاده سازی ها به برنامه نویسان اجازه می دهند که مقادیر صحیح را به مقادیر شمارش اختصاص دهند یا حتی آنها را به عنوان معادل نوع با اعداد صحیح در نظر بگیرند.

انواع عددی

مانند:

  • انواع داده های عدد صحیح یا "اعداد غیر کسری". ممکن است با توجه به توانایی آنها در داشتن مقادیر منفی (مثلاً unsignedدر C و C++) تایپ شود. همچنین ممکن است تعداد کمی از زیرگروه های از پیش تعریف شده (مانند shortو longدر C/C++) داشته باشد. یا به کاربران اجازه می دهد تا آزادانه زیرمجموعه هایی مانند 1..12 را تعریف کنند (مثلاً پاسکال / آدا ).
  • انواع داده های ممیز شناور ، معمولاً مقادیر را به صورت مقادیر کسری با دقت بالا نشان می دهند ( اعداد گویا، از نظر ریاضی)، اما گاهی اوقات به طور گمراه کننده ای واقعی نامیده می شوند (تداعی کننده اعداد واقعی ریاضی ). آنها معمولاً محدودیت‌های از پیش تعریف شده‌ای برای حداکثر مقادیر و دقت آنها دارند. معمولاً در داخل به شکل a × 2 b (که در آن a و b اعداد صحیح هستند) ذخیره می شود، اما به شکل اعشاری آشنا نمایش داده می شود .
  • انواع داده های نقطه ثابت برای نمایش مقادیر پولی مناسب هستند. آنها اغلب در داخل به عنوان اعداد صحیح پیاده سازی می شوند که منجر به محدودیت های از پیش تعریف شده می شود.
  • بیگنوم یا انواع عددی دقیق دلخواه فاقد محدودیت های از پیش تعریف شده هستند. آنها انواع ابتدایی نیستند و به دلایل کارایی کم استفاده می شوند.

انواع ترکیبی

انواع مرکب از بیش از یک نوع اولیه مشتق شده اند. چندین راه برای انجامش هست. روش های ترکیب آنها را ساختار داده می نامند . ترکیب یک نوع اولیه به یک نوع مرکب به طور کلی منجر به یک نوع جدید می شود، به عنوان مثال آرایه عدد صحیح با عدد صحیح متفاوت است .

  • یک آرایه (که بردار، لیست یا دنباله نیز نامیده می شود) تعدادی عنصر را ذخیره می کند و دسترسی تصادفی به عناصر جداگانه را فراهم می کند. عناصر یک آرایه معمولاً (اما نه در همه زمینه ها) لازم است از یک نوع باشند. آرایه ها ممکن است با طول ثابت یا قابل گسترش باشند. شاخص‌های یک آرایه معمولاً باید اعداد صحیح باشند (اگر نه، می‌توان با صحبت در مورد یک آرایه انجمنی بر این آرامش تأکید کرد ) از یک محدوده خاص (اگر همه شاخص‌های آن محدوده با عناصر مطابقت نداشته باشند، ممکن است یک آرایه پراکنده باشد ).
  • رکورد (که تاپل یا ساختار نیز نامیده می شود) رکوردها از ساده ترین ساختارهای داده هستند. رکورد مقداری است که حاوی مقادیر دیگری است، معمولاً به تعداد و دنباله ثابت و معمولاً با نام نمایه می شوند. عناصر رکوردها معمولاً فیلدها یا اعضا نامیده می شوند .
  • اتحادیه _ یک تعریف نوع اتحادیه مشخص می کند که کدام یک از تعدادی از انواع اولیه مجاز ممکن است در نمونه های آن ذخیره شوند، به عنوان مثال "اعداد صحیح شناور یا طولانی". در تضاد با یک رکورد ، که می تواند شامل یک شناور و یک عدد صحیح تعریف شود. در حالی که، در یک اتحادیه، تنها یک نوع در یک زمان مجاز است.
    • یک اتحادیه برچسب‌گذاری‌شده (همچنین به نام متغیر ، رکورد متغیر، اتحادیه تفکیک‌شده، یا اتحادیه منفصل نیز نامیده می‌شود) حاوی یک فیلد اضافی است که نوع فعلی آن را برای ایمنی نوع پیشرفته نشان می‌دهد.
  • مجموعه یک ساختار داده انتزاعی است که می تواند مقادیر خاصی را بدون ترتیب خاصی و بدون مقادیر تکراری ذخیره کند. ارزش‌ها خود از مجموعه‌ها بازیابی نمی‌شوند، بلکه یک مقدار را برای عضویت آزمایش می‌کند تا یک "in" یا "not in" بولی به دست آورد.
  • یک شی شامل تعدادی فیلد داده مانند یک رکورد و همچنین تعدادی زیرروال برای دسترسی یا اصلاح آنها است که به آنها متد می گویند .

بسیاری دیگر ممکن است، اما آنها تمایل دارند تغییرات و ترکیبات دیگری از موارد فوق باشند. به عنوان مثال، یک لیست پیوندی می تواند همان داده ها را به عنوان یک آرایه ذخیره کند، اما دسترسی متوالی را به جای تصادفی فراهم می کند و از رکوردهایی در حافظه پویا ساخته شده است . اگرچه مسلماً یک ساختار داده است نه یک نوع فی نفسه ، اما همچنین به اندازه کافی متداول و متمایز است که گنجاندن آن در بحث از انواع ترکیبی را می توان توجیه کرد.

انواع رشته و متن

مانند:

  • یک کاراکتر ، که ممکن است یک حرف از حروف الفبا ، یک رقم، یک فضای خالی، یک علامت نقطه گذاری و غیره باشد.
  • رشته ای که دنباله ای از کاراکترها است. رشته‌ها معمولاً برای نمایش کلمات و متن استفاده می‌شوند، اگرچه متن در همه موارد به جز بی‌اهمیت‌ترین موارد بسیار بیشتر از یک دنباله از کاراکترها است.

انواع کاراکترها و رشته ها می توانند دنباله ای از کاراکترها را از مجموعه کاراکتری مانند ASCII ذخیره کنند. از آنجایی که بیشتر مجموعه کاراکترها شامل اعداد هستند، ممکن است یک رشته عددی مانند "1234". با این حال، بسیاری از زبان‌ها اینها را به عنوان متعلق به نوع متفاوتی از مقدار عددی می‌دانند 1234.

انواع کاراکتر و رشته با توجه به "عرض" کاراکتر مورد نیاز، می توانند زیرگونه های مختلفی داشته باشند. مشخص شد که ASCII 7 بیتی اولیه محدود است و با مجموعه‌های 8 و 16 بیتی جایگزین شده است که می‌توانند طیف گسترده‌ای از الفبای غیر لاتین (مانند عبری و چینی ) و نمادهای دیگر را رمزگذاری کنند. رشته ها ممکن است کشش به تناسب یا اندازه ثابت باشند، حتی در یک زبان برنامه نویسی. آنها همچنین ممکن است با حداکثر اندازه آنها زیر تایپ شوند.

توجه: رشته‌ها یک نوع داده اولیه در همه زبان‌ها نیستند. به عنوان مثال، در C ، آنها از آرایه ای از کاراکترها تشکیل شده اند.

انواع داده های انتزاعی

هر نوع داده ای که نمایش دقیق داده ها را مشخص نمی کند، یک نوع داده انتزاعی است . در عوض، یک مشخصات رسمی بر اساس عملیات نوع داده برای توصیف آن استفاده می شود. هر اجرای یک مشخصات باید قوانین داده شده را رعایت کند. انواع داده های انتزاعی در معنای شناسی رسمی و تأیید برنامه و با دقت کمتر در طراحی استفاده می شود.

فراتر از تأیید، یک مشخصات ممکن است بلافاصله به یک پیاده سازی تبدیل شود. به عنوان مثال، خانواده زبان های برنامه نویسی OBJ بر اساس این گزینه از معادلات برای تعیین مشخصات و بازنویسی برای اجرای آنها استفاده می کند. مشخصات جبری [3] موضوع مهم تحقیق در CS در حدود سال 1980 و تقریباً مترادف انواع داده های انتزاعی در آن زمان بود. این یک پایه ریاضی در جبر جهانی دارد. [4] زبان مشخصات را می‌توان با اجازه دادن به فرمول‌های دیگر به جز معادلات گویاتر کرد.

یک مثال معمولی سلسله مراتب Boom از انواع درخت باینری ، لیست ، کیسه و مجموعه است. [5] همه این نوع داده‌ها را می‌توان با سه عملیات اعلان کرد: null که ظرف خالی را می‌سازد، single که یک ظرف را از یک عنصر واحد می‌سازد و append که دو کانتینر از یک نوع را ترکیب می‌کند. سپس مشخصات کامل چهار نوع داده را می توان با افزودن متوالی قوانین زیر بر روی این عملیات ارائه داد:

- null خنثی چپ و راست درخت است: append(null,A) = A, append(A,null) = A.
- لیست ها اضافه می کنند که append تداعی کننده است: append(append(A,B),C) = append(A,append(B,C)).
- کیسه ها قابلیت جابه جایی را اضافه می کنند: append(B,A) = append(A,B).
- در نهایت، مجموعه ها نیز فاقد قدرت هستند: ضمیمه (A,A) = A.

دسترسی به داده ها را می توان با تطبیق الگو در سه عملیات مشخص کرد، به عنوان مثال یک تابع عضو برای این کانتینرها توسط:

- عضو (X، تک (Y)) = معادله (X،Y)
- عضو(X,null) = نادرست
- عضو (X، ضمیمه(A،B)) = یا (عضو(X،A)، عضو(X،B))

باید دقت شود که تابع تحت قوانین مربوطه برای نوع داده ثابت باشد.

انواع دیگر

انواع را می توان بر اساس، یا مشتق از انواع اساسی که در بالا توضیح داد. در برخی از زبان‌ها، مانند C، توابع دارای نوعی هستند که از نوع مقدار بازگشتی آنها مشتق شده است .

اشاره‌ها و مراجع

نوع اصلی مشتق‌شده غیر ترکیبی اشاره‌گر است، یک نوع داده که مقدار آن مستقیماً به مقدار دیگری اشاره می‌کند (یا به آن اشاره می‌کند) که در جای دیگری در حافظه رایانه با استفاده از آدرس آن ذخیره شده است. این یک نوع مرجع بدوی است . (در اصطلاحات روزمره، یک شماره صفحه در یک کتاب را می توان بخشی از داده در نظر گرفت که به دیگری اشاره دارد). اشاره گرها اغلب در قالبی شبیه یک عدد صحیح ذخیره می شوند. با این حال، تلاش برای عدم ارجاع یا "جستجوی" اشاره‌گری که مقدار آن هرگز یک آدرس حافظه معتبر نبود، باعث از کار افتادن یک برنامه می‌شود. برای بهبود این مشکل بالقوه، اشاره گرها نوع جداگانه ای از نوع داده ای که به آن اشاره می کنند در نظر گرفته می شوند، حتی اگر نمایش اصلی یکسان باشد.

انواع توابع

در حالی که توابع را می توان یک نوع نیز اختصاص داد، نوع آنها در تنظیمات این مقاله نوع داده در نظر گرفته نمی شود. در اینجا، داده ها به عنوان متمایز از الگوریتم ها در نظر گرفته می شوند . در برنامه نویسی، توابع به شدت با دومی مرتبط هستند. اما، از آنجایی که یک اصل اصلی پردازش داده جهانی این است که الگوریتم ها را می توان به عنوان داده ، به عنوان مثال، توضیحات متنی و برنامه های باینری نشان داد، تضاد بین داده ها و توابع محدودیت هایی دارد. در واقع، نه تنها توابع را می توان با داده نشان داد، بلکه از توابع نیز می توان برای رمزگذاری داده ها استفاده کرد. بسیاری از سیستم‌های نوع معاصر به شدت بر انواع تابع تمرکز می‌کنند و بسیاری از زبان‌های مدرن به توابع اجازه می‌دهند تا به عنوان شهروندان درجه یک عمل کنند .

کنار گذاشتن توابع از مواردی که به عنوان انواع داده تلقی می شوند در زمینه های مرتبط غیرمعمول نیست. [ نیاز به نقل قول ] به عنوان مثال، منطق محمول اجازه استفاده از کمیت کننده ها را در نام توابع یا محمول نمی دهد.

انواع متا

برخی از زبان‌های برنامه‌نویسی اطلاعات نوع را به عنوان داده نشان می‌دهند، که امکان درون‌بینی و بازتاب نوع را فراهم می‌کند. در مقابل، سیستم‌های نوع مرتبه بالاتر ، در حالی که اجازه می‌دهند تایپ‌ها از انواع دیگر ساخته شوند و به توابع به عنوان مقادیر منتقل شوند، معمولاً از تصمیم‌گیری محاسباتی بر اساس آنها اجتناب می‌کنند. [ نیازمند منبع ]

انواع راحتی

برای راحتی، زبان‌ها و پایگاه‌های داده سطح بالا ممکن است انواع داده‌های آماده «دنیای واقعی» را فراهم کنند، به‌عنوان مثال زمان، تاریخ، و مقادیر پولی (ارز). [6] [7] اینها ممکن است در زبان تعبیه شده باشند یا به عنوان انواع ترکیبی در یک کتابخانه پیاده سازی شوند. [8]

سیستم های تایپ

یک سیستم نوع ، انواع را با مقادیر محاسبه شده مرتبط می کند. با بررسی جریان این مقادیر، یک سیستم نوع تلاش می کند تا ثابت کند که هیچ گونه خطای نوع نمی تواند رخ دهد. نوع سیستم مورد نظر تعیین می‌کند که چه چیزی یک خطای نوع را تشکیل می‌دهد، اما یک سیستم نوع عموماً به دنبال تضمین این است که عملیات‌هایی که انتظار نوع خاصی از مقدار را دارند با مقادیری که آن عملیات برای آنها معنی ندارد استفاده نمی‌شود.

یک کامپایلر ممکن است از نوع ثابت یک مقدار برای بهینه سازی فضای ذخیره سازی مورد نیاز خود و انتخاب الگوریتم ها برای عملیات روی مقدار استفاده کند. برای مثال، در بسیاری از کامپایلرهای C ، نوع داده در 32 بیت ، مطابق با مشخصات IEEE برای اعداد ممیز شناور تک دقیق، نمایش داده می شود . بنابراین آنها از عملیات ریزپردازنده مخصوص ممیز شناور بر روی آن مقادیر (جمع ممیز شناور، ضرب و غیره) استفاده خواهند کرد. float

عمق محدودیت های نوع و نحوه ارزیابی آنها بر تایپ زبان تأثیر می گذارد. یک زبان برنامه نویسی ممکن است در مورد چندشکلی نوع ، عملیاتی را با الگوریتم های بتنی متفاوت در هر نوع مرتبط کند. تئوری نوع مطالعه سیستم‌های نوع است، اگرچه سیستم‌های نوع ملموس زبان‌های برنامه‌نویسی از مسائل عملی معماری کامپیوتر، پیاده‌سازی کامپایلر و طراحی زبان سرچشمه می‌گیرند.

سیستم های تایپ ممکن است به صورت ایستا یا پویا ، تایپ قوی یا ضعیف و غیره باشند.

همچنین ببینید

منابع

  1. ^ در فرهنگ لغت آنلاین رایگان محاسبات تایپ کنید
  2. ^ شفر، کالیفرنیا (2011). ساختارهای داده و تجزیه و تحلیل الگوریتم در C++ (ویرایش سوم). مینولا، نیویورک: دوور. 1.2. شابک 978-0-486-48582-9.
  3. Ehrig, H. (1985). مبانی مشخصات جبری 1 - معادلات و معناشناسی اولیه . Springer-Verlag. شابک 0-387-13718-1.
  4. وچلر، ولفگانگ (1992). جبر جهانی برای دانشمندان کامپیوتر . Springer-Verlag. شابک 0-387-54280-9.
  5. Bunkenburg، Alexander (1994). "سلسله مراتب رونق". برنامه نویسی تابعی، گلاسکو 1993 : 1-8. CiteSeerX 10.1.1.49.3252 . doi : 10.1007/978-1-4471-3236-3_1 . 
  6. وست، راندولف (27 مه 2020). "SQL Server چگونه انواع داده را ذخیره می کند: پول" . SQL متولد شد . بازبینی شده در 28 ژانویه 2022 . مدتی پیش من MONEY را به عنوان یک نوع داده "راحتی" توصیف کردم که عملاً همان DECIMAL (19،4) است، [...]
  7. ^ "مقدمه ای بر انواع داده ها و ویژگی های فیلد" . support.microsoft.com . بازبینی شده در 28 ژانویه 2022 .
  8. ^ ویکهام، هدلی. "16 تاریخ و زمان" . R برای علم داده: وارد کردن، مرتب کردن، تبدیل، تجسم و مدل‌سازی داده‌ها . سباستوپل، کالیفرنیا شابک 1491910399. بازبینی شده در 28 ژانویه 2022 .

ادامه مطلب

پیوندهای خارجی