Subprograms
Subprogram adalah
pondasi block dari sebuah program yang memiliki bentuk terpentitng dalam konsep
design bahasa pemrograman.
Memiliki 2 dasar
dari abstraksi fasilitas:
1. Process
abstraction
2. Data
abstraction
Dasar dari
sebuah subprogram adalah :
-
Memiliki sebuah subprogram pada setiap
single entry point
-
Pemanggilan nya tergantung selama
eksekusi dari subprogram yang di panggil
-
Control selalu mengembalikan ke
pemanggil ketika memanggil menghentikan eksekusi subprogram
Local
referencing, environments
Local variable dapat
stack dynamic
Keuntungan :
-
Support recursion
-
Storage untuk local di share antara sesame
subprogram
Kerugian :
-
Alokasi / de-alokasi, waktu inisialisasi
-
Indirect addressing
-
Subprogram tidak bisa history sensitive
Local variable
static
Keuntungan dan
kerugian dari static adalah kebalikan dari stack dynamic
Nested
subprogram
Nested subprogram
adalah subprogram yang diambil sesuai dengan keperluan, jadi tidak perlu
menjalankan semua fungsi dari program untuk memanggil subprogram.
Metode
parsing parameter
Formal parameter
memiliki 3 model semantic yang berbeda yaitu :
1. In
mode
2. Out
mode
3. In-out
mode
Implementasi model
parsing parameter :
1. Pass
by value
2. Pass
by result
3. Pass
by value result
4. Pass
by reference
5. Pass
by name
Implementasi parsing
parameter method
Dalam banyak
bahasa komunikasi parameter mengambil tempat saat melakukan run-time stack. Pass
by reference adalah implementasi tersimple dan hanya untuk address yang di
tempatkan pada stack.
Designing
considerations
Ada 2 pertimbangan
yang di masukkan dalam parameter passing method yaitu :
-
Efisiensi
-
One-way / two-way data transfer
2 metode diatas memiliki
konflik :
-
Programming yang baik menyarankan access
terbatas pada sebuah variable, yang berarti one-way setiap berhasil.
-
Pass by reference lebih efisien untuk pass
struktur pada ukuran yang signifikan
Parameter
that are subprogram
Masalahnya
ada pada referensi lingkungan untuk mengeksekusi subprogram passed harus digunakan
yaitu :
1. Shallow
binding
Pemanggilan statement memberlakukan melewati subprogram
Sangat natural untuk dynamic scoped
2. Deep
binding
Lingkungan dari definisi dari passed subprogram
Paling natural untuk static scoped languange
3. Ad
hoc binding
Lingkungan
dari statement yang di panggil yang passed subprogram
Overloaded
subprogram
Subprogram yang
memiliki nama yang sama dengan subprogram lain pada lingkungan referensi yang
sama.
Generic
subprogram
Mangambil parameter dari tipe yang berbeda
aktivasi. Overloaded subprogram memberikan ad hoc polymorphism. Subtype polymorphism
adlaah variable tipe T dapat akses semua objek tipe T atau semua tipe turunan
dari T.
Closures
Subprogram dan
reference environment dimana di definisikan.
-
Reference environment dibutuhkan jika
subprogram dapat di panggil dari mana arbitrary place pada subprogram.
-
Bahasa static scope yang tidak
mengijinkan nested subprogram tidak membutuhkan closures
-
Hanya dibutuhkan jika subprogram
mengakses variable pada nesting scopes dan dapat dipanggil dari mana saja.
Coroutines
Coroutine adalah
subprogram yang memiliki multiple entries dan mengontrol nya untuk mereka
sendiri, di support langsung pada Lua. Symmetric control adalah pemanggil dan
yang di panggil coroutines dalam ukuran yang sama. couroutine call disebut
dengan resume. Coroutines memberikan quasi-concurrent execution dari program
unit.