Julia: Mencermati bagaimana keadaannya

19

Saya menemukan pertanyaan 2012 yang memiliki diskusi yang sangat baik tentang Julia sebagai alternatif untuk R / Python untuk berbagai jenis pekerjaan statistik.

Di sinilah letak Pertanyaan asli dari 2012 tentang janji Julia

Sayangnya Julia masih sangat baru saat itu & toolkit yang diperlukan untuk pekerjaan statistik agak primitif. Bug sedang disetrika. Distribusi sulit dipasang. Dll.

Seseorang memiliki komentar yang sangat tepat tentang pertanyaan itu:

Ini mengatakan, itu akan menjadi 5 tahun sebelum pertanyaan ini bisa dijawab di belakang. Sampai sekarang, Julia tidak memiliki aspek kritis berikut dari sistem pemrograman statistik yang dapat bersaing dengan R untuk pengguna sehari-hari:

Itu pada tahun 2012. Sekarang ini tahun 2015 dan tiga tahun telah berlalu, saya bertanya-tanya bagaimana orang berpikir Julia telah melakukannya?

Apakah ada pengalaman yang lebih kaya dengan bahasa itu sendiri & ekosistem Julia secara keseluruhan? Saya ingin sekali tahu.

Secara khusus:

  1. Apakah Anda menyarankan pengguna baru alat statistik untuk mempelajari Julia di atas R?
  2. Statistik kasus penggunaan seperti apa yang Anda sarankan kepada seseorang untuk menggunakan Julia?
  3. Jika R lambat pada tugas tertentu, masuk akal untuk beralih ke Julia atau Python?

Catatan: Pertama kali diposting 14 Juni 2015.

curious_cat
sumber
2
Saya melihat baru-baru ini dan tidak terkesan dengan kedalaman paket statistik mereka. Jika saya tidak salah, Python juga ditafsirkan, sehingga akan memiliki keterbatasan yang sama dengan R. Daya tarik Julia seperti yang saya mengerti itu adalah janji kecepatan ekstra dan akses yang lebih baik ke paralelisasi.
DWin
3
Saya pikir masalah dengan Julia adalah bahwa SciPy terus menjadi lebih baik, dan sekarang kami juga memiliki Obor dalam campuran. Tidak ada yang mau belajar bahasa komputasi ilmiah ketiga (atau keempat atau kelima), meskipun cepat dan memiliki fitur kelebihan fungsi yang keren.
shadowtalker
4
Julia adalah bahasa yang dirancang dengan baik dan bagus, tetapi menurut saya itu terlambat. Kereta komputasi matriks-simpul tunggal telah lama berlalu. Julia pada dasarnya adalah Fortran 2.0, dengan beberapa fitur yang bagus, tetapi ketika kita bertransisi semakin ke komputasi awan, ia memiliki sangat sedikit untuk menawarkan lebih dari bahasa fungsional seperti Scala, Clojure dan bahkan Python sampai batas tertentu. Seandainya Julia dalam kondisi saat ini 10 tahun yang lalu, itu bisa menjadi sukses besar.
Marc Claesen
2
Python dan Rcpp benar-benar berkembang secara dinamis, R mendapatkan lebih banyak perhatian (Konsorsium, Microsoft, dll.) Sehingga tampaknya sulit bagi Julia untuk mengejar ketinggalan ...
Tim
1
Saya tidak melihat kasus bisnis untuk Julia, dan masih belum. Rasanya seperti upaya berlebihan oleh programmer untuk membangun kembali sesuatu yang sudah ada.
Aksakal

Jawaban:

15

