Abstraksi (ilmu komputer)

Dalam ilmu komputer, abstraksi adalah proses representasi data dan program dalam bentuk sama dengan pengertiannya (semantik), dengan menyembunyikan rincian / detail implementasi. Abstraksi mencoba menyembunyikan detail agar programmer dapat berfokus pada konsep tertentu saja pada satu waktu.

Alasan 
Perhitungan komputer berbeda dengan dunia nyata. Perangkat lunak memiliki arsitektur yang memungkinkan orang membuat sistem skala besar dengan fokus pada beberapa hal pada waktu tertentu. Arsitektur ini dibuat dengan abstraksi tertentu.

Bentuk utama dari abstraksi adalah abstraksi bahasa: bahasa buatan dikembangkan untuk menyatakan aspek tertentu dari sistem. Bahasa komputer dapat diolah oleh komputer. Contoh proses abstraksi adalah pengembangan bahasa pemrograman dari bahasa mesin, ke bahasa rakitan, dan bahasa pemrograman tingkat tinggi. Tiap tingkatan digunakan sebagai batu loncatan ke tingkatan lain. Abstraksi bahasa juga terdapat dalam bahasa skrip.

Dalam bahas pemrograman, beberapa fitur memeungkinkan pemrogram untuk membuat abstraksi baru. Hal ini termasuk subrutin, modul, polymorphism, dan komponen. beberapa abstraksi lain seperti pola desain dan arsitektur tidak dibaca oleh translator dan hanya bekerja pada sistem.

Beberapa abstraksi mencoba untuk mengurangi konsep yang harus dipahami oleh pemrogram, dengan menyembunyikan abstraksi yang digunakan. Penulis dan perancang perangkat lunak Joel Spolsky mengkritik usaha ini dengan mengatakan bahwa semua abstraksi tidak dapat sepenuhnya disembunyikan. Meski demikian, hal ini tidak mengurangi keuntungan dari abstraksi.

Beberapa abstraksi dirancang untuk bekerja bersama dengan abstraksi lain, misalnya sebuah bahasa pemrograman mungkin mengandung foreign function interface untuk menggunakan bahasa pemrograman yang lebih rendah.

Tingkat abstraksi

Sistem basis data 

Abstraksi data merupakan tingkatan/level bagaimana melihat data dalam sebuah sistem basis data.

Tiga level abstraksi data:
 Level Fisik (Physical Level). Pemakai melihat data sebagai gabungan dari struktur dan datanya sendiri dan berkompeten dalam mengetahui bagaimana representasi fisik dari penyimpanan/pengorganisasian data (teks, angka, himpunan bit data, dll).
 Level Lojik/Konseptual (Conseptual Level). Menggambarkan data apa yang sebenarnya (secara fungsional) disimpan dalam basis data dan hubungannya dengan data yang lain.
 Level Penampakan (View Level). Untuk pemakai yang hanya membutuhkan sebagian data/informasi dalam basis data yang kemunculannya di mata pemakai diatur oleh aplikasi end-user.

Pranala luar 
 Bahasa Basis Data » Abstraksi Data 

Manajemen data
Paradigma pemrograman