Awal Sebuah Perjalanan

Dulu sempat terjadi diskusi (atau mungkin lebih tepat kalau disebut “debat”) antara anak-anak Omah TI di Lab Inovasi mengenai bahasa pemrograman favorit, C++ atau Java? Setelah diusut, ternyata perdebatan ini adalah lanjutan dari diskusi serupa di milis himakom-ugm. Herannya, pembicaraan seputar masalah bahasa pemrograman favorit masih selalu menjadi topik yang hangat hingga saat ini. Malah kadang-kadang diskusi melebar sampai masalah platform, Windows vs Linux vs pragmatisme (tentu saja saya ikut yang terakhir ;p).

Sejauh pengamatan saya, di Ilkomp banyak pengguna Pascal, Delphi, Java, C#, C++, dan PHP. Namun, pertarungan yang paling panas mungkin adalah antara Java dan C# karena kedua bahasa tersebut sangat mirip. Selain itu, tentu saja, keduanya mewakili dua musuh bebuyutan, Microsoft dan Sun Microsystems. Tapi santai saja, saya tidak akan membahas masalah “panas” ini. Sesuai dengan komitmen pembuatan blog ini, saya tidak akan menulis mengenai hal-hal yang “rawan konflik, polemik, dan kontroversi”. Terlebih lagi, beberapa waktu ini saya banyak jalan-jalan di blogosfer dan menjumpai banyak “keributan”. Makanya…, ah sudahlah kok malah jadi nggak fokus nih… ^-^

Saya cuma gatal ingin menulis pengalaman saya (yang baru seumur jagung) dalam dunia pemrograman, setelah mengikuti diskusi tadi. Mudah-mudahan membantu bagi orang yang ingin mulai belajar pemrograman namun masih bingung mau memilih bahasa apa. Agar mereka tidak seperti saya, yang pada tahap-tahap awal malah berdalam-dalam dengan masalah “bahasa pemrograman” dibanding “pemrograman” itu sendiri.

Python

Seperti kebanyakan orang yang mulai belajar pemrograman dari nol secara otodidak, langkah pertama saya memasuki dunia “seni” ini berujung pada kebingungan. Buku-buku algoritma dan pemrograman itu tidak pernah memberi tahu di mana saya harus menulis kode program dan bagaimana menjalankannya. Saya masih belum tahu mengenai kompiler atau interpreter dan di mana saya bisa mendapatkan keduanya.

Akhirnya, saya menemukan salah satu buku dari Seri Freeware Populer terbitan Elex Media Komputindo yang berjudul Pemrograman Python. Buku tersebut menyertakan CD yang berisi Python for Windows versi 2.2.2 sehingga saya tidak perlu repot-repot mencarinya sendiri. Dengan demikian, mulailah saya melakukan coding.

Sayangnya, buku tersebut lebih banyak membahas mengenai manipulasi variabel dan tipe data. Hal-hal seperti ekspresi logika dan kontrol program hanya sedikit dibahas. Intinya, Pemrograman Python lebih menitikberatkan aspek bahasa pemrograman itu sendiri dibanding bagaimana kita membuat program untuk memecahkan masalah.

Hambatan yang saya alami adalah buku algoritma dan pemrograman yang ada menggunakan bahasa Pascal, sedangkan saya masih belum tahu di mana saya bisa memperoleh kompilernya. Satu-satunya program yang berhasil saya buat sendiri (tanpa contoh) dengan Python adalah program untuk menghitung determinan matriks persegi berordo 3.

JavaScript

Saya belajar JavaScipt sebagai kelanjutan dalam pengembaraan menuntut ilmu pemrograman web. Ini adalah bahasa yang menarik bagi saya waktu itu karena mampu mengakses fungsionalitas browser dengan struktur objek hirarkis yang sederhana. Saya banyak memakainya untuk navigasi dan animasi gambar. Saya pun mulai meraba-raba konsep pemrograman berorientasi objek dengan JavaScript. Kitab rujukan saya adalah Java dan Javascript karya Ahmad Daniel Sembiring.

C

STMIK Akakom mengadakan Broad Base Education (BBE) untuk SMA saya waktu semester 2 kelas II. Seorang teman mendaftarkan saya pada program Pelatihan Bahasa C tanpa memberitahu. Hari pertama pelatihan, bersama teman-teman yang lain yang juga didaftarkan “secara paksa”, kami langsung diberi modul dan diajar langsung oleh dosen Akakom dan beberapa asisten. Kami menulis listing program yang ada di modul tanpa memahami apa maksudnya. Lha saya saja yang sudah kenalan sama Python dan JavaScript saja bingung je, apalagi teman-teman saya yang buta masih sama sekali. Lagipula bahasa C bersifat simbolik (bandingkan dengan Pascal) yang tentu saja kelihatan rumit bagi pemula.

