Nếu chúng ta bóc đường cú pháp ở mặt trước và tạo mã ở mặt sau và so sánh những gì xảy ra ở giữa khi chuyển đổi nguồn thành mã chạy cho các ngôn ngữ bắt buộc , chẳng hạn như C hoặc Java với các ngôn ngữ chức năng như ML hoặc OCaml, chúng ta thường sẽ tìm thấy Những khác biệt sau đây về cái gì, tại sao và như thế nào.
Mutable vs bất biến
Với lập trình chức năng, người ta có xu hướng sử dụng các giá trị bất biến, điều đó có nghĩa là chúng ta không phải lo lắng nếu giá trị thay đổi theo phương tiện bên ngoài chức năng hiện tại của chúng ta. Khi được sử dụng một cách chính xác, nó sẽ loại bỏ bất kỳ vấn đề nào liên quan đến tác dụng phụ .
Tập trung: Dữ liệu so với chức năng.
Khi người ta nghĩ về mã hóa bắt buộc, trước tiên người ta nghĩ đến cấu trúc dữ liệu và sau đó họ cần phương pháp nào, khi làm việc với lập trình chức năng, trước tiên người ta nghĩ đến những chức năng nào là cần thiết và sau đó tạo ra các loại dữ liệu cần thiết. Hầu hết các loại dữ liệu là danh sách lười biếng , (dòng suy nghĩ hoặc danh sách vô hạn) hoặc công đoàn bị phân biệt đối xử . Khi liên kết phân biệt được đệ quy, bạn ngay lập tức đã tạo một cây hoặc biểu đồ mà không phải viết tất cả mã đi bộ.
Generics / đa hình tham số
Điều này thật thú vị, và nếu tôi có sự thật chính xác của mình, đã được phát minh ra với lập trình chức năng và sau đó được ghép vào lập trình mệnh lệnh. Vì vậy, nếu bạn thích thuốc generic cảm ơn các nhà thiết kế ngôn ngữ chức năng.
Minh bạch tham chiếu / Song song
Bởi vì mã chức năng trong suốt tham chiếu có thể dễ dàng chuyển sang tính toán song song .
Chức năng / thành phần bậc cao
Vì các hàm có thể tạo các hàm mới và trả về các hàm, nên việc tạo các hàm mới dựa trên các hàm khác cũng dễ như tạo các biểu thức mới thay vì viết toàn bộ các phương thức mới. Điều này dẫn đến các hình thái rất hữu ích nếu vấn đề bạn đang giải quyết có thể được giải quyết bằng toán học. Thực hiện các phép biến đổi, nghĩ SQL và cập nhật, dễ dàng hơn nhiều với lập trình hàm. Như Wandering Logic lưu ý đây là nơi ngôn ngữ lập trình chức năng vượt trội.
Gõ: Tĩnh so với suy luận .
Do các kiểu được suy luận trái ngược với việc được lập trình viên thiết lập trong khi viết, nên có nhiều kiểm tra hơn để đảm bảo tính chính xác của mã và thường các hàm sẽ được đặt chung chung so với loại được đặt.
Kết hợp mẫu so với câu lệnh switch
Khi kết hợp kết hợp với các hiệp hội phân biệt đối xử, kết hợp của bạn được kiểm tra để đảm bảo bạn đã bao quát mọi kết quả. Đã bao nhiêu lần bạn gặp lỗi thời gian chạy vì bạn đã bỏ lỡ một trường hợp với câu lệnh chuyển đổi.