Dart là gì? Vì sao bạn cần học ngôn ngữ lập trình Dart để phát triển ứng dụng đa nền tảng? Cùng tìm hiểu những kiến thức cơ bản về Dart trong bài viết này nhé!
Nếu bạn đang có ý định học Flutter nhưng lại gặp rào cản với ngôn ngữ Dart. Thì trong series này, từng bước một chúng ta sẽ cùng nhau chinh phục nó. Từ cấp độ cơ bản nhất của người mới bắt đầu, chúng ta sẽ từ từ đi qua tất cả những kiến thức mà bạn cần phải biết để viết được một chương trình cơ bản.
Trong series sẽ có thể đề cập đến một vài khái niệm trong các ngôn ngữ khác. Dù bạn đã biết hay chưa biết về các khái niệm đó thì cũng đừng lo nhé. Các bài viết sẽ cố gắng đơn giản nhất để cho các bạn chưa biết gì cũng có thể nắm bắt được.
Dart là gì?
Dart, là một ngôn ngữ lập trình đa mục đích mã nguồn mở, đã được đặt nền móng bởi Google. Đây là một khía cạnh của ngôn ngữ lập trình hướng đối tượng, đặc trưng bởi cú pháp kiểu C. Tinh thần lập trình hướng đối tượng thể hiện qua việc hỗ trợ giao diện và lớp, mở ra khả năng sáng tạo không giới hạn khi đặt lên bàn cân với những ngôn ngữ khác. Sự đa dạng của Dart thể hiện thông qua khả năng phát triển ứng dụng web, di động, máy chủ và máy tính để bàn.
Ứng dụng ngôn ngữ Dart trong lập trình di động
Không chỉ dừng lại ở việc phát triển ứng dụng cho một nền tảng, Dart mở ra cánh cửa cho sự sáng tạo trên cả hai nền tảng quan trọng: Android và iOS. Và trong cuộc hành trình này, Flutter nổi lên như một công cụ vượt trội, được Google chắp cánh. Flutter, một framework ra đời từ Google, trở thành điểm đặc biệt giúp xây dựng những ứng dụng tuyệt đẹp trên cả hai nền tảng bằng một nền tảng mã nguồn duy nhất.
Lịch sử hình thành ngôn ngữ lập trình Dart
Trong lĩnh vực lập trình, Dart là đứa con tâm huyết từ Lars Bak và Kasper Lund, ra đời dưới sự quản lý của Google. Bắt đầu từ lần ra mắt tại hội nghị GOTO tại Đan Mạch vào ngày 10 tháng 12 tháng 10 năm 2011, Dart đã chứng tỏ tiềm năng vô hạn của mình. Một cột mốc quan trọng được ghi dấu bằng việc phát hành phiên bản Dart 1.0 vào ngày 14 tháng 11 năm 2013. Mặc dù ban đầu, Dart nhận được những ý kiến trái chiều, nhưng những phản hồi này không thể ngăn cản sự tiến bộ vượt trội của Dart.
Quãng thời gian này còn đánh dấu sự chuyển mình từ kế hoạch máy ảo Dart trong Chrome, sang việc biên dịch mã Dart thành JavaScript, điều quan trọng mà phiên bản Dart 2.0 đã mang lại vào tháng 8 năm 2018, cùng với những thay đổi ngôn ngữ kể cả hệ thống kiểu.
Dart có bao nhiêu phiên bản?
Dart có nhiều phiên bản khác nhau. Và mới nhất chính là Dart 3.0, ra đời vào ngày 10 tháng 5 năm 2023. Phiên bản này không chỉ đơn thuần là một bản cập nhật, mà còn mang theo những tính năng ngôn ngữ đáng chú ý. Patterns - một loại ngữ pháp mới giúp bạn khớp và phân rã giá trị; Records - một kiểu dữ liệu mới giúp tổng hợp nhiều giá trị từ các kiểu khác nhau trong một lần trả về hàm; và Class modifiers - một loạt các từ khóa mới cho phép bạn kiểm soát cách sử dụng một lớp hoặc mixin. Dart 3.0 chắc chắn là bước tiến quan trọng trên con đường phát triển của ngôn ngữ này.
Ngôn ngữ Dart là ngôn ngữ hướng đối tượng (OOP)
Smalltalk được phát hành vào năm 1970 và là một trong những ngôn ngữ lập trình hướng đối tượng nguyên bản đầu tiên. Ngày nay ngôn ngữ hướng đối tượng đã trở nên phổ biến và dường như thống trị trong thế giới ngôn ngữ lập trình.
Ý tưởng đằng sau khái niệm lập trình hướng đối tượng rất đơn giản: các chương trình yêu cầu một dạng cấu trúc cụ thể.
Cách rõ ràng nhất để đạt được cấu trúc cụ thể này là sử dụng khái niệm containers. Một ngôn ngữ lập trình có thể được chia thành dữ liệu và những phương thức thực hiện các dữ liệu đó. Dữ liệu cụ thể và những phương thức sẽ được gói trong một số loại container.
Hơn nữa, những container này được tạo ra để trở nên dễ sử dụng. Vì thế chúng không chỉ chứa dữ liệu và phương thức mà chúng cũng chính là những giá trị được chứa vào những container khác và được chuyển dưới dạng tham số cho các hoạt động khác. Trong lập trình hướng đối tượng, những container này được biết như là những đối tượng.
Alan Kay, người phát minh ra Smalltalk, nhận xét rằng theo cách này, đối tượng đơn giản nhất có nguyên tắc cấu tạo giống như một máy tính hoàn chỉnh: nó kết hợp dữ liệu với các phương thức dưới một giao diện được chính thức hóa.
Và bây giờ, mặc dù lập trình hướng đối tượng có thể được tìm thấy trong vô số ngôn ngữ, nhưng có rất ít ngôn ngữ thực sự tuân theo các nguyên tắc do Smalltalk đặt ra.
Dart là một ngôn ngữ lập trình hướng đối tượng thuần túy với mọi giá trị là một đối tượng.
Ngôn ngữ lập trình Dart: dưới góc nhìn của JavaScript
Dart là một ngôn ngữ hướng đối tượng đơn giản, clean và dựa trên class. Nó còn có nhiều cấu trúc hơn cả JavaScript - một ngôn ngữ mà nó chịu ảnh hưởng thiết kế khá là nhiều.
Đó là một điều tốt cho các developer những ai yêu thích việc có cấu trúc trong ngôn ngữ lập trình của mình. Các dev có thể dễ dàng tái cấu trúc và xây dựng những ứng dụng web lớn hơn.
Theo như những nhà sáng lập, một trong những thứ họ tập trung vào khi tạo ra ngôn ngữ này đó chính là tính tương thích của nó với web. Vì vậy, một trong những component quan trọng nhất của Dart đó chính là trình biên dịch Dart sang JavaScript. Nó sẽ dịch source code của Dart sang Javascript và đảm bảo rằng bạn sẽ nhận đúng ngữ nghĩa giống như khi bạn chạy nó trên máy ảo của javascript.
Từ Dart đến Framework Flutter
Flutter đã thu hút được sự chú ý của cộng đồng các nhà phát triển bằng cách giới thiệu các style cho phép việc xây dựng UI đẹp hơn và biểu cảm hơn vì thế mà việc code cũng trở nên thú vị hơn nhiều. Nó kết hợp một số khái niệm quen thuộc với những kinh nghiệm phát triển hiện đại như lập trình reactive và widget composition trong khi sử dụng nền tảng Dart làm cơ sở chính cho các hoạt động đó. Nhóm Flutter đã đánh giá nhiều ngôn ngữ khác nhau và cuối cùng họ chọn Dart vì nó phù hợp với cách mà họ xây dựng giao diện người dùng.
Dưới đây là những lý do tại sao mà ngôn ngữ Dart lại được Flutter lựa chọn để sử dụng:
1. Tối ưu cho giao diện người dùng
Hoạt động bất đồng bộ cho phép chương trình của bạn có thể hoàn thành hoàn toàn công việc trong khi chờ hoạt động khác kết thúc. Đây là một số hoạt động bất đồng bộ phổ biến:
- Tìm nạp dữ liệu thông qua mạng
- Viết cơ sở dữa liệu
- Đọc dữ liệu từ file
Hầu hết các máy tính, thậm chí các nền tảng mobile, đều có CPU đa nhân. Để tận dụng hết tất cả các nhân đó, các dev thông thường phải sử dụng các luồng bộ nhớ chia sẻ đồng thời. Các concurrency ở trạng thái chia sẻ có thể dễ bị lỗi và có thể dễ dẫn đến những code khá phức tạp. Thay vì sử dụng luồng, tất cả các code của ngôn ngữ Dart chạy bên trong các isolate. Mỗi isolate có vùng bộ nhớ riêng, đảm bảo rằng không có bất kỳ trạng thái của isolate này có thể truy cập được vào isolate kia.
Ngôn ngữ lập trình này cũng tối ưu cho việc xây dựng giao diện người dùng với những tính năng cho phép mở rộng các collection và tùy chỉnh UI cho từng nền tảng khác nhau.
2. Việc phát triển năng suất hơn
Flutter có tính năng hot reload giúp bạn thử nghiệm, xây dựng UI, thêm tính năng và fix bug một cách nhanh chóng và dễ dàng hơn. Tính năng hot reload hoạt động bằng cách đưa những file source code đã được update vào máy ảo Virtual Machine (VM) của Dart. Sau khi VM cập nhập các class với phiên bản mới nhất của field và function, framework Flutter sẽ tự động tái xây dựng cây widget, cho phép bạn xem các hiệu ứng mà bạn đã thay đổi một cách nhanh chóng hơn.
Flutter cung cấp phân tích static cho phép bạn phát hiện ra những vấn đề ngay trước khi dòng code đó được thực thi. Nó thực sự là một công cụ mạnh mẽ có thể giúp các dev tránh việc phát sinh bug và đảm bảo được code tuân theo các quy tắc của style.
3. Hiệu năng nhanh trên tất cả nền tảng
Ngôn ngữ Dart có trình biên dịch AOT (Ahead of Time) giúp nó biên dịch nhanh, đúng và native code. Điều này không chỉ đảm bảo giúp Flutter nhanh hơn mà còn đảm bảo rằng hầu như mọi thứ (bao gồm tất cả các widget) đều có thể được tùy chỉnh. Với lý do đó cho nên hầu hết các phần của Flutter đều được viết bằng ngôn ngữ này.
Với tất cả những cột mốc thành tựu, không thể phủ nhận vai trò và tiềm năng của Dart trong giới lập trình. Dù đã có những bước tiến, Dart vẫn tiếp tục hướng tới tương lai với sự đổi mới và sáng tạo không ngừng. Như một cây cầu nối giữa ý tưởng và hiện thực, Dart tiếp tục mở ra cơ hội cho sự sáng tạo và phát triển trong tương lai của lập trình.
Bạn đã sẵn sàng học ngôn ngữ lập trình Dart hay chưa? Hãy theo dõi trang Blog Công Nghệ & Lập Trình của 200Lab để học hỏi thêm các kiến thức bổ ích về Dart nhé.
Phần 1: Những điều cần biết trước khi bắt đầu
Phần 2: Ứng dụng Dart đầu tiên
Phần 3: Kiểu dữ liệu và biến
Phần 4: Kiểu dữ liệu numbers, string, booleans
Phần 5: Type Inference, Type Annotation, Dynamic Types, Constants
Phần 6: Toán tử (Operator)
Phần 7: Collection của ngôn ngữ Dart
Phần 8: Control Flow Statements
Phần 9: Functions
Phần 10: Classes
Bonus: Dart Cheat Sheet - Full bộ "bỏ túi" các syntax trong ngôn ngữ Dart
Chúc bạn sớm gặt hái nhiều thành công khi học ngôn ngữ lập trình Dart!
Bài viết liên quan
Tự học Dart: Các Dart Operators (toán tử) bạn cần biết
Sep 02, 2023 • 18 min read
Tổng hợp các Shortcuts, Extensions & Settings trong VSCode khi lập trình Flutter
Jun 03, 2022 • 10 min read
[Phần 1] Những extension cần thiết khi làm việc với Flutter trên VS Code
May 27, 2022 • 4 min read
Flutter Design Patterns: 17 — Bridge
Dec 09, 2021 • 11 min read
Navigation 2.0 - Routing On Flutter Web
Nov 28, 2021 • 8 min read
Làm cách nào để giỏi Flutter và ngôn ngữ Dart
Oct 27, 2021 • 12 min read