Thư viện chương trình
Đã giới thiệu| English | Ý nghĩa |
|---|---|
| program library/ˈprəʊɡræm ˈlaɪbrəri/ | thư viện chương trình |
| subroutines/ˈsʌbruːtiːnz/ | hàm con |
| library routines/ˈlaɪbrəri ruːˈtiːnz/ | hàm thư viện |
| static library/ˈstætɪk ˈlaɪbrəri/ | thư viện tĩnh |
| executable/ɪɡˈzekjʊtəbl/ | tập tin thực thi |
| dynamic library/daɪˈnæmɪk ˈlaɪbrəri/ | thư viện động |
Mười một dòng code phá vỡ internet
- Vào tháng 3 năm 2016, một lập trình viên đã xóa một thư viện nhỏ có tên là
left-padkhỏi một kho lưu trữ công khai. Thư viện này chỉ dài 11 dòng: nó thêm các khoảng trắng vào đầu một chuỗi ký tự. - Trong vòng vài giờ, quá trình biên dịch đã thất bại tại các công ty trên toàn thế giới. Hàng nghìn chương trình chưa bao giờ viết trực tiếp 11 dòng code này. Tất cả chúng đều đã "vay" chúng, và việc vay mượn ấy vô hình cho đến khoảnh khắc nó ngừng hoạt động.
- Đó chính là cách phần mềm hiện đại được xây dựng. Một thư viện chương trình là sự "vay mượn" có chủ đích, và bài học này sẽ chỉ ra nó mang lại cho nhà phát triển những gì, chi phí là bao nhiêu, và hai cách thức nó có thể được gắn kết vào một chương trình.
Thư viện chương trình là gì
- Một thư viện chương trình là tập hợp các thủ tục, hàm con, lớp (classes) và mô-đun đã được viết sẵn và kiểm thử, mà một chương trình có thể tận dụng thay vì tự viết lại.
- Thư viện toán học, thư viện đồ họa, thư viện mạng, thư viện tìm đường, thư viện nén: mỗi loại giải quyết một lĩnh vực vấn đề cụ thể một lần, phục vụ cho mọi chương trình có nhu cầu.
- Phần mềm đang trong giai đoạn phát triển thường được xây dựng từ các thủ tục thư viện này cộng với đoạn mã đặc thù riêng cho chương trình mới.

