Apakah Julia punya harapan untuk bertahan di komunitas statistik?

161

Baru-baru ini saya membaca posting dari R-Blogger, yang terhubung dengan posting blog ini dari John Myles White tentang bahasa baru bernama Julia . Julia mengambil keuntungan dari kompiler just-in-time yang memberikannya waktu lari cepat jahat dan menempatkannya pada urutan yang sama besarnya kecepatan seperti C / C ++ ( urutan yang sama , tidak sama cepat). Selain itu, ia menggunakan mekanisme looping ortodoks yang kita kenal yang memulai pemrograman pada bahasa tradisional, alih-alih R menerapkan pernyataan dan operasi vektor.

R tidak akan pergi dengan cara apapun, bahkan dengan timing yang luar biasa dari Julia. Ini memiliki dukungan luas dalam industri, dan banyak paket bagus untuk melakukan apa saja.

Ketertarikan saya pada dasarnya adalah Bayesian, di mana vektorisasi seringkali tidak memungkinkan. Tentu saja tugas serial harus dilakukan menggunakan loop dan melibatkan perhitungan berat pada setiap iterasi. R bisa sangat lambat pada tugas-tugas pengulangan serial ini, dan C / ++ bukanlah jalan untuk menulis. Julia sepertinya merupakan alternatif yang bagus untuk menulis dalam C / ++, tetapi masih dalam masa pertumbuhan, dan tidak memiliki banyak fungsi yang saya sukai dari R. Ini hanya masuk akal untuk mempelajari Julia sebagai meja kerja statistik komputasi jika mendapat cukup dukungan dari komunitas statistik dan orang-orang mulai menulis paket yang bermanfaat untuknya.

Pertanyaan saya ikuti:

  1. Fitur apa yang perlu dimiliki Julia agar memiliki daya pikat yang menjadikannya bahasa statistik de facto?

  2. Apa kelebihan dan kekurangan dari belajar Julia untuk melakukan tugas-tugas yang berat secara komputasional, dibandingkan dengan belajar bahasa tingkat rendah seperti C / ++?

Christopher Aden
sumber
7
Bagaimana Julia lebih baik daripada Incanter ( incanter.org ) dan proyek serupa lainnya?
Wayne
24
Re konstruksi prosedural (misalnya perulangan): yang terdengar seperti langkah raksasa ke belakang. Kami berada di puncak perubahan dari platform tunggal dan kecil-CPU ke platform paralel besar-besaran. Ketika evolusi ini terjadi pada dekade berikutnya, gaya pengkodean fungsional yang mudah dan secara paralel dapat menuai keuntungan besar dibandingkan kode prosedural. Banyak pertimbangan lain yang mengintervensi pilihan platform statistik seseorang, tentu saja, tetapi yang ini patut diingat sebagai strategi jangka panjang.
whuber
12
Christopher, pendekatan yang baik adalah membingkai pertanyaan dengan cara yang dirancang untuk mengumpulkan alasan dan bukti. Misalnya, alih-alih "Apakah Julia memiliki daya pikat yang diperlukan ...," cobalah sesuatu seperti "Unsur-unsur apa yang mungkin diberikan Julia untuk memperoleh daya tarik dan mengapa"; alih-alih "Apakah itu layak dipelajari," tanyakan, "Mengapa Julia layak belajar sekarang? Apa keuntungan potensialnya?" Anda selanjutnya dapat memperbaiki pertanyaan itu dengan menentukan jenis penggunaan Julia yang Anda mungkin tertarik, seperti pengembangan perangkat lunak, memecahkan masalah satu kali, biostatistik, penambangan data, dll.
whuber
1
@ Wouber: Saya menghargai saran dan telah menerapkannya. Terima kasih!
Christopher Aden
2
@ trolle3000 Saya tidak berpikir ada yang mengklaim bahwa paralelisasi begitu otomatis. Namun, ketika (jika) Anda telah menulis versi fungsional suatu program, Anda telah melakukan banyak upaya yang diperlukan untuk memparalelkannya, itulah sebabnya mengapa aplikasi seperti Mathematica dapat mengotomatisasi paralelisasi, seringkali cukup efektif. Jika alih-alih Anda telah membuat kode algoritma secara prosedural, biasanya akan lebih sulit untuk memparalelkannya.
whuber

Jawaban:

96

Saya pikir kuncinya adalah apakah perpustakaan mulai dikembangkan atau tidak untuk Julia. Semuanya baik dan bagus untuk melihat contoh mainan (bahkan jika itu mainan rumit) yang menunjukkan bahwa Julia meniup R keluar dari air pada tugas-tugas R yang buruk.

Tapi loop yang dilakukan dengan buruk dan algoritma kode tangan tidak mengapa banyak orang yang saya tahu yang menggunakan R menggunakan R. Mereka menggunakannya karena untuk hampir semua tugas statistik di bawah matahari, seseorang telah menulis kode R untuk itu. R adalah bahasa pemrograman dan paket statistik - saat ini Julia adalah yang pertama.

Saya pikir mungkin untuk sampai di sana, tetapi ada banyak bahasa yang lebih mapan (Python) yang masih berjuang untuk menjadi alat statistik yang dapat digunakan.

