Penjelasan Singkat OOP, Vectorized programming, dan Functional programming - Om Heker

Wednesday, September 25, 2019

Penjelasan Singkat OOP, Vectorized programming, dan Functional programming

Baca Juga



helo sobat omheker, kali ini omheker akan menjelaskan sedikit tentang Penjelasan Singkat OOP, Vectorized programming, dan Functional programming, yuk kita simak penjelasan dibawah ini.
Sepertinya ketiga hal ini kurang bisa dibandingkan secara langsung karena mereka mungkin beririsan dalam beberapa hal. Saya coba jelaskan dengan mengimplementasi sebuah task menjumlahkan dua vektor element-wise: [a, b, c] + [d, e, f] = [a+d, b+e, c+f] dengan tiga paradigma tersebut.
Pemrograman berorientasi objek: konsep pemrograman yang memungkinkan kita menaruh fungsi 'method' sebagai atribut dari struktur data (kelas).

Java

  1. class MyList {
  2. private List<Integer> list;
  3.  
  4. public MyList(List<Integer> list) {
  5. this.list = list;
  6. }
  7.  
  8. public List<Integer> getList() {
  9. return list;
  10. }
  11.  
  12. public void addOtherList(MyList myOtherList) {
  13. for (int i = 0; i < list.size(); i++) {
  14. list.set(i, list.get(i) + myOtherList.getList().get(i));
  15. }
  16. }
  17. }
  18.  
  19. public static void main(String[] args) {
  20. List<Integer> a = new ArrayList<Integer>();
  21. List<Integer> b = new ArrayList<Integer>();
  22. for (int i = 0; i < 3; i++) {
  23. a.add(i); // [0, 1, 2]
  24. b.add(i); // [0, 1, 2]
  25. }
  26. MyList myList = new MyList(a);
  27. MyList myOtherList = new MyList(b);
  28. myList.addOtherList(myOtherList);
  29. System.out.println(myList.getList());
  30. // [0, 2, 4]
  31. }
Pemrograman fungsional: konsep pemrograman yang menggunakan fungsi sebagai basis komputasi. Fungsi yang dimaksud adalah fungsi yang murni tanpa efek samping seperti fungsi pada matematika; fungsi dengan parameter yang sama akan selalu mengembalikan nilai yang sama.

Haskell

  1. sumList :: [Integer] -> [Integer] -> [Integer]
  2. sumList x [] = x
  3. sumList [] x = x
  4. sumList (x:xs) (y:ys) = x+y:(sumList xs ys)
  5.  
  6. main = print (sumList [0, 1, 2] [0, 1, 2])
  7. -- [0, 2, 4]
Pemrograman vektor: konsep pemrograman yang menggunakan vektor atau memungkinkan penggunaan vektor sebagai unit komputasi. Tanpa pemrograman vektor, kita harus menjumlahkan skalar dalam vektor satu per satu sampai semua elemen terjumlahkan, sedangkan dengan vektor kita bisa melakukan operasi yang biasa kita lakukan untuk data skalar langsung terhadap vektor. Saya belum pernah memprogram di bahasa yang natively bisa mengoperasikan vektor seperti R jadi saya pakai Numpy.

Python dengan Numpy

  1. import numpy as np
  2.  
  3. a = np.array([0, 1, 2])
  4. b = np.array([0, 1, 2])
  5.  
  6. print(a + b)
  7. # [0, 2, 4]
Dari contoh program Java yang saya tulis, bisa terlihat kalau pemrograman prosedural (yang kebetulan berorientasi objek) lebih verbose dan kita perlu menuliskan perintah di tingkat yang lebih rendah untuk komputer. Kita perlu memberitahu komputer untuk menjumlahkan elemen per elemen dari vektor dengan cara menggerakan pointer dari depan ke belakang vektor.
Pada contoh Haskell, saya hanya mendefinisikan kalau fungsi saya menerima 2 vektor integer, jika salah satunya kosong, kembalikan yang lain; selain itu jumlahkan elemen pertama dari kedua vektor dan panggil rekuren dengan sisa elemen vektor.
Pada contoh Numpy, kita cukup mendefinisikan vektor dan langsung dijumlah.
Comments


EmoticonEmoticon