Names, Binding, And
Scopes
Bahasa Imperative adalah abtsraksi dari arsitektur von
neuman. Variable dapat di karakteristkkan dengan kumpulan properties, atau
attribute, dan yang paling penting adalah tipe dari konsep bahasa pemrograman
nya.
Names adalah sebuah string karakter yang digunakan untuk
mengidentifikasi beberapa entity dalam
sebuah program. Sebuah names dapat mengandung kalimat, digit, atau pun
underscore karakter (_).
Special Words
Special words dalam bahasa pemrograman digunakan untuk
membuat program lebih dapat dibaca dengan menamai aksi yang akan dilaksanakan.
Digunakan juga untuk memisahkan antara statement dan program.
Keyword adalah kata dalam sebuah bahasa pemrograman yang
special dan berada pada context tertentu saja.
Reserved word adalah special kata dari sebuah bahasa
pemrograman yang tidak dapat digunakan sebagai nama. Dalam reserved word ada
problema sebagai contoh :
Integer Real
Real Integer
Statement diatas mendeklarasikan program variable real itu adalah tipe integer dan variable integer
itu adalah tipe real
Variable
Variable adalah abstraksi dari memory cell computer atau
kumpulan cell.
Variable attribute terdiri dari :
-
Name = nama dari sebuah variable, hamper setiap
variable memiliki nama.
-
Address = address dari sebuah variable dalam
mesin memory dimana dia di asosiasikan. Asosiasi ini tidak se-simple yang di
perkirakan, bisa saja variable yang sama di asosiasikan dengan alamat yang
berbeda dan pada waktu yang berbeda pada sebuah program. Aliases adalah ketika
satu nama variable dapat mengakses lokasi memory yang sama. kelemahan aliasing
adalah memperbolehkan variable untuk mengubah nilai berdasarkan tugas dari
variable yang lain.
-
Type = variable menentukan range nilai dari
variable yang di simpan dan set operasi yang mendefinisikan nilai dari type.
Contoh : tipe int pada java memiliki range -2147483648 sampai 2147483647.
-
Value = variable content dari memory cell atau
cell asosiasi dengan variable.
Binding
Binding adalah asosiasi antara attribute dan entity, seperti
antara variable dengan tipe nya atau nilai, atau antara sebuah operasi dan
symbol. Binding time adalah aktu yang dibutuhkan dalam melakukan binding.
Sebagai contoh :
count = count + 5;
tipe count binding dengan waktu compile.
Binding dapat ditentukan tipe nya. Static binding yaitu terjadi sebelum program
berjalan, dan tetap sama selama program eksekusi. Dynamic binding yaitu binding terjadi ketika
program sedang berjalan dan nilai dapat berubah selama program dieksekusi.
Storage binding and lifetime
Ada 2 tipe storage binding yaitu :
Allocation : mengambil cell dari kolam memori cell yang
tersedia
Deallocation : sel memori yang telah tidak terikat dari variabel dikembali ke kolam memori
yang tersedia.
Lifetime variable dimulai ketika cell spesifik terikat, dan berakhir
ketika tidak terikat dari cell itu.
Terdapat 4 kategori type binding yaitu :
1.
Static
Static = cell yang terikat pada memory cell
sebelum eksekusi dimulai, dan tetap terikat pada memory cell yang sama sampai
program eksekusi selesai.
(+) semua addressing pada static variable
bersifat langsung.
(-) mengurangi fleksibilitas(tidak support
untuk reculsive program)
2.
Stack dynamic
Stack dynamic variable = storage binding
dibuat ketika deklarasi statement dijelaskan, tapi tipe nya bersifat terikat.
(+)support dynamic storage(reculsive)
(-)waktu akses yang lambat karena
addressing tidak langsung
3.
Explicit heap dynamic
Explicit heap dynamic = abstrak memory cell
yang di alokasi dan dealokasi dengan instruksi eksplicit run-time yang ditulis
oleh programmer. Variable nya hanya bisa dialokasikan oleh pointer atau
reference variable. Sebagai contoh :
int *intnode; // Create a pointer
intnode = new
int; // Create the heap-dynamic variable
. . .
delete intnode; // Deallocate the heap-dynamic variable
//
to which intnode points
Explicit heap dynamic variable pada tipe
int dibuat oleh operator new.
Variable ini bisa di referensikan melalui pointer , intnode. Nantinya variable di deallocation
dengan delete operator.
(+) storage manajemen yang dinamis.
(-) tidak efisien dan tidak handal.
4.
Implicit heap dynamic
Implicit heap dynamic terikat dengan heap
storage ketika ada nilai yang ditugaskan.
Sebagai contoh:
highs = [74, 84, 86, 90,
71];
variable bernama highs sudah di deklarasi
di sebelumnya, dan sekarang digunakan pada array 5 data.
(+) memiliki fleksibilitas yang
memperbolehkan high generic code untuk ditulis ulang.
(-)run-time overhead mempertahankan
semua atribut dinamis,
yang akan mencakup jenis array subscript dan range.
Static
scope
Static scope adalah metode bindung nama ke
nonlocal variable.
Ada 2 kategori static scope :
-
Dimana subprogram bisa di nested, yang membuat
nested scope
-
Program tidak dapat di nested, nested scope hanya dapat dibuat oleh nested
class dan blocks.
function
big() {
function
sub1() {
var
x = 7;
sub2();
}
function
sub2() {
var
y = x;
}
var
x = 3;
sub1();
}
Pada potongan kode diatas variable x pada sub adalah
mengambil x yang di deklarasikan pada prosedur big. In benar karena pencarian x
dimulai pada prosedur reference yang terjadi pada sub2, big, ketika dekalarsi x
ditemukan.
Blocks
Block adalah metode membuat static scope dalam sebuah
program. Sebagai contoh :
void
sub() {
int
count;
. . .
while
(. . .) {
int
count;
count++;
. . .
}
. . .
}
Referensi count pada while adalah loop local count. Dalam
kasus ini, count tersembunyi pada while loop.
Evaluasi static
scooping
Static scoping dapat bekerja pada banyak situasi.
Masalah : - terlalu banyak akses
-
Program awal di hancurkan dan local variable biasa
nya menjadi global
-
Subprogram gravitate menjadi global dari pada
nested
Dynamic scope
Referensi pada variable terhubung melalui deklarasi dengan
mencari kembali melalui rantai dari subprogram yang memaksa panggil eksekusi
poin
function big() {
function sub1()
var x = 7;
function sub2() {
var y = x;
}
var x = 3;
}
Static scopping : x
pada sub2 ke x pada big
Dynamic scoping : x pada sub2 ke x paada sub1
No comments:
Post a Comment