Khái niệm cơ sở

Khái niệm về thư viện

  1. Thư viện là gì?

    Trong lập trình, thư viện là một tập hợp các đoạn mã được viết sẵn – có thể là các hàm, lớp hoặc đối tượng, v.v. được đóng gói để tái sử dụng trong nhiều chương trình khác nhau. Thư viện thường được cung cấp dưới dạng tập tin hoặc mô-đun, được tích hợp vào dự án thông qua cú pháp và giao diện lập trình ứng dụng.

  2. Vai trò và ý nghĩa của thư viện

    • Tái sử dụng mã nguồn, không cần viết lại những đoạn mã phổ biến như xử lý chuỗi, kết nối cơ sở dữ liệu, gửi email, v.v.
    • Tập trung vào logic chính, cốt lõi của ứng dụng thay vì viết lại những chức năng phụ trợ.
    • Rút ngắn thời gian phát triển dự án nhờ tận dụng mã nguồn có sẵn.
    • Giảm lỗi và nâng cao chất lượng.
    • Dễ dàng bổ sung chức năng mới thông qua các API được cung cấp.

    Các hệ sinh thái như Java, Python, C#, JavaScript, PHP, v.v. đều sở hữu kho thư viện phong phú, từ thư viện tiêu chuẩn cho đến thư viện mã nguồn mở do cộng đồng phát triển.

  3. Phân loại thư viện

    1. Theo phương thức liên kết

      1. Thư viện liên kết tĩnh (Static Library)

        • Được liên kết khi biên dịch.
        • Mã của thư viện sẽ trở thành một phần của tập tin thực thi (.exe, .bin, .out, v.v.).
      2. Thư viện liên kết động (Dynamic / Shared Library)

        • Được liên kết khi chương trình thực thi (runtime).
        • Giảm kích thước của chương trình và cho phép nhiều ứng dụng dùng chung một thư viện.
    2. Theo nguồn gốc

      1. Thư viện chuẩn (Standard Library)

        • Được tích hợp sẵn trong ngôn ngữ lập trình.
        • Cung cấp các chức năng cơ bản như xử lý chuỗi, số học, mảng, tập tin, thời gian, v.v.
        • Ngôn ngữ Ví dụ
          C stdlib.h, string.h, stdio.h
          C++ iostream, vector, algorithm
          C# System, System.Linq, System.IO
          Java java.util, java.io, java.lang
          JavaScript Math, JSON, Date
      2. Thư viện của bên thứ ba (Third-party Library)

        • Do cộng đồng hoặc tổ chức bên ngoài phát triển.
        • Cung cấp các chức năng nâng cao như thiết kế giao diện, giao tiếp với API, kết nối và thao thác với cơ sở dữ liệu, bảo mật, xử lý dữ liệu, v.v.
        • Mục đích Ví dụ
          Thiết kế giao diện Bootstrap, Tailwind, React, Vue, Angular
          Giao tiếp với API Axios, Retrofit, HttpClient
          Thao tác với cơ sở dữ liệu Hibernate, Sequelize, Eloquent
          Machine Learning TensorFlow, PyTorch, scikit-learn
          Xử lý dữ liệu NumPy, Pandas (Python), D3.js (JS)
      3. Thư viện tự định nghĩa

        Đây là loại thư viện do lập trình viên tự viết nhằm mục đích:

        • Chuẩn hóa các logic nghiệp vụ riêng biệt.
        • Tái sử dụng trong nhiều dự án khác nhau.
        • Chia sẻ nội bộ hoặc đóng góp mã nguồn mở cho cộng đồng.
  4. Quản lý và sử dụng thư viện

    Hiện nay, phần lớn các ngôn ngữ lập trình đều có trình quản lý thư viện (package manager) giúp cài đặt, cập nhật và quản lý thư viện dễ dàng thông qua tập tin cấu hình hoặc CLI.

      Ngôn ngữ Package manager Ví dụ
      .NET NuGet dotnet add package
      Java Maven, Gradle pom.xml, build.gradle
      Python pip pip install numpy
      PHP Composer composer require
      JavaScript npm, yarn npm install axios
      Rust Cargo cargo add
  5. Một số lưu ý khi sử dụng thư viện

    • Chọn thư viện uy tín, ưu tiên thư viện có tài liệu rõ ràng và được cộng đồng đánh giá cao.
    • Đảm bảo thư viện tương thích với phiên bản ngôn ngữ và nền tảng đang dùng.
    • Chú ý đến tính bảo mật, tránh sử dụng thư viện không rõ nguồn gốc hoặc không còn được bảo trì.
    • Một số thư viện quá lớn hoặc phức tạp có thể làm chậm ứng dụng của bạn.
    • Tuân thủ bản quyền và quyền sở hữu trí tuệ.