Sekedar sharing sedikit, beberapa bulan yang lalu saya sempat sedikit dibingungkan dengan beberapa pendapat para ahli ahli programming yang beredar di forum-forum developper. Masing-masing ahli tetap bersikeras pada pendapatnya masing-masing bahwa bahasa pemrograman yang menurut mereka yang mereka kuasai merupakan bahasa pemrograman yang powerfull. Misalkan, seorang ahli networking berpendapat bahwa bahasa terbaik menurut mereka bahasa C/C++. Kenapa?  dikarenakan dengan bahasa C/C++ banyak digunakan dalam hal developper OS seperti OS Linux dan keluarga*nix,  sedangkan untuk programmer-programmer desktop memberikan anggapan bahwa bahasa pemrograman JAVA merupakan bahasa yang powerfull dan sangat banyak digunakan di trend teknologi masa kini. Hal ini bisa dikatakan benar dikarenakan sebagian besar software-software aplikasi sekarang rata-rata di develop menggunakan bahasa JAVA bahkan untuk pembuatan aplikasi android pun kita bisa menggunakan bahasa JAVA. Lain halnya dengan para maniac system operasi Windows, mereka beranggapan bahwa bahasa pemrograman .Net merupakan bahasa pemrograman terbaik dan banyak menjadi based programming language software-software keluaran keluarga microsoft. Pendapat demikian sah-sah saja dikarenakan para ahli tersebut mempunyai kepentingan yang berbeda beda di bidangnya masing-masing, misalkan seorang ahli networking sangat membutuhkan bahasa C/C++ karena mereka harus dihadapkan berkomunikasi dengan mesin, begitu juga dengan programmer desktop, mereka dituntut harus membuat sebuah aplikasi yang user friendly dan ringan untuk digunakan. Hal ini jelas berita buruk bagi para newbie yang ingin belajar bahasa pemrograman. Jangankan untuk mempelajari bahasa pemrograman yang terkenal sulit dan membingungkan, untuk memilih salah satu dari sekian banyak bahasa pemrograman saja mereka harus bingung menentukan pilihannya.

Setelah berdiskusi dengan salah satu developer program, beliau menjelaskan beberapa hal yang mungkin dapat memberikan sedikit gambaran kepada kita dalam memilih bahasa pemrograman. berikut ini tanggapan beliau tentang pertanyaan yang saya ajukan mengenai pemilihan bahasa pemrograman untuk pemula.

 

1. Bahasa pemograman apa yang harus/cocok dipelajari kalau mau jadi ahli X (network, sistem informasi, hacker dst)?

2. Kalau bisa bahasa X apakah akan mudah/sulit belajar bahasa Y?

 

Supaya jawabanya gak terlalu abstrak saya kan sedikit lebih sempitkan  dengan menjadi ahli network, tapi walau begitu prinsipnya sama dengan lainnya.

 

Sebelum lebih lanjut saya disini mengabaikan perdebatan apakah ahli network butuh bisa programming/coding atau tidak, yang saya tahu kalau para ahli network lagi membuat planning (ie. capacity planning), design,  mereka emang gak menggunakan programming/coding, tapi kalau saya perhatikan dalam kerjaan sehari-hari memanage/mengelola network mereka sering bikin/menggunakan program/script untuk mempermudah pekerjaan mereka. Disini saya juga perlu mendefinisikan ahli network yang kaya gimana, asumsi saya mahasiswa tersebut lagi bicara tentang computer network, spesifiknya lagi IP network, yang di maksud ahli network pun mungkin adalah skilful network engineer.

 

Selanjutnya bahasa pemograman komputer dari sisi kegunaan ada 2, ada yang disebut General Purpose Programming Language (GP2L), ada yang spesifik purpose atau sekarang lebih terkenal dengan istilah Domain Spesifik Language (DSL).  Dengan mengacu pada hal tersebut maka saya mengaggap yang dimaksud bahasa  adalah General Purpose Programming Language (GP2L), yang biasa ditanyakan/popular adalah C/C++, Java, Perl, Ruby, Python, C#, PHP,Basic/VB, Pascal/Delphi.

 

