Oden sử dụng hệ sinh thái Golang của Google để tạo ra một ngôn ngữ lập trình mới

Ngoc Huynh

Ngôn ngữ lập trình thực nghiệm sử dụng bộ công cụ lập trình (toolchain) cơ bản của Go nhằm mang đến các tính năng mà hiện tại ngôn ngữ của Google chưa có.

Ngôn ngữ Go của Google có ưu điểm là tốc độ biên dịch ra mã máy nhanh và vấn đề triển khai cũng rất gọn gàng với chỉ 1 file duy nhất. Nhưng đối với một số lập trình viên, thì ngôn ngữ Go vẫn còn có một số giới hạn đáng kể.

Một dự án mới đang cố gắng giải quyết vấn đề này bằng việc tạo ra một ngôn ngữ lập trình thực nghiệm dành cho bộ công cụ và hệ sinh thái của Go, theo cách mà các ngôn ngữ như Clojure, Groovy, và Kotlin đã được tạo ra dành cho Java Virtual Machine (đây là một thiết bị trừu tượng (ảo) có thể giúp máy tính chạy các chương trình Java.

Ngôn ngữ mới có tên gọi là Oden, được tạo ra dựa trên Go, Haskell và Lisp. Oden không những sử dụng “bộ thư viện và công cụ, liên kết tĩnh (static linking), cross-compilation, các goroutine, và channel hiện có của Go”, mà còn mang đến những tính năng mới mà hiện tại Go chưa có chẳng hạn như: tính trừu tượng (abstractions) ở mức độ cao hơn, tính đa hình (polymorphism), và hệ thống kiểu (type system) linh hoạt, an toàn hơn.

“Hệ thống kiểu linh hoat, an toàn hơn” là một trong những tính năng quan trọng nhất của Oden từ đó đến giờ. Nhiều ngôn ngữ chẳng hạn như Python – cho phép tính đa hình, tức là bạn có thể sử dụng các toán tử hay các hàm trên nhiều kiểu dữ liệu khác nhau, nhưng Go thì không như vậy.

Ngược lại, Oden hướng đến việc cung cấp tính đa hình đúng nghĩa cho các hàm. Ngoài ra, nó còn cho phép các tính năng khác mà Go không có như: type inference.

Một sự khác biệt lớn khác đó là Oden mang đến tính năng error handling và kiểm tra kiểu nil (hay còn gọi là null). Tính năng error handling của Go không được nhiều lập trình viên hài lòng. Mục tiêu lâu dài của Oden là mang đến tính trừu tượng dành cho error handling và kiểm tra nil,” mặc dù không nói rõ điều này sẽ được thực hiện như thế nào.

Ngoài ra, nhiều tính năng khác của Oden còn hướng đến các ngôn ngữ lập trình hiện đại khác chẳng hạn như: các cấu trúc dữ liệu không thay đổi, thường có trong các ngôn ngữ hàm; đối sánh mẫu (pattern matching) – đây là một tính năng có trong ngôn ngữ Rust; tính tương kết với các tính năng và kiểu hiện có của ngôn ngữ Go.

Chia sẻ bài viết ngay

Nguồn bài viết : http://www.infoworld.com/