Tôi yêu Go. Và tôi cũng ghét Go (phần 2)

PHẦN 1

Non nớt và Tương lai hứa hẹn

Bạn đã từng ở trong 1 mối quan hệ mà những bất đồng nhỏ ngay lập tức leo thang thành “chúng ta nên chia tay đi?”. Tài liệu Go thậm chí có thể đẩy bạn sang ngôn ngữ khác mà không hề thấy sỉ nhục gì hết. Liệu tôi có các asserts không? Nếu bạn là 1 lập trình viên tồi thì đây là điều không cần bàn cãi. Nhưng nếu tuân thủ theo ABI thì cũng có giá trị đấy chứ? Hãy tìm kiếm điều đó trong các ngôn ngữ khác. Bạn có thể cho tôi xem giá trị tuyệt đối của hàm int này? Bạn có gặp vấn đề gì với chìa khóa “ít hơn” của bạn không vậy?

Tôi chắc rằng thời gian sẽ, như nó vẫn hay làm, mang đến sự thực dụng. Tôi đánh giá cao việc Go thực sự nhận được những quan điểm tốt, mạnh mẽ (thật khó để nhớ được thời điểm mà tôi không đồng tình với chúng). Những quan điểm yếu kém đánh vào cách biến các ngôn ngữ thành mớ cơ chế hỗn độn, chồng chéo không thể đọc được. Ví dụ ưa thích của tôi với vấn đề này là Perl. Công việc lập trình đầu tiên của tôi là ở Perl. Tôi từng là độc giả tuổi teen tích cực của Perl llama và những quyển Camel. Trong lần phỏng vấn, Larry Wall – người sáng lập nên Perl – đã nói: “Trong Perl 6, chúng tôi đã quyết định rằng chỉnh sửa ngôn ngữ sẽ tốt hơn chỉnh sửa, thay đổi người dùng”. Tuyên bố này trái ngược với khẳng định của Go về assertions:

“Go không cung cấp các assertions. Không thể phủ nhận rằng các assertions này rất tiện lợi nhưng kinh nghiệm của chúng tôi cho thấy, các lập trình viên sử dụng chúng như vật chống đỡ để tránh phải suy nghĩ về report và giải quyết lỗi”

Bất cứ điều gì mà người dùng muốn, Perl sẽ trở thành chính thứ đó. Kẻ làm hài lòng người khác hết mức. Golang cho rằng người dùng có những thiếu sót và những cấu trúc của ngôn ngữ này sẽ chỉnh sửa những thiếu sót ấy. Đây là lập luận độc tài, kiên định trong chính lý tưởng của nó nhưng lại quá nhạy cảm để tìm kiếm sự thỏa hiệp (giống như bất kì ai mà chúng tôi đều biết?)

Dù có bực dọc đi nữa, tôi vẫn thích viết code bằng Go. Nó rõ ràng, sạch sẽ và được hỗ trợ bởi 1 cộng đồng và hệ sinh thái lớn. Tôi nhìn chung khá đau lòng khi Go 1.7 sẽ kết hợp mặc định với các frame pointers. Việc ước đoán 1 số loại bugs vẫn còn là vấn đề nhức nhối nhưng tôi tin chắc Go sẽ cải tiến và tôi sẽ nhận ra được nơi mà mình có thể bắt đầu làm việc.

Nguồn: IDE Academy via Dtrace

Chia sẻ bài viết ngay