Monday, April 30, 2012

How Compiler works

Bagaimana cara kompiler bekerja? pertama tahap preprocessing dimana akan di ekpansi source codenya.Lalu kedua yaitu tahap compilation, disini source code tersebut akan diubah menjadi bahasa assembly. Tahap ketiga adalah Assembling yaitu konversi dari bahasa assembly menjadi kode mesin.. Terakhir Linking yaitu object kode mesin di link dengan file yang lain (e.g. executable).
Enhanced by Zemanta

Pointer Problems

Example of How Pointer Works
Penggunaan pointer memang  efektif dalam mengelola memori dinamik dengan indirect addressing. Namun ada beberapa masalah yang sangat fatal jika kita menggunakan pointer , yaitu Dangling pointers dan Lost heap-dynamic variable.

Keadaan ketika pointer menunjuk ke variabel heap-dynamic yang telah di deallocated (tidak dapat diakses lagi disebut Dangling Pointers.


Lost heap-dynamic variable yaitu Alocated heap-dynamic variable yang tidak dapat lagi diakses oleh pemrogram tersebut.

Untuk Masalah Dangling Pointers ada solusinya yaitu :


  • Tombstone : menambahkan sel heap yang berupa pointer ke heap-dynamic variable. Variabel pointer aktual hanya menunjuk ke tombstone. Jika variabel heap-dynamic di de-allocated, tombstone tetap ada tetapi di-set ke nil.
  • Locks-and-keys : nilai pointer disajikan sebagai pasangan. Variabel heap-dynamic disajikan sebagai variabel plus sel nilai integer lock. Jika variabel heap-dynamic dialokasi, nilai lock di-create dan diletakan di sel lock dan sel key.
Enhanced by Zemanta

Sunday, April 29, 2012

Type Checking , Strongly Typed , Coercion , Cast , Narrowing & Widening Conversion

Type Checking adalah aktivitas untuk meyakinkan bahwa operand suatu operator adalah tipe yang kompatibel (bisa digunakan oleh operator atau dibolehkan secara aturan yang berlaku).Strongly Typed adalah jika semua bentuk error selalu dideteksi oleh bahasa pemograman.

Coercion adalah operand kompatibel yang dibolehkan oleh aturan yang berlaku untuk dikonversi secara implisit oleh kompilator menjadi tipe yang legal.Cast adalah mirip dengan coercion namun dikonversi secara eksplisit oleh kompilatornya agar menjadi tipe yang legal.

Narrowing Conversion adalah konversi objek ke tipe baru yang tidak mengakomodasi semua nilai dari tipe aslinya. contoh adalah float ke int dimana nilai desimal float tidak dimasukan ke int.Widening Conversion sama seperti Narrowing namun konversi mancakup aproksimasi semua nilai dari tipe asli. contoh int ke float.

Operator Overloading

Bahasa C / C++ mempunyai kelebihan dari bahasa yang lain, yakni Operator Overloading. Kemampuan tersebut berguna untuk memberitahu compiler bagaimana melakukan suatu operasi ketika operator yang sama digunakan oleh satu variabel atau lebih.

Contoh simpel Operator Overloading :

int volume(int a, int b);
void volume(int c);
terlihat bahwa "volume" punya 2 nama variabel yang sama namun fungsinya beda.

Arsitektur Von Neumann


Jika anda sedang mempelajari Konsep Bahasa Pemograman pastinya istilah Von Neumann sangat akrab dipikiran anda. Istilah arsitektur Von Neumann (Von Neumann architecture / model) berasal dari seorang ilmuwan komputer John von Neumann 30 Juni 1945. Arsitektur Von Neumann menggambarkan tentang desain arsitektur untuk sebuah komputer elektronik digital terdiri empat bagian utama yaitu :

  1. Arithmetic Logic Unit (ALU).
  2. Control Unit yang menampung instruction register dan program counter.
  3. Memory untuk menyimpan data dan instruksi juga mass external storage.
  4. Mekanisme input dan output.
Lalu terdapat juga istilah Von Neumann Bottleneck yaitu kecepatan koneksi antara memori komputer dan prosesor menentukan kecepatan komputer. Instruksi program dieksekusi jauh lebih cepat daripada kecepatan koneksi yang hasilnya kecepatan koneksi ada dalam bottleneck (faktor pembatas utama kecepatan komputer).
Enhanced by Zemanta