Tản mạn về ngôn ngữ lập trình

Gần đây công ty mình mới tuyển được một anh tên là Ezoe chuyên đọc luận văn về quá trình chuẩn hoá ngôn ngữ C++. Mình cũng không biết anh ấy có tham gia thảo luận không nhưng qua cách anh ấy giải thích có thể thấy anh ấy có một am hiểu rất sâu sắc về C++. Mình thấy mọi người trong công ty có vẻ rất hâm mộ và bàn bạc về C++ cũng sôi nổi. Nhờ thế mà hứng thú tìm hiểu ngôn ngữ lại trở lại với mình (vốn dĩ gần đây mất đi vì nội dung công việc).

Hôm nay lại được đọc bài viết phỏng vấn Nicolai Josuttismột tác giả chuyên sâu về ngôn ngữ C++ . Theo tác giả nói, tác giả yêu ngôn ngữ C++ nhưng lại không phải là fan của ngôn ngữ (Mình hiểu với fan cuồng tín thì C++ là số một). Tác giả cũng không code một dòng nào trong thời gian gần đây. Bản thân tác giả nếu phải làm một chương trình nào đấy tác giả cũng không viết bằng C++. Bản thân tác giả cũng trả lời một cách rất tiếu ở đoạn cuối bài phỏng vấn:

If performance really matters, then I don’t see any alternative to C++. However, you pay a big price for using it. Due to the complexity of C++, the support for the ordinary programmer is incredibly bad compared to other languages, and that’s a major drawback. But all that helps to sell my books. You can say that C++ creates jobs, and that’s important in these times.

Tuy vậy những điều này tự nhiên làm nảy sinh trong mình nhiều suy nghĩ về C++ nói chung và ngôn ngữ lập trình nói riêng.

Đầu tiên mình thấy có một điểm chung ở cả hai người trên. Bản thân anh Ezoe là một nhà nghiên cứu chân chính. Anh đọc và am hiểu rất chi tiết về C++, tuy vậy anh lại không code một dòng nào gần đây! Tác giả Nicolai Josuttis cũng không code mấy. Tác giả cũng đã trả lời trực tiếp là tác giả đã từ bỏ cuộc chiến ngôn ngữ 15 năm trước đó. Tác giả dù am hiểu ngôn ngữ nhưng cũng không dùng ngôn ngữ đó để viết chương trình! Mình thấy đây là điều cực kỳ phí phạm!

Thứ hai, anh ezoe ca ngợi các tính năng của C++, C++11, C++14 tuy vậy anh không sử dụng các tính năng này. Việc này làm giảm sự thuyết phục trong lập luận. Làm sao bạn có thể chứng minh được rằng một cái gì đó hay nếu như bạn không sử dụng nó để tạo ra các chương trình tốt?

Từ đây tự nhiên mình thấy có một sự tương quan giữa lập trình và âm nhạc. Ngôn ngữ lập trình giống như một nhạc cụ. Người nhạc công chơi một bản nhạc và gửi gắm những tình tứ trong bản nhạc đó. Người chế ra nhạc cụ đó là những nghệ sĩ tài hoa. Người tham gia quá trình chuẩn hoá là những người cùng những người chết tác đàn làm cho cây đàn tốt hơn. Một cây đàn sẽ chỉ thể hiện ý tứ, tình cảm, thăng âm từ những âm sắc của nó khi trong tay một nhạc công. Nói cách khác phải có người dùng nhạc cụ chơi ta mới thấy được cái đẹp của một bản nhạc. Mỗi nhạc cụ phát ra những thanh âm khác nhau, mỗi loại có ý tứ riêng có tình cảm riêng. Do vậy tranh luận ngôn ngữ này tốt hơn ngôn ngữ kia cũng giống như tranh luận nhạc cụ này hay hơn nhạc cụ kia; Một tranh luận vô nghĩa. Cái quan trọng là bạn dùng nhạc cụ đó để đem lại điều tốt đẹp cho cuộc sống của người khác như thế nào. Hay bạn dùng nó để diễn tả tâm tư tình cảm của mình như thế nào. Thể hiện bản thân và đem lại tình cảm cho người khác đó mới là điều quan trọng.

Nghĩ đến đây tự nhiên thấy tranh cãi về ngôn ngữ lập trình thật là một sự lãng phí thời gian đến nhường nào.

Comments

Popular posts from this blog

Technical Memo: Disk Encryption using Cryptsetup with Vault as Key Management Service

Technical Memo: Convert an ova image to qcow2 format

Visualize Enviro pHat sensors data