Là nhà phát triển Vala, tôi sẽ không đề xuất Vala cho thông dịch viên. Trong một thông dịch viên, bạn sẽ tạo ra nhiều đối tượng cho ast, kiểu dữ liệu, đối tượng trung gian có thể, đối tượng codegen và vv. Trong bản thân Vala, cá nhân tôi đã đo được rằng chi phí chính là tạo ra các đối tượng (đơn giản là GTypeInstance, thậm chí không phải GObject). Vala được thiết kế để làm việc với gobjects, nhưng gobjects không được thiết kế để được phân bổ nhanh. Vì vậy, đối với dự án của bạn, tôi vẫn đang sử dụng glib/gio cho các công cụ đa nền tảng, như mạng, chuỗi util, unicode, cấu trúc dữ liệu, v.v ... vì chúng có API sạch, nhất quán và thuận tiện, nhưng Tôi sẽ không tạo ra vật thể ast như gobjects/gtypeinstance. Trong một thông dịch viên bạn muốn phân bổ nhanh, đó là toàn bộ vấn đề.
Lời khuyên cá nhân của tôi là: sử dụng vala nếu bạn muốn xây dựng các ứng dụng dành cho máy tính để bàn, dịch vụ dbus, công cụ gstreamer hoặc bất kỳ thứ gì chạm vào thế giới g *, không có gì khác.
Tôi đã có ý tưởng thô về các yêu cầu. Ứng dụng này là một trình thông dịch tầm thường, phải là nền tảng độc lập và có thể thực hiện các giải thích nhanh chủ yếu trên các phép toán. Bây giờ bằng cách sử dụng GObject sẽ phải chịu bất kỳ hiệu suất trên không hay không là mối quan tâm chính của tôi trong câu hỏi. –
Nếu bạn sử dụng các đối tượng, luôn luôn có một chi phí liên quan. Bạn cần hiệu suất thuần túy, viết nó trực tiếp có thể tốt hơn. Tất nhiên, luôn luôn có sự giao dịch của tốc độ so với sự duy trì và trong trường hợp của bạn cũng là vấn đề phụ thuộc nền tảng. Nếu không biết các yêu cầu thì thật khó để đưa ra một gợi ý. Ngoài ra còn có vấn đề thường xuyên được gọi là thông dịch viên. Nếu bạn liên tục tải một quy trình để làm việc trên một số tập dữ liệu nhỏ, chi phí tải quá trình có thể dễ dàng phá hủy bất kỳ tối ưu hóa hiệu suất nào trong mã. – Devolus
Câu hỏi không phải là về "một mã được viết tay được thiết kế tốt"; đó là về Vala vs C. Vala tạo ra C, mà không phải là ngôn ngữ lắp ráp. –