Khi lập trình, bạn không cần phải tốn thời gian để làm mọi thứ lại từ đầu khi đã có những công cụ sinh ra để hỗ trợ bạn thực hiện dự án. Framework chính là công cụ đó, nó là phần mềm được các lập trình viên sử dụng để xây dựng các ứng dụng. 

Framework là gì?

Vì chúng thường được xây dựng, kiểm tra và tối ưu hóa bởi một số kỹ sư phần mềm và lập trình viên có kinh nghiệm, nên các framework rất linh hoạt, mạnh mẽ và hiệu quả.

Framework giúp bạn tập trung vào chức năng cấp cao của ứng dụng, bởi vì framework đã đảm nhận hết các chức năng cấp thấp.

Tại sao chúng ta sử dụng Framework?

Phát triển phần mềm là một quá trình phức tạp, đòi hỏi rất nhiều tác vụ, bao gồm viết code, thiết kế và thử nghiệm. Đối với phần viết code, các lập trình viên phải quan tâm đến cú pháp, khai báo, gom rác (garbage collection), câu lệnh, ngoại lệ...

Các phần mềm framework giúp lập trình viên dễ dàng kiểm soát toàn bộ hoặc hầu hết quá trình phát triển phần mềm, chỉ từ một nền tảng duy nhất.

Ưu điểm của việc sử dụng framework:

  • Hỗ trợ thiết lập tốt hơn các thông lệ lập trình, nâng cao độ phù hợp các mẫu thiết kế (design pattern)
  • Code an toàn hơn
  • Tránh trùng và lặp code
  • Phát triển code nhất quán và ít lỗi hơn
  • Giúp làm việc dễ dàng hơn trên các công nghệ phức tạp.
  • Chức năng được cải tiến liên tục, bởi vì ai cũng có thể tạo ra framework của họ hoặc đóng góp vào các framework nguồn mở.
  • Có các phân đoạn code và chức năng được xây dựng trước và thử nghiệm trước, ứng dụng sẽ trở nên đáng tin cậy hơn
  • Kiểm tra và debug code dễ dàng hơn rất nhiều, ngay cả với những lập trình viên không phải chủ nhân của các dòng code đó.
  • Giảm được nhiều thời gian cần thiết khi phát triển một ứng dụng

Có những gì trong một Framework?

Khi bạn cài đặt một framework, trước hết cần quan tâm đến các yêu cầu hệ thống. Sau khi một framework được cài đặt và dựng cấu hình, nó sẽ tạo ra một cấu trúc thư mục (directory structure).

Ví dụ, hình bên dưới minh họa cấu trúc thư mục của Framework Laravel. Mỗi thư mục chứa các thư mục bổ sung. Thư mục có thể có thêm các tệp, lớp, quy trình kiểm tra, mẫu (template)...

Sự khác biệt giữa Thư viện và Framework

Một số người cho rằng phần mềm framework là một tập hợp các thư viện, các thư viện đó lại là tập hợp các quy trình được biên dịch sẵn. Tuy nhiên, không phải tất cả các phần mềm framework đều sử dụng hoặc phụ thuộc vào các thư viện.

Sự khác biệt đó là framework thì gọi code, ngược lại, code gọi thư viện. Ví dụ: curl là một thư viện trong PHP. Khi bạn sử dụng một trong các hàm curl, code PHP sẽ gọi hàm cụ thể đó trong thư viện curl. Lúc này, code của bạn là trình gọi và code thư viện là đối tượng được gọi. 

Khi bạn sử dụng một framework PHP, chẳng hạn như Laravel, mối quan hệ sẽ bị đảo ngược và do đó, phần mềm framework gọi code ứng dụng sẽ được viết trong framework. Về mặt kỹ thuật, đây được gọi là Inversion of Control (IoC).

Ngôn ngữ lập trình và Framework

Một ngôn ngữ lập trình sẽ ra lệnh cho máy tính biết nó phải làm gì. Mỗi ngôn ngữ lập trình đều có cú pháp và một bộ quy tắc cụ thể, cần phải tuân theo mỗi khi viết code.

