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

Di antara banyak kes penggunaan yang diliputi oleh Python, analisis data mungkin menjadi yang terbesar dan paling penting. Ekosistem Python sarat dengan perpustakaan, alat, dan aplikasi yang menjadikan kerja pengkomputeran saintifik dan analisis data cepat dan mudah.

Tetapi bagi pembangun di sebalik bahasa Julia - bertujuan khusus untuk "pengkomputeran saintifik, pembelajaran mesin, perlombongan data, aljabar linear berskala besar, pengkomputeran terdistribusi dan selari" —Python tidak pantas atau cukup mudah . Julia bertujuan untuk memberi para saintis dan penganalisis data bukan hanya pengembangan yang cepat dan mudah, tetapi juga kecepatan pelaksanaan yang luar biasa. 

Apakah bahasa Julia?

Dibuat pada tahun 2009 oleh pasukan empat orang dan diperkenalkan kepada umum pada tahun 2012, Julia bertujuan untuk mengatasi kekurangan dalam Python dan bahasa dan aplikasi lain yang digunakan untuk pengkomputeran saintifik dan pemprosesan data. "Kami tamak," tulis mereka. Mereka mahukan lebih banyak: 

Kami mahukan bahasa yang sumber terbuka, dengan lesen liberal. Kami mahukan kelajuan C dengan dinamisme Ruby. Kami mahukan bahasa yang homoiconic, dengan makro sejati seperti Lisp, tetapi dengan notasi matematik yang jelas dan biasa seperti Matlab. Kami mahukan sesuatu yang dapat digunakan untuk pengaturcaraan umum seperti Python, semudah statistik sebagai R, semestinya untuk pemprosesan rentetan sebagai Perl, sama kuatnya dengan aljabar linier seperti Matlab, dan juga pandai merekatkan program seperti shell. Sesuatu yang mudah dipelajari, namun menggembirakan penggodam yang paling serius. Kami mahu ia interaktif dan kami mahu ia disusun.

(Apakah kita menyebutnya secepat C?)

Berikut adalah beberapa cara Julia melaksanakan aspirasi tersebut:

  • Julia disusun, tidak ditafsirkan.  Untuk prestasi jangka masa yang lebih pantas, Julia disusun tepat pada masanya (JIT) menggunakan kerangka penyusun LLVM. Pada tahap terbaik, Julia dapat mendekati atau menyamai kelajuan C.
  • Julia bersifat interaktif. Julia merangkumi REPL (baca-eval-print loop), atau baris perintah interaktif, serupa dengan apa yang ditawarkan oleh Python. Skrip dan perintah sekali gus dapat ditinju tepat.
  • Julia mempunyai sintaks langsung. Sintaks Julia mirip dengan Python - ringkas, tetapi juga ekspresif dan kuat.
  • Julia menggabungkan faedah menaip dinamik dan menaip statik. Anda boleh menentukan jenis pemboleh ubah, seperti "integer 32-bit yang tidak ditandatangani." Tetapi anda juga dapat membuat hierarki jenis untuk memungkinkan kes umum untuk menangani pemboleh ubah jenis tertentu — misalnya, untuk menulis fungsi yang menerima bilangan bulat tanpa menentukan panjang atau tanda bilangan bulat. Anda bahkan boleh melakukannya tanpa menaip sepenuhnya jika tidak diperlukan dalam konteks tertentu.
  • Julia boleh memanggil perpustakaan Python, C, dan Fortran. Julia dapat berinteraksi secara langsung dengan perpustakaan luaran yang ditulis dalam C dan Fortran. Ada kemungkinan untuk berinteraksi dengan kod Python melalui perpustakaan PyCall, dan juga berkongsi data antara Python dan Julia.
  • Julia menyokong pengaturcaraan metaprogram. Program Julia dapat menghasilkan program Julia lain, dan bahkan mengubah kod mereka sendiri, dengan cara yang mengingatkan pada bahasa seperti Lisp.
  • Julia mempunyai penyahpepijat lengkap.  Julia 1.1 memperkenalkan rangkaian debugging, yang menjalankan kod dalam REPL tempatan dan memungkinkan anda meneliti hasilnya, memeriksa pemboleh ubah, dan menambahkan titik putus dalam kod. Anda bahkan dapat melakukan tugas-tugas halus seperti melangkah ke fungsi yang dihasilkan oleh kod.

Video berkaitan: Bagaimana Python menjadikan pengaturcaraan lebih mudah

Sempurna untuk IT, Python mempermudah pelbagai jenis pekerjaan, dari automasi sistem hingga bekerja di bidang canggih seperti pembelajaran mesin.

Julia vs Python: Kelebihan bahasa Julia

