Coba jelasin Data dan struktur data dari Bahasa pengaturcaraan dalam bahasa melayu dong

Di dalam sebuah komputer digital yang moden, data disimpan dalam bentuk binari (keadaan pasang-tutup - on-off state). Data biasanya mewakili maklumat dalam dunia nyata seperti nama, akaun bank, dan pengukuran. Maka, data tahap rendah diatur oleh Bahasa Pengaturcaraan kepada konsep tahap tiggi tersebut.

Sistem tertentu di mana data diatur di dalam sebuah atur cara, ialah sistem jenis (type system) bagi sesebuah bahasa pengaturcaraan. Reka bentuk dan pemahaman tentang sistem jenis dipanggil Teori Jenis. Bahasa Pengaturcaraan boleh diklasifikasikan sebagai jenis statik (statically typed), dan jenis dinamik (dynamically typed).

Bahasa Jenis Statik boleh dipecahkan lagi kepada bahasa dengan jenis manifestasi (di mana jenis bagi setiap pembolehubah (variable) dan penakrifan fungsi (function declaration) ditakrif secara tepat), dan Bahasa Jenis Rujukan (type-infered).

Biasanya Bahasa Jenis Rujukan dan Bahasa Jenis Dinamik dipanggil Jenis Pasif (latently typed).

Bagi Bahasa Jenis Statik, selalunya terdapat Jenis yang bertakrif(pre-defined type), bagi setiap data (contohnya nombor dalam lingkungan tertentu, serta rentetan aksara-strings of letters), dan pembolehubah hanya mengandungi satu Jenis yang tetap, dan hanya membenarkan operasi tertentu saja (yakni, nombor tidak boleh bertukar menjadi nama, dan sebaliknya). Contoh Bahasa Jenis Statik ialah bahasa pengaturcaraan C, C++, dan Java.

Bahasa Jenis Dinamik menganggap semua lokasi data serupa. Oleh itu, operasi yang tidak dibenarkan (seperti melakukan proses tambahan dengan nama, atau menyusun nombor mengikut huruf) tidak akan menghasilkan ralat sehingga masa larian. Contoh Bahasa Jenis Dinamik ialah Lisp, JavaScript, Tcl, dan Prolog.

Bahasa Jenis Rujukan menganggap kesemua data tidak mempunyai jenis, tetapi melakukan analisis mendalam tentang bagaimana aturcara mengguna data, bagi menentukan operasi mudah yang perlu dilaksanakan terhadap data. Dengan ini, ia boleh mengenali tentang jenis pembolehubah pada masa kompil. Bahasa Jenis Rujukan lebih fleksibel untuk digunakan, dan menghasilkan aturcara yang lebih berkesan. Walau bagaimanapun, keupayaan ini adalah sukar untuk disertakan di dalam Bahasa Pengaturcaraan biasa. Oleh itu Bahasa Pengaturcaraan jenis ini agak sedikit. Contoh Bahasa Jenis Rujukan adalah MUMPS, dan ML.

Kebanyakan Bahasa menyediakan cara untuk menghimpun Struktur Data yang kompleks daripada Jenis yang sedia ada dan mengkaitkan nama kepada Gabungan Jenis yang baru ini (dengan penggunaan Array, Senarai, Longgokan, Fail).

Bahasa Pengaturcaraan Berorientasikan Objek membenarkan Juruaturcara menakrifkan Jenis Data yang dipanggil Objek. Objek mempunyai fungsi dan pembolehubahnya tersendiri(dipanggil method, dan attribut). Sebuah aturcara yang mengandungi objek membenarkan objek bekerja secara bebas tetapi berinteraksi dengan aturcara-aturcara bawahan (sub-programs). Interaksi tersebut boleh direkabentuk, pada masa pengkodan, untuk mensimulasi interaksi objek nyata. Fungsi ini amat berguna dan intuitif(intuitive). Aturcara seperti Python dan Ruby telah berkembang sebagai Bahasa Berorientasikan Objek. Bahasa ini amat mudah dipelajari dan digunakan, dan semakin popular di kalangan para juruaturcara professional, di samping ia terbuka kepada pengguna bukan professional.

Selain daripada bila dan bagaimana perhubungan antara ekspresi dan Jenis ditentukan, terdapat juga persoalan Jenis apa yang Bahasa tersebut takrifkan, dan Jenis apa yang ia tentukan sebagai nilai ekspresi(expressed values), dan sebagai nilai bernama (denoted values). Bahasa Pengaturcaraan tahap rendah, seperti C, biasanya membenarkan aturcara menamakan lokasi memori, kawasan memori, dan pembolehubah statik masa kompil(compile-time contants), disamping membenarkan ekspresi mengembalikan nilai yang boleh dimuat di dalam daftar mesin. Bahasa ANSI C mengembangkan ciri-ciri ini, dan membenarkan ekspresi mengembalikan nilai struct juga.

Bahasa Fungsi (Functional Language) biasanya membenarkan pembolehubah menamakan nilai proses masa larian secara terus. Bahasa yang menggunakan pungutan sampah (garbage collection) adalah bebas untuk membenarkan data struktur sebagai nilai expresi, atau nilai bernama.