Fomite
sumber
Apakah Anda benar-benar melihat kode tolok ukur (atau tolok ukur) untuk mengetahui bahwa metode R ditulis dengan buruk? Saya mencoba menemukannya sendiri untuk melihat bagaimana berbagai bahasa digunakan ...
Josh Hemann
10
@ JoshHemann Saya sudah melihat cukup untuk mengetahui bahwa di papan R adalah "lambat-ish". Itu tidak selalu hilang setiap waktu, dan itu kadang-kadang mengeluarkan Python keluar dari air, tetapi dalam semua kasus itu pita "siapa yang menang" tampaknya pergi ke mana programmer Python atau R sebenarnya menulis sebagian besar barang mereka di C .
Fomite
5
Kode tolok ukurnya mengerikan . Keuntungan kecepatan 2000x dimungkinkan untuk contoh R mereka. Lihat stackoverflow.com/questions/9968578/… , terutama komentar.
Ari B. Friedman
12
Anda benar, @gsk. Misalnya, pisum(di github.com/JuliaLang/julia/blob/master/test/perf/perf.R ) membutuhkan waktu 7,76 detik sedangkan penulisan ulang sederhana menggunakan R idiomatik ( replicate(500, sum((1 / (10000:1))^2))[500]) membutuhkan 0,137 detik, lebih dari kecepatan 50 kali lipat.
Whuber
2
Salah satu alasan mengapa R lepas landas adalah kompatibilitasnya dengan S-PLUS. Orang-orang dapat menggunakan banyak kode lama. Kode lama yang banyak digunakan memiliki lebih sedikit bug. Dengan hal-hal baru seperti Julia, yang tidak kompatibel dengan kode lama, Anda memerlukan situasi "aplikasi pembunuh": sesuatu yang membenarkan semua kesulitan untuk pindah ke platform baru. Ini mirip dengan bahasa baru Google Go - percobaan yang bagus, tetapi mengapa saya mempelajarinya?
Aksakal
56

Saya setuju dengan banyak komentar lainnya. "Berharap"? Tentu. Saya pikir Julia telah belajar banyak dari apa yang R dan Python / NumPy / Pandas dan sistem lainnya telah melakukan yang benar dan salah selama bertahun-tahun. Jika saya lebih pintar daripada saya, dan ingin menulis bahasa pemrograman baru yang akan menjadi substrat untuk lingkungan pengembangan statistik di masa depan, itu akan sangat mirip dengan Julia.

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:

(daftar diperbarui dari waktu ke waktu ...)

  • tipe faktor yang dipesan secara opsional
  • sebagian besar tes statistik dan model statistik
  • pemrograman terprogram / dukungan analisis yang dapat diperbanyak
  • Kelas-R, atau bahkan merencanakan kelas-Matlab

Untuk bersaing dengan R, Julia dan paket statistik tambahan harus cukup bersih dan cukup lengkap sehingga non-programmer yang pintar, kata mahasiswa pascasarjana dalam ilmu sosial, dapat menggunakannya secara wajar. Ada banyak pekerjaan untuk sampai ke sana. Mungkin itu akan terjadi, mungkin akan gagal, mungkin sesuatu yang lain (R 3.0?) Akan menggantikannya.

Memperbarui:

Julia sekarang mendukung DataFrames dengan data / NAs yang hilang, modul / ruang nama, formulajenis dan model.matrixinfrastruktur, merencanakan (sorta), dukungan basis data (tetapi belum ke DataFrames), dan menyampaikan argumen dengan kata kunci. Sekarang juga ada IDE (Julia Studio), dukungan Windows, beberapa tes statistik, dan beberapa dukungan tanggal / waktu.

Harlan
sumber
literate programming/reproduce-able analysis support-> lihat IJulia .
Piotr Migdal
1
Tambahkan kernel iJulia untuk ekosistem notebook iPython / Jupyter.
thecity2
2
Julia Studio sedang dihapus, dan Juno sekarang IDE
Antony
3
2,5 tahun setelah jawaban ini pertama kali diposting, dua pertiga dari item dalam daftar "must have" sekarang diterapkan. Saya pikir itu bukti terbaik yang bisa Anda temukan bahwa Julia memiliki janji nyata.
pengirim
5 tahun pasti telah berlalu. Apakah kita sudah sampai, @ Harlan?
Tugas
35

Bagi saya, satu hal yang sangat penting untuk bahasa analisis data adalah memiliki fungsi aljabar kueri / relasional dengan default yang wajar dan desain yang berorientasi interaktif, dan idealnya ini harus menjadi bahasa yang terintegrasi. IMO, tidak ada bahasa FOSS yang saya gunakan melakukan ini secara efektif, bahkan R.

data.frame sangat kikuk untuk bekerja secara interaktif - misalnya, ia mencetak seluruh struktur data saat pemanggilan, $ sintaks sulit untuk bekerja secara programatik, kueri membutuhkan referensi diri yang berlebihan (mis. DF[DF$x < 10]), gabungan dan agregasi adalah canggung. Data.table memecahkan sebagian besar gangguan ini, tetapi karena ini bukan bagian dari implementasi inti, sebagian besar kode R tidak menggunakan fasilitasnya.

Panda dalam python menderita kesalahan yang sama.

Keluhan-keluhan ini mungkin kelihatan seperti rewel, tetapi kesalahan ini menumpuk dan pada akhirnya signifikan secara agregat karena akhirnya menghabiskan banyak waktu.

Saya percaya jika Julia ingin berhasil sebagai lingkungan analisis data, upaya harus dikhususkan untuk mengimplementasikan operator tipe SQL (tanpa bagasi sintaks SQL) pada tipe data tabel ramah pengguna.

Yike Lu
sumber
1
+1 - Poin yang menarik, dijelaskan dengan penuh pertimbangan. Selamat datang di komunitas kami!
whuber
4
Untuk menjadi pemilih, Pandaf DataFrame besar sebenarnya tidak mencetak semua isinya ketika dipanggil, seperti yang terjadi di R. Mereka beralih ke menampilkan tajuk kolom bersama dengan jumlah nilai null / non-nol. Juga, sementara saya setuju sintaksisnya tidak ideal, masalah pelingkupan menyulitkan untuk menghilangkan referensi-diri untuk penyaringan gaya-pemahaman. Ini wordier, tetapi juga tahan terhadap benturan namespace jika DataFrame memiliki kolom tambahan saat runtime yang tidak Anda harapkan.
goodside
29

Saya bisa masuk di bawah apa yang Dirk dan EpiGrad katakan; namun ada satu hal lagi yang membuat R menjadi bahasa yang unik dalam ceruknya - sistem tipe berorientasi data.

R's dirancang khusus untuk menangani data, itu sebabnya ia berpusat pada vektor dan memiliki hal-hal seperti data.frame, faktor, NAs, dan atribut.
Sedangkan tipe Julia berorientasi pada kinerja numerik, sehingga kami memiliki skalar, mode penyimpanan, serikat pekerja dan struct yang jelas.