Walhasil, pertemuan-pertemuan berikutnya cuma sedikit anak-anak yang berangkat. Mungkin cuma saya dan beberapa teman yang lain yang setia mengikuti pelatihan. Dibimbing oleh (saya masih ingat namanya lho..) Ibu Febri Nova Lenti dan asistennya Mas Jun, kami belajar dengan kompiler Borland C++ 2.0. Bu Febri lah orang pertama yang memberitahu saya bahwa programming dan coding adalah dua hal yang berbeda, coding berurusan dengan bahasa pemrograman yang spesifik sementara pemrograman adalah “seni”. Saya juga pertama kali mengenal yang namanya abstract data type (ADT) dan apa itu stack alias tumpukan dari beliau, meskipun saya masih belum tahu apa kegunaannnya dan bagaimana mengimplementasikannya pada program.

Tidak menyerah begitu saja, saya mulai mencari buku-buku mengenai bahasa C di perpustakaan. Ada dua buku yang saya dapat, yang satu seperti Pemrograman Python, lebih banyak membahas aspek bahasa pemrograman dibanding algoritma. Buku kedua lebih rumit, membahas langsung aplikasi-aplikasi yang dibuat dengan bahasa C. Berita buruknya adalah, kedua buku tersebut merupakan buku terbitan lama pada masa kejayaan MS-DOS yang tentu saja tidak sezaman dengan Windows XP. Akhirnya saya menyerah waktu naik kelas III dan memutuskan untuk menekuni pemrogaman web (sejujurnya, yang benar saat itu saya baru mulai niat sekolah supaya lulus UAN/UM/SPMB ;p).

Pascal

Alhamdulillah, akhirnya, saya diterima di Ilmu Komputer UGM. Semester pertama memang belum intensif diajari pemrograman, tetapi bukan SeaGate namanya kalau cukup puas dengan materi kuliah semata. Setelah memperoleh Turbo Pascal saya kembali menggeluti kitabnya Antony Pranata yang dulu cuma saya baca tanpa diikuti latihan, Algoritma dan Pemrograman. Cuma (hampir) benar-benar khatam sampai bab percabangan, seterusnya ya loncat-loncat (mulai sadar kalo belajar dari buku itu nggak harus linier, tapi ya sesuai kebutuhan pembaca).

Lumayan, dengan Pascal dan Algoritma dan Pemrograman (serta pengetahuan dasar dari ilmu-ilmu sebelumnya) saya mulai mendapat pencerahan dalam belajar pemrograman. Proses tipikalnya adalah masukan, proses, dan keluaran. Memang cukup sederhana, tetapi cukup berarti dalam tahap belajar selanjutnya.

PHP

Tak bosan-bosannya saya katakan bahwa saya telah mempelajari HTML, CSS, dan JavaScript sejak SMA. Apa yang membuat saya tertarik untuk belajar membuat halaman web adalah buku Tri Aji Winasis yang berjudul Trik Membangun Situs Web Gratis!. Tapi, perjalanan saya dalam belajar pemrograman web adalah cerita lain. Pokoknya, dulu saya mengira kalau pemrograman web dengan server-side script hanya bisa dilakukan oleh pengguna komputer rumahan yang memiliki koneksi ke internet. Walhasil, saya jadi enggan belajar server-side script seperti PHP.

Akhirnya, setelah lulus SMA saya baru tahu kalau kita bisa menginstal aplikasi web server dan database server di PC biasa. Terima kasih untuk Mas Abe Poetra yang telah menulis artikel instalasi PHPTriad di IlmuKomputer.Com.

Menjelang akhir semester pertama di Ilmu Komputer UGM, saya mendaftar ke Lembaga Riset Omah TI di kampus. (mungkin) karena bekal pengetahuan saya di bidang pemrograman web, saya diterima di divisi web. Sejak itulah saya mulai belajar PHP.

Tentu saja saya masih banyak menulis apa yang kemudian saya ketahui sebagai spaghetti code, kode HTML yang tercmpur tak karuan dengan kode PHP. Maklum, namanya baru belajar. Demikian juga ketika berhubungan dengan basisdata, saya cuma asal pakai dan asal jalan. Untungnya semester II saya mengambil mata kuliah Basisdata dan itu lumayan menolong dalam bekerja dengan MySQL.

Saya telah mencoba membuat aplikasi perpustakaan pribadi dan perpustakaan e-book Omah TI dengan PHP dan MySQL. Apa yang membuat saya lebih bersemangat mempelajari PHP adalah fakta bahwa banyak aplikasi antarmuka basisdata yang dibuat dengan PHP meskipun tidak dipasang di internet.

Java

Algoritma dan Pemrograman merupakan mata kuliah wajib pada semester II. Dosen kami, Pak Nurrokhman, melakukan terobosan dengan menggunakan Java sebagai bahasa pengantar. Awalnya, saya sempat agak malas karena saya pernah mendengar kalau Java itu tidak bagus untuk mulai belajar pemrograman dan program-programnya berjalan lambat karena menggunakan mesin virtual. Saya sebenarnya lebih ingin menggunakan C++ atau Pascal. C++ karena ini adalah bahasa yang setahu saya waktu itu banyak digunakan untuk membuat program-program beneran. Pascal karena sebelumnya saya belajar algoritma secara otodidak dengan Pascal dan itupun belum lama.

