Julia có hy vọng gắn bó trong cộng đồng thống kê không?


161

Gần đây tôi đã đọc một bài đăng từ R-Bloggers, được liên kết với bài đăng trên blog này từ John Myles White về một ngôn ngữ mới gọi là Julia . Julia tận dụng một trình biên dịch đúng lúc mang lại cho nó thời gian chạy nhanh và đặt nó ở cùng một tốc độ với tốc độ như C / C ++ (cùng thứ tự , không nhanh bằng nhau). Hơn nữa, nó sử dụng các cơ chế lặp chính thống mà những người trong chúng ta bắt đầu lập trình trên các ngôn ngữ truyền thống đã quen thuộc, thay vì áp dụng các câu lệnh và hoạt động véc tơ của R.

R sẽ không biến mất bằng bất kỳ phương tiện nào, ngay cả với thời gian tuyệt vời như vậy từ Julia. Nó có hỗ trợ rộng rãi trong công nghiệp, và nhiều gói tuyệt vời để làm bất cứ điều gì.

Sở thích của tôi là Bayesian trong tự nhiên, nơi thường không thể vector hóa. Chắc chắn các tác vụ nối tiếp phải được thực hiện bằng cách sử dụng các vòng lặp và liên quan đến tính toán nặng nề ở mỗi lần lặp. R có thể rất chậm ở các tác vụ lặp nối tiếp này và C / ++ không phải là một cuộc dạo chơi trong công viên để viết. Julia có vẻ như là một sự thay thế tuyệt vời cho việc viết bằng C / ++, nhưng nó ở giai đoạn sơ khai và thiếu rất nhiều chức năng mà tôi yêu thích về R. Sẽ chỉ có ý nghĩa khi học Julia như một bàn làm việc thống kê tính toán nếu nó thu hút đủ sự hỗ trợ từ cộng đồng thống kê và mọi người bắt đầu viết các gói hữu ích cho nó.

Câu hỏi của tôi theo sau:

  1. Julia cần có những tính năng gì để có được sức hấp dẫn khiến R trở thành ngôn ngữ thống kê thực tế?

  2. Những lợi thế và bất lợi của việc học Julia để thực hiện các nhiệm vụ nặng về tính toán, so với học một ngôn ngữ cấp thấp như C / ++ là gì?


7
Làm thế nào là Julia tốt hơn Incanter ( incanter.org ) và các dự án tương tự khác?
Wayne

24
Cấu trúc thủ tục Re (ví dụ: looping): nghe có vẻ như một bước lùi khổng lồ. Chúng tôi đang ở đỉnh điểm của sự thay đổi từ nền tảng CPU đơn và CPU nhỏ sang nền tảng song song ồ ạt. Khi sự phát triển này xảy ra trong thập kỷ tới hoặc lâu hơn, kiểu mã hóa chức năng song song dễ dàng và tự động sẽ gặt hái những lợi thế lớn so với mã thủ tục. Dĩ nhiên, nhiều sự cân nhắc khác can thiệp vào sự lựa chọn của một nền tảng thống kê, nhưng điều này đáng để ghi nhớ như một chiến lược dài hạn.
whuber

12
Christopher, một cách tiếp cận tốt là đóng khung các câu hỏi theo cách được thiết kế để thu hút các lý do và bằng chứng. Ví dụ, thay vì "Liệu Julia có sức quyến rũ cần thiết ...", hãy thử một cái gì đó như "Những yếu tố nào của Julia có thể cho nó cơ hội để có được lực kéo và tại sao"; thay vì "Có đáng để học không", hãy hỏi "Tại sao Julia có thể đáng học bây giờ? Lợi thế tiềm năng của nó là gì?" Bạn có thể tinh chỉnh thêm câu hỏi đó bằng cách chỉ định loại sử dụng nào của Julia mà bạn có thể quan tâm, chẳng hạn như phát triển phần mềm, giải quyết các vấn đề một lần, thống kê sinh học, khai thác dữ liệu, v.v.
whuber

1
@Whuber: Tôi đánh giá cao các đề xuất và đã thực hiện chúng. Cảm ơn bạn!
Christopher Aden

2
@ trolle3000 Tôi không nghĩ có ai cho rằng việc song song hóa là quá tự động. Tuy nhiên, khi (nếu) bạn đã viết một phiên bản chức năng của chương trình, bạn đã thực hiện nhiều nỗ lực cần thiết để song song hóa nó, đó là lý do tại sao các ứng dụng như Mathematica có thể tự động hóa song song hóa, thường khá hiệu quả. Nếu thay vào đó, bạn đã mã hóa một thuật toán theo cách thủ tục, thường sẽ khó khăn hơn nhiều để song song hóa nó.
whuber

Câu trả lời:


96

Tôi nghĩ chìa khóa sẽ là liệu các thư viện có bắt đầu được phát triển cho Julia hay không. Thật tốt và tốt khi thấy các ví dụ về đồ chơi (ngay cả khi chúng là đồ chơi phức tạp) cho thấy Julia thổi R ra khỏi nước trong các nhiệm vụ R rất tệ.

Nhưng các vòng lặp được thực hiện kém và các thuật toán mã hóa bằng tay không phải là lý do tại sao nhiều người tôi biết sử dụng R sử dụng R. Họ sử dụng nó vì gần như bất kỳ nhiệm vụ thống kê nào dưới ánh mặt trời, ai đó đã viết mã R cho nó. R vừa là ngôn ngữ lập trình vừa là gói thống kê - hiện tại Julia chỉ là ngôn ngữ cũ.

Tôi nghĩ có thể đến đó, nhưng có nhiều ngôn ngữ được thiết lập hơn (Python) vẫn phải vật lộn với các bộ công cụ thống kê có thể sử dụng được.


Bạn đã thực sự nhìn vào mã điểm chuẩn (hoặc điểm chuẩn) để biết rằng các phương thức R được viết kém? Tôi đang cố gắng tự tìm nó để xem các ngôn ngữ khác nhau đã được sử dụng như thế nào ...
Josh Hemann

10
@JoshHemann Tôi đã nhìn đủ để biết rằng trên bảng R là "chậm-ish". Nó không nhất thiết phải thua mọi lúc, và đôi khi nó thổi tung Python ra khỏi nước, nhưng trong tất cả các trường hợp đó, dải băng "ai thắng" dường như đi đến nơi mà lập trình viên Python hoặc R thực sự đã viết hầu hết nội dung của họ trong C .
Fomite

