Belajar Programming untuk menjadi Programmer

Dah lama gak nulis di blog ini, setelah saya cek traffic ternyata masih ada yang baca hahaha

Kali ini saya ingin share mengenai apa yang ada di dalam fikiran saya ketika ada yang bertanya bagaimana cara untuk menjadi programmer? 1. belajar programming hehe

Beberapa kali saya ditanya mengenai bagaimana agar dapat belajar dengan mudah mengenai programming dan dapat menjadi programmer teru terutama programmer profesional. Pertama lagi, saya sendiri tidak menganggapnya mudah, programming merupakan disiplin ilmu jadi perlu disiplin juga erlatih.

Step pertama belajar programming di kampus biasanya betemu dengan Algoritma Pemrograman, lalu ada struktur data atau di satukan menjadi algoritma dan struktur data, ada juga analisis algoritma atau ada yang menyebut strategi algoritma, lalu setelah itu atau dibarengi mata kuliah lainnya yang lebih dekat dengan engineering atau science dari ilmu komputer.

Saya sendiri mendukung bahwa memang perlu untuk mempelajari secara mendalam mengenai algoritma, karena pada dasarnya akan ada satu titik ketika nanti kita belajar bahasa pemrograman itu sebenarnya tidak terlalu sulit karena hanya mengganti terminologi kata kunci yang kita gunakan dari satu bahasa ke bahasa lain. Dan dari algoritma sendiri diharapkan kita sudah dapat melihat pola berbagai persoalan dan membangun solusinya seperti yang ada pada di pembahasan computational thinking.

Selanjutnya ada struktur data, ini pun dalam pandangan saya hal penting selanjutnya karena dalam pemrograman kita tidak jarang membutuhkan menyimpan, mengambil, mengolah atau memanipulasi data dengan berbagai tipe ataupun bentuk. Sehingga dengan kita paham struktur data kita daharapkan dapat menggunakan berbagai tipe dan bentukan data dengan tepat guna dan efisien, seperti kalau meman kita membutuhkan deretan nilai numerik sebanyak 200 buah, maka kita dapat menggunakan array atau larik dibanding kita membuat 200 buah variable numerik atau integer.

Analisis algoritma dan strategi algoritma, ini salah satu hal yang menarik. Dulu sewaktu saya s1 di IF UNIKOM (2007-2011) dalam kurikulum tidak ada mata kuliah ini, saya mengenal analisis algoritma setelah lulus terutama ketika saya memulai studi magister saya di S2 IF ITB opsi sain komputer, namun setelah kurikulum zaman saya itu berakhir mata kuliah analisis algoritma sudah masuk menjadi mata kuliah wajib untuk prodi IF UNIKOM Bandung. Ilmu ini mempelajari bagaimana kita menganalisis usatu algoritma sehingga kita mengetahui seberapa efekti algoritma ini, seberapa cepat algoritma ini dijalankan, dan juga seberapa besar memori yang dibutuhkan untuk menjalan program dari algoritma tersebut. Informasi efektifitas dan efisiensi dari suatu algoritma dapat diketahui bahkan sebelum kita membuat implementasi algoritma tersebut menggunakan bahasa pemrograman dan mengeksekusinya diatas compiler dalam komputer.

Apakah ini sangat penting? ya, bagaimana jika kita tidak bisa menganalisis solusi kita lalu kita pasang algoritma itu ke produciton server tempat user menggunakan aplikasi kita lalu aplikasi kita crash mati atau freezing karena kehabisan memori? karena ternyata algoritma kita sangat kompleks sampai memori komputer tidak sanggup lagi menyimpan data kita untuk selanjutnya diolah.

Dalam analisis algoritma ini kita akan mempelajari bagaiamana menghitung kecepatan algoritma dan parameter apa yang dapat mempengaruhi kecepatan algoritma tersebut. Misalkan saya memiliki algoritm untuk menghitung nilai suatu nilai jika dipangkatkan dengan nilai tertentu:

/*
  hitung x^y = z
  x = 2; y = 3
  maka x^y = 2^3 = 8
*/
 function xpowery(x, y){

    var temp : Int = 1;

    for( i = 0; i < y; i ++) {

        temp = temp * x;

    }
    return temp
 }

Dalam code tersebut kita dapat melihat bahwa algoritma ini semakin besar nilai parameter y makan akan semakin banyak langkah yang dibutuhkan atau yang dieksekusi algoritm ini, dalam analisis algoritma kita mengenal fungsi asimptotik untuk merepresentasikan batas atas atau bawah dari banyak langkah yang diambil oleh algoritma itu terhadap parameter tertentu seperti banyak data atau nilai parameter atau variable tertentu seperti pada algoritma di atas.

Dalam analisis algoritma kita pun mempelajari berbagai strategi yang dapat kita gunakan untuk membangun suatu algoritma atau menekan kompleksitas algoritma yang kita miliki sekarang. Contoh strateginya ada brute force, greedy, devide and conquer, branch and bound, atau dynamic programming (dynamic programming bukan dynamic typing di bahasa pemrograman ya).

Dengan 3 dasar tersebut ketika kita masuk ke satu bahasa lalu berpindah ke bahasa lain tidak akan terlalu sulit. Tinggal bagaimana kita mempelajari pola sintaksnya, prilakunya, fungsi-fungsi tambahan dengan berbagai fitur dalam bahasa pemrograman tersebut, framework dan berbagai librarynya, tetapi untuk bagaimana kita memprogram pada dasarnya relatif sama.

Leave a comment