Names, Binding, Type Checking, and Scopes Flashcards
Apa itu Binding dan Binding Time?
Binding adalah sebuah pengelompokkan, contohnya pengelompokkan antara sebuah atribut dan entitas atau pengelompokkan antara sebuah operasi dan sebuah simbol
Binding time adalah waktu terjadinya binding
Proses terjadinya Binding apa saja?
Binding dapat tejadi pada saat :
- Language design time, design dari syntax, primitive types, semantics
- Language implementation time, seperti numeric precision, run-time memory size, max identifier name length.
- Compile time, saat translasi ke bahasa mesin
- Link time, saat multiple object code dan libraries dikombinasi menjadi satu executable.
- Load time, saat OS load program dalam memory
- Run time, saat program berjalan
Ada dua aspek penting pada tipe binding yaitu bagaimana tipe variable dispesifikasi (i.e. dideklarasikan) dan kapan binding terjadi. Uraikan apa yang kamu ketahui tentang deklarasi variable dan dynamic type binding?
Deklarasi variable terbagi 2 yaitu:
1. Explicit declaration adalah sebuah pernyataan dalam program yang mendaftarkan nama variabel dan jenisnya pada tipe tertentu
- Implicit declaration mengasosiasikan variable beserta tipe nya melalui konvensi standar bukan dari declaration statement
Deklarasi variable melakukan deklarasi variabel pada tipe tertentu dan atribut lainnya tetapi tidak mengalokasikan memori ke variable tersebut.
Dynamic type binding, tipe tersebut tidak dispesifikasikan oleh declaration statement. Tetapi, variable dikaitkan ke sebuah tipe pada saat diberikan nilai dalam assignment statement.
Definisi Lifetime?
Lifetime dari sebuah variable adalah waktu selama variable tersebut mengikat pada lokasi memori tertentu
Definisi Scope?
Scope adalah jarak atau range sebuah variable dari statement dimana variable tersebut dapat diakses.
Definisi Block?
Block adalah bagian dari kode yang memiliki variable lokalnya sendiri dimana scope nya diminimalisir.
Definisi Static Scoping
nama-nama binding pada variable yang bukan lokal disebut static scoping.
Definisi Dynamic Scoping
Dynamic scoping akan dijalankan berdasarkan urutan dari subprogram. dynamic scope dapat ditentukan hanya pada saat run time.
Masalah umum dari static scoping?
- seorang programmer dapat saja melakukan kesalahan pada saat memanggil sebuah subprogram yang tidak seharusnya dapat dipanggil. sehinnga kesalahan tersebut tidak dapat terdeteksi sebagai error oleh compiler.
- akses ke prosedur tertentu harus dibatasi
- akses data terlalu banyak
Masalah umum dari dynamic scoping?
- pada waktu eksekusi, variable local dari sebuah subprogram dapat terlihat di subprogram lain
- program menjadi lebih sulit dibaca
- akses ke variable yang bukan local memakan waktu yang lebih lama ketika static scope digunakan
Kelebihan dari dynamic scoping?
kemampuan parameternya yang dapat digunakan dengan mudah pada subprogram yang lain
Type Checking adalah?
Type checking adalah aktivitas untuk memastikan bahwa operand dari sebuah operator apakah tipe nya cocok atau tidak. Jika tipe nya tidak cocok makan akan terjadi type error dikarenakan operand dan operator tidak kompatible.
Strong Typing adalah?
jika suatu bahasa pemrograman yang karakteristiknya strong typing, maka setiap nama dalam sebuah program harus memiliki tipe data yang telah diasosiasikan. contohnya jika muncul type error maka bahasa pemrograman tersebut dengan karakteristik Strong Typing.
Static variable?
variable yang mengikat pada sel memori sebelum eksekusi program dimulai dan akan tetap mengikat ke memori yang sama sampai program berhenti.
Advantage: efisiensi
Disadvantage: mengurangi fleksibilitas
int count;
…
count = count + 5;
- Set possible types for count : bound at language design time
- Type of count : bound at compile time
- Set of possible meanings for the operator symbol + : bound at language definition time
- Set of possible values of count : bound at compiler design time
- Value of count : bound at execution time with this statement
- Meaning of the operator symbol + in this statement : bound at compile time
- Internal representation of the literal 5 : bound at compiler design time