5
Mã điểm chuẩn là khủng khiếp . Tăng tốc độ 2000x là có thể cho các ví dụ R của họ. Xem stackoverflow.com/questions/9968578/ , đặc biệt là các ý kiến.
Ari B. Friedman

12
Bạn nói đúng, @gsk. Ví dụ: pisum(tại github.com/JuliaLang/julia/blob/master/test/perf/perf.R ) mất 7,76 giây trong khi viết lại đơn giản bằng cách sử dụng R ( replicate(500, sum((1 / (10000:1))^2))[500]) thành ngữ mất 0,37 giây, nhiều hơn tốc độ gấp năm mươi lần.
whuber

2
Một lý do khiến R cất cánh là khả năng tương thích với S-PLUS. Mọi người đã có thể sử dụng rất nhiều mã cũ. Mã cũ được sử dụng rất nhiều có ít lỗi hơn. Với những thứ mới như Julia, không tương thích với mã cũ, bạn cần có một tình huống "ứng dụng sát thủ": thứ gì đó biện minh cho tất cả những rắc rối khi chuyển sang nền tảng mới. Nó tương tự như ngôn ngữ mới của Google Go - thử hay, nhưng tại sao tôi lại học nó?
Aksakal

56

Tôi đồng ý với rất nhiều ý kiến ​​khác. "Mong"? Chắc chắn rồi. Tôi nghĩ Julia đã học được rất nhiều từ những gì R và Python / NumPy / Pandas và các hệ thống khác đã làm đúng và sai trong những năm qua. Nếu tôi thông minh hơn tôi và muốn viết một ngôn ngữ lập trình mới sẽ là nền tảng cho môi trường phát triển thống kê trong tương lai, nó sẽ trông rất giống Julia.

Điều này nói rằng, sẽ là 5 năm trước khi câu hỏi này có thể được trả lời trong nhận thức muộn màng. Ngay bây giờ, Julia thiếu các khía cạnh quan trọng sau đây của một hệ thống lập trình thống kê có thể cạnh tranh với R cho người dùng hàng ngày:

(danh sách được cập nhật theo thời gian ...)

  • các loại yếu tố theo thứ tự tùy chọn
  • hầu hết các bài kiểm tra thống kê và mô hình thống kê
  • hỗ trợ phân tích lập trình / sao chép
  • Âm mưu của lớp R, hoặc thậm chí lớp Matlab

Để cạnh tranh với R, Julia và các gói thống kê bổ trợ sẽ cần phải đủ sạch và đủ để những người không lập trình thông minh, nói rằng sinh viên tốt nghiệp ngành khoa học xã hội, có thể sử dụng nó một cách hợp lý. Có rất nhiều việc phải làm ở đó. Có lẽ nó sẽ xảy ra, có thể nó sẽ xì hơi, có thể thứ gì đó khác (R 3.0?) Sẽ thay thế nó.

Cập nhật:

Julia hiện hỗ trợ DataFrames với dữ liệu / NA, mô-đun / không gian tên, formulaloại và model.matrixcơ sở hạ tầng bị thiếu, vẽ sơ đồ (sắp xếp), hỗ trợ cơ sở dữ liệu (nhưng chưa cho DataFrames) và chuyển các đối số theo từ khóa. Hiện tại cũng có IDE (Julia Studio), hỗ trợ Windows, một số kiểm tra thống kê và hỗ trợ ngày / giờ.


literate programming/reproduce-able analysis support-> xem IJulia .
Piotr Migdal

1
Thêm kernel iJulia cho hệ sinh thái máy tính xách tay iPython / Jupyter.
thecity2

2
Julia Studio đang dần bị loại bỏ và Juno giờ là IDE
Antony

3
2,5 năm sau khi câu trả lời này được đăng lần đầu tiên, hai phần ba các mục trong danh sách "phải có" hiện đang được thực hiện. Tôi nghĩ đó là bằng chứng tốt nhất bạn có thể thấy rằng Julia có lời hứa thực sự.
gửi

5 năm phải trôi qua. Chúng ta đã ở đó chưa, @Harlan?
StasK

35

Đối với tôi, một điều rất quan trọng đối với ngôn ngữ phân tích dữ liệu là có chức năng đại số truy vấn / quan hệ với mặc định hợp lý và thiết kế hướng tương tác, và lý tưởng nhất là ngôn ngữ này được tích hợp sẵn. IMO, không có ngôn ngữ FOSS mà tôi đã sử dụng thực hiện điều này một cách hiệu quả, thậm chí cả R.

data.frame rất khó để làm việc với tương tác - ví dụ: nó in toàn bộ cấu trúc dữ liệu theo lời gọi, cú pháp $ khó làm việc theo chương trình, truy vấn yêu cầu tự tham chiếu dự phòng (ví dụ, DF[DF$x < 10]), tham gia và tổng hợp rất khó xử. Data.table giải quyết hầu hết những phiền toái này, nhưng vì nó không phải là một phần của việc triển khai cốt lõi, hầu hết mã R không sử dụng các tiện ích của nó.

Gấu trúc trong trăn bị các lỗi tương tự.

Những sự kìm kẹp này có vẻ khó chịu, nhưng những lỗi này tích lũy và cuối cùng là rất đáng kể trong tổng hợp vì cuối cùng chúng tốn rất nhiều thời gian.

Tôi tin rằng nếu Julia thành công như một môi trường phân tích dữ liệu, phải nỗ lực để thực hiện các toán tử loại SQL (không có hành lý cú pháp SQL) trên kiểu dữ liệu bảng thân thiện với người dùng.


1
+ 1 - Một điểm thú vị, được giải thích chu đáo. Chào mừng đến với cộng đồng của chúng tôi!
whuber

4
Để trở nên kén chọn, DataFrames Pandas lớn thực sự không in ra tất cả nội dung của chúng khi được gọi, như xảy ra trong R. Chúng chuyển sang hiển thị các tiêu đề cột cùng với một số giá trị null / không null. Ngoài ra, trong khi tôi đồng ý cú pháp không lý tưởng, các vấn đề phạm vi khiến bạn khó loại bỏ việc tự tham chiếu để lọc theo kiểu hiểu. Nó rõ ràng hơn, nhưng nó cũng có khả năng chống lại các xung đột không gian tên nếu DataFrame có các cột bổ sung trong thời gian chạy mà bạn không mong đợi.
hóa

29

