Tuesday, April 17, 2012

Pascal VS C++

Dalam dunia competitive programming, terutama tingkat sekolah menegah, lebih sering menggunakan Pascal dan C/C++ dalam kompetisinya. Mana yang lebih di-unggul-kan? Kita simak dari artikel berikut ini:



Pascal dan C++ merupakan dua buah bahasa yang sangat populer untuk kompetisi pemrograman. Hampir semua kompetisi menyediakan kedua bahasa ini. Bahkan, OSN dan IOI hanya memperbolehkan peserta untuk menggunakan Pascal dan C/C++. Untuk tingkat SMA, memang biasanya hanya kedua bahasa tersebut yang digunakan; bahasa Java baru muncul pada kompetisi tingkat perguruan tinggi.

Jika diberikan pilihan, biasanya kita bertanya, bahasa mana yang lebih bagus? Dalam kasus ini, hampir semua sepakat bahwa jawabannya adalah: tidak ada bahasa yang benar-benar paling bagus. Semua bahasa diciptakan dengan tujuan dan lingkup masing-masing. Mari kita telaah satu-persatu.

Pascal, diciptakan oleh Niklaus Wirth (nama Pascal adalah penghormatan untuk Blaise Pascal), merupakan bahasa yang cocok untuk pemula atau orang yang baru belajar bahasa pemrograman. Sintaks (aturan penulisan) bahasa ini relatif sederhana dibandingkan bahasa lain, karena Pascal memang banyak digunakan untuk proses pembelajaran pemrograman terstruktur. Oleh karena itu, pembelajaran bahasa pemrograman di sekolah-sekolah kebanyakan menggunakan bahasa Pascal. OSK dan OSP Indonesia saat ini pun menggunakan bahasa pseudopascal, yaitu bahasa yang mirip Pascal dan hanya menekankan level algoritmik saja, bukan implementasi dalam kode.

C++, diciptakan oleh Bjarne Stroustrup, merupakan bahasa yang didesain untuk berbagai penggunaan, bahkan untuk membuat sebuah operating system. Karena itulah, C++ menyediakan banyak fitur yang tidak tersedia pada Pascal, misalnya multiple inheritance. Tentu saja, fitur yang paling diunggulkan khususnya untuk kompetisi adalah adanya pustaka STL yang berisi berbagai fungsi dan struktur data yang siap pakai.

Kedua bahasa yang disebutkan tadi tentu memiliki kelebihan dan kekurangannya masing-masing. Pertama, dalam hal sintaks bahasa. C++ memiliki struktur yang lebih fleksibel, sehingga memungkinkan pengetikan kode yang lebih cepat dibandingkan Pascal. Namun, karena fleksibilitas yang menurut sebagian orang terlalu tinggi, terkadang membuat penggunanya sering membuat bug berbahaya tanpa disadari. Hal ini berbeda dengan Pascal yang cukup ketat dalam menerapkan aturan sintaks. Hal ini pulalah yang membuat Petr Mitrichev, peringkat 1 TopCoder Algorithm saat ini, memilih bahasa selain C++ untuk kompetisi agar sulit membuat bug yang konyol.

Kedua, pustaka STL merupakan alasan utama para coder untuk memilih bahasa C++. Pustaka ini cukup lengkap, berisi banyak fungsi dan struktur data yang krusial dalam kompetisi pemrograman. Misalnya, fungsi pengurutan (sorting). Menurut para pengguna C++, daripada membuat fungsi quicksort sendiri, lebih baik menggunakan fungsi yang telah ada. Mengapa harus 'reinvent the wheel'? Penulisan kode pun akan lebih cepat. Namun, menurut para pengguna Pascal, akan lebih baik untuk menulis sendiri fungsi tersebut agar pemahaman kita semakin mendalam dan penulisan kode kita semakin fasih.

Cukup banyak pendapat yang dikemukakan oleh pengguna-pengguna kedua bahasa tersebut. Bagaimana menyikapinya? Menurut penulis, akan lebih baik kalau kita menguasai kedua bahasa tersebut, dan menggunakannya pada saat yang tepat. Juga sebaiknya tidak menjelek-jelekkan bahasa lain, karena setiap bahasa memiliki tempatnya masing-masing.

Kesimpulannya, meskipun pilihan bahasa itu penting, yang terpenting adalah bagaimana kita bisa memaksimalkan pilihan kita tersebut. Gennady Korotkevich (dikenal juga dengan nama tourist) sukses memenangkan tiga IOI berturut-turut, 2009-2011, dengan bahasa Pascal. Lou Tiancheng (dikenal juga dengan nama ACRush) menempati posisi yang tinggi dalam TopCoder Algorithm dengan bahasa C++. Terbukti bahwa kita sebenarnya dapat meraih keberhasilan dengan pilihan bahasa apapun. Jadi, apa pilihanmu? Apapun itu, kuasailah dengan baik dan jadilah yang terbaik.

(oleh Ashar Fuadi, Perak IOI 2010, Fasilkom UI)

No comments:

Post a Comment