Ini mungkin terlihat jinak, tetapi semua orang yang pernah mencoba melakukan statistik dengan MATLAB tahu bahwa itu sangat menyakitkan.

Jadi, setidaknya bagi saya, Julia tidak dapat menawarkan apa pun yang tidak dapat saya perbaiki dengan beberapa baris C dan membunuh banyak ekspresi yang sangat berguna.

pengguna88
sumber
4
(+1) Poin bagus. Beberapa pemikiran lebih lanjut: Kurangnya data.framefasilitas seperti di Python telah lama mengganggu saya, tetapi sekarang Pandas tampaknya telah menyelesaikan masalah ini. Formula adalah beberapa ekstensi yang direncanakan dari statsmodels (well, kita tahu bahwa kadang-kadang lebih baik untuk menghindari antarmuka rumus di R). Ada proposal data.frame untuk Julia (cukup cepat dibandingkan dengan Python!), (...)
chl
5
Saya pikir @mbq juga memiliki poin tentang C. Jika saya membutuhkan kecepatan pada urutan yang sama besarnya dengan C / C ++ ... Saya dapat menggunakan C / C ++ dengan R.
Fomite
4
@EpiGrad, ya, Anda bisa menulis C / C ++ dan antarmuka dengan R. Tapi itu kelemahan, bukan kekuatan bahasa. Dengan Julia, pengguna akhir tidak perlu menulis C untuk mendapatkan kecepatan.
Harlan
2
@ Harlan Ini hanya kelemahan jika Anda sudah tahu Julia dan C. Saya akan menegaskan waktu yang dihabiskan di C <waktu yang dihabiskan untuk belajar bahasa baru dan menerapkan kembali semuanya dari awal.
Fomite
9
@ Harlan Dan terus terang, orang-orang itu tidak akan menulis ulang barang-barang mereka di Julia. R sebagai paket statistik, bukan bahasa pemrograman adalah kasus penggunaannya .
Fomite
26

Saya bisa melihat Julia menggantikan Matlab, yang akan menjadi layanan besar bagi kemanusiaan.

Untuk mengganti R, Anda harus mempertimbangkan semua hal yang telah disebutkan Neil G, Harlan, dan lainnya, plus satu faktor besar yang saya tidak percaya telah ditangani: instalasi mudah aplikasi dan perpustakaannya.

Saat ini, Anda dapat mengunduh biner R untuk Mac, Windows, atau Linux. Ini bekerja di luar kotak dengan banyak pilihan metode statistik. Jika Anda ingin mengunduh paket, ini adalah perintah sederhana atau klik mouse. Itu hanya bekerja.

Saya pergi untuk mengunduh Julia dan itu tidak sederhana. Bahkan jika Anda mengunduh biner, Anda harus menginstal gfortran untuk mendapatkan perpustakaan yang tepat. Saya mengunduh sumber dan mencoba makedan gagal tanpa pesan yang sangat berguna. Saya memiliki gelar sarjana dan pascasarjana dalam ilmu komputer, jadi saya bisa melihat-lihat dan membuatnya bekerja jika saya memang cenderung. (Aku tidak.) Akankah Joe ahli statistik melakukan itu?

R tidak hanya memiliki banyak pilihan paket, ia memiliki sistem yang cukup canggih yang membuat biner aplikasi dan hampir semua paket, secara otomatis. Jika, karena alasan tertentu, Anda perlu mengkompilasi paket dari sumber, itu tidak terlalu sulit (selama Anda memiliki kompiler yang sesuai, dll, diinstal pada sistem Anda). Anda tidak dapat mengabaikan infrastruktur ini, melakukan semuanya melalui github, dan berharap adopsi luas.

EDIT: Saya ingin bermain-main dengan Julia - itu terlihat menarik. Dua masalah:

1) Ketika saya mencoba menginstal paket tambahan (lupakan apa yang mereka sebut dalam Julia), gagal dengan kesalahan yang tidak jelas. Jelas Mac saya tidak memiliki alat make-like yang mereka harapkan. Tidak hanya gagal, tetapi juga meninggalkan hal-hal yang harus saya hapus secara manual atau instalasi lain akan gagal.

2) Mereka memaksa spasi tertentu dalam satu baris kode. Saya tidak memiliki detail di depan saya, tetapi itu ada hubungannya dengan makro dan tidak memiliki ruang antara makro dan tanda kurung membuka argumennya. Pembatasan semacam itu benar-benar mengganggu saya, karena saya telah mengembangkan pemformatan kode saya selama bertahun-tahun dan bahasa dan saya benar-benar menempatkan spasi antara fungsi / nama makro dan tanda kurung buka. Beberapa batasan pemformatan kode saya mengerti, tetapi spasi dalam satu baris?

Wayne
sumber
5
Julia masih SANGAT banyak dalam masa pertumbuhan. Saya bukan sejarawan, tetapi saya berani bertaruh bahwa binari R yang bersih tidak keluar dalam beberapa bulan pertama juga. Poin Anda tentang sistem distribusi adalah sesuatu yang belum pernah saya lihat sebutkan sejauh ini. Kemudian lagi, saya juga akan bertaruh bahwa CRAN tidak tumbuh bersamaan dengan R. "CJAN" pasti akan bagus untuk adopsi skala besar.
Christopher Aden
7
Anda mungkin tertarik untuk mengetahui, @Christopher, bahwa R adalah benar-benar tiruan dari paket (S, kemudian S-Plus) yang telah menjadi sukses komersial (ringan) dan sedang dikembangkan sepuluh tahun sebelumnya. Itu memberikan awal yang signifikan bahwa Julia (dan sebagian besar upaya lainnya) tidak pernah melakukannya.
Whuber
3
@ChristopherAden: Saya setuju bahwa Julia masih muda. Tetapi saya akan sangat tidak setuju bahwa "a 'CJAN' pasti akan bagus untuk adopsi skala besar": ini adalah kebutuhan mutlak. Satu-satunya alat yang dapat saya pikirkan yang tidak memiliki infrastruktur seperti CRAN sangat khusus - seperti JAGS. Tetapi Julia, seperti R, adalah tujuan umum.
Wayne
10
Hari Bahasa Sumber Terbuka akan menggantikan MATLAB akan menjadi hari terbaik bagi dunia teknik.
Royi
9
"Aku bisa melihat Julia menggantikan Matlab, yang akan menjadi layanan besar bagi kemanusiaan." Saya sangat setuju.
davidav
24

