API, Library và Framework - Phần I: API
Một trong những điều tiện lợi khi lập trình đó chính là việc tái sử dụng mã nguồn để tiết kiệm thời gian và công sức. Ví dụ như khi khi chúng ta cần duyệt qua các phần tử trong mảng và tính tổng các phần tử đó nhiều lần trong chương trình chính. Ta đóng gói nó vào trong một hàm và gọi hàm khi ta cần. Cũng chính nhờ điều đó, ta thậm chí có thể tái sử dụng mã nguồn của những lập trình viên khác nữa. API, Library và Framework là những khái niệm bạn sẽ gặp khi sử dụng mã nguồn bên ngoài. Đây cũng là các khái niệm dễ gây nhầm lẫn với nhau nếu bạn chưa hiểu rõ.
Tái sử dụng code
Trong xuyên suốt chiều dài lịch sử, lập trình có thể phát triển và gần gũi đến thế là nhờ khả năng tái sử dụng mã nguồn của người khác. Chúng ta sử dụng các hàm có sẵn trong C++ để nhập xuất dữ liệu thay vì tự mình tìm tòi cách làm trong C hay thậm chí là Assembly. Hệ điều hành Android ra đời từ việc sử dụng Linux. Việc tìm tòi và tạo thứ mình cần lại từ đầu là một việc rất tốn thời gian và công sức. Nếu đã có người làm được một việc mà chúng ta muốn làm và họ làm tốt. Hãy tái sử dụng nó!
Don't reinvent the wheelĐối với lập trình viên chúng ta, đây là điều cần phải ghi nhớ
Application Programming Interface (API)
Giao diện lập trình ứng dụng (các lập trình viên thích cái tên API hơn) là những giao diện ta sử dụng để giải quyết một vấn đề khi lập trình và được cung cấp bởi người khác . Ta có thể hình dung rõ hơn khi so sánh với giao diện người dùng (Graphical User Interface). Windows là hệ điều hành có giao diện người dùng thân thiện và dễ sử dụng. Khi ta kéo một file vào Recycle Bin, mục đích của ta là xóa file đó và ta mong đợi hệ điều hành sẽ làm việc đó. Vậy hành động kéo file vào Recycle Bin chỉ là một biểu tượng trừu tượng cho việc nói rằng "Tôi muốn xóa cái file này" và ta không cần quan tâm hệ điều hành làm nó bằng cách nào, ta chỉ cần kết quả thôi.
Khái API cũng được xây dựng với khái niệm tương tự. Các giao diện của ta có thể là các hàm, các lớp mà ta sử dụng trong khi lập trình. Ta không quan tâm tới cài đặt của hàm đó (hay hàm đó được viết như thế nào) mà chỉ muốn sử dụng nó để giải quyết vấn đề của ta. Hãy đào sâu hơn bằng một ví dụ nhé.
Tôi muốn xuất một chuỗi ký tự ra màn hình và tôi sử dụng hàm System.out.println() để làm việc đó. Đây là ví dụ về API và tôi đang sử dụng API mà chính ngôn ngữ Java cung cấp. Ở bên dưới, tôi muốn tính căn bậc 2 của 16 bằng cách sử dụng hàm sqrt() trong lớp Math (cũng là 1 API của Java) nhưng có vẻ như cách tôi xài không đúng lắm. Tại sao nhỉ?
Nếu bạn vào trang tài liệu của ngôn ngữ này và tìm kiếm lớp Math. Ta có thể thấy rằng hàm sqrt() chỉ nhận thông số kiểu double nhưng tôi lại truyền vào thông số kiểu int, đó là lí do của thông báo lỗi. Các API có một số luật lệ riêng của chúng để có thể sử dụng và các trang tài liệu do chính bên viết API cung cấp sẽ giúp chúng ta học cách sử dụng nó.
Có thể đến đây các bạn sẽ tự hỏi: " Cái nào mới là API ? Là hàm sqrt() hay lớp Math ? "
Câu trả lời là cả 2. Hàm sqrt() và lớp Math chỉ là một cách trừu tượng mà tôi cần dùng để tính căn bậc 2 thôi. (Tôi không muốn phải tự viết hàm tính căn bậc 2 đâu)
Thông qua API các công ty phần mềm không cần cung cấp trực tiếp cách họ giải quyết một vấn đề (hay mã nguồn của họ) mà cung cấp nó một cách trừu tượng thông qua API. Điều này khiến cho công ty khiến khách hàng phụ thuộc vào họ, đồng nghĩa với lợi nhuận. Người sử dụng cũng không cần nghe cách các công ty ba hoa về cách họ làm mà chỉ cần lướt nhanh qua vài dòng miêu tả của API và gọi nó để sử dụng.
Nếu đem áp dụng khái niệm trên vào cuộc sống thì cái ổ điện trong phòng bạn cũng là API do nhà điện cung cấp đấy. Nhờ đó bạn có thể sử dụng điện một cách dễ dàng mà không cần phải tự tạo ra điện.
Tôi muốn xuất một chuỗi ký tự ra màn hình và tôi sử dụng hàm System.out.println() để làm việc đó. Đây là ví dụ về API và tôi đang sử dụng API mà chính ngôn ngữ Java cung cấp. Ở bên dưới, tôi muốn tính căn bậc 2 của 16 bằng cách sử dụng hàm sqrt() trong lớp Math (cũng là 1 API của Java) nhưng có vẻ như cách tôi xài không đúng lắm. Tại sao nhỉ?
Nếu bạn vào trang tài liệu của ngôn ngữ này và tìm kiếm lớp Math. Ta có thể thấy rằng hàm sqrt() chỉ nhận thông số kiểu double nhưng tôi lại truyền vào thông số kiểu int, đó là lí do của thông báo lỗi. Các API có một số luật lệ riêng của chúng để có thể sử dụng và các trang tài liệu do chính bên viết API cung cấp sẽ giúp chúng ta học cách sử dụng nó.
Trang tài liệu của lớp Math |
Hàm sqrt() của chúng ta đây rồi |
Câu trả lời là cả 2. Hàm sqrt() và lớp Math chỉ là một cách trừu tượng mà tôi cần dùng để tính căn bậc 2 thôi. (Tôi không muốn phải tự viết hàm tính căn bậc 2 đâu)
Thông qua API các công ty phần mềm không cần cung cấp trực tiếp cách họ giải quyết một vấn đề (hay mã nguồn của họ) mà cung cấp nó một cách trừu tượng thông qua API. Điều này khiến cho công ty khiến khách hàng phụ thuộc vào họ, đồng nghĩa với lợi nhuận. Người sử dụng cũng không cần nghe cách các công ty ba hoa về cách họ làm mà chỉ cần lướt nhanh qua vài dòng miêu tả của API và gọi nó để sử dụng.
Nếu đem áp dụng khái niệm trên vào cuộc sống thì cái ổ điện trong phòng bạn cũng là API do nhà điện cung cấp đấy. Nhờ đó bạn có thể sử dụng điện một cách dễ dàng mà không cần phải tự tạo ra điện.
Nhận xét
Đăng nhận xét