- vừa được xem lúc

Tư duy lập trình functional prototype cho các lập trình viên

0 0 32

Người đăng: minhtuan

Theo Viblo Asia

Khi mình còn lập trình C/C++, mình được học khái niệm con trỏ hàm và vận dụng viết các chương trình có khả năng tùy biến cao. Cho đến nay các ngôn ngữ hàng top như Python JavaScript vẫn còn giữ nó như là một cách viết mã hướng hàm thủ tục. Cách viết này người ta còn đặt tên là Functional Prototype Programming

123123123123.PNG

Tạm dịch: hàm nguyên mẫu là một mẫu hoặc mô hình của sản phẩm được xây dựng để kiểm tra một khái niệm hoặc quy trình hoặc hoạt động như một phương tiện trực quan để được nhân rộng, cải tiến và học hỏi ?đọc xong muốn xỉu khó hiểu thiệc

Nội dung bài viết

  • phần 1: (what how) trình bày cách viết functional prototype trong các ngôn ngữ Python C++ JavaScript
  • phần 2: (why) tại sao lại viết như vậy, có ích gì ?
  • phần 3: @Functional trong Java8 với biểu thức lambda, cách lập trình hàm thủ tục cho lập trình viên Java

Phần 1: viết functional prototype trong Python C++ JavaScript

Mình chia làm 3 bước:

  • bước 1: khai báo một hàm
  • bước 2: khởi tạo một biến có kiểu dữ liệu là hàm, gán biến cho hàm đã được khai báo
  • bước 3: gọi biến hàm chạy

js.PNG
c++.PNG
py.PNG


Trong JavaScript, biến f này được hiểu có kiểu dữ liệu là function
22.PNG
Trong python mọi thứ đều là đối tượng , biến f được hiểu là một instance của class Function
1234.PNG

Học nhiều ngôn ngữ cho mình nhìn nhận kiến thức một cách tổng quan hơn?


Phần 2: tại sao lại viết như vậy ?

Này hơi khó giải thích ?. Mình lấy ví dụ trong đời sống để dễ hình dung. Nhà mình có một chiếc máy giặt. Mình muốn giặt đồ, việc đầu tiên là mình cho đồ vào máy, sau đó mình setup cho máy giặt sẽ chạy như nào.


Mình mô tả code như sau:
22221.PNG
Mình muốn máy giặt sẽ chạy như nào thì nó sẽ chạy theo mình ý đó. Mình chỉ cần nạp vào máy chương trình của mình thông qua tham số vào chương trình máy giặt. Đấy, vậy là chương trình của mình trở nên linh hoạt nhiều rồi


Phần 3: Lập trình functional prototype trong Java8

Mình làm tương tự các bước ở trên đã làm vào trong Java

  • Bước 1: Mình khai báo cấu trúc hàm vào trong một interface, interface này chỉ nên gồm 1 phương thức duy nhất
  • Bước 2: Hiểu interface như là một kiểu dữ liệu hàm, tạo một biến hàm và gán giá trị như một hàm
  • Bước 3: gọi hàm chạy

123123123123123.PNG
Giống y như JavaScript vậy, thật đơn giản đúng không nào. Đây gọi là biểu thức lambda, một biểu thức lambda bao gồm : ngoặc hàm ( ) + mũi tên --> + block code. Chúng ta sẽ hay gặp kiểu code này trong việc set sự kiện clickOn() trong nhiều ngôn ngữ lập trình. Ngoài ra trong Java và JavaScript, khi xử lý một tập hợp, ta sẽ gọi các phương thức xử lý mà tham số sẽ truyền vào là một biểu thức hàm. Kỹ thuật này người ta gọi là CallBack


Hàm này truyền vô cái hàm này, cái hàm này chạy xong rồi thì mới tới cái hàm kia chạy. Vậy hàm này chạy sau. Được chạy sau vì gọi sau cho nên gọi là CallBack nghe xỉu thiệt?? Với Java8, để chắc chắc ta sẽ tạo ra một interface đại diện cho Function (chỉ gồm 1 phương thức). Ta thêm Annotation @FunctionalInterface trước interface đó để tránh lỗi biên dịch sai cần thiết. Ngoài ra còn nhiều kiến thức về biểu thức lambda nữa nhưng ngoài phạm vi bài viết này. Hẹn gặp lại các lập trình viên Java thân yêu ở các bài viết sau


Nếu các bạn thấy hay, hãy để lại bình luận để mình có những bài viết tốt hơn. Chúc các bạn môt ngày vui vẻ ??

Bình luận

Bài viết tương tự

- vừa được xem lúc

Thao tác với Process

1. Giới thiệu.

0 0 32

- vừa được xem lúc

Quản lý Process

1. Giới thiệu.

0 0 47

- vừa được xem lúc

Thao tác với Thread

1. Giới thiệu.

0 0 49

- vừa được xem lúc

questions and answers

some questions and answers that i questioned my self. now i have answers for that. Tags: win10. nguyên nhân thằng window vẫn sửa dụng vì đơn giản lý do lịch sử.

0 0 17

- vừa được xem lúc

Tìm hiểu về Web Security - Phần 2: User Input

Never trust anything a user puts into your app. -.

0 0 27

- vừa được xem lúc

Principle trong Programing, Các nguyên tắc lập trình cơ bản

Mã của bạn phải rõ ràng và dễ bảo trì.Thật dễ dàng để viết mã nhưng Thật khó để viết mã tốt.

0 0 30