5 điểm bởi GN⁺ 2024-04-09 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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

 
GN⁺ 2024-04-09
Ý kiến Hacker News
  • Có ý kiến đặt câu hỏi liệu gần đây Vala có còn hoạt động phát triển sôi nổi hay không. Theo một bài đăng blog của một nhà phát triển GNOME, Vala được duy trì bởi một nhà phát triển duy nhất và không được khuyến nghị cho phát triển mới.
  • Một người bình luận cho biết gần đây họ đã viết một ứng dụng bằng Vala và đó là một trải nghiệm thú vị. Vì họ muốn một ứng dụng hoạt động tốt trên Linux desktop và PinePhone, Vala rất phù hợp, đồng thời thú vị hơn nhiều và cũng cho hiệu năng tốt hơn Python.
  • Vala có một ngôn ngữ chị em tên là Genie. Về cơ bản hai ngôn ngữ này giống hệt nhau, nhưng Vala dùng cú pháp tương tự C#, còn Genie dùng thụt lề có ý nghĩa giống Python. Cả hai đều được biên dịch bởi cùng một trình biên dịch (valac).
  • Vala trông rất giống Swift về mặt cú pháp. Ngoài cú pháp, Vala cũng tương tự Swift ở chỗ có reference counting hạng nhất, binding với ngôn ngữ C và được biên dịch trực tiếp thành binary mà không cần runtime bên ngoài.
  • Có ý kiến đặt câu hỏi liệu Vala có ABI ổn định hoặc khả năng tương thích với các ngôn ngữ bậc cao khác như C++ hoặc ObjC hay không. Đây là một bài toán khó mà Swift đang cố gắng giải quyết.
  • Khó thấy được Vala là một ngôn ngữ (đáng kể) năng suất hơn hoặc mạnh hơn Java hay C#. Không rõ lợi thế của Vala là gì, hoặc nó đang cố giải quyết vấn đề nào.
  • Có ý kiến cho rằng một trong những ưu điểm của Vala là phạm vi rộng các thư viện native có thể truy cập được nhờ khả năng tương thích với GObject. Trang web tài liệu rất tốt, nơi mọi thứ đều tập trung tại một chỗ (valadoc.org), cũng giúp việc phát triển dễ dàng hơn.
  • Phần lớn các ứng dụng “native” của elementary OS được viết bằng Vala.
  • Một người bình luận từng rất thích Geary nên đã tìm hiểu Vala vì điều đó, và nhận ra Vala là một ngôn ngữ thanh lịch, phù hợp để tạo các chương trình thực dụng trên GNOME. Tuy nhiên, họ cũng nói rằng đã không xem lại Vala trong 7 năm gần đây.
  • Việc dùng Rust cho phát triển GNOME đang ngày càng trở nên phổ biến (gtk-rs.org).