Phần mềm framework được xây dựng dựa trên ngôn ngữ lập trình. Ví dụ: Rails, còn được gọi là Ruby on Rails, là một framework web được xây dựng dựa trên ngôn ngữ lập trình Ruby. 

Django và Flask là hai framework web khác nhau được xây dựng dựa trên ngôn ngữ lập trình Python. Do đó, chúng còn được gọi là các framework Python. React và Angular là các framework web front-end được xây dựng dựa trên ngôn ngữ lập trình JavaScript.

Các loại framework

Sẽ luôn có các phần mềm framework phù hợp với từng nhu cầu, từ việc làm web, khoa học dữ liệu, quản lý cơ sở dữ liệu... cho đến các ứng dụng phần mềm.

Dưới đây là các phần mềm framework thịnh hành:

Framework web

1. Angular

Angular là một framework JS dựa trên Typescript, có mã nguồn mở, giúp dễ dàng xây dựng các ứng dụng trên web. Angular giải quyết các thách thức phát triển ứng dụng bằng cách kết hợp các mẫu khai báo (declarative template), chèn phụ thuộc (dependency injection), công cụ đầu cuối (end-to-end tool)...

Angular tạo điều kiện cho các lập trình viên xây dựng các ứng dụng chạy trên web, thiết bị di động và desktop.

Framework JavaScript được sử dụng phổ biến trong các ứng dụng và trang web công khai như Google Cloud Platform và AdWords, và nhiều công cụ nội bộ của Google.

Một số trang web thịnh hành được phát triển bằng AngularJS là:

  • Netflix
  • Paypal
  • Upwork
  • Youtube
  • Django

Django là một framework ứng dụng web mã nguồn mở và miễn phí được viết bằng Python. Được dựng bởi một nhóm các lập trình viên giàu kinh nghiệm, Django đảm nhận việc phát triển web để các lập trình viên tập trung vào việc viết ứng dụng, không lo việc tốn thời gian bắt đầu mọi thứ lại từ đầu.

Các tổ chức lớn rất chuộng sử dụng Django trong quá trình phát triển của nó. Một số trang web phổ biến được phát triển bằng Django là:

  • Disqus
  • Instagram
  • Mozilla
  • Pinterest

2. Laravel

Laravel là một framework ứng dụng web dựa trên PHP với cú pháp rõ ràng, thanh lịch, mã nguồn mở và định hướng theo mô hình MVC (model-view-controller) mạnh mẽ và dễ hiểu.

Theo Google Trends, Laravel được công nhận là PHP mạnh mẽ nhất, cung cấp một nền tảng được chuẩn hóa và có tính năng được đóng gói (feature-packed) để phát triển ứng dụng web PHP hiệu suất cao.

Một số trang web phổ biến được phát triển bằng Laravel là:

  • Alison.com
  • Barchart.com
  • Neighborhood Lender
  • World Walking

Framework khoa học dữ liệu

1. Apache Spark

Apache Spark là một công cụ phân tích hợp nhất để xử lý dữ liệu quy mô lớn. Bạn có thể viết ứng dụng nhanh chóng trong Java, Scala, Python, R, SQL bằng Apache Spark.

Hơn 3.000 công ty đang sử dụng Apache Spark, bao gồm những công ty đi đầu như:

  • Amazon
  • Cisco
  • Databricks
  • Hortonworks
  • Microsoft
  • Oracle
  • Verizon
  • Visa

2. PyTorch

PyTorch là một framework Machine Learning mã nguồn mở giúp đẩy nhanh quá trình từ nghiên cứu và tạo mẫu đến triển khai sản xuất.

Được phát triển chủ yếu bởi nhóm nghiên cứu AI của Facebook, PyTorch có thể được sử dụng với Python cũng như C++. PyTorch được sử dụng cho Computer Vision và Natural Language Processing (NLP). Một số trang web phổ biến được phát triển bằng PyTorch là:

  • Comcast
  • Exelon
  • Trifo
  • Quadient

Tổng hợp việc làm IT-Software PHP 

3. TensorFlow

TensorFlow là một khung mã nguồn mở đầu cuối (end-to-end) dành cho Machine Learning (ML). Nó có một hệ sinh thái toàn diện, linh hoạt gồm các công cụ, thư viện và tài nguyên cộng đồng cho phép các nhà nghiên cứu đi sâu vào ML, và lập trình viên thì xây dựng và triển khai các ứng dụng hỗ trợ ML một cách nhanh chóng.

