Tôi tin rằng cộng đồng Erlang không ghen tị với Node.js vì nó không chặn I / O nguyên bản và có các cách để mở rộng quy mô triển khai dễ dàng đến nhiều bộ xử lý (một thứ thậm chí không được tích hợp trong Node.js). Thêm chi tiết tại http://journal.dedasys.com/2010/04/29/erlang-vs-node-js và Node.js hoặc Erlang
Haskell thì sao? Haskell có thể cung cấp một số lợi ích của Node.js, cụ thể là một giải pháp sạch để tránh chặn I / O mà không cần phải lập trình đa luồng không?
Có nhiều điều hấp dẫn với Node.js
- Sự kiện: Không có thao tác xử lý luồng, lập trình viên chỉ cung cấp các cuộc gọi lại (như trong khung Snap)
- Các cuộc gọi lại được đảm bảo để chạy trong một luồng duy nhất: không có điều kiện cuộc đua nào có thể.
- API thân thiện với UNIX đơn giản và đẹp. Tiền thưởng: Hỗ trợ HTTP tuyệt vời. DNS cũng có sẵn.
- Mỗi I / O theo mặc định là không đồng bộ. Điều này làm cho nó dễ dàng hơn để tránh ổ khóa. Tuy nhiên, quá nhiều CPU xử lý trong một cuộc gọi lại sẽ ảnh hưởng đến các kết nối khác (trong trường hợp này, tác vụ sẽ được chia thành các tác vụ phụ nhỏ hơn và được lên lịch lại).
- Cùng một ngôn ngữ cho phía máy khách và phía máy chủ. (Tuy nhiên, tôi không thấy quá nhiều giá trị trong cái này. JQuery và Node.js chia sẻ mô hình lập trình sự kiện nhưng phần còn lại thì rất khác. Tôi không thể thấy cách chia sẻ mã giữa phía máy chủ và phía máy khách có thể có ích trong thực tế.)
- Tất cả điều này được đóng gói trong một sản phẩm duy nhất.