Bahasa Julia cukup baru; waktunya di titik terang dapat diukur dalam beberapa minggu (meskipun waktu pengembangannya tentu saja dapat diukur dalam tahun). Sekarang minggu-minggu dalam sorotan adalah minggu yang sangat menarik --- lihat misalnya pembicaraan baru-baru ini di Stanford di mana "baru saja dimulai" --- tetapi apa yang Anda minta dalam hal infrastruktur yang lebih luas dan dukungan paket akan membutuhkan waktu lebih lama untuk mewujudkan.

Jadi saya akan tetap menggunakan R, dan berhati-hati dengan pengembangan alternatif. Tahun lalu banyak orang pergi ke Clojure; tahun ini Julia adalah citarasa baru yang berkuasa. Kami akan melihat apakah itu menempel.

Dirk Eddelbuettel
sumber
16
Karena apa yang saya lihat melalui Rcpp, saya bahkan lebih terkesan oleh Julia --- sekitar 50, 60, 70 kali lipat peningkatan untuk perulangan sederhana seperti di MCMC, dan beberapa ratus kali lipat untuk contoh "degenerasi" seperti fibonacci pada dasarnya sama dengan Rcpp didapat! Tapi saya juga tahu bahwa dengan Rcpp saya masih mendapatkan akses ke 3700 paket CRAN --- dan juga perpustakaan C ++ yang tak terhitung jumlahnya --- sedangkan Julia sekarang hampir tidak memiliki apa-apa. Konon, janji Julia sangat besar. Tapi mungkin ada "dulu" dan "sekarang". Waktu akan menjawab.
Dirk Eddelbuettel
2
Dan jangan lupa Incanter, yang seharusnya menjadi lingkungan statistik berdasarkan Clojure. Bagaimana Julia lebih unggul dari itu?
Wayne
2
@ Wyne, jangan berlumpur di sini. Buka pertanyaan baru untuk itu (mungkin yang meminta perbandingan antara beberapa bahasa)
naught101
2
@ naught011: Saya hanya menggemakan pendapat Dirk bahwa Clojure adalah citarasa terbaik bulan ini, kemudian secara khusus Incanter, sekarang Julia. Saya tidak berpikir bahwa Julia atau Incanter (atau Clojure) memiliki peluang untuk menjadi platform statistik umum.
Wayne
2
Saya tidak tahu, tapi saya dengan senang hati memperbarui sisi R: Sampai hari ini lebih dari 6400 paket di CRAN, dan sekarang lebih dari 350 dari mereka yang menggunakan Rcpp. Masih bekerja untuk saya. Orang-orang Julia tampak aktif, dan bahagia --- dan memiliki pilihan adalah hal yang baik. Tidak ada satu bahasa untuk semua masalah: maaf, Python .
Dirk Eddelbuettel
19

Bruce Tate di sini, penulis Seven Languages ​​in Seven Weeks. Berikut ini beberapa pemikiran. Saya sedang mengerjakan Julia untuk buku lanjutannya. Berikut ini hanya pendapat saya setelah beberapa minggu bermain.

Ada dua kekuatan mendasar yang berperan. Pertama, semua bahasa memiliki umur pakai. R akan diganti suatu hari nanti. Kami tidak tahu kapan. Bahasa baru memiliki waktu yang sangat sulit untuk berkembang. Ketika suatu bahasa baru berkembang, ia biasanya memecahkan beberapa titik rasa sakit yang luar biasa.

Dua hal ini saling berkaitan. Bagi saya, kami mulai melihat tema yang terbentuk di sekitar bahasa seperti R. Itu tidak cukup cepat, dan itu lebih sulit daripada yang seharusnya. Mereka yang dapat hidup di dalam amplop kinerja tertentu dan tetap berada di perpustakaan yang didirikan baik-baik saja. Mereka yang tidak dapat membutuhkan lebih banyak, dan mereka mulai mencari lebih banyak.

Masalahnya, arsitektur komputer berubah, dan untuk memanfaatkannya, bahasa dan konstruksinya perlu dibangun dengan cara tertentu. Pandangan Julia tentang konkurensi itu menarik. Ini mengoptimalkan hal yang tepat untuk bahasa seperti itu: distribusi yang transparan dan pergerakan data yang efisien antar proses. Ketika saya menggunakan Julia untuk tugas-tugas umum, peta dan transformasi dan sejenisnya, saya hanya memanggil fungsi. Saya tidak perlu khawatir tentang pipa ledeng.

Bagi saya, fakta bahwa Julia lebih cepat pada satu prosesor itu menarik, tetapi tidak terlalu membebani R. Hal yang menarik bagi saya adalah bahwa karena prosesor semakin bergantung pada multicore untuk kinerja, masalah komputasi teknis hampir diposisikan secara ideal. untuk mengambil keuntungan sebaik mungkin, mengingat bahasa yang tepat.

Fitur lain yang akan membantu hal itu adalah makro. Kecepatan bahasa hanya intens sekarang. Makro memungkinkan Anda membangun dengan blok bangunan yang lebih besar dan lebih bersih. Melihat perpustakaan itu menarik tetapi tidak menceritakan keseluruhan gambar. Anda perlu melihat pertumbuhan perpustakaan. Lintasan Julia cukup tepat di sini.

Clojure menarik bagi sebagian orang karena tidak ada bahasa teknis yang melakukan apa yang dapat dilakukan R, jadi beberapa orang mencari bahasa tujuan umum untuk mengisi kekosongan itu. Saya sebenarnya penggemar berat. Tapi Clojure adalah otak yang cukup serius. Clojure akan ada di sana untuk programmer yang perlu melakukan komputasi teknis. Bukan untuk insinyur dan ilmuwan. Terlalu banyak yang harus dipelajari.