Tôi có thể ký theo những gì Dirk và EpiGrad nói; nhưng có một điều nữa làm cho R trở thành một lang duy nhất trong phân khúc thích hợp của nó - hệ thống định hướng dữ liệu.

R's được thiết kế đặc biệt để xử lý dữ liệu, đó là lý do tại sao nó tập trung vào vector và có các thứ như data.frames, các yếu tố, NA và các thuộc tính.
Mặt khác, các loại của Julia là định hướng hiệu suất số, do đó chúng tôi có vô hướng, chế độ lưu trữ được xác định rõ, các hiệp hội và cấu trúc.

Điều này có thể trông lành tính, nhưng tất cả mọi người đã từng cố gắng làm chỉ số với MATLAB đều biết rằng điều đó thực sự gây tổn thương.

Vì vậy, ít nhất là đối với tôi, Julia không thể cung cấp bất cứ điều gì mà tôi không thể sửa chữa với một đoạn C vài dòng và giết chết rất nhiều biểu cảm thực sự hữu ích.


4
(+1) Điểm tốt. Một số suy nghĩ thêm: Việc thiếu các data.framephương tiện giống như trong Python từ lâu đã làm phiền tôi, nhưng bây giờ Pandas dường như đã giải quyết vấn đề này. Công thức là một trong số các phần mở rộng được lên kế hoạch của thống kê (tốt, chúng tôi biết rằng đôi khi nên tránh giao diện công thức trong R). Có một đề xuất data.frame cho Julia (khá nhanh so với Python!), (...)
chl

5
Tôi nghĩ rằng @mbq cũng có quan điểm về C. Nếu tôi cần tốc độ theo cùng thứ tự cường độ như C / C ++ ... Tôi có thể sử dụng C / C ++ với R.
Fomite

4
@EpiGrad, vâng, bạn có thể viết C / C ++ và giao diện rõ ràng với R. Nhưng đó là một điểm yếu, không phải là điểm mạnh của ngôn ngữ. Với Julia, người dùng cuối sẽ không bao giờ cần phải viết C để có được tốc độ.
Harlan

2
@Harlan Đó chỉ là một điểm yếu nếu bạn đã biết cả Julia và C. Tôi khẳng định thời gian ở C <thời gian dành cho việc học một ngôn ngữ mới thực hiện lại mọi thứ từ đầu.
Fomite

9
@Harlan Và nói thẳng ra, những người đó sẽ không viết lại nội dung của họ ở Julia. R là gói thống kê, không phải ngôn ngữ lập trình là trường hợp sử dụng của họ .
Fomite

26

Tôi có thể thấy Julia thay thế Matlab, đó sẽ là một dịch vụ khổng lồ cho nhân loại.

Để thay thế R, bạn cần xem xét tất cả những điều mà Neil G, Harlan và những người khác đã đề cập, cộng với một yếu tố lớn mà tôi không tin đã được giải quyết: dễ dàng cài đặt ứng dụng và thư viện của nó.

Ngay bây giờ, bạn có thể tải xuống bản nhị phân của R cho Mac, Windows hoặc Linux. Nó hoạt động ra khỏi hộp với một lựa chọn lớn các phương pháp thống kê. Nếu bạn muốn tải xuống một gói, đó là một lệnh đơn giản hoặc nhấp chuột. Nó chỉ hoạt động.

Tôi đã đi tải Julia và nó không đơn giản. Ngay cả khi bạn tải xuống tệp nhị phân, bạn phải cài đặt gfortran để có được các thư viện thích hợp. Tôi đã tải xuống nguồn và cố gắng makevà nó đã thất bại mà không có thông điệp thực sự hữu ích. Tôi có bằng đại học và bằng tốt nghiệp về khoa học máy tính, vì vậy tôi có thể chọc ngoáy và làm cho nó hoạt động nếu tôi rất có khuynh hướng. (Tôi không phải.) Joe Statistician sẽ làm điều đó?

R không chỉ có nhiều lựa chọn gói, nó còn có một hệ thống khá tinh vi, tạo ra các nhị phân của ứng dụng và gần như tất cả các gói, tự động. Nếu, vì một số lý do, bạn cần biên dịch một gói từ nguồn, điều đó thực sự không khó khăn nữa (miễn là bạn có một trình biên dịch thích hợp, v.v., được cài đặt trên hệ thống của bạn). Bạn không thể bỏ qua cơ sở hạ tầng này, thực hiện mọi thứ thông qua github và mong đợi áp dụng rộng rãi.

EDIT: Tôi muốn đánh lừa với Julia - có vẻ thú vị. Hai vấn đề:

1) Khi tôi thử cài đặt các gói bổ sung (quên những gì chúng được gọi trong Julia), nó đã thất bại với các lỗi tối nghĩa. Rõ ràng máy Mac của tôi không có một công cụ giống như họ mong đợi. Nó không chỉ thất bại mà còn để lại những thứ nằm xung quanh mà tôi phải xóa thủ công nếu không các cài đặt khác sẽ thất bại.

2) Họ buộc khoảng cách nhất định trong một dòng mã. Tôi không có các chi tiết trước mặt, nhưng nó phải liên quan đến các macro và không có khoảng cách giữa macro và dấu ngoặc đơn mở các đối số của nó. Loại hạn chế đó thực sự làm tôi bực mình, vì tôi đã phát triển định dạng mã của mình qua nhiều năm và ngôn ngữ và tôi thực sự đặt một khoảng trắng giữa tên hàm / macro và dấu ngoặc đơn mở. Một số hạn chế định dạng mã tôi hiểu, nhưng khoảng trắng trong một dòng?


5
Julia vẫn còn RẤT nhiều trong giai đoạn trứng nước. Tôi không phải là nhà sử học, nhưng tôi cá rằng các nhị phân sạch của R sẽ không xuất hiện trong vài tháng đầu. Quan điểm của bạn về hệ thống phân phối là điều mà tôi chưa từng thấy đề cập đến cho đến nay. Sau đó, một lần nữa, tôi cũng muốn rằng CRAN không mọc lên cùng thời điểm với R. Một "CJAN" chắc chắn sẽ tốt cho việc áp dụng quy mô lớn.
Christopher Aden

7
Sau đó, bạn có thể quan tâm để biết, @Christopher, R thực sự là một bản sao được phát triển độc lập của một gói (S, sau đó là S-Plus) đã thành công về thương mại (nhẹ) và đã được phát triển mười năm trước. Điều đó đã cho nó một khởi đầu đáng kể mà Julia (và hầu hết những nỗ lực khác) không bao giờ có được.
whuber

