Anda di halaman 1dari 30

Power Domain

• Teori Set menyediakan suatu notasi elegan untuk uraian


perhitungan.
• Keluarga bahasa Pascal menyediakan set gabungan dan
simpangan serta keanggotaan set.
• Set dari semua subsets dari sebuah set adalah set
tenaga dan digambarkan:
PS = { s | s is a subset of S }
P={ s | s is a subset}
• Subtype dan subrange adalah contoh dari pembangun set
tenaga.
1
Fungsi adalah subsets daerah produk. Sebagai contoh,
fungsi persegi dapat diwakili sebagai subset daerah
produk Nat x Nat.
sqr = {(0,0),(1,1),(2,4),(3,9),...}

Penyamarataan membantu untuk menyederhanakan


daftar tanpa batas ini untuk:
sqr = {(x,x*x)| x didalam Nat}

2
Recursively Defined Domain
Daerah batasan pengulangan adalah daerah yang
definisinya menjadi bentuk:
D:... D...
Definisi disebut berulang karena nama daerah “berulang”
pada sisi kanan dari definisi. Daerah batasan
pengulangan tergantung pada abstrak karena nama
daerah adalah suatu bagian penting dari definisi daerah.

3
Lebih dari satu set boleh mencukupi suatu definisi
berulang. Bagaimanapun, mungkin saja ditunjukkan
bahwa suatu definisi berulang selalu mempunyai solusi
terkecil. Solusi terkecil adalah suatu subset solusi yang
lain.
Solusi terkecil daerah batasan pengulangan yang
digambarkan didapat melewati suatu urutan perkiraan
(D0, D1,...) ke daerah dengan daerah yang menjadi batas
dari urutan perkiraan (D= limi--> infty Di). Batas
adalah solusi yang terkecil pada definisi daerah berulang.

4
Type Systems

Prosentase besar kesalahan didalam program adalah


dalam kaitan dengan aplikasi operasi ke object jenis yang
bertentangan. Jenis sistem telah dikembangkan untuk
membantu programmer didalam pendeteksian kesalahan.

5
Suatu sistem jenis adalah satu set aturan untuk
penjelasan jenis dan menghubungkan suatu jenis dengan
ungkapan didalam bahasa.
Suatu sistem jenis menolak suatu ungkapan jika tidak
menghubungkan suatu jenis dengan ungkapan. Jenis
pemeriksaan boleh berjalan pada waktu kompilasi atau
waktu berjalan atau kedua-duanya.

6
Jika kesalahan diharapkan untuk dideteksi pada waktu
kompilasi maka suatu sistem pengecekan jenis statis
diperlukan. Satu pendekatan ke pemeriksaan jenis statis
adalah untuk memerlukan programmer untuk menetapkan
jenis masing-masing obyek didalam program.

7
Ini mengizinkan kompilator untuk melaksanakan jenis
pemeriksa sebelum pelaksanaan program dan ini adalah
pendekatan yang diambil oleh bahasa seperti Pascal,
Ada, C++, dan Java.

Jika pendeteksian kesalahan diharapkan untuk ditunda


sampai waktu pelaksanaan, maka pemeriksaan jenis
dinamis diperlukan.

8
Didalam pemeriksa jenis dinamis, masing-masing nilai
data berlabel dengan jenis informasi sehingga lingkungan
waktu berjalan dapat memeriksa kecocokan jenis dan
mungkin melaksanakan konversi jenis jika perlu. Bahasa
program Lisp, Scheme dan Small-Talk adalah contoh dari
bahasa jenis dinamis.

9
Type Checking
Suatu bahasa disebut :
• tidak berjenis jika tidak ada jenis abstrak yang berlaku,
• jenis kuat jika menyelenggarakan jenis abstrak (operasi
mungkin diterapkan hanya untuk object jenis yang
sesuai),
• jenis statis jika jenis ungkapan masing-masing dapat
ditentukan dari teks program,
• jenis dinamis jika penentuan jenis beberapa ungkapan
tergantung pada perilaku waktu berjalan program.

10
Keuntungan dari bahasa tidak berjenis adalah fleksibilitas
mereka. Programmer mempunyai kendali penuh atas
bagaimana suatu nilai data digunakan tetapi harus
mengasumsikan tanggung jawab penuh untuk
mendeteksi aplikasi operasi ke object jenis yang tidak
cocok/bertentangan.

11
Jenis kuat membantu untuk memastikan portabilitas dan
keamanan kode dan sering memerlukan programmer
dengan tegas menggambarkan jenis masing-masing
object di dalam suatu program. Ini penting juga dalam
kumpulan untuk pemilihan operasi yang sesuai dan untuk
optimisasi.

12
Jenis statis secara luas dikenali sebagai kebutuhan untuk
produksi perangkat lunak yang dapat dipercaya dan
aman. Jenis statis yang memeriksa menyiratkan bahwa
jenis dicek pada waktu kompilasi. Jenis statis dipilih ketika
efisiensi di dalam waktu pelaksanaan adalah penting dan
kompilator pendukung digunakan untuk mendukung
rancang bangun perangkat lunak berjalan.

13
Jenis pemeriksa dinamis menyiratkan bahwa jenis dicek
pada waktu pelaksanaan dan bahwa tiap-tiap nilai
berlabel untuk mengidentifikasi jenisnya dalam rangka
membuat jenis pemeriksa mungkin. Hukuman untuk
pemeriksaan jenis dinamis adalah biaya waktu dan ruang
tambahan.