Kembali ke pertanyaan, kali ini lebih spesifik,” bahasa apa yang harus dipelajari untuk network programming?”.  jawaban paling mudah adalah “tergantung”, network programming untuk apa?  di platform apa? (windows, *nix, mainframe, tandem, embeded system dll). Beberapa platform tidak memiliki compiler untuk bahasa tertentu.

 

Network programming sendiri kadang membingungkan, biasanya sih artinya mengkomunikasikan data antara 2 aplikasi, baik client-server, host-to-host, pier-to-pier dst, atau bisa juga sniffing/filtering/blocking kaya IDS, firewall dll. Selain itu yang bisa mempengaruhi jawaban juga protocol komunikasi apa yang akan digunakan?, karena beberapa protocol tidak tersedia librarynya dibahasa tertentu atau emang dikhususkan untuk bahasa tertentu. misal RMI tentu saja pilihan yang bagus adalah java, karena menggunakan RMI untuk bahasa selain java akan menyulitkan.

 

Teknis pengiriman data yang populer di IP network saat ini adalah socket (TCP,UDP, Raw socket), diatas itu ada DCOM, CORBA, RMI, HTTP, FTP dll. hampir semua General Purpose Programming Language (GP2L) yg popular support (memiliki library untuk) socket programming, walaupun tingkat dukungannya berbeda-beda, misal bahas pemograman seperti java tidak secara langsung support Raw Socket.

 

Jadi ” bahasa apa yang harus dipelajari untuk network programming?”. semua sama aja, yang penting penguasaan bahasa itu yang baik.

 

Pertanyaan ke dua ” Kalau bisa bahasa X apakah akan mudah/sulit belajar bahasa Y?” ini lebih gampang, jawabannya sama saja. yang signifikan membedakan suatu bahasa pemograman adalah dialeknya. dan itu hanya masalah selera dan kebiasaan. Emang tidak mudah pindah dari satu dialek ke dialek lain (mis. C ke Python), tapi ini jauh lebih mudah dibanding belajar algoritma, numeric method, computer/software architecture.

 

Bagi saya sendiri yang  menjadi pertimbangan memilih GP2L adalah library (API) yg tersedia, karena library ini signifikan mempengaruhi produktifitas kita membuat aplikasi. Jadi kalau sudah yakin mau bikin apa, tinggal lihat bahasa apa yang  memiliki library lengkap untuk kerjaan tersebut. Dengan begitu bisa mendukung prinsip saya selanjutnya “bikin code sesedikit mungkin”.

 

Saya emang sering membaca/lihat/dengar perdebatan orang tentang bahasa (GP2L) apa yang lebih baik, biasanya kesimpulannya berikut, C bagus untuk hardware interfacing, perl String/Report manipulation, Java/PHP untuk web, Python/Delphi untuk UI. tapi menurut saya itu gak benar semua, kembali kepada pemahaman orang akan bahasa pemograman  dan kebiasaan. Misal dulu saya merasa bisa membuat segala jenis aplikasi dengan produktif menggunakan C/C++ tapi pada saat yang sama saya punya teman yang bisa melakukan yang sama dengan VB.

 

Emang ada beberapa orang mengeluh C/C++ itu rumit karena ada pointer (arimetik pointer) dan harus mengatur memori manual. Sedangkan bahasa seperti Java, VB, Perl, PHP lebih mudah karena gak usah memikirkan dua hal tersebut. jawaban saya “Siapa bilang, kalau gak mau pake aritmetik pointer ya jangan pake”. Kalau pingin automatic memory management ya tinggal pake aja library memory management untuk C\C++ yang tersedia, salah satunya libgc.

 

Hal lain yang sering diperdebatkan adalah, multi-platform atau tidak. sebenarnya ini adalah jargon yang menyesatkan. semua bahasa akan bisa digunakan untuk membuat aplikasi di-platform manapun selama ada compilernya. bahasa pemograman yang egak multi-platform cuman satu, Assembly, yang sering jadi masalah biasanya justru API/librarynya, misal lihat ini http://www.ibm.com/developerworks/java/library/j-diag0521.html.