3
@ChristopherAden: Tôi đồng ý rằng Julia vẫn còn trẻ. Nhưng tôi sẽ không đồng ý một cách vất vả rằng "một" CJAN "chắc chắn sẽ tốt cho việc áp dụng quy mô lớn": đó là một điều cần thiết tuyệt đối. Các công cụ duy nhất tôi có thể nghĩ là không có cơ sở hạ tầng giống CRAN được chuyên môn hóa cao - như JAGS. Nhưng Julia, giống như R, là mục đích chung.
Wayne

10
Ngày Ngôn ngữ nguồn mở sẽ thay thế MATLAB sẽ là ngày tốt nhất cho thế giới kỹ thuật.
Royi

9
"Tôi có thể thấy Julia thay thế Matlab, đó sẽ là một dịch vụ khổng lồ cho nhân loại." Tôi không thể đồng ý nhiều hơn.
davidav

24

Ngôn ngữ Julia khá mới; đó là thời gian trong ánh sáng tại chỗ có thể được đo bằng tuần (mặc dù thời gian phát triển của nó dĩ nhiên có thể được đo bằng năm). Bây giờ những tuần đó trong ánh sáng tại chỗ là những tuần rất thú vị --- ví dụ như cuộc nói chuyện gần đây tại Stanford, nơi "nó mới bắt đầu" --- nhưng những gì bạn yêu cầu về cơ sở hạ tầng rộng hơn và hỗ trợ gói sẽ mất nhiều thời gian hơn cụ thể hoá.

Vì vậy, tôi tiếp tục sử dụng R, và chú ý đến các lựa chọn thay thế đang phát triển. Năm ngoái, rất nhiều người đã tham gia trò chơi Clojure; Julia năm nay là hương vị mới trị vì. Chúng tôi sẽ xem nếu nó dính.


16
Bởi vì những gì tôi đã thấy qua Rcpp, tôi thậm chí còn ấn tượng hơn với Julia --- tăng khoảng 50, 60, 70 lần cho vòng lặp đơn giản như trong MCMC, và hàng trăm lần cho các ví dụ "thoái hóa" như Dailymotion về cơ bản giống như Rcpp đã nhận! Nhưng tôi cũng biết rằng với Rcpp tôi vẫn có quyền truy cập vào gói 3700 CRAN --- cũng như vô số thư viện C ++ --- trong khi Julia hiện tại gần như không có gì. Điều đó nói rằng, lời hứa của Julia là rất lớn. Nhưng có lẽ có "sau đó" cũng như "bây giờ". Thời gian sẽ trả lời.
Dirk Eddelbuettel

2
Và đừng quên Incanter, nơi được cho là trở thành một môi trường thống kê dựa trên Clojure. Làm thế nào là Julia vượt trội hơn thế?
Wayne

2
@Wayne, chúng ta đừng làm vẩn đục nước ở đây. Mở một câu hỏi mới cho câu hỏi đó (có lẽ là một câu hỏi để so sánh giữa nhiều ngôn ngữ)
naught101

2
@ naught011: Tôi chỉ đơn giản lặp lại quan điểm của Dirk rằng Clojure là hương vị của tháng, đặc biệt là Incanter, giờ là Julia. Tôi không nghĩ rằng Julia hoặc Incanter (hoặc Clojure) có cơ hội được khái quát hóa các nền tảng thống kê.
Wayne

2
Tôi không có ý kiến ​​gì, nhưng tôi sẵn sàng cập nhật bên R: Cho đến ngày hôm nay, hơn 6400 gói trên CRAN, và hiện có hơn 350 gói sử dụng Rcpp. Vẫn làm việc cho tôi. Julia folks có vẻ năng động, và hạnh phúc --- và có một sự lựa chọn là một điều tốt. Không có một ngôn ngữ cho tất cả các vấn đề: xin lỗi, Python .
Dirk Eddelbuettel

19

Bruce Tate ở đây, tác giả của Bảy ngôn ngữ trong bảy tuần. Dưới đây là một vài suy nghĩ. Tôi đang làm việc trên Julia cho cuốn sách tiếp theo. Sau đây chỉ là ý kiến ​​của tôi sau một vài tuần chơi.

Có hai lực lượng cơ bản đang chơi. Đầu tiên, tất cả các ngôn ngữ có tuổi thọ. R sẽ được thay thế một ngày nào đó. Chúng tôi không biết khi nào. Ngôn ngữ mới có một thời gian cực kỳ khó phát triển. Khi một ngôn ngữ mới phát triển, nó thường giải quyết một số điểm đau đớn áp đảo.

Hai điều này có liên quan. Đối với tôi, chúng ta bắt đầu thấy một chủ đề hình thành xung quanh các ngôn ngữ như R. Nó không đủ nhanh, và nó khó hơn nó cần phải có. Những người có thể sống trong một phong bì hiệu suất nhất định và ở trong các thư viện thành lập là tốt. Những người không thể cần nhiều hơn và họ bắt đầu tìm kiếm nhiều hơn.

Vấn đề là, kiến ​​trúc máy tính đang thay đổi, và để tận dụng lợi thế của chúng, ngôn ngữ và cấu trúc của nó cần phải được xây dựng theo một cách nhất định. Julia tham gia đồng thời là thú vị. Nó tối ưu hóa điều đúng đắn cho một ngôn ngữ như vậy: phân phối minh bạch và chuyển động hiệu quả của dữ liệu giữa các quy trình. Khi tôi sử dụng Julia cho các nhiệm vụ, bản đồ và biến đổi điển hình và tương tự, tôi chỉ gọi các hàm. Tôi không phải lo lắng về hệ thống ống nước.

Đối với tôi, việc Julia nhanh hơn trên một bộ xử lý là điều thú vị, nhưng không gây hại quá nhiều cho R. Điều thú vị đối với tôi là vì các bộ xử lý phụ thuộc nhiều hơn vào đa lõi cho hiệu năng, các vấn đề máy tính kỹ thuật chỉ nằm ở vị trí lý tưởng để tận dụng lợi thế tốt nhất có thể, đưa ra ngôn ngữ phù hợp.