Jadi bagi saya, Julia atau sesuatu seperti itu akan benar-benar menggantikan R suatu hari nanti. Ini masalah waktu.

pengguna1295658
sumber
Tidak banyak bahasa baru yang menyediakan tipe templated dan ekosistem makro turunan kelas pertama - Julia melakukannya. Kemampuan ini bersama dengan fitur konkurensi dan kecepatannya (yang kemungkinan akan meningkat di versi mendatang) memberikannya posisi kompetitif yang kuat terhadap bahasa lain, dalam pandangan saya. Saya jarang menggunakan R tetapi sering menggunakan C ++ (w / templates) dan Lisp (w / macro). Julia dapat melakukan keduanya, dengan bersih dan efisien dalam satu bahasa yang jelas. Saya yakin bahwa Julia akan terbukti menjadi bahasa utama di masa depan.
AsymLabs
15

Setiap kali saya melihat bahasa baru, saya bertanya pada diri sendiri mengapa bahasa yang ada tidak dapat ditingkatkan.

Keuntungan besar Python adalah

  • satu set modul yang kaya (tidak hanya statistik, tetapi merencanakan perpustakaan, output ke pdf, dll.)
  • konstruksi bahasa yang akhirnya Anda butuhkan dalam jangka panjang (konstruksi berorientasi objek yang Anda butuhkan dalam proyek besar; dekorator, penutup, dll. yang menyederhanakan pengembangan)
  • banyak tutorial dan komunitas pendukung yang besar
  • akses ke mapreduce, jika Anda memiliki banyak data untuk diproses dan tidak keberatan membayar beberapa sen untuk menjalankannya di sebuah cluster.

Untuk menyalip R, Julia, dll., Python bisa digunakan

  • pengembangan kompilasi just-in-time untuk Python terbatas untuk memberi Anda lebih banyak kecepatan pada satu mesin (tetapi mapreduce masih lebih baik jika Anda tahan latensi)
  • perpustakaan statistik yang lebih kaya
Neil G
sumber
3
Ini mungkin benar, tetapi untuk pengguna yang sangat biasa-biasa saja, desain bahasa Python mungkin sedikit lebih sulit untuk digunakan daripada sesuatu seperti Matlab, atau Julia, yang bahkan memiliki sintaksis seperti matematika. Anda bisa mengatakan y = 3x+2dalam Julia dan itu berhasil!
Harlan
6
Itu lucu: ketika saya pertama kali melihat Python sekitar 10+ tahun yang lalu saya memiliki reaksi yang persis sama (mengapa ini diperlukan? Mengapa tidak hanya meningkatkan apa yang sudah ada di sana? Mengapa mempelajari seperangkat keanehan sintaksis yang aneh, nama kelas, metode , dan prosedur, dan sisanya?). :-)
whuber
2
@NeilG Bukan ahli statistik profesional seperti halnya peneliti non-programmer terutama dalam sains. Python bagus untuk programmer, tetapi jika semua yang Anda ingin lakukan adalah memuat data psikologi Anda dan menyesuaikan beberapa model (dengan cepat), sintaksis seperti matematika yang sangat sederhana mungkin lebih disukai daripada desain berbasis objek Python yang elegan.
Harlan
3
@NeilG Perlu diingat bagian dari kesuksesan R adalah bahwa itu tidak hanya digunakan oleh ahli statistik. Ini digunakan oleh orang yang melakukan statistik . Dan ilmuwan sosial, dokter, dan mahasiswa pascasarjana sains tahun pertama benar-benar pengguna biasa.
Fomite
6
Saya pikir (anggota CrossValidated) posting blog John D Cook tepat: Saya lebih suka memprogram matematika dalam bahasa tujuan umum daripada mencoba kode matematika dan masalah sistem dalam bahasa matematika. Jika komunitas Julia dapat mengingat hal ini, ada kemungkinan besar bahasa akan menempel pada pemrograman analitik secara umum (statistik hanya menjadi satu bagian dari itu). Lihat johndcook.com/blog/2012/04/02/why-scipy
Josh Hemann
9

Julia tidak akan segera mengambil alih R. Periksa Microsoft R open.

https://mran.revolutionanalytics.com/open/

Ini adalah versi R yang disempurnakan yang secara otomatis menggunakan semua inti komputer Anda. Ini adalah R yang sama, bahasa yang sama, paket yang sama. Saat Anda menginstalnya, RStudio juga akan menggunakannya di konsol. Kecepatan MRO bahkan lebih cepat dari Julia. Saya melakukan banyak komputasi tugas berat dan telah menggunakan Julia lebih dari setahun. Saya beralih ke R baru-baru ini karena R memiliki dukungan yang lebih baik dan RStudio adalah editor yang luar biasa. Julia masih dalam tahap awal dan mungkin tidak mengejar Python atau R segera.

Milton Mai
sumber
8

Berikut ini mungkin tidak pantas menjadi jawaban, tetapi terlalu penting untuk dimakamkan sebagai komentar atas tanggapan orang lain ...

Saya belum banyak mendengar tentang konsumsi memori, hanya kecepatan. Seluruh semantik R yang dilewati-oleh-nilai bisa menyakitkan, dan ini telah menjadi salah satu kritik terhadap bahasa (yang merupakan masalah terpisah dari berapa banyak paket hebat yang sudah ada). Manajemen memori yang baik adalah penting, karena memiliki cara untuk berurusan dengan pemrosesan di luar inti (misalnya, array atau pytable memori yang dipetakan numpy , atau format xdf dari Analytics Analytics). Sementara kompiler JIT PyPy memungkinkan beberapa tolok ukur Python yang mencolok, konsumsi memori bisa sangat tinggi. Jadi, apakah ada yang punya pengalaman dengan Julia dan penggunaan memori? Kedengarannya seperti ada kebocoran memori pada versi "alpha" Windows yang tidak diragukan lagi akan diatasi, dan saya masih menunggu akses ke kotak Linux untuk bermain dengan bahasa sendiri.

