Continuation dan Abstraksi Yang Bocor
January 18, by JULIUS SIRAIT
Pertama tentang leaky abstraction (abstraksi yang bocor?) dulu. Law of leaky abstraction berbunyi:
All non-trivial abstractions, to some degree, are leaky.
TCP adalah abstraksi. TCP menjamin data yang anda kirim ke alamat tujuan pasti sampai.
Tapi suatu ketika, mungkin ada programmer dengan naifnya berusaha mengirim data pake TCP, tapi data yang dikirim adalah data live video dari suatu tempat ke tempat lain. Dia pikir supaya reliable, datanya pasti nyampe, pake TCP aja.
Ternyata hasilnya malah jelek. Data lambat nyampainya. Akibatnya banyak frame video yang harus di drop. Dan terkadang, gak ada video yang dirender sama sekali ditempat tujuan.
Kemudian si programmer bertanya2 kenapa bisa begitu? Si programmer terpaksa belajar bagaimana TCP bekerja.
LEAK!
Abstraksinya bocor! Ketika kita harus belajar bagaimana suata abstraksi dimungkinkan (diimplementasikan), berarti abstraksinya bocor.
Sekarang continuation. Apa itu continuation. Continuation sebuah abstraksi juga. Yang bikin banyak orang bingung tapi banyak orang bilang cool.
Menurut wikipedia:
a continuation represents the rest of the computation given a point in the computation.
Gak ngerti kan?
Trus ntah kenapa saya kemarin2 ketemu artikel ini oleh Sam Ruby yang menjelaskan tentang continuation ini.
Pertama2 dia menjelaskan tentang gimana local variable di C. Ini butuh pemahaman tentang call stack.
Kemudian contoh javascript untuk menunjukkan beda by value dan by reference. Yang ini perlu pemahaman tentang heap.
Trus dia menjelaskan tentang frame, bagaimana kita melihat frame. Dan seterusnya.
Permasalahannya dengan artikel ini adalah continuation yang adalah suatu abstraksi jadi bocor. Karna susahnya menjelaskan continuation ini, sampai terpaksa harus ke low level. Harus menjelaskan apa itu call stack dan heap. Bagaimana continuation ini dimungkinkan.
Di jaman Java, Python, Ruby sekarang, siapa yang tau call stack dan heap. Orang gak peduli lagi sama memory. Ada garbage collector yang ngurusi.
Kembali ke artikel di atas. Penjelasan yang begini boleh kita sebut penjelasan yang bocor :) Dimana untuk menjelaskan suatu abstraksi, kita TERPAKSA menyelam ke low level.
Bukan berarti penjelasan ini tidak baik loh. Buat saya ini sangat baik. Tapi seperti kata Joelonsoftware:
Becoming a proficient programmer is getting harder and harder.
Untuk mengerti apa itu continuation aja kita harus ke low level, belum lagi nanti kalau kita menemukan masalah pas makenya.
*) link: http://en.wikipedia.org/wiki/Continuation http://www.joelonsoftware.com/articles/LeakyAbstractions.html