Trong vài tuần qua, tôi đã học và thử nghiệm với Clojure và Erlang. Từ những gì tôi hiểu cả hai đều giải quyết cùng một loại vấn đề - nhưng - với các cách tiếp cận khác nhau. Nếu điều đó là đúng, thì Clojure có khả thi như một lựa chọn cho các hệ thống thời gian thực như các ứng dụng chat hay các nhà máy ticker, như Erlang không?Khả năng thời gian thực?
Trả lời
cả địa chỉ lập trình đồng thời mặc dù trong môi trường khác nhau:
- Clojure là thực sự tốt tại chia sẻ bộ nhớ đồng thời lập trình. Trường hợp có nhiều luồng tất cả làm việc trên một bộ nhớ lớn duy nhất (heap) và chúng cần phối hợp quyền truy cập vào các đối tượng được chia sẻ trong bộ nhớ đó.
- Erlang thực sự tốt tại chia sẻ không có gì phân phối máy tính nơi các quá trình cần để có thể chạy trên nhiều máy tính và làm việc trên không gian bộ nhớ độc lập. Chúng không phối hợp quyền truy cập chia sẻ với các đối tượng.
Cả hai hệ thống này đều là "thời gian thực mềm" và rất phù hợp với những thứ như hệ thống trò chuyện và điều khiển mặc dù không phải hệ thống nào phù hợp với hệ thống có yêu cầu thời gian thực cứng.
Cảm ơn lời giải thích. Theo dõi, từ những gì tôi đã đọc cho đến nay Erlang chào hàng thực tế rằng nó là quá trình (thread) quản lý là không phụ thuộc vào hệ điều hành, do đó bằng cách nào đó làm cho nó hiệu quả hơn/hiệu quả. Bạn có kinh nghiệm với điều này không? – kin1
Bởi vì khả năng trực tiếp các chức năng đường ống trên mạng, erlang thực sự hiệu quả trên các mạng không đồng nhất, miễn là bạn có thể thực hiện công việc với thông điệp đi một mình –
Theo như Clojure đi, nó có thể cung cấp nhiều khả năng thời gian thực như Java VirtualMachine cơ bản có thể.
Bạn CAN tạo hệ thống thời gian thực cứng với JVM, nhưng điều này không chỉ vượt qua cú pháp ngôn ngữ mà Clojure cung cấp.
Tùy thuộc vào yêu cầu thời gian thực của bạn, có vẻ như bạn sẽ cần phải điều chỉnh các JVM (đây là một tốt IBM Works article hoặc sử dụng một JVM cụ thể như Erland Fiji JVM
Về, đã có một là liên quan questions on SO
ứng dụng trò chuyện và ticker thực vật có thể đạt được với cả hai ngôn ngữ, nhưng cá nhân tôi nghi ngờ nó sẽ được dễ dàng hơn để triển khai với Clojure, đặc biệt là nhìn vào cung cấp trong Cloud (Heroku) và dịch vụ lưu trữ thông thường.
Có, Clojure là một lựa chọn rất khả thi cho các ứng dụng thời gian thực (mềm).
Về cơ bản, bạn có thể nhận được hiệu suất thời gian thực tương đương với bất kỳ thứ gì khác trên JVM. Vì mọi người sử dụng JVM cho nền tảng giao dịch theo thời gian thực (ví dụ: These guys) thì tôi chắc chắn sẽ tốt cho trò chuyện hoặc cổ phiếu.
Clojure là đặc biệt tốt cho các ứng dụng cao đồng thời truy cập vào chia sẻ trạng thái, vì nó có một rất đẹp model of Software Transactional Memory rằng quy mô đặc biệt tốt với số lượng lớn các chủ đề/số lượng lớn các lõi. Tôi tin rằng có một video ở đâu đó của Rich Hickey thể hiện một ứng dụng Clojure đồng thời trên một hộp hệ thống Azul 768 lõi mà không có bất kỳ vấn đề gì.
Bạn có thể tương phản điều này với Erlang, được thiết kế cho các diễn viên được phân phối cao không chia sẻ trạng thái. Điều này mang lại cho Erlang các ứng dụng dư thừa và khả năng mở rộng lớn trên các cụm máy, nhưng mỗi quá trình sẽ quản lý trạng thái độc lập của chính nó.
- 1. Khả năng tương tác Java thời gian thực
- 2. Danh sách với thời gian chờ/hết hạn khả năng
- 3. Khả năng phát hiện thời gian chạy RESTful API/thiết kế máy khách HATEOAS
- 4. thực hiện chức năng với thời gian chờ
- 5. Chức năng in python trong thời gian thực
- 6. Hết thời gian thực hiện các chức năng thuần túy
- 7. Khả năng gửi đa hướng
- 8. Cách xác định thời gian chờ khả năng hiển thị trên ios
- 9. Đồng thời và khả năng mở rộng API Web
- 10. Thay đổi thời gian thực trên iPhone
- 11. Video thời gian thực (hình ảnh) khâu
- 12. thời gian người dùng lớn hơn thời gian thực
- 13. Khoảng thời gian thực Scala, Khoảng thời gian Int
- 14. Ý nghĩa của Thời gian CPU Incl, Thời gian CPU Excl, Thời gian thực của CPU thực, Thời gian thực của Excl Real trong traceview?
- 15. Khả năng hiển thị biểu tượng và không gian tên
- 16. thời gian thực hiện mysql
- 17. Bản nhạc thời gian thực
- 18. Thời gian thực và php?
- 19. Java enums khả năng đột biến usecases và khả năng?
- 20. Gói R và thời gian thực hiện
- 21. Thực hiện bộ đếm thời gian JavaScript
- 22. Thời gian thực hiện CPU trong Java
- 23. MongoDb Truyền dữ liệu đã chèn trong thời gian thực (hoặc gần thời gian thực)
- 24. jQuery: Đếm từ trong thời gian thực
- 25. Âm mưu thời gian thực trong MATLAB
- 26. Chủ nghĩa thực dụng và khả năng truy cập
- 27. Khả năng truy cập trong xác thực biểu mẫu javascript
- 28. Khả thi thực hiện chức năng đếm thủ công
- 29. Chức năng hết thời gian chờ nếu mất quá nhiều thời gian để hoàn thành
- 30. php shell_exec với thời gian thực cập nhật
Ứng dụng trò chuyện và nhà máy đánh dấu là thời gian thực mềm, có nghĩa là mọi ngôn ngữ sẽ hoạt động. –