Josh Hemann
sumber
Benar, tetapi ada cara untuk menggunakan pass-by-reference di R (Kelas Referensi, untuk satu).
Ari B. Friedman
1
Dan R tidak benar-benar benar-benar melewati nilai. Evaluasi malas dan beberapa optimasi pintar berarti bahwa seringkali data tidak disalin kecuali harus dilakukan.
Ari B. Friedman
8

Saya pikir tidak mungkin Julia menggantikan R, karena banyak alasan yang disebutkan sebelumnya. Julia adalah pengganti Matlab, bukan pengganti R; mereka memiliki tujuan yang berbeda. Bahkan setelah Julia memiliki perpustakaan statistik yang lengkap, tidak ada yang akan mengajar kelas Intro ke Statistik di dalamnya.

Namun, area di mana itu bisa luar biasa adalah sebagai bahasa pemrograman kecepatan-dioptimalkan yang kurang menyakitkan daripada C / C ++. Jika itu ditautkan dengan mulus ke R (dalam gaya Rcpp), maka itu akan melihat satu ton digunakan dalam menulis segmen kode kritis-cepat. Sayangnya tidak ada tautan seperti itu saat ini:

https://stackoverflow.com/questions/9965747/linking-r-and-julia

Ari B. Friedman
sumber
Tetapi sekarang ada satu: comments.gmane.org/gmane.comp.lang.julia.devel/15153 belum mencobanya (belum).
kjetil b halvorsen
8

Saya seorang pemula Julia, dan saya kompeten. Alasan saya menemukan Julia menarik sejauh ini adalah kinerja dan kompatibilitas.

Alat GPU. Saya ingin menggunakan CUSPARSE untuk aplikasi statistik. Hasil CRAN menunjukkan tidak banyak di luar sana. Julia memiliki binding yang tampaknya berfungsi dengan baik sejauh ini.

using CUSPARSE
N = 1000
M = 1000
hA = sprand(N, M, .01)
hA = hA' * hA
dA = CudaSparseMatrixCSR(hA)
dC = CUSPARSE.csric02(dA, 'O') #incomplete Cholesky decomp
hC = CUSPARSE.to_host(dC)

Alat HPC. Seseorang dapat menggunakan sebuah cluster secara interaktif dengan beberapa node komputasi.

nnodes = 2
ncores = 12    #ask for all cores on the nodes we control
procs = addprocs(SlurmManager(nnodes*ncores), partition="tesla", nodes=nnodes)
for worker in procs
    println(remotecall_fetch(readall, worker, `hostname`))
end

Kompatibilitas python. Ada akses ke ekosistem python. Misalnya, sangat mudah untuk mengetahui cara membaca data pencitraan otak:

import PyCall
@pyimport nibabel

fp = "foo_BOLD.nii.gz"
res = nibabel.load(fp)
data = res[:get_data]();

Kompatibilitas C. Berikut ini menghasilkan integer acak menggunakan pustaka standar C.

ccall( (:rand, "libc"), Int32, ())

Kecepatan. Pikir saya akan melihat bagaimana paket Distributions.jl dilakukan terhadap R'sorm - yang saya anggap dioptimalkan.

julia> F = Normal(3,1)
Distributions.Normal(μ=3.0, σ=1.0)

julia> @elapsed rand(F, 1000000)
0.03422067

Dalam R:

> system.time(rnorm(1000000, mean=3, sd=1))
   user  system elapsed 
  0.262   0.003   0.266 
perkiraan dugaan
sumber
1
@NickCox, karena sudah ada lebih dari selusin jawaban, saya pikir mungkin menarik untuk menyorot sudut alternatif. Juga, saya memposting konsep awal secara tidak sengaja :)
dugaan
1
Pertanyaannya adalah mengapa Julia mungkin bertahan di komunitas statistik, jawaban saya berpusat pada dukungan yang tampaknya baik untuk hpc + gpu, yang mungkin menarik bagi banyak orang dengan pekerjaan intensif komputasi.
dugaan
7

Julia 1.0 baru saja keluar dengan IDE yang sangat bermanfaat (Juno). Itu keluar agak terlambat ke pesta karena Python telah mendominasi Machine Learning, sementara R terus mendominasi setiap jenis analisis statistik lainnya. Yang sedang berkata, Julia sudah naik ke menonjol di bidang keuangan dan algoritma perdagangan sebagai waktu pengembangan yang cepat DAN eksekusi adalah suatu keharusan. Menurut pendapat saya, kecuali ada bahasa lain yang jauh lebih baik, kenaikan Julia untuk menonjol mungkin akan terlihat seperti ini:

(1) Mulai makan siang MATLAB. Pengguna MATLAB menyukai sintaks MATLAB tetapi membenci hampir semua hal lainnya. Kelambatan, lisensi yang mahal, cara-cara yang sangat terbatas untuk menangani struktur data kompleks yang bukan matriks. Saya ingat satu kutipan di mana dikatakan bahwa "Jika Julia menggantikan MATLAB, itu akan menjadi layanan besar bagi kemanusiaan". Pengguna MATLAB dapat menjadi mahir dalam Julia dengan sangat cepat dan akan terkesan dengan kemudahannya untuk menulis kode kualitas yang jauh lebih banyak daripada apa yang dapat dilakukan MATLAB (Structs yang cepat yang dapat Anda masukkan ke dalam array dan dengan cepat diulang?). Tidak hanya itu, para peneliti dapat membuat kotak alat serius di Julia (sebuah tim kecil siswa Ph.D. menulis paket persamaan diferensial kelas dunia) yang tidak mungkin dilakukan dengan MATLAB.