Đoạn mã mới chỉ là phần nhỏ; phần mã "vay mượn" chiếm phần lớn
Phòng thí nghiệm khái niệm tin học
Phân loại các ví dụ cụ thể theo ý tưởng tin học mà chúng minh họa.
Một thư viện chương trình là:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Thư viện cung cấp code có sẵn, đã kiểm tra (toán học, đồ họa, mạng...) mà một chương trình có thể gọi thay vì tự viết.
Một tập hợp code có sẵn, có thể tái sử dụng, đã kiểm tra là một ______ chương trình.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Thư viện tiết kiệm thời gian và giảm lỗi.
Những lợi ích dành cho nhà phát triển
- Các thủ tục đã được viết và kiểm thử rồi, giúp quá trình phát triển diễn ra nhanh chóng và tiết kiệm chi phí hơn.
- Chúng đáng tin cậy: được hàng nghìn chương trình sử dụng, nên hầu như không có lỗi.
- Nhà phát triển không cần chuyên môn sâu về lĩnh vực đó (như đồ họa, mã hóa, tìm đường) và có thể dành trọn thời gian cho các tính năng riêng biệt của chương trình mình.
- Chương trình dễ bảo trì hơn, vì mã chung được tập trung ở một nơi, và một nhóm có thể làm việc song song, với mỗi thành viên sử dụng chung các thủ tục.
Một lợi ích của việc sử dụng thư viện là code đó:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Code thư viện đã được kiểm tra, được sử dụng rộng rãi và tiêu chuẩn hóa — tái sử dụng nó tiết kiệm thời gian và cải thiện độ tin cậy.
Những lợi ích nào đối với nhà phát triển khi xây dựng phần mềm từ các hàm thư viện? Chọn tất cả các phương án đúng.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Hàm đã kiểm tra, không cần chuyên môn, bảo trì dễ dàng. Code riêng của chương trình vẫn phải được kiểm thử.
Những nhược điểm
- Quy trình có thể không phù hợp chính xác với nhu cầu, và người phát triển không thể thay đổi nó, vì vậy họ phải tìm cách khắc phục các hạn chế của nó.
- Chương trình phụ thuộc vào thư viện: một lỗi, bản cập nhật bị thiếu hoặc thư viện bị rút lui, như ở
left-pad, trở thành vấn đề của chương trình. - Giấy phép của thư viện có thể giới hạn cách chương trình được bán hoặc chia sẻ, và các quy trình không sử dụng có thể làm cho chương trình lớn hơn.
Ví dụ minh họa: robot nhà hàng
- Một nhóm đang viết phần mềm cho robot nhà hàng sử dụng một thư viện chương trình bao gồm một quy trình để tìm đường đi ngắn nhất giữa các bàn. Hãy giải thích hai lợi ích và một bất lợi đối với nhóm.
- Lợi ích: quy trình đã được viết và kiểm tra sẵn, nên nhóm tiết kiệm thời gian và có thể tin tưởng vào kết quả của nó. Lợi ích: nhóm không cần hiểu các thuật toán tìm đường đi bằng chính mình và có thể dành thời gian cho các tính năng riêng của robot.
- Bất lợi: quy trình có thể không xử lý được nhu cầu chính xác của nhà hàng, việc di chuyển ghế, lối đi một chiều, và nhóm không thể thay đổi nó, vì vậy họ có thể phải tìm cách khắc phục các hạn chế của nó.
- Gắn mỗi điểm với nhóm này và quy trình này. Một câu trả lời chung chung "tiết kiệm thời gian" sẽ nhận điểm thấp hơn "tiết kiệm thời gian viết và kiểm tra thuật toán tìm đường đi".
Điều bất lợi nào đối với đội robot khi sử dụng hàm tìm đường từ thư viện?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Đội ngũ không thể thay đổi code thư viện, vì vậy mọi sự không khớp với nhu cầu của họ phải được khắc phục. Việc không cần hiểu thuật toán là một lợi ích, không phải bất lợi.
Thư viện tĩnh
- Một thư viện tĩnh được sao chép vào tập thực thi khi chương trình được biên dịch và liên kết.
- Khi đó, chương trình hoạt động độc lập: nó không cần file nào khác để chạy.
- Chi phí: mỗi chương trình đều mang theo bản sao của riêng nó, nên các tập thực thi lớn hơn, và việc cập nhật thư viện đòi hỏi xây dựng lại mọi chương trình sử dụng nó.
Thư viện tĩnh khác với thư viện động vì nó:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Thư viện tĩnh được tích hợp vào file thực thi; thư viện động được tải tại thời chạy và được chia sẻ giữa các chương trình.
Thư viện động và file DLL
- Một thư viện động, hay Dynamic Link Library (DLL) trên Windows hoặc một file
.sotrên Linux, vẫn là một file riêng biệt và chỉ được tải vào bộ nhớ khi một chương trình gọi nó, tại thời điểm chạy. - Các tập thực thi nhỏ hơn; nhiều chương trình đang chạy chia sẻ một bản sao trong bộ nhớ; và một DLL có thể được cập nhật một lần, sửa lỗi hoặc hỗ trợ thiết bị mới, mà không cần biên dịch lại các chương trình sử dụng nó.
- Bộ nhớ chỉ được sử dụng khi thư viện cần thiết. Chi phí: chương trình sẽ không chạy nếu DLL bị thiếu hoặc phiên bản sai.

