12/08/2018, 13:24

The men behind Clojure, Scala, and F# explain what functional programming actually is and how the languages are evolving

Theo một số chủ đề tranh cãi thực sự xem đây là gì, chức năng của chương trình đang đang thu hút sự chú ý của các nhà phát triển. Và 3 trong số các function languages phổ biến là : Clojure, F#, and Scala -- là các ngôn ngữ cải biến nhiều nhất. Functional programming được 1 số developer kêu gọi, ...

Theo một số chủ đề tranh cãi thực sự xem đây là gì, chức năng của chương trình đang đang thu hút sự chú ý của các nhà phát triển. Và 3 trong số các function languages phổ biến là : Clojure, F#, and Scala -- là các ngôn ngữ cải biến nhiều nhất.

Functional programming được 1 số developer kêu gọi, ví dụ như Martin Odersky- Scala: "Các nhà lập trình viên trong phân khúc này yêu thích functional programming bởi vì việc sử dụng "Functional programming" sẽ giúp cho code "clearer" hơn, có cấu trúc tốt hơn, và nó ngăn ngừa rất nhiều class khỏi lỗi". Nhưng 1 vài lời phản bác khác lại có ý kiến sử dụng functional programming dẫn đến sự kém phát triển của phần mềm ?.

Functional programming thường yêu cầu nghĩ về một hướng lập trình mới, như David Stephens, một manager của Microsoft program về .Net và là 1 nhà hùng biện cho ngôn ngữ F# cho rằng : Abstractions có thế là 1 vấn đề : "Khi bạn tạo đoạn code có nhiều abtract, và khi nhu cầu cần phát triển thêm nữa, chu kì cứ thế lặp lại, nó sẽ khiến bạn mất nhiều thời gian để có thể hiểu được về sự trừu tưởng đấy.".

What is a functional language, exactly?

Trong phần lớn các thuật ngữ cơ bản, functional programming được coi như cách xử lý tính toán ví dụ như các functions toán học. Ngoài các chức năng được các ngôn ngữ thêm từ ban đầu, Java, C# đã phát triển thêm nhiều funtional bằng cách thêm vào hỗ trợ lambda expresssions.

Nhưng để đưa ra định nghĩa chính xác về functional programming là 1 điều không dễ dàng. Trong bài viết từ Clojurefun blog đã chỉ ra những định nghĩa nó cho là khong chính xác, bao gồm cả những định nghĩa cho rằng functional programming như 1 kiểu functional cao cấp hay là 1 ngôn ngữ hỗ trợ lambdas. Bài viết cũng đưa ra định nghĩa đúng :"1 functional programming ngôn ngữ là một ngôn ngữ chú trong vào pure-functinal và immutable data "

Theo Odersky, một function được coi như 1 phần của code, phần kết nối đầu vào đến đầu ra và không có tác dụng nào khác. "Nó chính là các định nghĩa về các công thức toán học nơi chúng ta đang xử dụng ở đây. Đôi khi functions được gọi như là 'pure'. Khi nói về function trong ngôn ngữ C: "Một functional language tập trung lên chương trình với pure functions, giúp cho nó trở nên dễ dàng và mạnh mẽ hơn. " trích lời của Odershy, người tìm ra Typesafe, và cũng là người cung cấp Typesafe JVM application developement platform.

Functional programming có thể biên dịch với các mẫu khác nhau, anh ta đã nói. "Ví dụ, funtional rất tốt cho hướng đối tượng.Scala là 1 funtional language theo nghĩa đó. Tôi đông ý nó chỉ có lambdas và không thể tạo nên 1 language functional, nó là cần thiết chứ chưa đủ".

Microsoft's Stephens cho răng functional sẽ vượt ra ngoài khả năng của một ngôn ngữ."Functional programming biến nhất của ngôn ngữ lập trình trên thế giới là Excel" . 1 ví dụ đơn giản là worksheet của Excel có 1 column với 1 số giá trị trong nó, như A1x2. "Đây là 1 pure funtion trên A1, và A1 không thể thay đổi, bạn cần tính toán giá trị từ các dữ liệu hiện tại ."

Công nghệ Language-Integrated Query của Microsoft (Linq) cung cấp functional programming, anh ta nói" hầu hết mọi ngôn ngữ lập trình hiện tại đều mô phỏng theo các chức năng của functional lanuages ".

Trích lời Stephens về immutable data là một yếu tố quan trọng với functional programming. Đồng thời -- một chương trình với nhiều luồng vận hành dữ liệu đồng thời-- đây là lợi ích của immutable data. "Chúng ta coi F# là functional language đầu tiên bởi vì nó là sự kết hợp của nhiều ngôn ngữ khác. Hỗ trợ lập tình OOP và có sự kết hợp giữa C#, visual basic .

Clojure Hickey thấy việc áp dụng funtional languages giống như 1 giải pháp với các áp lực phải đối mặt của các nhà phát triển, những người đang có hàng tá vấn đề lớn mỗi ngày." Để làm điều này, họ phải giảm độ phức tạp bất thường của các chương trình của họ. Hiện tại,điều này đã được công nhận và phổ biến răng state và "side effects" chính là nguyên nhân của sự phức tạp và bugs trong chương trình. Hickey nói: "Trong khi nó có khả năng làm giảm số state của chương trình đã viêt bằng nonfunctional languages, nó sẽ trở nên dễ dàng và nhanh hơn đối với ngôn ngữ tạo từ functional programming".

What's next for the three top functional languages

13 năm trước scala là 1 ngôn ngữ không có nhiều sự chú ý trong ngành khoa học, và người tìm thấy chính ngôn ngữ này chính là Odersky. Được hỗ trợ trong JVN, nó được hưởng ứng khoảng 400,000 đến 500,000 người dùng. Kế hoạch trong 1 thời gian ngắn, tối ưu hóa cho Java 8, các đoạn code java cũ sẽ có thể nâng cấp và cho phép sử dụng Scala.

Và kế hoạch lâu hơn , scala sẽ tạo nên 1 kiểu hệ thống dễ hiểu, an toàn và hỗ trợ nhiều platform, với 1 trình biên dịch back-end đang được xem xét. Và sau đó sẽ nâng cấp Scala.js, cho phép biến dịch thành javascript.

9 năm trước Clojure được xây dựng trên JVM, nó đã được dùng trong các dự án tài chính, bán lẽ phần mềm. Hickey đã nói. " Nó sẽ được áp dụng trong nhiều loại ứng dụng như là dự án analysic hay trancaction processing, big data, netwwork operations, search, sercurity ..."

11 năm trước thì F# đã được tìm thấy bởi Microsoft Research bởi Don Syme và được xem như F# Foundation. Nó được sử dụng trong các ứng dụng lơn và chạy trên các hệ điều hành linux, os x, android, ios, windowns, và các trình duyệt.

Tham khảo bài viết:

Funtional languages What they are where they are going

Microservice tools

0