Các nhà phát triển OCaml tranh luận về khoảng cách hiệu năng khi các công cụ tái cấu trúc mới ra mắt trong Merlin

Nhóm Cộng đồng BigGo
Các nhà phát triển OCaml tranh luận về khoảng cách hiệu năng khi các công cụ tái cấu trúc mới ra mắt trong Merlin

Cộng đồng OCaml đang sôi nổi với các cuộc thảo luận về hiệu năng ngôn ngữ và cải tiến công cụ sau thông báo về khả năng tái cấu trúc mới trong Merlin , máy chủ ngôn ngữ OCaml phổ biến. Trong khi các nhà phát triển ăn mừng việc hỗ trợ trình soạn thảo được cải thiện, một so sánh hiệu năng đáng ngạc nhiên đã khơi mào cuộc tranh luận về vị thế cạnh tranh của OCaml .

Các công cụ tái cấu trúc mới cho thấy triển vọng nhưng đặt ra câu hỏi về hỗ trợ trình soạn thảo

Tính năng trích xuất biểu thức mới được giới thiệu trong Merlin đại diện cho một bước tiến đáng kể cho các công cụ phát triển OCaml . Khả năng tái cấu trúc này có thể trích xuất thông minh các đoạn mã thành các hàm hoặc hằng số riêng biệt trong khi xử lý các tình huống phức tạp như biến tự do và tác dụng phụ. Công cụ này thể hiện khả năng phân tích tinh vi bằng cách sử dụng thunk cho các biểu thức không thuần túy và tự động tạo tham số hàm cho các biến mà nếu không sẽ nằm ngoài phạm vi.

Tuy nhiên, phản hồi từ cộng đồng cho thấy những lo ngại đang diễn ra về sự phân mảnh hệ sinh thái trình soạn thảo. Một số nhà phát triển cảm thấy rằng công cụ OCaml vẫn quá tập trung vào Emacs , có thể hạn chế việc áp dụng trong số các lập trình viên thích các trình soạn thảo khác như VSCode . Nhóm phát triển đã phản hồi bằng cách nhấn mạnh cam kết của họ đối với khả năng tương thích đa trình soạn thảo thông qua hỗ trợ Language Server Protocol , mặc dù các tính năng nâng cao như đặt tên tùy chỉnh vẫn yêu cầu triển khai dành riêng cho trình soạn thảo.

Tính năng Refactoring mới của Merlin

  • Trích xuất biểu thức thành các ràng buộc cấp cao nhất
  • Tự động phát hiện biến tự do và tham số hóa
  • Xử lý thông minh các biểu thức không thuần túy bằng cách sử dụng thunk
  • Hỗ trợ trích xuất hằng số, biểu thức và các khối mã phức tạp
  • Tích hợp LSP với cả code action và custom request

Các bài kiểm tra hiệu năng cho thấy sự khác biệt tốc độ đáng kể

Một so sánh hiệu năng nổi bật được chia sẻ bởi một thành viên cộng đồng đã làm dấy lên sự quan tâm trên khắp bối cảnh lập trình hàm. Trong các bài kiểm tra liên quan đến tính toán toán học trên M4 Mac Studio , OCaml cho thấy khoảng cách hiệu năng đáng kể so với các ngôn ngữ khác. Bài kiểm tra đo lường việc đếm chu kỳ cho các hoán vị có dấu, với C++ và Rust dẫn đầu ở điểm tương đối 100 và 99, trong khi OCaml đạt 48 điểm - ít hơn một nửa tốc độ của những ngôn ngữ hoạt động tốt nhất.

Có lẽ đáng lo ngại hơn đối với cộng đồng OCaml , F# - người anh em họ gần gũi của OCaml trên nền tảng .NET - đạt được điểm số 96, gần gấp đôi hiệu năng của OCaml . Khám phá này đã thúc đẩy các cuộc thảo luận về chiến lược tối ưu hóa và liệu các cân nhắc về hiệu năng có nên ảnh hưởng đến việc lựa chọn ngôn ngữ cho các dự án tính toán chuyên sâu hay không.

F# là một người anh em họ rất gần gũi với OCaml. F# đọc thậm chí còn rõ ràng hơn OCaml, và nó nhanh gấp đôi.

Kết quả đánh giá hiệu suất ( M4 Mac Studio , n=10 hoán vị có dấu)

  • C++ : 100 (cơ sở)
  • Rust : 99
  • F : 96
  • OCaml : 48
  • Chez Scheme : 41
  • Swift : 34
Sự đa dạng của các công cụ tượng trưng cho những cuộc thảo luận đang diễn ra về việc tối ưu hóa hiệu suất lập trình, đại diện cho hành trình tìm kiếm khả năng cạnh tranh của OCaml trong bối cảnh lập trình hàm
Sự đa dạng của các công cụ tượng trưng cho những cuộc thảo luận đang diễn ra về việc tối ưu hóa hiệu suất lập trình, đại diện cho hành trình tìm kiếm khả năng cạnh tranh của OCaml trong bối cảnh lập trình hàm

Cộng đồng tìm kiếm sự cân bằng giữa tính năng và các yếu tố cơ bản

Thời điểm của những cuộc thảo luận này làm nổi bật một thách thức chung trong phát triển ngôn ngữ lập trình: cân bằng các tính năng công cụ nâng cao với các cải tiến hiệu năng cốt lõi. Trong khi các nhà phát triển đánh giá cao khả năng tái cấu trúc tinh vi, một số đang đặt câu hỏi liệu các tài nguyên có thể được phân bổ tốt hơn cho việc tối ưu hóa hiệu năng và cải tiến ngôn ngữ cơ bản.

Phản ứng của cộng đồng cho thấy mong muốn có cả trải nghiệm nhà phát triển được cải thiện và hiệu năng thời gian chạy cạnh tranh. Một số thành viên đang khám phá tái cấu trúc hỗ trợ AI như một cách tiếp cận thay thế, trong khi những người khác nhấn mạnh nhu cầu hỗ trợ gỡ lỗi tốt hơn ngoài các tính năng điểm dừng thử nghiệm hiện tại.

Hệ sinh thái phát triển OCaml dường như đang ở ngã tư, với những tiến bộ công cụ ấn tượng như các tính năng tái cấu trúc Merlin mới thể hiện môi trường phát triển tinh vi của ngôn ngữ, trong khi các bài kiểm tra hiệu năng gợi ý các lĩnh vực mà những cải tiến cơ bản có thể củng cố vị thế của OCaml trong bối cảnh lập trình hàm cạnh tranh.

Tham khảo: Báo cáo thực tập: Các công cụ tái cấu trúc sắp có mặt trong Merlin