Các tính năng khác sẽ giúp điều đó xảy ra thực sự là macro. Tốc độ của ngôn ngữ chỉ là dữ dội ngay bây giờ. Macro cho phép bạn xây dựng với các khối xây dựng lớn hơn, sạch hơn. Nhìn vào các thư viện là thú vị nhưng không nói lên toàn bộ bức tranh. Bạn cần nhìn vào sự phát triển của các thư viện. Quỹ đạo của Julia có khá nhiều điểm ở đây.

Clojure thú vị với một số người vì không có ngôn ngữ kỹ thuật nào làm được những gì R có thể, vì vậy một số người tìm đến một ngôn ngữ có mục đích chung để lấp đầy khoảng trống đó. Tôi thực sự là một fan hâm mộ lớn. Nhưng Clojure là một chứng bệnh não khá nghiêm trọng. Clojure sẽ có mặt cho các lập trình viên cần làm máy tính kỹ thuật. Nó sẽ không dành cho các kỹ sư và nhà khoa học. Có quá nhiều thứ để học.

Vì vậy, với tôi, Julia hoặc một cái gì đó giống như nó sẽ hoàn toàn thay thế R một ngày nào đó. Đó là vấn đề thời gian.


Không có nhiều ngôn ngữ mới cung cấp cả hai loại khuôn mẫu và hệ sinh thái vĩ mô có nguồn gốc cấp một - Julia thực hiện. Khả năng này cùng với các tính năng và tốc độ đồng thời của nó (có khả năng sẽ cải thiện trong các phiên bản trong tương lai) mang lại cho nó một vị thế cạnh tranh mạnh mẽ với các ngôn ngữ khác, theo quan điểm của tôi. Tôi hiếm khi sử dụng R nhưng thường xuyên sử dụng C ++ (w / samples) và Lisp (w / macro). Julia có thể làm cả hai, sạch sẽ và hiệu quả bằng một ngôn ngữ duy nhất, rõ ràng. Tôi tin chắc rằng Julia sẽ chứng tỏ là một ngôn ngữ chính trong tương lai.
AsymLabs

15

Mỗi lần tôi nhìn thấy một ngôn ngữ mới, tôi lại tự hỏi tại sao một ngôn ngữ hiện tại không thể được cải thiện.

Ưu điểm lớn của Python là

  • một bộ mô-đun phong phú (không chỉ thống kê, mà còn vẽ các thư viện, xuất ra pdf, v.v.)
  • các cấu trúc ngôn ngữ mà cuối cùng bạn cần trong thời gian dài (các cấu trúc hướng đối tượng bạn cần trong một dự án lớn; trang trí, đóng cửa, v.v ... giúp đơn giản hóa sự phát triển)
  • nhiều hướng dẫn và một cộng đồng hỗ trợ lớn
  • truy cập vào mapreduce, nếu bạn có nhiều dữ liệu cần xử lý và đừng ngại trả một vài đồng xu để chạy nó trên một cụm.

Để vượt qua R, Julia, v.v., Python có thể sử dụng

  • phát triển trình biên dịch đúng lúc cho Python bị hạn chế để cung cấp cho bạn nhiều tốc độ hơn trên một máy (nhưng mapreduce vẫn tốt hơn nếu bạn có thể chịu được độ trễ)
  • một thư viện thống kê phong phú hơn

3
Điều này có thể đúng, nhưng đối với một người dùng rất bình thường, thiết kế ngôn ngữ của Python có thể khó sử dụng hơn một chút so với Matlab hoặc Julia, có cú pháp giống như toán học hơn. Bạn có thể nói y = 3x+2trong Julia và nó hoạt động!
Harlan

6
Điều đó thật buồn cười: khi tôi lần đầu tiên nhìn thấy Python cách đây hơn 10 năm, tôi đã có phản ứng giống hệt nhau (tại sao điều này lại cần thiết? Tại sao không cải thiện những gì hiện có? Tại sao lại tìm hiểu một loạt các cú pháp cú pháp kỳ quái, tên các lớp, phương thức , và các thủ tục, và tất cả phần còn lại?). :-)
whuber

2
@NeilG Không phải là nhà thống kê chuyên nghiệp nhiều như các nhà nghiên cứu không lập trình trong đặc biệt là các ngành khoa học. Python rất tốt cho các lập trình viên, nhưng nếu tất cả những gì bạn muốn làm là tải dữ liệu tâm lý của bạn và phù hợp với một số mô hình (một cách nhanh chóng), một cú pháp giống như toán học rất đơn giản có thể thích hợp hơn với thiết kế dựa trên đối tượng thanh lịch của Python.
Harlan

3
@NeilG Hãy ghi nhớ một phần thành công của R là nó không chỉ được sử dụng bởi các nhà thống kê. Nó được sử dụng bởi những người làm thống kê . Và các nhà khoa học xã hội, bác sĩ lâm sàng và sinh viên tốt nghiệp khoa học năm thứ nhất là những người dùng hoàn toàn rất bình thường.
Fomite

6
Tôi nghĩ (thành viên CrossValidated) Bài đăng trên blog của John D Cook là: Tôi muốn lập trình toán học bằng ngôn ngữ có mục đích chung hơn là cố gắng viết mã các vấn đề toán học và hệ thống bằng ngôn ngữ toán học. Nếu cộng đồng Julia có thể ghi nhớ điều này, rất có thể ngôn ngữ sẽ gắn bó với lập trình phân tích nói chung (số liệu thống kê chỉ là một phần trong số đó). Xem johndcook.com/blog/2012/04/02/why-scipy
Josh Hemann

9

Julia sẽ không tiếp quản R rất sớm. Kiểm tra Microsoft R mở.

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

Đây là phiên bản nâng cao của R tự động sử dụng tất cả các lõi của máy tính của bạn. Đó là cùng R, cùng ngôn ngữ, cùng gói. Khi bạn cài đặt nó, RStudio cũng sẽ sử dụng nó trong bảng điều khiển. Tốc độ của MRO thậm chí còn nhanh hơn Julia. Tôi làm rất nhiều công việc điện toán nặng và đã sử dụng Julia hơn một năm. Tôi đã chuyển sang R gần đây vì R có hỗ trợ tốt hơn và RStudio là một trình chỉnh sửa tuyệt vời. Julia vẫn đang ở giai đoạn đầu và có thể không bắt kịp Python hoặc R rất sớm.


8

Những điều sau đây có lẽ không xứng đáng là một câu trả lời, nhưng điều quá quan trọng là bị chôn vùi như một bình luận cho phản hồi của người khác ...

