01/10/2018, 11:00
Ngôn ngữ lập trình hàm cho người mới bắt đầu
Ngôn ngữ lập trình hàm - functional language - đầu tiên mà bạn tiếp cận là ngôn ngữ nào nhỉ? Hoặc dự định học ngôn ngữ nào? Tham khảo tí.
Bài liên quan
Đầu tiên mình nhá:
Haskell, Elixir, Elm.
Mình đã từng chứng kiến ít nhất 3 thằng mà theo mọi người nhận xét là “chúng mày là bọn ăn hại, còn lâu mới trở thành lập trình viên được”, thế mà cả 3 thằng sau này đều trở thành lập trình viên Java, lương tháng > 1.500 đô-la. Bọn này bắt đầu học ngôn ngữ lập trình chả ai biết đó là đâu https://en.wikipedia.org/wiki/Scheme_(programming_language)
Ngôn ngữ gì vậy anh? Ở đâu dạy mà họ học được?
Scheme lần đầu mình biết luôn.
Bạn là 1 trong 3 người?
Lập trình hàm là họ ngôn ngữ lập trình khác, sử dụng thuật ngữ và phong cách lập trình riêng, khác với C++, Python,…, là ngôn ngữ thủ tục, OOP
Đổi gió sang phong cách lập trình mới để khỏi nhàm chán
Không có ai dạy, toàn tự học.
Mình cũng viết back end với Elixir. Ngôn ngữ lập trình hàm rất sáng sủa
Điều khôi hài là cái ngôn ngữ Scheme có nhiều điểm khác biệt với Java, nhất là trong việc nó lập trình thủ tục (đôi lúc được xem là xưa cũ, lỗi thời) hơn là hướng đối tượng.
Nhưng mà khi học Scheme tốt, rất dễ để chuyển sang một ngôn ngữ khác, có lẽ Scheme cũng giống như Pascal, nó vốn là ngôn ngữ để bắt đầu học lập trình, nó không phải là ngôn ngữ mạnh để làm ra sản phẩm, cho nên người nào học thường ít bị xao nhãng, chú tâm vào việc lập trình hơn là bị ngứa ngáy phải làm gì đó. Việc này khá giống với việc đi học võ với tinh thần học cho khoẻ, học cho có bạn bè bà tám, học vì thấy múa đẹp,… không phải để đánh nhau thường sẽ trụ lâu hơn, theo nghề võ cả đời, trong khi những ai mang tâm thế đi học võ để đánh nhau thường sớm rơi rụng.
Bạn làm product trên Elixir luôn rồi à?
Còn mình mới học ngôn ngữ thôi.
Mình bắt đầu với Haskell thay vì Scheme.
Haskell được tạo ra để giảng dạy là chủ yếu. Mục đích Haskell được tạo là để thống nhất và hiện thực chính xác các thuật ngữ bên lập trình hàm. Ứng dụng thực tế của Haskell không có nhiều.
Sau khi học cơ bản của Haskell thì mình thấy các ngôn ngữ khác vay mượn thuật ngữ và ý tưởng rất nhiều: lambda, curry function, high order function, lazy collection (stream), functor, applicative functor, monad.
Vế scheme, mình thấy phần MetaProgramming của Elixir vay mượn lại từ Scheme thì phải. Tuy nhiên, bên Scheme tổng quát hơn Elixir.
Đúng rồi. Mình đang làm Elixir/Phoenix
Java 8 bắt đầu mang hơi hướng lập trình hàm rồi, đang muốn thay đổi mindset để học đây. mà đúng là chả dễ thay đổi mindset tí nào.
học Kotlin - a modern programing language - bạn ơi
Topic thảo luận ngôn ngữ hàm mà
Kotlin là ngôn ngữ hỗn hợp từ thủ tục, OOP, lập trình hàm.
Nếu bạn biết phần lập trình hàm của Kotlin, hay hơn như thế nào thì bạn cứ đóng góp.
Mình cũng chưa học Kotlin sâu lắm đâu.
Bạn thử học 1 ngôn ngữ thuần hàm đi bạn.
Trước mình học Scala (OOP + hàm) mà vẫn không thay đổi được mindset. Từ khi mình chịu bỏ thời gian, học Haskell thì lúc đó mình mới đầu có mindset cơ bản.
Tầm nửa tháng cho Haskell
chắc để thử, 5 năm làm với OOP, code nó cứ quen tay theo OOP =))
Học ngôn ngữ theo nhu cầu, đừng học theo trào lưu, chúng ta là software dev, ko phải là những con quạ mà theo đuổi những thứ lấp lánh. Ngôn ngữ lập trình cũng giống như võ thuật vậy, ko có ngôn ngữ của Chúa-không có môn võ mạnh nhất, chỉ có sản phẩm tốt và võ sĩ mạnh nhất
Cũng đang cày Haskell xoắn đến mấy cái Monad mới thấy nó đã =)). Đúng là ko nên lập trình functional với thằng Scala vì nó có tính OOP trong đó chơi thuần Functional Haskell là chuẩn, Lisp thì bịn Retain Assign
em chưa hiểu về lập trình hàm lắm, pascal có phải không,
Pascal thì chỉ là lập trình thủ tục thôi. Cứ học từ từ đừng quan tâm đến nhiều quá vì thới giới IT rất rộng lớn. Trong quá trình học thì sẽ lắp hoặc bắt gặp được những kiến thức và sẽ nạp vào sau thôi.
scala, ở trường mình chơi với cái đó