14
Type Equivalence
Dua jenis tak dikenal (satuan object) adalah sama jika
mereka berisi unsur-unsur yang sama. Yang sama tidak
bisa dikatakan jenis nama mereka yang dulu, maka tidak
diperlukan untuk memisah jenis union. Kapan jenis
dinamai, ada dua pendekatan utama untuk menentukan
apakah dua jenis sama.

15
Name Equivalence

Didalam kesamaan nama dua jenis adalah sama jika


mereka mempunyai nama yang sama. Jenis diberi nama
berbeda perlakukan sebagai beda dan tidak bisa secara
kebetulan dicampur hanya karena struktur mereka secara
kebetulan adalah sama. Kesamaan nama perlu definisi
jenis untuk global.

16
Structural Equivalence

Didalam kesamaan struktural, nama jenis diabaikan dan


unsur-unsur jenis dibandingkan untuk persamaan. Adalah
mungkin bahwa dua jenis logika yang berbeda boleh
menjadi kebetulan yang sama dan dapat dicampur.

17
Definisi jenis tidak diperlukan untuk menjadi global.
Kesamaan struktural adalah penting didalam sistem
distribusi pemrograman, dimana program terpisah harus
mengkomunikasikan jenis data.

18
Definisi N.1:

Dua jenis T, T' adalah kesamaan nama iff T dan T' adalah
nama yang sama.

Dua jenis T, T' adalah kesamaan struktural iff T dan T'


memiliki satuan nilai yang sama.

19
Tiga aturan berikut yang digunakan untuk menentukan
jika dua jenis adalah kesamaan struktural :
• Suatu nama jenis sama secara struktur dengan dirinya
sendiri.
• Dua jenis yang sama secara struktur jika mereka dibentuk
dengan menerapkan jenis pembangun yang sama
(secara berulang) ke jenis kesamaan secara struktural.
• Setelah suatu deklarasi jenis, jenis n = T, nama jenis n
secara struktural setara dengan T.

20
Type Inference
Jenis kesimpulan adalah masalah yang umum dalam
menjelmakan tak berjenis atau sintaksis jenis parsial ke
dalam terminologi yang baik. Deklarasi tetap Pascal
adalah suatu contoh kesimpulan jenis, jenis nama adalah
kesimpulan dari jenis yang tetap. Dalam Pascal untuk
pengulangan jenis index pengulangan dapat ditarik
kesimpulan dari jenis batas pengulangan dan dengan
begitu indeks pengulangan harus suatu variabel lokal dari
pengulangan.

21
Bahasa pemrograman Miranda dan Haskell adalah jenis
statis dan menyediakan sistem kesimpulan jenis kuat
sehingga seorang programmer tidak perlu
mendeklarasikan jenis apapun. Bahasa juga mengijinkan
para programmer untuk menyediakan spesifikasi jenis
eksplisit.

22
Suatu pemeriksa jenis harus mampu :
• menentukan jika suatu program adalah jenis yang baik
dan
• jika program adalah jenis yang baik, tentukan jenis
ungkapan manapun di dalam program.

23
Type declarations
Bahkan bahasa yang menyediakan suatu sistem
kesimpulan jenis mengijinkan para programmer untuk
membuat deklarasi jenis tegas/eksplisit. Sekalipun
kompiler dapat dengan tepat menyimpulkan jenis,
pembaca manusia mungkin harus meneliti beberapa
halaman kode untuk menentukan jenis suatu fungsi.

24
Kesalahan kecil oleh programmer dapat menyebabkan
kompiler mengeluarkan pemberitahuan kesalahan atau
untuk menyimpulkan suatu jenis yang berbeda dibanding
yang diharapkan. Karena pertimbangan ini adalah praktek
pemrograman yang baik dengan tegas menyatakan jenis
atas semua kecuali kasus yang paling nyata.

25
Polymorphism

Suatu sistem jenis adalah monomorphic jika masing-


masing konstanta, variabel, parameter, dan hasil fungsi
mempunyai suatu jenis unik. Jenis pemeriksa suatu
sistem monomorphic adalah secara langsung. Tetapi
sistem jenis monomorphic semata-mata adalah tidak
memuaskan untuk penulisan perangkat lunak yang bisa
dipakai kembali.

26
Sistem yang sepenuhnya Monomorphic jarang.
Kebanyakan bahasa pemrograman berisi beberapa
operator atau prosedur yang mengijinkan argumentasi
lebih dari satu jenis.

27
Definisi N.2:
• Monomorphisme: tiap-tiap konstanta, variabel, parameter,
fungsi dan operator mempunyai suatu jenis unik.
• Pemuatan lebih mengacu pada penggunaan dari
syntaksis tunggal pengenal untuk mengacu pada
beberapa operasi berbeda yang dibedakan oleh jenis dan
jumlah argumentasi pada operasi.
• Polymorphisme: suatu operator, fungsi atau prosedur
yang mempunyai suatu keluarga jenis yang terkait dan
beroperasi secara seragam atas argumentasinya dengan
mengabaikan jenis.
• Suatu operasi polymorphic adalah yang dapat berlaku
untuk jenis yang berbeda tetapi berhubungan dengan
argumentasi.

28
Suatu sistem jenis adalah polymorphic jika abstrak
beroperasi secara seragam pada argumentasi suatu
keluarga jenis terkait.

Polymorphisme jenis ini kadang-kadang disebut


polymorphisme parametric.

29
Type Completeness

Prinsip Jenis Kelengkapan. Tidak ada operasi yang dapat


berlaku semaunya terbatas yang berhubungan dengan
nilai jenis.

30

Anda mungkin juga menyukai