Được sao chép tại thời điểm biên dịch, hoặc được tải và chia sẻ tại thời điểm chạy
Thư viện động có thể được chia sẻ bởi nhiều chương trình và chỉ cần cập nhật một lần cho tất cả chúng.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Vì được tải tại thời chạy, một thư viện động được chia sẻ phục vụ nhiều chương trình; cập nhật nó sẽ sửa lỗi cho tất cả mà không cần biên dịch lại từng cái.
Gắn mỗi đặc điểm với thư viện tĩnh hoặc thư viện động.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Liên kết tĩnh sao chép code vào file thực thi (lớn hơn, độc lập); liên kết động tải một thư viện được chia sẻ tại thời chạy (nhỏ hơn, có thể cập nhật một lần cho tất cả).
Sắp xếp thứ tự các sự kiện của một chương trình sử dụng hàm DLL theo đúng thứ tự.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
Việc tải diễn ra vào thời điểm chạy, tại lần gọi đầu tiên, và một bản sao phục vụ cho mọi chương trình.
Ví dụ minh họa: lợi ích của file DLL
- Một nhà phát triển phần mềm sử dụng file DLL. Hãy mô tả các lợi ích. [4]
- Tập thực thi nhỏ hơn, vì mã thư viện không được sao chép vào đó.
- Một bản sao DLL trong bộ nhớ được chia sẻ bởi mọi chương trình đang chạy sử dụng nó, giúp tiết kiệm bộ nhớ.
- DLL có thể được cập nhật để sửa lỗi hoặc hỗ trợ thiết bị mới mà không cần biên dịch lại hoặc cài đặt lại các chương trình gọi nó.
- Thư viện chỉ được tải khi cần thiết, nên bộ nhớ chỉ được sử dụng khi một quy trình đang được sử dụng.
Chọn thư viện tĩnh hay động
- Chương trình phải chạy trên máy nơi không thể cài đặt gì khác, thiết bị nhúng hoặc một file tải xuống duy nhất: tĩnh, vì tập thực thi tự chứa đựng.
- Nhiều chương trình trên cùng một hệ thống chia sẻ cùng các quy trình, hoặc các quy trình thay đổi thường xuyên: động, vì một bản sao chia sẻ nhỏ hơn và được cập nhật một lần cho tất cả.
- Giải thích bằng sự đánh đổi: tự chứa đựng nhưng lớn và phải xây dựng lại để cập nhật, hoặc nhỏ và chia sẻ nhưng phụ thuộc vào việc file hiện diện.
Một chương trình phải chạy từ một tập tin duy nhất trên thiết bị mà không thể cài đặt gì khác nên cần sử dụng thư viện động.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Thư viện động là một tập tin riêng biệt bắt buộc phải có. Thư viện tĩnh được sao chép vào tập tin thực thi, đây chính xác là những gì một chương trình tự chứa cần.
Điểm số dễ mất
- Một DLL được tải tại thời điểm chạy, không phải thời điểm biên dịch. Cụm từ duy nhất này là tiêu chí chấm điểm.
- Lợi ích dành cho nhà phát triển: đã được viết và kiểm tra, không cần chuyên môn, dễ bảo trì hơn. "Chương trình chạy nhanh hơn" không nằm trong danh sách.
- Một thư viện là mã nguồn, không phải công cụ. IDE là công cụ; thư viện là thứ mà chương trình gọi đến.
- Một bất lợi phải là bất lợi của việc sử dụng thư viện: không thể thay đổi, có thể không phù hợp, sự phụ thuộc. "Nó tốn tiền" hiếm khi là trọng tâm.
Bạn đã nắm vững
- một thư viện chương trình là mã nguồn đã được viết sẵn, kiểm tra mà chương trình gọi đến thay vì tự viết
- lợi ích: phát triển nhanh hơn và rẻ hơn, các quy trình đáng tin cậy, không cần chuyên môn trong lĩnh vực đó, dễ bảo trì, nhóm làm việc song song; bất lợi: có thể không phù hợp, không thể thay đổi, sự phụ thuộc
- tĩnh: được sao chép vào tập thực thi tại thời điểm biên dịch, tự chứa đựng nhưng lớn hơn và phải xây dựng lại để cập nhật
- động (DLL): một file riêng biệt được tải tại thời điểm chạy, nhỏ hơn, được chia sẻ bởi nhiều chương trình, được cập nhật một lần cho tất cả