Saya telah beralih ke Julia, dan inilah alasan pragmatis saya:

  • Itu kode lem dengan sangat baik. Saya memiliki banyak kode lawas di MATLAB, dan MATLAB.jl membutuhkan waktu 5 menit untuk menginstal, bekerja dengan sempurna, dan memiliki sintaksis ringkas yang membuatnya alami untuk menggunakan fungsi MATLAB. Julia juga memiliki hal yang sama untuk R, Python, C, Fortran, dan banyak bahasa lainnya.
  • Julia melakukan paralelisme dengan sangat baik. Saya tidak hanya berbicara tentang paralelisme multi prosesor (memori bersama), tetapi juga paralelisme multi-node. Saya memiliki akses ke node HPC yang tidak sering digunakan karena masing-masing sangat lambat, jadi saya memutuskan untuk mencoba Julia. Saya menambahkan @parallel ke loop, memulainya dengan memberi tahu file mesin, dan menggunakan semua 5 node. Coba lakukan itu di R / Python. Dalam MPI itu akan membutuhkan waktu untuk membuatnya bekerja (dan itu dengan mengetahui apa yang Anda lakukan), tidak beberapa menit saat pertama kali Anda mencobanya!
  • Vektorisasi Julia cepat (dalam banyak kasus lebih cepat daripada bahasa tingkat lebih tinggi lainnya), dan kode devilasinya hampir C cepat. Jadi jika Anda menulis algoritma ilmiah, biasanya Anda pertama kali menulisnya di MATLAB dan kemudian menulisnya kembali dalam C. Julia memungkinkan Anda menulisnya sekali, lalu berikan kode kompiler dan 5 menit kemudian cepat. Bahkan jika Anda tidak melakukannya, ini berarti Anda hanya menulis kode dengan cara apa pun yang terasa alami dan akan berjalan dengan baik. Dalam R / Python, Anda kadang-kadang harus berpikir cukup keras untuk mendapatkan versi vektor yang baik (yang mungkin sulit dipahami nanti).
  • Pemrogramannya sangat bagus. Pikirkan berapa kali Anda seperti "Seandainya saya bisa bahasa Albania". Tulis makro untuk itu. Biasanya seseorang sudah memilikinya.
  • Semuanya ada di Github. Kode sumber. Paket-paket. Sangat mudah untuk membaca kode, melaporkan masalah kepada pengembang, berbicara dengan mereka untuk mengetahui cara melakukan sesuatu, atau bahkan meningkatkan paket sendiri.
  • Mereka memiliki beberapa perpustakaan yang sangat bagus. Untuk statistik, Anda mungkin tertarik dengan paket pengoptimalan mereka (JuliaOpt adalah grup yang mengelola mereka). Paket numerik sudah kedudukan tertinggi dan hanya meningkat.

Yang mengatakan, saya masih sangat menyukai Rstudio, tetapi Juno baru di Atom benar-benar baik. Ketika tidak lagi dalam pengembangan yang berat dan stabil, saya dapat melihatnya lebih baik daripada Rstudio karena kemudahan plugin (contoh: ia memiliki plugin yang baik untuk beradaptasi dengan layar hidpi). Jadi saya pikir Julia adalah bahasa yang baik untuk dipelajari sekarang. Sejauh ini, itu bekerja dengan baik untuk saya. YMMV.

Chris Rackauckas
sumber
Apakah Anda keberatan memperbarui jawaban ini sejak lebih dari 3 tahun telah berlalu?
Bayequentist
1
Saya memberikan respons yang diperbarui di sini: scicomp.stackexchange.com/questions/10922/… . Mungkin itu harus disalin.
Chris Rackauckas
11

Saya pikir "pelajari X daripada Y" bukan cara yang tepat untuk merumuskan pertanyaan. Bahkan, Anda dapat mempelajari (setidaknya dasar-dasar) keduanya dan memutuskan alat yang tepat tergantung pada tugas nyata yang ada. Dan karena Julia mewarisi sebagian besar sintaks dan konsepnya dari bahasa lain, itu seharusnya sangat mudah untuk dipahami (juga Python, meskipun saya tidak yakin hal yang sama dapat dikatakan tentang R).

Jadi bahasa mana yang lebih cocok untuk tugas apa? Berdasarkan pengalaman saya dengan alat-alat ini saya akan menilai mereka sebagai berikut:

  • Untuk penelitian statistik murni yang dapat dilakukan dengan REPL dan beberapa skrip, R tampaknya menjadi pilihan yang sempurna. Ini secara khusus dirancang untuk statistik, memiliki sejarah alat terpanjang dan mungkin set perpustakaan statistik terbesar.

  • Jika Anda ingin mengintegrasikan statistik (atau, misalnya, pembelajaran mesin) ke dalam sistem produksi , Python sepertinya alternatif yang jauh lebih baik: sebagai bahasa pemrograman tujuan umum ia memiliki tumpukan web yang luar biasa, mengikat sebagian besar API dan perpustakaan secara literal untuk semuanya, dari membatalkan web untuk membuat game 3D .

  • Algoritma berkinerja tinggi jauh lebih mudah untuk ditulis dalam Julia . Jika Anda hanya perlu menggunakan atau menggabungkan pustaka yang ada seperti SciKit Learn atau e1071 yang didukung oleh C / C ++, Anda akan baik-baik saja dengan Python dan R. Tapi ketika datang untuk mem-backend sendiri dengan cepat, Julia menjadi penghemat waktu nyata: ini jauh lebih cepat daripada Python atau R dan tidak memerlukan pengetahuan tambahan tentang C / C ++. Sebagai contoh, Mocha.jl menambahkan kembali dalam Julia murni kerangka kerja pembelajaran mendalam Caffe , awalnya ditulis dalam C ++ dengan pembungkus dengan Python.

  • Juga jangan lupa bahwa beberapa perpustakaan hanya tersedia dalam beberapa bahasa. Misalnya hanya Python yang memiliki ekosistem matang untuk penglihatan komputer, beberapa algoritma pencocokan bentuk dan trasnformasi diimplementasikan hanya di Julia dan saya pernah mendengar tentang beberapa paket unik untuk statistik dalam kedokteran di R.