Ternyata dugaan saya tidak terlalu salah, tapi juga tidak terlalu benar. Agak repot memang belajar algoritma dengan java karena sifatnya yang murni berorientasi objek, bahkan bagi saya yang belum terlalu terbiasa dengan Pascal. Jadi kami masih menggunakan Java secara prosedural dan asal jalan. Waktu itu saya malah belum tahu apa itu objek, referensi ke objek, alokasi memori dinamik, dan terpaksa menggunakan keyword static pada metode agar kelakuannya seperti fungsi pada Pascal.

Apa yang mematahkan asumsi saya adalah: Java sangat baik untuk memulai belajar pemrograman berorientasi objek. hal ini disebabkan sifatnya yang murni berorientasi objek. Pada masa-masa akhir kuliah kami sempat diperkenalkan dengan object based programming (OBP) dan object oriented programming (OOP). Dan di sinilah kekuatan Java mulai terlihat. Pak Nur juga “berpromosi” bahwa siapa saja yang ingin tertarik belajar pemrogrman berorientasi objek lebih lanjut, semester depan ada mata kuliah Pemrograman Berorientasi Objek dan dosennya juga beliau.

Saya pun tetarik dengan “promosi” dari Pak Nur. Pada semester III terasa sekali Java sangat membantu saya dalam mengerjakan tugas-tugas kuliah. Padahal sebelumnya saya berniat menekuni C++ pada semester III, namun hal ini sulit mengingat keterbatasan pengetahuan dan referensi saya mengenai C++ dan kompiler C++ yang saya miliki. Tugas-tugas kuliah seperti Struktur Data dan Pengantar Analisis Algoritma saya kerjakan dengan C++. Waktu itu saya merasa lebih nyaman menggunakan C++ karna adanya pointer sedangkan saya belum tahu kalau referensi ke objek pada Java juga mirip-mirip pointer. Hanya saja pada Java sudah tersedia kelas-kelas abstract data type dan penanganan memori diserahkan pada garbage collector.

Tugas-tugas pada mata kuliah Grafika Komputer pun semula ingin saya kerjakan dengan C atau C++ dengan OpenGL. Karena sulitnya mengkonfigurasi Dev-C++ saya dan pustaka OpenGL yang saya dapatkan hanya untuk MS Visual C++ komersial saya pun beralih ke Java. Awalnya saya sempat kesulitan untuk memulai pemrograman grafik dan GUI pada java. Namun, berkat ketekunan dan bimbingan dari kitab Java How To Program karya Deitel bersaudara saya menjadi (menurut saya sendiri) lumayan terampil membuat aplikasi grafik dengan Java. Satu hal yang waktu itu saya sadari: Java memang memudahkan pemrogram, sementara C++ memberikan fleksibilitas bagi pemrogram untuk meningkatkan unjuk-kerja program.

Saya pun menjadi lebih bersemangat mempelajari Java. Kitab Java How To Program, yang ternyata sama dengan kitab tebak yang selalu dibawa oleh Pak Nur (punya saya cuma e-book ;P), banyak bermanfaat bagi saya dalam mengeksplorasi kemampuan Java. Apalagi banyak terdapat dokumentasi, tutorial, dan paket-paket Java tambahan yang tersedia secara gratis di internet. Bahkan sekarang JDK telah di GPL-kan.

Penutup

Mempelajari bahasa Inggris berbeda dengan berbeda dengan belajar berkomunikasi dengan bahasa Inggris. Dalam konteks bahasa manusia, belajar bahasa berbeda dengan belajar berbahasa. Demikian pula halnya dengan belajar bahasa pemrograman dan belajar pemrograman.

Saran saya bagi orang yang benar-benar baru mulai belajar, jangan pernah belajar berdalam-dalam mengenai bahasa pemrograman. Singkirkan jauh-jauh pemikiran seperti “saya ingin belajar PHP” dan gantikan dengan “saya ingin belajar pemrograman web dengan PHP”.

Bahasa pemrograman, yang datang bersama compiler/interpreter dan sekumpulan pustaka (library), hanyalah sebuah alat. Apa yang sebenarnya dibutuhkan pengguna adalah apa yang dihasilkan dengan alat tersebut. Kita tidak bisa hanya belajar mengenai alat tanpa tahu apa kegunaan dan bagaimana menggunakan alat tersebut. Belajar pemrograman adalah sesuatu yang tidak liner. Untuk belajar pemrograman Anda harus bisa menggunakan bahasa pemrograman sementara saya yakin Anda akan frustasi kalau hanya berdalam-dalam belajar sintaks, tipe data dan fungsi-fungsi standar dalam bahasa pemrograman.

Carilah masalah dan cobalah pecahkan dengan sebuah bahasa pemrograman. Aplikasi pemrograman sendiri terdapat pada banyak bidang seperti pemrograman basisdata, GUI, grafik, multimedia, web, dan jaringan.

[Salah satu sifat jelek saya adalah takut menghadapi masalah dan lebih suka menghindarinya. Dan hal itu sebenarnya adalah masalah bagi saya. Saya lebih suka mencari-cari masalah yang tidak akan menimbulkan masalah baru yang lebih gawat bila gagal diselesaikan seperti masalah-masalah dalam dunia pemrograman ;p.]

No related posts.