Vấn đề thực sự là nhà nước.
Ngôn ngữ chức năng không có nhà nước toàn cầu. Hầu hết các vấn đề công nghiệp yêu cầu trạng thái ở quy mô lớn (làm thế nào để bạn đại diện cho một sổ cái hoặc một bộ giao dịch) ngay cả khi một số chức năng ở quy mô nhỏ không thực sự yêu cầu nó (xử lý một sổ cái).
Nhưng chúng tôi đang chạy mã trên các máy kiến trúc Von-Neuman vốn đã đầy đủ trạng thái. Vì vậy, chúng tôi chưa thực sự thoát khỏi trạng thái, các ngôn ngữ chức năng chỉ che giấu sự phức tạp của trạng thái khỏi nhà phát triển. Điều này có nghĩa là ngôn ngữ / trình biên dịch phải xử lý trạng thái đằng sau hậu trường và quản lý nó.
Vì vậy, mặc dù các ngôn ngữ chức năng không có trạng thái toàn cầu, thông tin trạng thái của chúng được truyền dưới dạng tham số và kết quả.
Vì vậy, câu hỏi sau đó trở thành ngôn ngữ có thể xử lý nhà nước hiệu quả đằng sau ý nghĩa? Đặc biệt là khi kích thước dữ liệu vượt xa kích thước của kiến trúc.
Nhìn vào nó từ phía Phần cứng
HĐH đã giúp ích rất nhiều trong vài năm qua trong việc trực quan hóa không gian địa chỉ để các ứng dụng không chính thức phải lo lắng về điều đó. Nhưng các ứng dụng không lo lắng về việc rơi vào bẫy đập phần cứng khi áp lực bộ nhớ trở nên mãnh liệt (phần cứng đập sẽ làm chậm quá trình của bạn để thu thập dữ liệu).
Vì lập trình viên không kiểm soát trực tiếp trạng thái trong ngôn ngữ chức năng, họ phải dựa vào trình biên dịch để xử lý việc này và tôi chưa thấy các ngôn ngữ chức năng xử lý tốt việc này.
Về mặt trái ngược của đồng xu, lập trình viên toàn trạng có quyền kiểm soát trực tiếp trạng thái và do đó có thể bù cho các điều kiện bộ nhớ thấp. Mặc dù tôi chưa thấy nhiều lập trình viên thực sự đủ thông minh để làm như vậy.
Nhìn từ phía ngành công nghiệp:
Công nghiệp có rất nhiều lập trình viên nhà nước không hiệu quả.
Nhưng thật dễ dàng để đo lường sự cải thiện trong các chương trình này theo thời gian. Bạn ném một nhóm các nhà phát triển vào vấn đề họ có thể cải thiện mã bằng cách cải thiện cách chương trình xử lý trạng thái.
Đối với các chương trình chức năng, các cải tiến khó đo lường hơn vì bạn cần cải thiện các công cụ sẽ cải thiện các chương trình (chúng tôi chỉ xem xét cách các ứng dụng xử lý trạng thái cơ bản hiệu quả ở đây, chứ không phải cải tiến tổng thể của chương trình).
Vì vậy, đối với ngành công nghiệp, tôi nghĩ rằng nó có khả năng đo lường sự cải tiến trong mã.
Từ góc độ tuyển dụng
Có rất nhiều lập trình viên đầy đủ cho thuê. Các lập trình viên chức năng rất khó tìm. Vì vậy, mô hình cung và cầu cơ bản của bạn sẽ phát huy tác dụng nếu ngành công nghiệp chuyển sang lập trình kiểu chức năng và đó không phải là điều họ muốn xảy ra (lập trình viên đủ đắt như hiện tại).