Arsip

Kategori

Image by Freepik.com

Kenapa Bahasa Pemrograman Julia Cocok untuk Komputasi Ilmiah?

Salah satu permasalahan terbesar dalam komputasi ilmiah adalah two language problem. Peneliti biasanya mengawali sebuah aplikasi ilmiah menggunakan bahasa produktivitas (misalnya Python, R, atau Matlab). Ketika kebutuhan komputasi semakin besar, peneliti akan mengalihkan aplikasi tersebut ke bahasa dengan performa tinggi, seperti C. Mengkonversi aplikasi yang sudah ada ke bahasa lain tidaklah mudah.

Bahasa pemrograman Julia hadir untuk mengatasi masalah ini. Julia menjadi salah satu bahasa dengan produktivitas tinggi dan performa yang tinggi. Ini seperti Python, tetapi memiliki kecepatan seperti C. Dalam artikel ini, saya akan menyoroti kenapa Julia sangat cocok untuk komputasi ilmiah. Mari mengenal lebih dalam tentang Julia!

Pengenalan singkat tentang bahasa pemrograman Julia

Perbandingan bahasa pemrograman Julia dengan bahasa pemrograman lain
Perbandingan bahasa pemrograman Julia dengan bahasa pemrograman lain (Gambar dikompilasi oleh penulis)

Julia merupakan bahasa pemrograman tingkat tinggi, multiguna, open source, dan dapat dijalankan diberbagai sistem operasi. Jeff Besanzon dan teman-temanya (Stefan Karpinski, Viral B. Shah, dan Alan S. Edelman) merupakan orang orang dibalik terciptanya bahasa yang luar biasa ini. Besanzon dkk. menejlaskan tidak ada alasan tertentu mengapa bahasa pemrograman ini diberi nama “Julia”, nama ini dipakai karena bagus.

Seperti yang ditulis dalam blognya “Why We Created Julia”, Bezanson dkk. adalah kumpulan orang yang serakah. Mereka ingin menciptakan bahasa yang sempurna. Julia merupakan bukti nyata dari ambisi mereka. Bahasa pemrograman ini dirancang untuk memiliki keunggulan berbagai bahasa permograman lain seperti Matlab, Lisp, Ruby, Mathematica, Perl, R, Python, bahkan C. Pada akhirnya, Julia dapat mendukung berbagai pekerjaan dalam melakukan komputasi ilmiah, pembelajaran mesin, data mining, aljabar linier skala besar, komputasi terdistribusi dan pararel.

Bahasa ini kurang lebih telah berumur 11 tahun sejak kali pertama perilisannya secara resmi pada Februari 2012. Perilisan terbesar bahasa pemrograman ini ada pada julia versi 1.6 dengan dukungan jangka panjang (LTS). Hingga saat ini, Julia 1.9 merupakan versi terbaru yang dirilis pada Mei 2023.

Alasan kenapa bahasa pemrograman Julia cocok untuk komputasi ilmiah

Julia merupakan bahasa pemrograman untuk komputasi ilmiah yang mudah dipahami dan berkinerja tinggi. Berikut beberapa alasan mengapa Julia cocok untuk menjalankan tugas komputasi ilmiah:

1. Julia mudah dipelajari

Julia termasuk bahasa pemrograman tingkat tinggi. Berbeda dengan bahasa tingkat rendah (misalnya Java atau C), bahasa tingkat tinggi lebih mudah dipelajari dan dipahami oleh pemula. Peneliti hanya membutuhkan waktu singkat untuk memahami Julia, terutama jika mereka bermigrasi dari Python, R, dan Matlab.

Lihatlah contoh program sederhana dibawah ini untuk mengetahui kenapa Julia lebih mudah dipahami:

erbandingan kode program “Hello, World!” pada Java, C, dan Julia
Perbandingan kode program “Hello, World!” pada Java, C, dan Julia (Gambar oleh penulis)

