Sunday, 15 June 2014

Why C++ is not just an Object-Oriented Programming Language: Programming Style and Language (3)

Programming Style and Language Features (3)


7.) Generic Programming

7.1) Parametrization
Konsep independent harus direpresentasikan secara independen, dan harus dikombinasikan hanya saat dibutuhkan.
Independence tersebut dapat diekspresikan secara langsung. Berikut ini merupakan parametrized string oleh karakter-karakter ada di dalamnya, sehingga kita dapat membuat string baik pada built-in dan user-defined character types.

template<class C>
class string {
// ...
};
class Jchar {
// Japanese characters
};
string<char> s1, s2;
string<unsigned char> us1, us2;
string<Jchar> js1, js2; 

7.2) Containers and Algorithms
Containers dan algorithms dalam standard library C++ menggunakan suatu jenis yang menjaga agar konsep independent terpisah. Banyak library berdasarkan pada notion dari suatu sequence, seperti array, sets, lists, maps, files.
Suatu sequence memiliki begin dan end. Bagian end berada di luar elemen terakhir pada sequence. Posisi dalam sequence direpresentasikan oleh iterator.


Suatu sequence yang diawali oleh begin dan end





Dengan adanya iterator untuk suatu elemen kita dapat menuju ke elemen berikutnya dengan menggunakan '++' (increment), dan dapat mengakses elemen tersebut menggunakan '*' (dereference).
Dengan simple notion ini, banyak algoritma berguna yang dapat diterapkan. Sebagai contoh, fungsi pada template ini menulis seluruh elemen pada container, dengan output:

template<class C>
void print(C& s)
{
  C::iterator p=s.begin();
  while ( p!=s.end() ) 
  {
   cout << *p; // output
   p++; // next
  }
}


Containers dan algorithms pada standard library C++ dikerjakan oleh Alex Stepanov. Banyak containers dan algorithms dapat diekspresikan hanya dengan menggunakan beberapa jenis iterator. Namun, hal yang penting adalah hasil dari generic algorithm lebih efisien jika dibandingkan dengan hand-crafted assembly code.


Sumber:
Stroustrup, Bjarne. Why C++ is not just an Object-Oriented Programming Language. AT&T Bell Laboratories (online), diakses pada tanggal 14 Juni 2014 dari http://www.stroustrup.com/oopsla.pdf

No comments:

Post a Comment