บทนำ
ในการเขียนโปรแกรม ชนิดข้อมูล (data type) หมายถึงประเภทและลักษณะของข้อมูลที่ผู้ใช้ต้องการจะใช้ คอมไพเลอร์หรืออินเตอร์พรีเตอร์จะจัดการตามชนิดข้อมูล และจัดสรรพื้นที่จัดเก็บในหน่วยความจำหลัก (main memory) ตามนั้น
จากลักษณะของข้อมูล ชนิดข้อมูลหลักแบ่งได้ 2 ประเภท คือ Fundamental Data Type (ชนิดข้อมูลพื้นฐาน) และ Derived Data Type (ชนิดข้อมูลที่สืบทอดมา) ทั้งสองชนิดนี้ใช้ในการเขียนโปรแกรมและมีความสำคัญเท่าเทียมกันเมื่อต้องนำตรรกะทางธุรกิจมาใช้กับข้อมูล
ความแตกต่างสำคัญระหว่าง Fundamental และ Derived Data Types
| ลำดับ | หัวข้อ | Fundamental Data Types | Derived Data Types |
|---|---|---|---|
| 1 | นิยาม | ตามชื่อ Fundamental data type คือชนิดข้อมูลที่แท้จริงและถูกนำเสนอโดยภาษาเอง เช่น มีลักษณะเฉพาะและคุณสมบัติพื้นฐาน พร้อมวิธีการพื้นฐานในการดำเนินการกับข้อมูลเหล่านั้น | ในทางกลับกัน Derived data types คือชนิดข้อมูลที่ประกอบด้วย fundamental data types หมายถึง สืบทอดมาจาก fundamental data types และมีคุณสมบัติเพิ่มเติมหรือปรับเปลี่ยนจาก fundamental data types |
| 2 | การนำไปใช้ | Fundamental data types ในภาษาใดภาษาหนึ่งถูกนำไปใช้ในรูปแบบที่แน่นอน (concrete) เช่น มีชนิดข้อมูลพื้นฐานคงที่ในแต่ละภาษา เช่น ใน C++ คือ character, integer, float, และ void | ในทางกลับกัน Derived Data Type ในการเขียนโปรแกรมถูกนำไปใช้ในรูปแบบนามธรรม (abstract) เนื่องจากนิยามถูกกำหนดโดยผู้ใช้ว่าจะจัดการกับข้อมูลประเภทใด เช่น Pointers, arrays, structures และ unions |
| 3 | ข้อมูล | Character data type ใช้เก็บตัวอักษร และแบ่งได้เป็น char, Signed char, Unsigned char | ในทางกลับกัน Pointers ใช้เก็บที่อยู่ของตัวแปร แทนที่จะเก็บค่าของตัวแปร |
| 4 | การกำหนดค่า | Integer ใช้สำหรับกำหนดและเก็บจำนวนเต็ม (ไม่มีทศนิยม) และแบ่งได้เป็น signed และ unsigned อีกที เป็น int, short int และ long int | ในทางกลับกัน ใน derived data types Array ใช้เก็บข้อมูลชนิดเดียวกัน อาจเป็น character, integer, float หรือแม้แต่ user-defined data type |
| 5 | ประสิทธิภาพ | ในกรณี fundamental data type มีเพียงประเภทและลักษณะข้อมูลที่เกี่ยวข้อง จึงไม่มีปัญหาเรื่อง time complexity เนื่องจากเราจัดการกับ concrete implementation ของภาษา | ในทางกลับกัน time complexity เข้ามามีบทบาทใน derived data types เนื่องจากเกี่ยวข้องกับการจัดการและการประมวลผลตรรกะกับข้อมูลที่จัดเก็บ |