Julia vs. Python: Mana yang terbaik untuk ilmu data?

Di antara banyak kasus penggunaan yang dicakup Python, analisis data mungkin menjadi yang terbesar dan paling signifikan. Ekosistem Python sarat dengan pustaka, alat, dan aplikasi yang membuat pekerjaan komputasi ilmiah dan analisis data menjadi cepat dan nyaman.

Namun untuk pengembang di balik bahasa Julia - yang ditujukan secara khusus pada "komputasi ilmiah, pembelajaran mesin, penambangan data, aljabar linier skala besar, komputasi terdistribusi dan paralel" —Python tidak cukup cepat atau nyaman . Julia bertujuan untuk memberikan para ilmuwan dan analis data tidak hanya pengembangan yang cepat dan nyaman, tetapi juga kecepatan eksekusi yang luar biasa. 

Apa bahasa Julia?

Dibuat pada tahun 2009 oleh tim beranggotakan empat orang dan diperkenalkan ke publik pada tahun 2012, Julia dimaksudkan untuk mengatasi kekurangan pada Python dan bahasa serta aplikasi lain yang digunakan untuk komputasi ilmiah dan pemrosesan data. “Kami rakus,” tulis mereka. Mereka menginginkan lebih: 

Kami menginginkan bahasa yang open source, dengan lisensi liberal. Kami menginginkan kecepatan C dengan dinamisme Ruby. Kami menginginkan bahasa yang homoikonik, dengan makro yang sebenarnya seperti Lisp, tetapi dengan notasi matematika yang sudah dikenal dan jelas seperti Matlab. Kami menginginkan sesuatu yang dapat digunakan untuk pemrograman umum seperti Python, semudah untuk statistik R, alami untuk pemrosesan string seperti Perl, sama kuatnya dengan aljabar linier seperti Matlab, serta bagus untuk merekatkan program bersama sebagai shell. Sesuatu yang sangat mudah dipelajari, namun membuat para peretas yang paling serius senang. Kami menginginkannya interaktif dan kami ingin menyusunnya.

(Apakah kami menyebutkan itu harus secepat C?)

Berikut beberapa cara Julia mengimplementasikan aspirasi tersebut:

  • Julia dikompilasi, tidak ditafsirkan.  Untuk kinerja waktu proses yang lebih cepat, Julia hanya-dalam-waktu (JIT) dikompilasi menggunakan kerangka kerja kompiler LLVM. Yang terbaik, Julia dapat mendekati atau menyamai kecepatan C.
  • Julia bersifat interaktif. Julia menyertakan REPL (read-eval-print loop), atau baris perintah interaktif, mirip dengan yang ditawarkan Python. Skrip dan perintah satu kali yang cepat dapat dimasukkan langsung.
  • Julia memiliki sintaks yang lugas. Sintaks Julia mirip dengan Python — singkat, tetapi juga ekspresif dan kuat.
  • Julia menggabungkan manfaat pengetikan dinamis dan pengetikan statis. Anda dapat menentukan jenis variabel, seperti "unsigned 32-bit integer". Namun Anda juga dapat membuat hierarki jenis untuk memungkinkan kasus umum menangani variabel jenis tertentu — misalnya, untuk menulis fungsi yang menerima bilangan bulat tanpa menentukan panjang atau penandatanganan bilangan bulat. Anda bahkan dapat melakukannya tanpa mengetik sepenuhnya jika tidak diperlukan dalam konteks tertentu.
  • Julia dapat memanggil pustaka Python, C, dan Fortran. Julia dapat berinteraksi langsung dengan pustaka eksternal yang ditulis dalam C dan Fortran. Ini juga memungkinkan untuk berinteraksi dengan kode Python melalui pustaka PyCall, dan bahkan berbagi data antara Python dan Julia.
  • Julia mendukung metaprogramming. Program Julia dapat membuat program Julia lain, dan bahkan memodifikasi kodenya sendiri, dengan cara yang mirip dengan bahasa seperti Lisp.
  • Julia memiliki debugger berfitur lengkap.  Julia 1.1 memperkenalkan rangkaian debugging, yang mengeksekusi kode di REPL lokal dan memungkinkan Anda menelusuri hasil, memeriksa variabel, dan menambahkan breakpoint dalam kode. Anda bahkan dapat melakukan tugas-tugas yang sangat detail seperti melangkah melalui fungsi yang dihasilkan oleh kode.

Video terkait: Bagaimana Python membuat pemrograman lebih mudah

Sempurna untuk TI, Python menyederhanakan banyak jenis pekerjaan, dari otomatisasi sistem hingga bekerja di bidang-bidang mutakhir seperti pembelajaran mesin.

Julia vs. Python: Keunggulan bahasa Julia