(2) Mulai mengambil alih penelitian dalam metode numerik dan simulasi. MIT membuang berat badannya di belakang Julia, dan komunitas riset mendengarkan MIT. Simulasi numerik dan metode numerik baru adalah masalah yang tidak jelas yang tidak memiliki perpustakaan. Di sinilah Julia sebagai bahasa bersinar; jika tidak ada perpustakaan yang tersedia, jauh lebih mudah untuk menulis kode kualitas cepat di Julia daripada bahasa lain. Ini akan menjadi bahasa numerik / simulasi yang ditulis oleh ahli matematika untuk ahli matematika (suara mirip dengan R belum?)

(3) Terobosan lain dalam Pembelajaran Mesin terjadi yang memberi Julia keunggulan. Ini sedikit wildcard yang mungkin tidak terjadi. TensorFlow bagus, tetapi sangat sulit untuk diretas. Python sudah mulai menunjukkan celah-celah dan TensorFlow sudah mulai mengadopsi Swift (dengan Julia mendapatkan penghargaan terhormat). Jika terobosan pembelajaran mesin lain terjadi, akan lebih mudah untuk mengimplementasikan dan meretas paket Julia seperti Flux.jl.

(4) Julia mulai perlahan mengejar R, yang akan memakan waktu cukup lama. Melakukan statistik di MATLAB itu menyakitkan, tetapi Juila sudah jauh di depan dari MATLAB dengan Distributions.jl. Faktanya adalah, alur kerja R dapat dengan mudah diterjemahkan ke Julia. Satu-satunya keuntungan nyata yang dimiliki R adalah kenyataan bahwa ada begitu banyak paket yang ditulis oleh ahli statistik untuk ahli statistik. Namun proses ini, juga mudah dilakukan di Julia. Perbedaannya adalah bahwa Julia cepat sekali dan Anda tidak perlu menggunakan bahasa lain untuk kinerja (paket R yang lebih "serius" ditulis dalam bahasa seperti C). Masalah dengan R adalah paket yang ditulis dalam R terlalu lambat untuk menangani set data yang besar. Satu-satunya alternatif adalah menerjemahkan paket-paket ke dalam bahasa lain yang membuat pengembangan dalam R lebih lambat daripada Julia.

Deduksi
sumber
2
Kutipan tentang mengganti Matlab yang Anda ingat berasal dari utas ini . :)
Dougal
5

Saya tertarik dengan janji kecepatan yang lebih baik dan paralisis mudah menggunakan arsitektur yang berbeda. Untuk alasan itu saya pasti akan menonton pengembangan Julia tetapi saya tidak mungkin menggunakannya sampai dapat menangani model campuran linier umum, memiliki paket bootstrap generik yang baik, bahasa model sederhana untuk membangun desain matriks kemampuan setara dengan ggplot2 dan berbagai macam dari algoritma pembelajaran mesin.

Tidak ada ahli statistik yang mampu memiliki sikap fundamentalis terhadap pilihan alat. Kami akan menggunakan apa pun yang memungkinkan kami menyelesaikan pekerjaan dengan paling efisien. Dugaan saya adalah saya akan bertahan dengan R untuk beberapa tahun lagi, tetapi tetapi akan menyenangkan untuk terkejut.

Mervyn thomas
sumber
Hai Mervyn, dan selamat datang di Stats.SE! Julia telah membuat beberapa peningkatan substansial sejak saya membuat posting ini (hampir setahun yang lalu!). Douglas Bates mem-porting beberapa kode GLM-nya (mungkin GLMM?) Ke Julia dmbates.blogspot.com/2012/04/r-programmer-looks-at-julia.html ), dan halaman utama Github telah melihat banyak pembaruan di masa lalu tahun. Pandangan saya tentang Julia sejauh ini (saya sudah menggunakannya berulang kali sejak tahun lalu) adalah alat yang bagus untuk kecepatan, yang saya gunakan untuk beberapa MCMC mentah, tetapi belum menggantikan R di rantai alat saya. Tidak bisa menunggu R menjadi lebih cepat, atau Julia menjadi lebih luas!
Christopher Aden
Doug belum mem-porting GLMMs. Jika seseorang ingin membantu saya, saya yakin dia akan bahagia ...
Ben Bolker
4

Kemewahan NA di R tidak datang tanpa penalti kinerja. Jika Julia mendukung NA dengan penalti kinerja yang lebih kecil maka itu menjadi menarik bagi segmen komunitas statistik, tetapi NA juga memaksakan kerja ekstra yang cukup besar ketika menggunakan kode yang dikompilasi dengan R.

Banyak paket di R mengandalkan rutin yang ditulis dalam bahasa lawas (C, Fortran, atau C ++). Dalam beberapa kasus, rutin yang dikompilasi dikembangkan di luar R dan kemudian digunakan sebagai dasar untuk paket R library. Di tempat lain rutinitas pertama kali diimplementasikan dalam R dan kemudian segmen-segmen penting diterjemahkan ke bahasa yang dikompilasi ketika kinerja ditemukan kurang. Julia akan menarik jika dapat digunakan untuk menerapkan rutinitas yang setara. Ada peluang untuk merancang dukungan tingkat rendah untuk NA dengan cara yang menyederhanakan penanganan NA atas apa yang kita miliki saat menggunakan R dengan kode yang dikompilasi.

Sejumlah besar perpustakaan R mewakili upaya banyak pengguna. Ini dimungkinkan karena R memberikan kemampuan yang tidak tersedia / terjangkau. Jika Julia digunakan secara luas, diperlukan sekelompok pengguna yang menemukannya melakukan apa yang mereka butuhkan jauh lebih baik daripada alternatif yang sepadan dengan upaya yang diperlukan untuk memasok hal-hal yang sangat mendasar (misalnya, grafik, kelas tanggal, NA, dll.) ) tersedia dari bahasa yang ada.

George N. White III
sumber
4