Pada program sederhana yang menampilkan “Hello, World!”, syntax bahasa Julia terlihat lebih ringkas dan sederhana dibandingkan dengan C dan Java. Tidak perlu khawatir dengan keterbatasan bahasa dan tingkat kerumitan program, dengan julia, peneliti hanya perlu fokus pada permasalahan yang ingin diselesaikan.

2. Memungkinkan tingkat abstraksi yang tinggi

Permasalahan ilmiah sudah sangat rumit. Peneliti membutuhkan bahasa pemrograman dengan tingkat abstraksi yang tinggi. Abstraksi memungkinkan peneliti fokus pada solusi inovatif tanpa mengkhawatirkan detail teknis yang rumit. Julia memungkinkan tingkat abstraksi yang sangat tinggi.

Misalnya, peneliti ingin menganalisis data biologis yang heterogen dan kompleks. Untuk memahami data tersebut, peneliti harus memvisualisasikan data tersebut. Dengan tingkat abstaksi yang tinggi pada Julia, peneliti dapat menulis kode yang intuitif dan mudah dimengerti. Mereka dapat menggunakan pustaka sumber terbuka yang tersedia, seperti Plots.jl, PyPlot.jl, dan StatsPlot.jl.

Contoh beberapa pustaka sumber terbuka untuk melakukan komputasi ilmiah
Contoh beberapa pustaka sumber terbuka untuk melakukan komputasi ilmiah (terkait topik biologi) [2]

3. Memiliki kecepatan seperti C atau Fortran

Salah satu permasalahan umum komputasi ilmiah adalah menangani ukuran data yang besar. Kecepatan bahasa pemrograman menjadi sangat penting untuk menyelesaikan analisis dengan lebih baik dan cepat. Ini juga memberikan kenyamanan bagi para peneliti. Tanpa adanya kecepatan, simulasi model matematika yang kompleks mungkin tidak bisa dilakukan.

Julia hadir dengan kecepatan komputasi yang tinggi. Dibandingkan dengan bahasa pemrograman dinamis lain (seperti, Python, R, dan Matlab), Julia unggul dalam hal kecepatan. Berikut perbandingan kecepatan Julia dengan bahasa pemrograman lain:

Tolok ukur kecepatan Julia dibandingkan dengan bahasa pemrograman lain
Tolok ukur kecepatan Julia dibandingkan dengan bahasa pemrograman lain [3]

4. Memiliki banyak fitur produktivitas

Bahasa pemrograman dengan fitur produktivitas memungkinkan peneliti dapat menyelesaikan permasalahan ilmiah dengan lebih cepat dan efisien. Julia dirancang dengan berbagai fitur produktivitas seperti:

  • Pengetikan dinamis: Peneliti tidak perlu secara eksplisit mendefinisikan jenis tipe data yang akan digunakan. Julia secara otomatis menentukan jenis tipe data tersebut.
  • Manajemen memori otomatis: Julia bergantung pada Garbage collection untuk mengelola memori. Peneliti tidak perlu mengalokasikan dan melakukan pembebasan memori secara manual.
  • Anotasi berbagai jenis tipe data: Peneliti dapat memberikan penjelasan khusus tentang tipe data apa yang akan digunakan dalam sebuah variabel atau fungsi. Ini menggunakan operator :: untuk melakukan anotasi tipe data (misalnya, square(x::Int64, y::Float64))
  • Multiple dispatch: Peneliti dapat mendefinisikan beberapa fungsi dengan nama yang sama dan perilaku yang berbeda sesuai tipe data yang diberikan. Secara sederhana, fungsi dalam bahasa julia seperti template. Ketika fungsi tersebut dipanggil, kompiler secara otomatis akan memilih dan menerapkan template fungsi sesuai dengan jenis data yang diberikan.

“Multiple dispatch menjadi salah satu alasan kenapa Julia bisa memiliki kinerja yang tinggi.”

5. Metaprogramming

