- Vala là một ngôn ngữ lập trình nhằm cung cấp các tính năng ngôn ngữ lập trình hiện đại cho các nhà phát triển GNOME
- So với các ứng dụng và thư viện được viết bằng C, nó không áp đặt thêm yêu cầu runtime và không sử dụng ABI khác
- Các tính năng ngôn ngữ hiện đại được hỗ trợ: interface, property, signal,
foreach, biểu thức lambda, suy luận kiểu cho biến cục bộ, generic, kiểu non-null, quản lý bộ nhớ, xử lý ngoại lệ
- Có thể viết mã thuận tiện theo hướng đối tượng với mức trừu tượng hóa cao, đồng thời được tích hợp sâu với các công nghệ GNOME như GObject, GTK
- Biên dịch mã thành các binary native rất nhanh. Có thể tái sử dụng mã C hiện có trong chương trình Vala hoặc sinh mã C từ Vala
Khả năng tương thích với các thư viện C hiện có
- Vala được thiết kế để truy cập các thư viện C hiện có, đặc biệt là các thư viện dựa trên GObject, mà không cần runtime binding
- Chỉ cần có tệp API bao gồm khai báo class và method bằng cú pháp Vala là có thể sử dụng thư viện đó cùng với Vala
- Vala hiện đi kèm binding cho GLib và GTK+
Trình biên dịch Vala valac
valac là một trình biên dịch tự host chuyển đổi mã nguồn Vala thành mã nguồn C và tệp header
- Nó sử dụng hệ thống kiểu GObject để tạo các class và interface được khai báo trong mã nguồn Vala
- Cú pháp của Vala tương tự C#, nhưng đã được điều chỉnh để phù hợp hơn với hệ thống kiểu GObject
Sử dụng class và method được viết bằng Vala trong C
- Chỉ cần cài đặt các tệp header được tạo ra từ thư viện Vala là ứng dụng C có thể truy cập API dựa trên GObject của thư viện Vala theo cách thông thường
- Vì parser của Vala được viết thành thư viện nên mọi thông tin ở thời điểm biên dịch đều có thể được dùng khi tạo binding, do đó cũng sẽ dễ dàng viết trình tạo binding để các ứng dụng viết bằng C# và ngôn ngữ khác truy cập thư viện Vala
Ý kiến của GN⁺
- Vala có ưu điểm là một ngôn ngữ hướng đối tượng với cú pháp giống C và được tích hợp tốt với công nghệ GNOME. Đặc biệt, nó được tối ưu cho phát triển ứng dụng GUI nên có thể kết nối dễ dàng với GTK, Granite và các công nghệ tương tự
- Vala là ngôn ngữ chuyên biệt cho phát triển môi trường desktop GNOME nên có vẻ mức độ ứng dụng ở các lĩnh vực khác sẽ không lớn
- Vala có cú pháp tương tự C#, vì vậy sẽ giúp các nhà phát triển quen thuộc với C# tham gia phát triển GNOME dễ hơn
- Mục tiêu của Vala là coi trọng khả năng tương thích với các thư viện C hiện có trong khi vẫn hỗ trợ các tính năng ngôn ngữ hiện đại; điều này khá mới mẻ, nhưng vì thế tính độc đáo của bản thân ngôn ngữ có thể khó tránh khỏi bị giảm đi
- Nhìn vào các dự án Vala thì phần lớn là ứng dụng desktop cho GNOME hoặc elementary OS, nhưng đây cũng là ngôn ngữ có thể dùng cho lập trình server. Tuy vậy, hệ sinh thái trong lĩnh vực đó vẫn còn thiếu
- Chưa rõ Vala sẽ được sử dụng rộng rãi đến đâu, nhưng trong hệ sinh thái GNOME, việc dùng Vala thay cho C là điều có thể kỳ vọng sẽ giúp tăng năng suất
- Cũng có một ngôn ngữ tên là Genie với cú pháp tương tự Vala và có thể sử dụng công nghệ GNOME. Điểm đặc trưng là phân biệt block code bằng thụt lề như Python. Có thể cân nhắc nó như một lựa chọn thay thế cho Vala
1 bình luận
Ý kiến Hacker News
valac).valadoc.org), cũng giúp việc phát triển dễ dàng hơn.gtk-rs.org).