Tôi chưa nghe nói nhiều về tiêu thụ bộ nhớ, chỉ là tốc độ. Toàn bộ ngữ nghĩa của R là giá trị truyền qua có thể gây đau đớn và đây là một chỉ trích về ngôn ngữ (đây là một vấn đề riêng biệt với bao nhiêu gói lớn đã tồn tại). Quản lý bộ nhớ tốt rất quan trọng, vì có nhiều cách để xử lý việc xử lý ngoài lõi (ví dụ: mảng bộ nhớ hoặc pytables được ánh xạ của bộ nhớ nump , hoặc định dạng xdf của Revolution Analytics). Trong khi trình biên dịch JIT của PyPy cho phép một số điểm chuẩn Python nổi bật, mức tiêu thụ bộ nhớ có thể khá cao. Vì vậy, có ai có kinh nghiệm với Julia và sử dụng bộ nhớ chưa? Âm thanh như có rò rỉ bộ nhớ trên phiên bản Windows "alpha" sẽ không còn nghi ngờ gì nữa, và tôi vẫn đang chờ truy cập vào hộp Linux để tự chơi với ngôn ngữ này.


Đúng, nhưng có nhiều cách để sử dụng tham chiếu qua trong R (Các lớp tham chiếu, cho một).
Ari B. Friedman

1
Và R không thực sự vượt qua giá trị. Đánh giá lười biếng và một số tối ưu hóa thông minh có nghĩa là dữ liệu thường không được sao chép trừ khi nó phải được sao chép.
Ari B. Friedman

8

Tôi nghĩ rằng Julia sẽ không bao giờ thay thế R, vì nhiều lý do đã được đề cập trước đây. Julia là người thay thế Matlab, không phải người thay thế R; họ có những mục tiêu khác nhau Ngay cả sau khi Julia có một thư viện thống kê đầy đủ, không ai có thể dạy một Giới thiệu về lớp Thống kê trong đó.

Tuy nhiên, một lĩnh vực mà nó có thể đáng kinh ngạc là ngôn ngữ lập trình được tối ưu hóa tốc độ ít gây đau đớn hơn C / C ++. Nếu nó được liên kết liền mạch với R (theo kiểu Rcpp), thì nó sẽ thấy rất nhiều công dụng trong việc viết các đoạn mã quan trọng về tốc độ. Thật không may, hiện tại không có liên kết như vậy tồn tại:

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


Nhưng bây giờ có một: bình luận.gmane.org / gmane.comp.lang.julia.devel / 15153 đã không thử nó (chưa).
kjetil b halvorsen

8

Tôi là một người mới chơi Julia, và tôi có năng lực. Những lý do tôi thấy Julia thú vị cho đến nay là hiệu suất và khả năng tương thích theo định hướng.

Công cụ GPU. Tôi muốn sử dụng CUSPARSE cho một ứng dụng thống kê. Kết quả CRAN cho thấy không có nhiều ngoài đó. Julia có các ràng buộc có sẵn mà dường như hoạt động trơn tru cho đến nay.

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)

Công cụ HPC. Người ta có thể sử dụng một cụm tương tác với nhiều nút tính toán.

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

Tương thích Python. Có quyền truy cập vào hệ sinh thái python. Ví dụ: Thật đơn giản để tìm hiểu cách đọc dữ liệu hình ảnh não:

import PyCall
@pyimport nibabel

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

C tương thích. Sau đây tạo ra một số nguyên ngẫu nhiên bằng cách sử dụng thư viện chuẩn C.

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

Tốc độ. Nghĩ rằng tôi sẽ thấy gói Distribut.jl hoàn hảo chống lại rnorm của R - mà tôi cho là được tối ưu hóa.

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

julia> @elapsed rand(F, 1000000)
0.03422067

Trong R:

> system.time(rnorm(1000000, mean=3, sd=1))
   user  system elapsed 
  0.262   0.003   0.266 

1
@NickCox, vì đã có hơn một tá câu trả lời, tôi nghĩ sẽ rất thú vị khi làm nổi bật một góc thay thế. Ngoài ra, tôi đã vô tình đăng một bản nháp đầu tiên :)
phỏng đoán

1
Câu hỏi đặt ra là tại sao Julia có thể gắn bó với cộng đồng thống kê, câu trả lời của tôi tập trung vào sự hỗ trợ tốt cho hpc + gpu, điều mà nhiều người có công việc chuyên sâu tính toán có thể thấy thú vị.
phỏng đoán

7

Julia 1.0 vừa ra mắt với một IDE rất có thể sử dụng (Juno). Nó xuất hiện hơi muộn với nhóm vì Python đã thống trị Machine Learning, trong khi R tiếp tục thống trị mọi loại phân tích thống kê khác. Điều đó đang được nói, Julia đã trở nên nổi bật trong lĩnh vực tài chính và thuật toán giao dịch vì thời gian phát triển nhanh VÀ thực thi là bắt buộc. Theo tôi, trừ khi một ngôn ngữ khác xuất hiện rõ ràng tốt hơn, sự nổi bật của Julia có thể sẽ trông giống như thế này:

(1) Nó bắt đầu ăn bữa trưa của MATLAB. Người dùng MATLAB thích cú pháp MATLAB nhưng ghét mọi thứ khác. Sự chậm chạp, giấy phép đắt tiền, những cách rất hạn chế để đối phó với các cấu trúc dữ liệu phức tạp không phải là ma trận. Tôi nhớ một câu trích dẫn mà người ta nói rằng "Nếu Julia thay thế MATLAB, đó sẽ là một dịch vụ khổng lồ cho nhân loại". Người dùng MATLAB có thể thành thạo Julia rất nhanh và sẽ bị ấn tượng bởi việc viết mã chất lượng dễ dàng hơn nhiều so với những gì MATLAB có thể làm (Các bước nhanh đến mức bạn có thể đặt vào mảng và lặp lại nhanh chóng?). Không chỉ vậy, các nhà nghiên cứu có thể tạo ra các hộp công cụ nghiêm túc trong Julia (một nhóm nhỏ sinh viên tiến sĩ đã viết một gói phương trình vi phân đẳng cấp thế giới) mà không thể có với MATLAB.