ffriend
sumber
Saya akan mengatakan bahwa kebanyakan orang harus mencoba untuk memilih satu dan tetap sebagian besar dengan itu --- bagi saya setidaknya, menggunakan beberapa bahasa saya akhirnya mencampur mereka, kehilangan banyak waktu seperti itu ...
kjetil b halvorsen
1
Masalah paradoks dengan penulisan algoritma kinerja tinggi adalah bahwa meskipun mereka dapat lebih mudah untuk menulis dalam bahasa tingkat yang lebih tinggi seperti R atau Julia, saat Anda benar-benar menulis algoritma kinerja tinggi, Anda mungkin suka menggunakan sesuatu seperti C ++. Atau mungkin itu hanya aku.
Cliff AB
3

(B) Kasus penggunaan Statistik apa yang Anda sarankan seseorang untuk menggunakan Julia

(c) Jika R lambat pada tugas tertentu, masuk akal untuk beralih ke Julia atau Python?

Dimensi tinggi dan masalah intensif komputasi.

  • Multiprocessing. Kemampuan paralel simpul tunggal Julia ( @spawnat) jauh lebih nyaman daripada yang ada di python. Misalnya dalam python Anda tidak dapat menggunakan peta mengurangi kumpulan multiprosesing pada REPL dan setiap fungsi yang Anda ingin sejajar membutuhkan banyak boilerplate.

  • Komputasi cluster. ClusterManagersPaket Julia memungkinkan Anda menggunakan cluster komputasi hampir seperti Anda menggunakan mesin tunggal dengan beberapa core. [Saya telah bermain dengan membuat ini terasa lebih seperti menulis di ClusterUtils ]

  • Berbagi memori. SharedArrayObjek Julia lebih unggul daripada objek memori bersama yang setara dalam python.

  • Kecepatan. Implementasi Julia saya (mesin tunggal) lebih cepat dari implementasi R saya pada generasi angka acak, dan pada aljabar linier (mendukung BLAS multithreaded).
  • Interoperabilitas. PyCallModul Julia memberi Anda akses ekosistem python tanpa pembungkus - misalnya saya menggunakan ini untuk pylab. Ada sesuatu yang mirip dengan R, tapi saya belum mencobanya. Ada juga ccalluntuk perpustakaan C / Fortran.
  • GPU. Pembungkus CUDA Julia jauh lebih berkembang daripada yang ada di python (Rs hampir tidak ada ketika saya memeriksa). Saya menduga ini akan terus menjadi kasus karena betapa lebih mudah untuk memanggil perpustakaan eksternal di Julia daripada di python.

  • Ekosistem. The Pkgpenggunaan modul github sebagai backend. Saya percaya ini akan memiliki dampak besar pada pemeliharaan jangka panjang modul Julia karena membuatnya lebih mudah untuk menawarkan patch atau bagi pemilik untuk meneruskan tanggung jawab.

  • σ

Menulis kode cepat untuk masalah besar akan semakin tergantung pada komputasi paralel. Python secara inheren paralel tidak ramah (GIL), dan multiprosesor asli dalam R tidak ada AFAIK. Julia tidak mengharuskan Anda drop-down ke C untuk menulis kode pemain, sambil mempertahankan banyak nuansa python / R / Matlab.

Kelemahan utama Julia berasal dari python / R adalah kurangnya dokumentasi di luar fungsionalitas inti. python sangat matang, dan apa yang tidak dapat Anda temukan di dokumen biasanya pada stackoverflow. Sistem dokumentasi R cukup baik sebagai perbandingan.

(a) Apakah Anda akan menyarankan pengguna baru alat statistik untuk mempelajari Julia daripada R?

Ya, jika Anda cocok dengan use case di bagian (b). Jika use case Anda melibatkan banyak pekerjaan yang heterogen

dugaan
sumber