Saat ini, kebanyakan permasalahan ilmiah diselesaikan dengan kode sumber yang ditulis secara statis. Setelah ditulis, kode sumber akan dieksekusi oleh kompiler dan tidak pernah diubah saat proses eksekusi berlangsung. Dengan fleksibelitas yang dimiliki Julia, peneliti dapat memodifikasi kode sumber selama run time. Ini disebut metaprogramming. Metaprogramming memiliki keunggulan dalam mengotomatisasikan bagian-bagian dari proses penyelesaian masalah ilmiah.

Keterbatasan bahasa pemrograman julia

Tidak ada yang sempurna di dunia ini, termasuk juga dengan Julia. Walaupun dengan berbgai kelebihannya, Julia masih memiliki beberapa kekurangan. Berikut berbagai kekurangan Julia:

  • Bahasa yang sedang berkembang: Julia merupakan bahasa pemrograman yang terbilang baru (11 tahun lalu semenjak dirilis pada 2012). Komunitas Julia juga tidak sebesar komunitas Python. Ini artinya, sumber daya untuk mempelajari Julia saat ini masih sedikit jika dibandingkan dengan Python.
  • Menggunakan lebih banyak memori: Ini dikarenakan fitur template pada sebuah fungsi (mutiple dispatch). Fitur tersebut menyediakan berbagai jenis fungsi untuk berbagai jenis tipe data yang akhirnya memakai lebih banyak ruang memori.
  • Multiple dispatch menghambat modularitas: Karena setiap fungsi dapat berlaku pada berbagai tipe data, sehingga tidak ada titik dimana fungsi itu akan ditutup definisinya dimasa depan. Fitur ini terus dikembangkan supaya dapat mendudkung modularitas.
  • Jumlah pustaka sumber terbuka yang masih sedikit: Python saat ini memiliki 476465 proyek yang terdaftar di PyPI, sedangkan jumlah pustaka Julia yang terdaftar di Julia Package Manager adalah sekitar 10000.

Kesimpulan

Bahasa pemrograman Julia memiliki potensi besar menggantikan posisi bahasa pemrograman yang populer saat ini. Julia memiliki kemudahan seperti Python, tetapi memiliki kinerja tinggi layaknya C. Beberapa kelebihan Julia, seperti mudah dipelajari, tingkat abstraksi yang tinggi, performa yang tinggi, memiliki banyak fitur produktivitas, dan metaprogramming. Disisi lain, Julia juga memiliki beberapa kekurangan. Akan tetapi, kekurangan tersebut tidak mengurangi superioritas bahasa Julia untuk komputasi ilmiah.

Referensi

  1. Bezanson, J., Edelman, A., Karpinski, S., dkk. (2012) Why we created julia, The Julia Programming Language. Available at: https://julialang.org/blog/2012/02/why-we-created-julia/ (Accessed: 24 August 2023).
  2. Roesch, E., Greener, J. G., MacLean, A. L., Nassar, H., Rackauckas, C., Holy, T. E., & Stumpf, M. P. (2023). Julia for biologists. Nature Methods, 20(5), 655–664.
  3. Gao, K., Mei, G., Piccialli, F., Cuomo, S., Tu, J., & Huo, Z. (2020). Julia language in machine learning: Algorithms, applications, and open issues. Computer Science Review, 37, 100254.
  4. Bezanson, J., Karpinski, S., Shah, V. B., & Edelman, A. (2012). Julia: A Fast Dynamic Language for Technical Computing. ArXiv.
  5. Bezanson, J., Chen, J., Chung, B., Karpinski, S., Shah, V. B., Vitek, J., & Zoubritzky, L. (2018). Julia: dynamism and performance reconciled by design. Proceedings of the ACM on Programming Languages, 2(OOPSLA), 1–23.
  6. Engheim, E. (2023). Julia as a Second Language: General purpose programming with a taste of data science. Manning Publications.
Dede Kurniawan
Penulis di Medium: https://dedekurniawann.medium.com/. Anggota Divisi Bioteknologi Yayasan Generasi Biologi Indonesia. LinkedIn: https://www.linkedin.com/in/dede-kurniawann/