(2) Nó bắt đầu tiếp quản nghiên cứu trong các phương pháp số và mô phỏng. MIT đang bỏ lại sức nặng của mình đằng sau Julia và cộng đồng nghiên cứu lắng nghe MIT. Mô phỏng số và phương pháp số mới là những vấn đề không rõ ràng không có thư viện. Đây là nơi Julia như một ngôn ngữ tỏa sáng; nếu không có thư viện, việc viết mã chất lượng nhanh trong Julia sẽ dễ dàng hơn nhiều so với bất kỳ ngôn ngữ nào khác. Nó sẽ là một ngôn ngữ số / mô phỏng được viết bởi các nhà toán học cho các nhà toán học (âm thanh tương tự R chưa?)

(3) Một bước đột phá khác trong Machine Learning xảy ra mang lại lợi thế cho Julia. Đây là một chút ký tự đại diện có thể không xảy ra. TensorFlow là tuyệt vời, nhưng nó cực kỳ khó để hack. Python đã bắt đầu hiển thị các vết nứt và TensorFlow đã bắt đầu áp dụng Swift (với Julia nhận được một đề cập danh dự). Nếu một đột phá học máy khác xảy ra, việc thực hiện và hack trong gói Julia như Flux.jl. sẽ dễ dàng hơn nhiều.

(4) Julia bắt đầu từ từ bắt kịp R, sẽ mất một lúc. Thực hiện các số liệu thống kê trong MATLAB là điều khó khăn, nhưng Juila đã đi trước MATLAB với Distribut.jl. Thực tế là, quy trình làm việc R có thể dễ dàng dịch sang Julia. Lợi thế thực sự duy nhất mà R có được là có rất nhiều gói được viết bởi các nhà thống kê cho các nhà thống kê. Tuy nhiên, quá trình này cũng dễ thực hiện ở Julia. Sự khác biệt là Julia rất nhanh và bạn không phải sử dụng ngôn ngữ khác để thực hiện (các gói R "nghiêm túc" hơn được viết bằng các ngôn ngữ như C). Vấn đề với R là các gói được viết bằng R quá chậm để xử lý các tập dữ liệu lớn. Thay thế duy nhất là dịch các gói sang ngôn ngữ khác khiến cho quá trình phát triển trong R trở nên chậm hơn Julia.


2
Các trích dẫn về việc thay thế Matlab mà bạn nhớ là từ chủ đề này . :)
Dougal

5

Tôi quan tâm đến lời hứa về tốc độ tốt hơn và song song dễ dàng bằng cách sử dụng các kiến ​​trúc khác nhau. Vì lý do đó, tôi chắc chắn sẽ theo dõi sự phát triển của Julia nhưng tôi không thể sử dụng nó cho đến khi nó có thể xử lý các mô hình hỗn hợp tuyến tính tổng quát, có gói bootstrap chung tốt, ngôn ngữ mô hình đơn giản để xây dựng ma trận thiết kế có khả năng tương đương với ggplot2 và phạm vi rộng từ các thuật toán học máy.

Không có nhà thống kê nào có thể đủ khả năng để có thái độ cơ bản đối với việc lựa chọn công cụ. Chúng tôi sẽ sử dụng bất cứ điều gì cho phép chúng tôi hoàn thành công việc một cách hiệu quả nhất. Tôi đoán là tôi sẽ gắn bó với R trong vài năm nữa, nhưng thật tuyệt khi được ngạc nhiên.


Xin chào Mervyn, và chào mừng bạn đến với Stats.SE! Julia đã thực hiện một số cải tiến đáng kể trong thời gian kể từ khi tôi tạo bài đăng này (gần một năm trước!). Douglas Bates đã chuyển một số mã GLM (có thể là GLMM?) Của mình sang Julia dmbates.blogspot.com/2012/04/r-programmer-looks-at-julia.html ) và trang Github chính đã thấy nhiều cập nhật trong quá khứ năm. Tôi chấp nhận Julia cho đến nay (tôi đã sử dụng nó từ năm ngoái) đã là một công cụ tốt cho tốc độ, mà tôi sử dụng cho một số MCMC thô sơ, nhưng nó chưa thay thế R trong chuỗi công cụ của tôi. Không thể đợi R trở nên nhanh hơn, hoặc Julia sẽ lan rộng hơn!
Christopher Aden

Doug chưa chuyển GLMM. Nếu ai đó muốn giúp với điều đó tôi chắc chắn anh ấy sẽ rất vui ...
Ben Bolker

4

Sự sang trọng của NA's in R không đến nếu không có hình phạt về hiệu suất. Nếu Julia ủng hộ NA với một hình phạt hiệu suất nhỏ hơn thì nó sẽ trở nên thú vị đối với một bộ phận của cộng đồng thống kê, nhưng NA cũng áp đặt thêm công việc đáng kể khi sử dụng mã được biên dịch với R.

Nhiều gói trong R dựa vào các thói quen được viết bằng các ngôn ngữ cũ (C, Fortran hoặc C ++). Trong một số trường hợp, các thường trình biên dịch được phát triển bên ngoài R và sau đó được sử dụng làm cơ sở cho các gói thư viện R. Trong các trường hợp khác, các thói quen được thực hiện đầu tiên trong R và sau đó các phân đoạn quan trọng được dịch sang ngôn ngữ được biên dịch khi thiếu hiệu năng. Julia sẽ hấp dẫn nếu nó có thể được sử dụng để thực hiện các thói quen tương đương Có cơ hội thiết kế hỗ trợ cấp thấp cho NA theo cách đơn giản hóa việc xử lý NA đối với những gì chúng ta hiện có khi sử dụng R với mã được biên dịch.

Số lượng lớn các thư viện R đại diện cho nỗ lực của nhiều người dùng. Điều này là có thể bởi vì R cung cấp các khả năng không có sẵn / giá cả phải chăng. Nếu Julia được sử dụng rộng rãi, nó cần một nhóm người dùng tìm thấy nó làm những gì họ cần tốt hơn nhiều so với các lựa chọn thay thế đáng để nỗ lực cung cấp những thứ rất cơ bản (ví dụ: đồ họa, lớp ngày, NA, v.v. ) có sẵn từ các ngôn ngữ hiện có.


4