Saya akan berada di depan, saya tidak punya pengalaman dengan R, tetapi saya bekerja dengan banyak orang yang berpikir itu adalah alat yang sangat baik untuk analisis statistik. Latar belakang saya ada di pergudangan data, dan karena model pemrograman Julia yang lebih mudah didistribusikan, tetapi lebih standar, saya pikir itu bisa menjadi pengganti yang sangat menarik untuk bagian transformasi alat ETL tradisional yang umumnya melakukan pekerjaan dengan sangat buruk, sebagian besar tidak memiliki cara untuk melakukannya. dengan mudah membuat transformasi standar, atau menggunakan kembali hasil transformasi yang sudah dilakukan pada set data sebelumnya. Dukungan untuk tupel yang didefinisikan dan diketik dengan ketat menonjol, jika saya ingin membangun kubus OLAP yang pada dasarnya perlu membuat tupel (tabel fakta) yang lebih terperinci dari tupel yang telah dihitung, alat ETL saat ini tidak memiliki 'blok bangunan' untuk berbicara tentang itu bisa membantu, industri ini telah mengatasi masalah ini melalui berbagai cara di masa lalu, tetapi ada trade-off. Bahasa pemrograman tradisional dapat membantu dengan menyediakan transformasi yang ditentukan secara terpusat, dan Julia berpotensi menyederhanakan agregasi dan distribusi non-standar yang umum dalam sistem data warehouse yang lebih kompleks.

Preston
sumber
3

Anda juga bisa menggunakan Julia dan R bersamaan. Ada antarmuka Julia-to-R . Dengan paket ini, Anda dapat bermain dengan Julia sambil menelepon R setiap kali memiliki perpustakaan yang dibutuhkan.

vasili111
sumber
2

Julia tanpa ragu setiap kesempatan menjadi statistik kekuatan-pengguna mimpi menjadi kenyataan, ambil SAS misalnya, kekuatannya terletak pada banyak procs yang ditulis dalam C - apa yang dapat dilakukan Julia adalah memberi Anda procs dengan kode sumber, dengan matriks sebagai built in dispensing tipe data dengan SAS / iml. Saya tidak ragu bahwa ahli statistik akan berbondong-bondong ke Julia begitu mereka mengetahui apa yang dapat dilakukan anak anjing ini.

Jimbo He
sumber
1
Selamat datang di Stats.SE, Jimbo. Saya tidak setuju dengan pernyataan Anda. Saya pikir kita telah melihat apa yang dapat dilakukan Julia, tetapi masalahnya pada saat ini adalah bahwa tidak ada banyak paket khusus domain untuk itu seperti yang ada di R. R akan terus memerintah tertinggi dalam statistik open source selama peneliti melihat lebih banyak manfaat menggunakan banyak paket di alam semesta R. Setidaknya itu yang saya ambil.
Christopher Aden
2

Oh ya, Julia akan menyusul R dengan cukup cepat. Dan alasan utama akan menjadi "makro", 95% dari bahasa diimplementasikan di Julia, dan sintaksinya yang pelit, bebas noise. Jika Anda belum memiliki pengalaman dengan jenis bahasa lisp, Anda mungkin belum memahaminya, tetapi Anda akan melihat dengan cepat bagaimana antarmuka rumus R akan menjadi mekanisme yang usang dan jelek, dan akan digantikan oleh pemodelan bahasa mikro khusus seperti CL lingkaran makro. Akses ke referensi tingkat rendah dari suatu objek juga merupakan nilai tambah yang besar. Saya pikir R masih tidak mendapatkan bahwa menyembunyikan internal dari pengguna sebenarnya menyulitkan daripada menyederhanakan hal-hal.

Seperti yang saya lihat sekarang (setelah bertahun-tahun menggunakan R di belakang, dan baru saja selesai membaca manual Julia), kelemahan utama Julia sehubungan dengan R adalah tidak ada dukungan untuk warisan struktural (ini disengaja). Sistem tipe Julia kurang ambisius daripada S4; ini juga mendukung pengiriman ganda dan pewarisan berganda, tetapi dengan tangkapan - hanya ada satu tingkat kelas beton. Di sisi lain saya jarang melihat hierarki kelas di R lebih dalam dari 3 level.

Waktu akan memberi tahu, tetapi itu akan lebih cepat daripada yang dipikirkan sebagian besar pengguna :)

VitoshKa
sumber
2
Anda membuat poin bagus tentang makro: beberapa dekade kemudian orang masih meremehkan seberapa kuat Lisp sebenarnya. Namun, seperti yang Anda maksudkan pada poin # 1, bahasa ini pada dasarnya adalah pengganti Matlab, bukan pengganti R. Saya pikir Anda juga mengabaikan fakta bahwa itu adalah bahasa plus perpustakaan (paket) yang digunakan orang dan Julia bahkan tidak memiliki 1% dari apa yang dibutuhkan di sana.
Wayne
2
@Wayne, saya tidak mengabaikan apa pun, OP tentang masa depan dan bukan tentang apa yang sekarang. Dalam 5 tahun, kita mungkin melihat lebih banyak perpustakaan untuk statistik di Julia daripada sekarang untuk R. Dan ini, hanya karena Julia memiliki peluang bagus untuk menjadi bahasa yang jauh lebih baik.
VitoshKa
Jika julia benar-benar menjadi pengganti MATLAB, maka akan sangat bermanfaat menggunakan bahasa yang sama untuk teknik dan statistik! Area yang tumpang tindih (seperti deret waktu) sangat besar.
kjetil b halvorsen
1

Kasus penggunaan target pertama Julia adalah masalah numerik. Pada dasarnya, Anda dapat memecah bidang analisis dan ilmu komputasi ini menjadi ilmu data (data driven) dan ilmu simulasi (model driven). Julia berurusan dengan kasus penggunaan sains simulasi pertama. Mereka juga menangani kasus-kasus sains data, tetapi lebih lambat. R tidak akan pernah sangat berguna untuk ilmu simulasi, tetapi Julia akan sangat berguna untuk keduanya dalam beberapa tahun.

Jamie Lawson
sumber
0

Itu harus dapat menerapkan fungsi apa pun ke kumpulan data besar yang tidak sesuai pada memori secara transparan bagi pengguna.
Itu termasuk setidaknya menjalankan model efek campuran, model bertahan hidup atau MCMC pada dataset yang sesuai pada disk tetapi tidak pada memori. Dan jika memungkinkan pada dataset yang didistribusikan di beberapa komputer.

skan
sumber