Tôi đã xem khả năng hiển thị ngày càng tăng của các ngôn ngữ lập trình chức năng và các tính năng trong một thời gian. Tôi nhìn vào họ và không thấy lý do của sự kháng cáo.Làm cách nào/tại sao ngôn ngữ chức năng (cụ thể là Erlang) có quy mô tốt?
Sau đó, gần đây tôi đã tham dự bài trình bày "Khái niệm cơ bản về Erlang" của Kevin Smith tại Codemash.
Tôi rất thích bài thuyết trình và đã học được rằng rất nhiều thuộc tính của lập trình chức năng giúp dễ dàng tránh các vấn đề về luồng/đồng thời. Tôi hiểu rằng việc thiếu nhà nước và khả năng biến đổi khiến cho nhiều chủ đề không thể thay đổi cùng một dữ liệu, nhưng Kevin nói (nếu tôi hiểu đúng) tất cả các giao tiếp diễn ra thông qua tin nhắn và các mesages được xử lý đồng bộ (một lần nữa tránh các vấn đề tương tranh).
Nhưng tôi đã đọc rằng Erlang được sử dụng trong các ứng dụng có khả năng mở rộng cao (toàn bộ lý do Ericsson đã tạo ra nó ngay từ đầu). Làm thế nào nó có thể xử lý hiệu quả hàng nghìn yêu cầu mỗi giây nếu mọi thứ được xử lý như một thông báo được xử lý đồng bộ? Đó không phải là lý do tại sao chúng tôi bắt đầu chuyển sang xử lý không đồng bộ - vì vậy chúng tôi có thể tận dụng lợi thế của việc chạy nhiều luồng hoạt động cùng một lúc và đạt được khả năng mở rộng? Nó có vẻ như kiến trúc này, trong khi an toàn hơn, là một bước lùi về mặt khả năng mở rộng. Tôi đang thiếu gì?
Tôi hiểu những người sáng tạo của Erlang cố tình tránh hỗ trợ luồng để tránh các vấn đề đồng thời, nhưng tôi nghĩ rằng đa luồng là cần thiết để đạt được khả năng mở rộng.
Ngôn ngữ lập trình chức năng có thể vốn an toàn như thế nào nhưng vẫn có tỷ lệ?
[Chưa được đề cập]: Máy ảo Erlang 'mất sự không đồng bộ đến một cấp độ khác. Bởi ma thuật voodoo (asm) nó cho phép các hoạt động đồng bộ hóa như socket: đọc để chặn mà không dừng một chuỗi os. Điều này cho phép bạn viết mã đồng bộ khi các ngôn ngữ khác sẽ buộc bạn vào tổ gọi async-callback. Nó dễ dàng hơn nhiều để viết một ứng dụng mở rộng quy mô với hình ảnh tâm trí của các dịch vụ vi mô luồng đơn VS giữ hình ảnh lớn trong tâm trí mỗi khi bạn tack một cái gì đó vào cơ sở mã. –
@Vans S Thú vị. –