Ba ứng dụng điển hình cho TensorFlow là:

  • Convolutional Neural Networks (CNN) để nhận dạng và xử lý hình ảnh.
  • Mô hình tuyến tính quy mô lớn để phân tích dữ liệu và dự đoán hành vi đơn giản.
  • Mô hình Sequence-to-Sequence (Seq2Seq) cho các tính năng liên quan đến ngôn ngữ của con người.

Framework phát triển di động

1. Ionic

Ionic là bộ công cụ UI di động mã nguồn mở miễn phí để phát triển các ứng dụng gốc (native) đa nền tảng, chất lượng cao cho Android, iOS và Web — tất cả đều từ một cơ sở code duy nhất.

Ionic là một nền tảng phát triển cho toàn bộ vòng đời ứng dụng, nó cho phép các lập trình viên tạo ra ứng dụng tốt hơn và nhanh hơn. Một số ứng dụng phổ biến được phát triển bằng Ionic là:

  • MarketWatch
  • McDonald's Türkiye
  • Pacifica

2. Xamarin

Xamarin là một nền tảng phát triển ứng dụng mã nguồn mở, miễn phí, dùng để xây dựng các ứng dụng Android, iOS với .NET và C #. Xamarin là một phần của nền tảng .NET có cộng đồng tích cực với hơn 60.000 cộng tác viên từ hơn 3.700 công ty.

Một số ứng dụng phổ biến được phát triển bằng Xamarin là:

  • Ứng dụng khách hàng của Alaska Airlines
  • CA Mobile cho ngân hàng di động (mobile banking)
  • Novarum DX, một ứng dụng y tế

3. Flutter

Flutter là bộ công cụ UI của Google để tạo các ứng dụng đẹp, được biên dịch nguyên bản cho thiết bị di động, web và desktop từ một cơ sở code duy nhất. Nó có giao diện người dùng linh hoạt và biểu cảm cũng như mang lại hiệu suất gốc trên nền tảng iOS và Android.

Một số ứng dụng phổ biến được phát triển bằng Flutter là:

  • Alibaba (Thương mại điện tử)
  • Cryptography
  • Google Ads (tiện ích)

Lời nhắn nhủ trước khi bắt đầu với Framework

Bạn nên trau dồi các kỹ năng viết code bằng cách học các sắc thái của ngôn ngữ lập trình trước khi sử dụng các framework để phát triển ứng dụng. Nếu không, bạn sẽ bỏ lỡ trải nghiệm quý giá với công nghệ nền tảng tồn tại trong một framework.

Nếu bạn chưa phải là một lập trình viên chuyên nghiệp, thì điều cần thiết là phải hiểu những dòng code hình thành nên framework. Kiến thức này sẽ giúp bạn dễ dàng hơn khi gặp những thử thách phức tạp và  đưa bạn trở thành một lập trình viên có kỹ năng toàn diện.

Có nhiều lập trình viên front-end đóng góp vào các framework mã nguồn mở để hỗ trợ toàn bộ cộng đồng lập trình. Ví dụ: các lập trình viên tại Google thì xây dựng AngularJS và Polymer, cả hai đều được cung cấp miễn phí cho tất cả ai đang lập trình front-end. Một số cũng đóng góp cho các thư viện mã nguồn mở.

Phần kết luận

Gợi ý cuối cùng cho các lập trình viên muốn sử dụng framework phần mềm để phát triển ứng dụng là hãy học một framework mới hoặc ngôn ngữ lập trình mới ứng với nhu cầu phát triển một ứng dụng nào đó.

Kỹ càng hơn thì bạn nên phân tích các lĩnh vực khác như front-end, back-end, quản lý đám mây (cloud management) và công nghệ di động (mobile technology), thị phần tiềm năng của công nghệ, tính bền vững… để hiểu các tính năng công nghệ trước khi quyết định gắn bó với chúng.

Tổng hợp việc làm IT - Software trên VietnamWorks
VietnamWorks InTECH
Theo hackr