Tôi sẽ lên trước, tôi không có kinh nghiệm với R, nhưng tôi làm việc với nhiều người nghĩ rằng đó là một công cụ tuyệt vời để phân tích thống kê. Nền tảng của tôi là về kho dữ liệu và do mô hình lập trình chuẩn của Julia dễ phân phối hơn, nhưng tôi nghĩ nó có thể là một sự thay thế rất thú vị cho phần biến đổi của các công cụ ETL truyền thống thường làm công việc rất kém, hầu hết không có cách nào dễ dàng tạo một biến đổi được tiêu chuẩn hóa hoặc sử dụng lại các kết quả của một biến đổi đã được thực hiện trên tập dữ liệu trước đó. Sự hỗ trợ cho các bộ dữ liệu được xác định và đánh máy chặt chẽ nổi bật, nếu tôi muốn xây dựng một khối OLAP về cơ bản cần xây dựng các bộ dữ liệu chi tiết hơn (các bảng thực tế) từ các bộ dữ liệu đã được tính toán, các công cụ ETL ngày nay không có 'khối xây dựng' để nói về điều đó có thể giúp đỡ, ngành công nghiệp này đã làm việc xung quanh vấn đề này thông qua các phương tiện khác nhau trong quá khứ, nhưng có sự đánh đổi. Các ngôn ngữ lập trình truyền thống có thể giúp bằng cách cung cấp các phép biến đổi được xác định tập trung và Julia có khả năng đơn giản hóa các tập hợp và phân phối không chuẩn trong các hệ thống kho dữ liệu phức tạp hơn.


3

Bạn cũng có thể sử dụng Julia và R cùng nhau. Có giao diện Julia-to-R . Với gói này, bạn có thể chơi với Julia trong khi gọi R bất cứ khi nào có thư viện cần thiết.


2

Julia chắc chắn đã có mọi cơ hội để trở thành một người thống kê ước mơ trở thành sự thật, lấy ví dụ về SAS, sức mạnh của nó nằm ở vô số procs được viết bằng C - những gì Julia có thể làm là cung cấp cho bạn các procs với mã nguồn, với ma trận như một kiểu dữ liệu được tích hợp sẵn với SAS / iml. Tôi không có nghi ngờ rằng các nhà thống kê sẽ đổ xô đến Julia một khi họ nắm được những gì chú chó con này có thể làm.


1
Chào mừng đến với Thống kê.SE, Jimbo. Tôi không đồng ý với khẳng định của bạn. Tôi nghĩ rằng chúng ta đã thấy Julia có thể làm gì, nhưng vấn đề ở thời điểm này là không có nhiều gói dành riêng cho miền như ở R. R sẽ tiếp tục thống trị tối cao trong thống kê nguồn mở miễn là các nhà nghiên cứu thấy nhiều lợi ích hơn khi sử dụng nhiều gói trong vũ trụ R. Đó là của tôi, ít nhất.
Christopher Aden

2

Ồ vâng, Julia sẽ vượt qua R khá nhanh. Và những lý do chính sẽ là "macro", 95% ngôn ngữ được triển khai ở Julia và cú pháp phân tích tiếng ồn, không có tiếng ồn của nó. Nếu bạn chưa có kinh nghiệm với loại ngôn ngữ không thể hiểu được, nhưng bạn sẽ thấy khá nhanh giao diện công thức R sẽ trở thành một cơ chế lỗi thời và xấu xí, và sẽ được thay thế bằng ngôn ngữ mô hình hóa chuyên biệt giống với CL macro vòng lặp. Truy cập vào các tham chiếu cấp thấp của một đối tượng cũng là một điểm cộng lớn. Tôi nghĩ rằng R vẫn không hiểu rằng việc ẩn nội bộ khỏi người dùng thực sự phức tạp hơn là đơn giản hóa mọi thứ.

Như tôi thấy bây giờ (đã sử dụng R nhiều năm phía sau và vừa đọc xong hướng dẫn sử dụng Julia), nhược điểm chính của Julia đối với R là không hỗ trợ cho kế thừa cấu trúc (điều này là có chủ ý). Hệ thống loại của Julia ít tham vọng hơn S4; nó cũng hỗ trợ nhiều công văn và nhiều kế thừa, nhưng với một nhược điểm - chỉ có một cấp độ cụ thể. Mặt khác, tôi hiếm khi thấy hệ thống phân cấp lớp trong R sâu hơn 3 cấp độ.

Thời gian sẽ trả lời, nhưng sẽ sớm hơn hầu hết người dùng R nghĩ :)


2
Bạn đưa ra một quan điểm tốt về các macro: nhiều thập kỷ sau mọi người vẫn đánh giá thấp Lisp thực sự mạnh như thế nào. Tuy nhiên, như bạn ngụ ý ở điểm số 1, ngôn ngữ này thực chất là sự thay thế Matlab, không phải là sự thay thế R. Tôi nghĩ bạn cũng bỏ qua thực tế rằng đó là ngôn ngữ cộng với các thư viện (gói) mà mọi người sử dụng và Julia thậm chí không có 1% những gì nó cần ở đó.
Wayne

2
@Wayne, tôi không bỏ qua bất cứ điều gì, OP là về tương lai chứ không phải về hiện tại. Trong 5 năm, chúng ta có thể thấy nhiều thư viện về số liệu thống kê ở Julia hơn bây giờ dành cho R. Và điều này, chỉ vì Julia có cơ hội tốt để trở thành một ngôn ngữ tốt hơn nhiều.
VitoshKa

Nếu julia thực sự trở thành một sự thay thế MATLAB, thì nó sẽ có lợi ích rất lớn khi sử dụng cùng một ngôn ngữ cho kỹ thuật và thống kê! Các khu vực chồng chéo (như chuỗi thời gian) là rất lớn.
kjetil b halvorsen

1

Các trường hợp sử dụng mục tiêu đầu tiên của Julia là các vấn đề về số. Về cơ bản, bạn có thể chia các lĩnh vực khoa học phân tích và tính toán này thành khoa học dữ liệu (hướng dữ liệu) và khoa học mô phỏng (hướng mô hình). Julia đang đối phó với các trường hợp sử dụng khoa học mô phỏng đầu tiên. Họ cũng đang xử lý các trường hợp khoa học dữ liệu, nhưng chậm hơn. R sẽ không bao giờ rất hữu ích cho khoa học mô phỏng, nhưng Julia sẽ rất hữu ích cho cả hai trong một vài năm.


0

Nó cần có khả năng áp dụng bất kỳ chức năng nào cho các bộ dữ liệu lớn không phù hợp với bộ nhớ trong suốt cho người dùng.
Điều đó bao gồm ít nhất là chạy các mô hình hiệu ứng hỗn hợp, mô hình sinh tồn hoặc MCMC trên các bộ dữ liệu phù hợp với đĩa nhưng không phải trên bộ nhớ. Và nếu có thể trên các tập dữ liệu được phân phối trên một số máy tính.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.