Python untuk Scientific Computing
Scientific computing adalah bagian dari ilmu komputer yang memfokuskan diri untuk mengembangkan model matematika dan teknik analisa kuantitatif untuk memecahkan masalah yang muncul baik di ilmu komputer sendiri maupun di bidang yang lain. Dalam kegunaan praktis, bidang ini berkaitan dengan pemecahan persoalan matematika secara numerik dan membuat simulasinya. Dengan teknologi komputer yang semakin lama mempunyai unjuk kerja semakin tinggi, makin banyak persoalan matematika yang rumit dapat dipecahkan dengan pendekatan komputasi ini.
Bidang scientific computing ini, memunculkan beberapa kebutuhan spesifik yang berbeda dengan rekayasa perangkat lunak (software engineering) pada umumnya. Beberapa kebutuhan spesifik ini antara lain mengakses beberapa bentuk data secara fleksibel, memanipulasi dan memvisualisasikan hasilnya dengan cepat dan terakhir dapat mengkomunisasikan hasilnya dengan mudah. Dahulu kebutuhan spesifik ini dipenuhi oleh bahasa pemrograman seperti c atau Fortran, karena perlunya menyesuaikan dengan sumberdaya komputer yang masih terbatas. Tetapi jaman sekarang kebutuhan spesifik ini memunculkan dua jenis pendekatan yang berbeda yaitu berupa:
- Bahasa pemrograman yang didesain untuk scientific computing contohnya Matlab dan Python
- Perangkat lunak khusus untuk memecahkan masalah matematika, yang biasanya didukung oleh kemampuan computer algebra, seperti Mathematica, Maple dan sebagainya
Sampai saat ini, secara de facto bidang scientific programming masih menggunakan Matlab yang sudah dilengkapi dengan Simulink dan Toolboxnya yang sangat lengkap. Selain itu kemampuan computer algebra juga sudah dibenamkan dalam Matlab itu sendiri. Sebenarnya disamping beberapa kelebihan dari Matlab, ada kelemahan utama yang menyebabkan Matlab tidak sesuai untuk diajarkan secara akademik. Yang pertama tentunya Matlab merupakan perangkat lunak yang sangat mahal harganya. Hal ini menyebabkan kebanyakan di bidang akademik, menggunakan secara ilegal yang kedepannya tidak disarankan lagi. Dan kedua, Matlab sebenarnya bukan bahasa pemrograman yang powerful, Matlab hanya didesain khusus untuk keperluan komputasi sehingga hampir tidak dapat digunakan untuk rekayasa perangkat lunak yang lain. Hal ini mengakibatkan, code yang telah sukses dikembangkan dalam Matlab kebanyakan harus diubah ke bahasa yang lain dulu agar dapat digunakan dalam implementasi rekayasa perangkat lunak (software engineering) nya.
Untungnya dengan adanya Python, suatu bahasa intepreter yang didesain untuk general purpose, dapat dikoding dengan cepat, mudah dipelajari dan mudah diintegrasikan dengan bahasa yang lain. Inilah karakteristik dasar dari bahasa untuk scientific computing yang modern. Dengan karakteristik ini, kelemahan utama Matlab tidak terdapat pada Python. Code yang telah sukses dikembangkan dalam Python dapat langsung digunakan dalam implementasi rekayasa perangkat lunak (software engineering). Selain itu jika berkaitan dengan dengan proses yang kritikal, code dalam bahasa Python dengan sedikit modikasi dapat di compile menjadi bahasa mesin yang kompatibel dengan bahasa C dengan fasilitas Cython. Kebutuhan scientific computing akan pustaka yang komprehensif telah dipenuhi dalam Python dalam distribusinya yang didesain memang untuk untuk keperluan scientific computing ini yaitu: PythonXY.
Contoh code dalam bahasa Python sebagai berikut:
Dan perkembangan terbaru, Python telah diberkati mempunyai perangkat lunak khusus untuk memecahkan masalah matematika, yaitu SAGE. SAGE mempunyai visi ambisius untuk menyaingi semua perangkat lunak sejenis dengan menggabungkan semua proyek open source menjadi satu dengan menggunakan interface tunggal yaitu bahasa Python. SAGE selain dapat dinikmati secara offline, juga telah mempunyai layanan berbasis web dengan SAGE Notebook nya. Dengan layanan notebook ini, kita dapat menggunakan SAGE di mana saja tanpa harus menginstal perangkat lunak ini.
(Penulis: Alexander Agung Santoso Gunawan)
Beberapa link penting:
Python : http://python.org/
Cython : http://cython.org/
PythonXY : http://code.google.com/p/pythonxy/
SAGE : http://www.sagemath.org/
SAGE Notebook : http://sagenb.org/