13 Januari 2012

Mengapa tipe parameter fungsi sebaiknya pointer?

Hal ini berkaitan dengan efisiensi memori. Nilai parameter
bisa jadi berupa struktur yang sangat besar. Dengan menggunakan
pointer maka ukuran untuk menunjuk struktur apapun akan selalu
sama, seukuran pointer.

Sementara jika parameternya merupakan tipe bukan pointer
maka diperlukan memory untuk mengkopi struktur tersebut
yang bisa jadi sangat besar, dan ini adalah pemborosan.

Akumulator

Pada topik pelajaran pemrograman rekursif, akan kita jumpai
dua macam pola; dengan dan tanpa akumulator.
Meskipun hal ini terlihat sepele dan yang terlihat hanya
terjadi pertambahan parameter pada pola dengan akumulator,
namun jauh di dalamnya terdapat konsep yang sangat penting,
yaitu tail recursion.

Pola dengan akumulator adalah program yang menggunakan tail
recursion. Keuntungannya program semacam ini tidak menggunakan
stack dalam proses rekursifnya, sehingga bisa dikatakan dapat
membuat rekursi berapapun juga.

Pada pola tanpa akumulator, setiap melakukan rekursi harus menyimpan
pointer untuk melakukan komputasi selanjutnya setelah titik rekursi. Pointer
ini biasanya disimpan dalam stack, sementara stack adalah sumber daya
yang terbatas, sehingga jika melakukan rekursi berkali-kali makan stack
akan overflow.

Lebih jauh, pada pemrograman level bawah, pola rekursif adalah haram,
mengingat keterbatasan stack tersebut. Silahkan lihat materi sistem operasi
tentang bagaimana stack ini biasanya dialokasikan secara static.