Julia dirancang dari awal untuk pengiraan saintifik dan berangka. Oleh itu, tidak hairanlah Julia mempunyai banyak ciri yang bermanfaat untuk kes penggunaan seperti itu:

  • Julia pantas. Penyusunan dan pengisytiharan jenis JIT oleh Julia bermaksud secara rutin dapat mengalahkan Python yang "murni," yang tidak dioptimumkan berdasarkan pesanan besar. Python dapat dibuat lebih cepat dengan menggunakan perpustakaan luaran, penyusun JIT pihak ketiga (PyPy), dan pengoptimuman dengan alat seperti Cython, tetapi Julia dirancang untuk menjadi lebih cepat tepat di luar pintu.
  • Julia mempunyai sintaks yang mesra matematik. Penonton sasaran utama untuk Julia adalah pengguna bahasa dan persekitaran pengkomputeran saintifik seperti Matlab, R, Mathematica, dan Octave. Sintaks Julia untuk operasi matematik lebih menyerupai cara formula matematik ditulis di luar dunia pengkomputeran, menjadikannya lebih mudah bagi pengguna bukan pengaturcara.
  • Julia mempunyai pengurusan memori automatik. Seperti Python, Julia tidak membebankan pengguna dengan perincian peruntukan dan pembebasan memori, dan ini memberikan beberapa ukuran kawalan manual terhadap pengumpulan sampah. Ideanya adalah bahawa jika anda beralih ke Julia, anda tidak akan kehilangan salah satu kemudahan biasa Python.
  • Julia menawarkan keseimbangan yang unggul. Matematik dan pengkomputeran saintifik berkembang apabila anda dapat memanfaatkan sepenuhnya sumber yang ada pada mesin tertentu, terutamanya berbilang teras. Kedua-dua Python dan Julia dapat menjalankan operasi secara selari. Walau bagaimanapun, kaedah Python untuk menyelaraskan operasi sering kali memerlukan data bersiri dan deserialisasi antara utas atau simpul, sementara paralelisasi Julia lebih halus. Selanjutnya, sintaks paralelisasi Julia kurang berat daripada Python, menurunkan ambang penggunaannya.
  • Julia sedang membangunkan perpustakaan pembelajaran mesinnya sendiri. Flux adalah perpustakaan pembelajaran mesin untuk Julia yang mempunyai banyak corak model yang ada untuk kes penggunaan biasa. Oleh kerana ia ditulis sepenuhnya dalam Julia, ia dapat dimodifikasi mengikut keperluan pengguna, dan ia menggunakan kompilasi tepat masa dalam Julia untuk mengoptimumkan projek dari dalam ke luar. 

Julia vs Python: Kelebihan Python

Walaupun Julia dibuat khusus untuk sains data, sedangkan Python telah berkembang menjadi peranannya, Python menawarkan beberapa kelebihan menarik bagi saintis data. Beberapa sebab "tujuan umum" Python mungkin menjadi pilihan yang lebih baik untuk kerja sains data:

  • Python menggunakan pengindeksan array berasaskan sifar. Dalam kebanyakan bahasa, termasuk Python dan C, elemen pertama dari array diakses dengan sifar — misalnya, string[0]di Python untuk watak pertama dalam rentetan. Julia menggunakan 1 untuk elemen pertama dalam array. Ini bukan keputusan sewenang-wenangnya; banyak aplikasi matematik dan sains lain, seperti Mathematica, menggunakan pengindeksan 1, dan Julia bertujuan untuk menarik minat penonton itu. Ada kemungkinan untuk menyokong pengindeksan sifar di Julia dengan ciri eksperimen, tetapi 1-pengindeksan secara lalai mungkin menghalangi penerapan oleh khalayak yang lebih umum dengan kebiasaan pengaturcaraan yang tertanam.
  • Python mempunyai overhead permulaan yang kurang.  Program Python mungkin lebih lambat daripada program Julia, tetapi waktu operasi Python itu sendiri lebih ringan, dan biasanya memerlukan lebih sedikit masa untuk program Python memulakan dan memberikan hasil pertama. Juga, sementara penyusunan JIT mempercepat masa pelaksanaan untuk program Julia, ia memerlukan kos permulaan yang lebih perlahan. Banyak kerja telah dilakukan untuk membuat Julia bermula lebih cepat, tetapi Python masih mempunyai kelebihan di sini.
  • Python matang. Bahasa Julia masih muda. Julia hanya dalam pembangunan sejak 2009, dan telah mengalami banyak perubahan fitur. Sebaliknya, Python telah wujud hampir 30 tahun.
  • Python mempunyai lebih banyak pakej pihak ketiga. Luas dan kegunaan budaya Python untuk pakej pihak ketiga tetap menjadi salah satu tarikan terbesar bahasa. Sekali lagi, kebaruan relatif Julia bermaksud budaya perisian di sekitarnya masih kecil. Sebilangannya diimbangi oleh kemampuan untuk menggunakan perpustakaan C dan Python yang ada, tetapi Julia memerlukan perpustakaan sendiri untuk berkembang maju. Perpustakaan seperti Flux dan Knet menjadikan Julia berguna untuk pembelajaran mesin dan pembelajaran mendalam, tetapi sebahagian besar kerja itu masih dilakukan dengan TensorFlow atau PyTorch.
  • Python mempunyai berjuta-juta pengguna. Bahasa adalah apa-apa tanpa komuniti yang besar, setia dan aktif di sekitarnya. Komuniti di sekitar Julia sangat bersemangat dan berkembang, tetapi masih merupakan sebahagian kecil dari saiz komuniti Python. Komuniti besar Python adalah kelebihan besar. 
  • Python semakin pantas. Selain memperoleh penambahbaikan kepada jurubahasa Python (termasuk penambahbaikan untuk pemprosesan pelbagai teras dan selari), Python menjadi lebih mudah untuk dipercepat. Projek mypyc menterjemahkan Python yang diberi anotasi jenis menjadi C asli, jauh lebih kurang baik daripada Cython. Ia biasanya menghasilkan peningkatan prestasi empat kali ganda, dan sering kali lebih banyak lagi untuk operasi matematik yang tulen.