Julia dirancang sejak awal untuk komputasi ilmiah dan numerik. Jadi, tidak mengherankan jika Julia memiliki banyak fitur yang menguntungkan untuk kasus penggunaan seperti itu:

  • Julia cepat. Kompilasi JIT dan deklarasi tipe Julia berarti ia dapat secara rutin mengalahkan Python "murni" yang tidak dioptimalkan dengan urutan besarnya. Python dapat dibuat lebih cepat melalui pustaka eksternal, kompiler JIT pihak ketiga (PyPy), dan pengoptimalan dengan alat seperti Cython, tetapi Julia dirancang untuk menjadi lebih cepat langsung dari gerbang.
  • Julia memiliki sintaks yang ramah matematika. Sasaran utama Julia adalah pengguna bahasa dan lingkungan komputasi ilmiah seperti Matlab, R, Mathematica, dan Oktaf. Sintaks Julia untuk operasi matematika lebih mirip dengan cara rumus matematika ditulis di luar dunia komputasi, membuatnya lebih mudah bagi non-programmer untuk memahaminya.
  • Julia memiliki manajemen memori otomatis. Seperti Python, Julia tidak membebani pengguna dengan detail pengalokasian dan pembebasan memori, dan menyediakan beberapa ukuran kontrol manual atas pengumpulan sampah. Idenya adalah jika Anda beralih ke Julia, Anda tidak akan kehilangan salah satu kemudahan umum Python.
  • Julia menawarkan paralelisme superior. Matematika dan komputasi ilmiah berkembang pesat ketika Anda dapat menggunakan sumber daya lengkap yang tersedia pada mesin tertentu, terutama beberapa inti. Baik Python dan Julia dapat menjalankan operasi secara paralel. Namun, metode Python untuk memparalelkan operasi sering kali membutuhkan data untuk diserialkan dan dideserialisasi antara utas atau node, sementara paralelisasi Julia lebih disempurnakan. Lebih lanjut, sintaks paralelisasi Julia tidak sekuat Python, menurunkan ambang batas penggunaannya.
  • Julia sedang mengembangkan pustaka pembelajaran mesin bawaannya sendiri. Flux adalah pustaka pembelajaran mesin untuk Julia yang memiliki banyak pola model untuk kasus penggunaan umum. Karena seluruhnya ditulis di Julia, ini dapat dimodifikasi sesuai kebutuhan pengguna, dan menggunakan kompilasi just-in-time asli Julia untuk mengoptimalkan proyek dari dalam ke luar. 

Julia vs. Python: Keunggulan Python

Meskipun Julia dibuat khusus untuk ilmu data, sedangkan Python kurang lebih telah berevolusi menjadi perannya, Python menawarkan beberapa keuntungan menarik bagi ilmuwan data. Beberapa alasan Python "tujuan umum" mungkin menjadi pilihan yang lebih baik untuk pekerjaan ilmu data:

  • Python menggunakan pengindeksan array berbasis nol. Dalam kebanyakan bahasa, termasuk Python dan C, elemen pertama dari sebuah array diakses dengan nol — misalnya, string[0]dalam Python untuk karakter pertama dalam sebuah string. Julia menggunakan 1 untuk elemen pertama dalam sebuah array. Ini bukanlah keputusan yang sewenang-wenang; banyak aplikasi matematika dan sains lainnya, seperti Mathematica, menggunakan pengindeksan 1, dan Julia dimaksudkan untuk menarik audiens tersebut. Ada kemungkinan untuk mendukung pengindeksan nol di Julia dengan fitur eksperimental, tetapi pengindeksan 1 secara default mungkin menghalangi adopsi oleh audiens yang lebih umum dengan kebiasaan pemrograman yang tertanam.
  • Python memiliki overhead startup yang lebih sedikit.  Program Python mungkin lebih lambat daripada program Julia, tetapi runtime Python itu sendiri lebih ringan, dan umumnya membutuhkan waktu lebih sedikit untuk program Python untuk memulai dan memberikan hasil pertama. Selain itu, meskipun kompilasi JIT mempercepat waktu eksekusi untuk program Julia, hal itu menyebabkan startup menjadi lebih lambat. Banyak pekerjaan telah dilakukan untuk membuat Julia memulai lebih cepat, tetapi Python masih memiliki keunggulan di sini.
  • Python sudah dewasa. Bahasa Julia masih muda. Julia baru dikembangkan sejak 2009, dan telah mengalami cukup banyak perubahan fitur di sepanjang jalan. Sebaliknya, Python telah ada selama hampir 30 tahun.
  • Python memiliki lebih banyak paket pihak ketiga. Luasnya dan kegunaan budaya Python dari paket pihak ketiga tetap menjadi salah satu daya tarik terbesar bahasa ini. Sekali lagi, kebaruan relatif Julia berarti budaya perangkat lunak di sekitarnya masih kecil. Beberapa di antaranya diimbangi oleh kemampuan untuk menggunakan pustaka C dan Python yang ada, tetapi Julia membutuhkan pustaka sendiri untuk berkembang. Library seperti Flux dan Knet membuat Julia berguna untuk machine learning dan deep learning, tetapi sebagian besar pekerjaan tersebut masih dilakukan dengan TensorFlow atau PyTorch.
  • Python memiliki jutaan pengguna. Sebuah bahasa bukanlah apa-apa tanpa komunitas yang besar, setia, dan aktif di sekitarnya. Komunitas di sekitar Julia sangat antusias dan berkembang, tetapi komunitas Python hanya sebagian kecil dari ukuran komunitasnya. Komunitas besar Python adalah keuntungan besar. 
  • Python semakin cepat. Selain mendapatkan peningkatan pada interpreter Python (termasuk peningkatan multi-core dan pemrosesan paralel), Python menjadi lebih mudah untuk dipercepat. Proyek mypyc menerjemahkan Python beranotasi tipe menjadi C asli, jauh lebih tidak kikuk daripada Cython. Ini biasanya menghasilkan peningkatan kinerja empat kali lipat, dan seringkali lebih banyak untuk operasi matematika murni.