- Dada là một thử nghiệm tư duy nhằm tạo ra một ngôn ngữ giống Rust, nhưng mang lại cảm giác như Java hoặc JavaScript và ít phức tạp hơn C++
- Nếu hình dung một ngôn ngữ không nhắm đến việc sử dụng trong kernel hay các thiết bị nhúng nhỏ, mà chỉ yêu cầu runtime tối thiểu, thì nó sẽ trông như thế nào?
- Dada là ngôn ngữ dựa trên ownership và có một số điểm tương đồng với Rust:
- Giống Rust, Dada không cần garbage collector.
- Giống Rust, Dada đảm bảo an toàn bộ nhớ và không có data race.
- Giống Rust, các cấu trúc dữ liệu của Dada được cấp phát trên stack và sử dụng bố cục bộ nhớ phẳng.
- Tuy nhiên, Dada cũng có nhiều điểm khác biệt:
- Giống TypeScript, Dada là một ngôn ngữ được gán kiểu dần dần:
- Có thể dùng Dada trong trình thông dịch mà không cần chú thích kiểu để tìm hiểu cách ngôn ngữ hoạt động.
- Khi đã quen, bạn có thể thêm chú thích kiểu và sử dụng trình biên dịch cho hiệu năng tương tự Rust.
- Dada chủ yếu nhắm đến WebAssembly:
- Có thể build Dada cho các target native, nhưng hệ thống FFI dựa trên WebAssembly Interface Types.
- Dada mang tính hướng đối tượng nhưng không theo cách thuần túy:
- Dada kết hợp OO với các tính năng hữu ích như pattern matching, lấy cảm hứng từ những ngôn ngữ như Scala.
- So với Rust, Dada có một số hạn chế:
- Dada có runtime bắt buộc và không nhắm đến các "hệ thống bare metal" hay kernel.
- Dada không hỗ trợ inline assembly hay mã unsafe tùy ý.
Trạng thái hiện tại của Dada là gì?
- Hiện tại Dada chưa thực sự tồn tại, nhưng đã có một vài nguyên mẫu thử nghiệm:
- Có thể tìm thấy ngữ nghĩa vận hành thử nghiệm được triển khai bằng PLT Redex tại dada-lang/dada-model.
- Trình thông dịch viết bằng Rust có thể tìm thấy trong kho dada-lang/dada, và có thể thử bản build dựa trên WebAssembly trong Dada Playground.
Ý kiến của GN⁺
- Dada phản ánh xu hướng của các ngôn ngữ lập trình hiện đại khi vẫn giữ các tính năng cốt lõi của Rust như an toàn bộ nhớ và ngăn chặn data race, đồng thời hướng đến một ngôn ngữ thân thiện hơn với lập trình viên thông qua gán kiểu dần dần và cách tiếp cận hướng đối tượng.
- Việc chọn WebAssembly làm target chính cho thấy tiềm năng của Dada trong phát triển ứng dụng web, phù hợp với xu hướng phát triển web hiện đại đề cao khả năng tương thích trình duyệt và tính độc lập nền tảng.
- Nếu Dada thực sự được phát triển và sử dụng rộng rãi, nó có thể mang đến mức độ trừu tượng cao hơn và sự tiện lợi cho các lập trình viên Rust hiện tại, đồng thời giúp các lập trình viên Java hoặc JavaScript dễ dàng chuyển sang ngôn ngữ lập trình hệ thống hơn.
- Tuy nhiên, vì Dada vẫn đang ở giai đoạn đầu và hiệu năng cũng như độ ổn định trong môi trường production thực tế chưa được kiểm chứng, các doanh nghiệp hay lập trình viên cần tiếp cận một cách thận trọng trước khi áp dụng.
- Những ngôn ngữ khác có mục tiêu tương tự Dada gồm Kotlin hoặc Swift, và vì chúng đã được sử dụng rộng rãi, chúng có thể là những lựa chọn thay thế tốt cho lập trình viên.
1 bình luận
Ý kiến Hacker News
Yêu thích ý tưởng về một "ngôn ngữ thí nghiệm tư duy"
Thắc mắc về ví dụ "Hello, Dada!"
awaitkhi mục tiêu chỉ là in ra console.Mong muốn về một ngôn ngữ theo hướng ngược lại
Ý kiến phản đối
async/awaitÝ kiến về cảm giác giống Java và JavaScript
Việc không có GC khiến Rust trở thành trải nghiệm thú vị trên hệ thống nhúng
Cảm xúc lẫn lộn về trải nghiệm dùng Rust
Quan tâm đến nhận định rằng thêm chú thích kiểu có thể đạt hiệu năng tương tự Rust
Bối rối về phương thức
print_pointtrong tutorialasyncvàawait.async/awaitcó đóng vai trò giống như giá trị được tính toán lười hay không, và liệu các cách kết hợp khác nhau có gây ra lỗi kiểu hay không.Không hài lòng khi phải đi tìm ví dụ cú pháp của ngôn ngữ lập trình mới