Vì sao các ông lớn công nghệ lại đua nhau phát triển ngôn ngữ lập trình của riêng mình?

Thay thế ngôn ngữ chính của một nền tảng là chuyện không hề đơn giản, nhưng lý do Apple hay Google tìm cách thay thế ngôn ngữ chính cho iOS và Android cũng không dừng ở góc độ kỹ thuật.

Chỉ trong vòng 3 năm, gần như gã khổng lồ công nghệ nào cũng đã có một ngôn ngữ lập trình của riêng mình. Đình đám nhất là sự kiện ra mắt của Swift vào năm 2014: với ngôn ngữ này, Apple sở hữu một ngôn ngữ vượt trội hơn hẳn Objective-C về mức độ trực quan, mức độ dễ học và khả năng maintain (sửa lỗi, bảo trì hệ thống cho tương lai).

Đối thủ truyền kiếp của Apple là Microsoft thì đã có ngôn ngữ riêng (C# .NET) từ lâu. Đến năm 2016, C# được tiếp sức mạnh mẽ khi gã khổng lồ phần mềm tuyên bố mua lại Xamarin, một công nghệ cho phép phát triển ứng dụng iOS, Android và Windows đồng thời từ một codebase viết bằng C#.

Không đứng ngoài cuộc, Facebook cũng ra mắt một phiên bản cải tiến của PHP với tên gọi "Hack". Google gần đây nhất tuyên bố sẽ hỗ trợ một ngôn ngữ mới mang tên Kotlin để các nhà phát triển ứng dụng có thêm lựa chọn khi phát triển cho Android. Thực tế, Kotlin không thuộc về Google mà là một ngôn ngữ có tương thích với Java do một công ty độc lập phát triển. Tuy vậy, xét tới vai trò "thâm căn cố đế" của Java trên lĩnh vực doanh nghiệp, có lẽ trong tương lai gần Kotlin chỉ có thể thay thế ngôn ngữ này trên hệ điều hành của Google mà thôi.

Lợi ích...
Từ góc độ kỹ thuật, lợi ích của Swift, Hack và Kotlin so với các ngôn ngữ tiền nhiệm được các ông lớn sử dụng là tương đối rõ ràng. Tầm nhìn dành cho C, PHP và Java đều là các ngôn ngữ đột phá khi ra mắt, song chúng không thuộc về thời đại di động và mạng xã hội. Lý do đầu tiên để các ngôn ngữ mới ra đời là để khắc phục các điểm yếu cố hữu của các ngôn ngữ cũ. Ví dụ, quyết định thêm khả năng hỗ trợ static type (kiểu tĩnh) vào PHP của Facebook khi tạo ra hack cũng là có lý do rất rõ ràng: tăng khả năng kiểm tra code và bắt lỗi cho ngôn ngữ ngay trong quá trình code.


Hoặc, cải tiến lớn nhất của Kotlin so với Java là thiết kế nhằm loại bỏ lỗi NullPointerException, một lỗi quá quen mặt với lập trình viên OOP, xảy ra khi hệ thống cần gọi đến một biến chưa được reference tới bất kỳ một giá trị nào trong bộ nhớ. Các cơ chế cải tiến của Kotlin so với Java, ví dụ như không cho phép gán biến String thành null hoặc construct ? sau tên biến để tự động trả về giá trị null khi biến gọi tới đang là null, sẽ giúp cho các lập trình viên có thể tránh "lỗi tỷ đô" này một cách dễ dàng.

Quan trọng hơn cả là những vấn đề của riêng từng ông lớn, những mục đích mà họ muốn theo đuổi. Ví dụ, Google phát triển GO là bởi các ngôn ngữ cũ chưa thực sự phù hợp với deep learning. Hãy nhớ rằng tất cả các ông lớn công nghệ đều đã có hàng năm trời sử dụng các ngôn ngữ cũ để giải quyết bài toán của riêng họ - họ hiểu rất rõ giới hạn của các công nghệ hiện tại khi theo đuổi các bài toán riêng đó.

Và họ có tiềm lực để tạo ra những ngôn ngữ mới, khắc phục những điểm yếu nhãn tiền của ngôn ngữ cũ để giải những bài toán quen thuộc một cách thuận tiện, dễ dàng hơn.



...và lý tưởng

Nhưng điều không mấy ai nhận ra, là những bài toán của Apple hay của Facebook có thể cũng là bài toán của cả thế giới công nghệ. Nói một cách đơn giản, nếu như Apple có thể tạo ra một ngôn ngữ trực quan, dễ học theo kiểu script nhưng vẫn có thể đảm bảo hiệu năng ở mức chấp nhận được cho các ứng dụng di động, tại sao không "mở" ngôn ngữ ấy ra cho tất cả mọi người cùng sử dụng? Làm gì có lập trình viên nào không thích các ngôn ngữ vừa có hiệu năng tốt, vừa dễ maintain?

Tương tự, nhiều developer dùng PHP chắc hẳn cũng đã gặp phải những vấn đề mà Facebook từng gặp phải. Dùng Java, bạn có thể hiểu được những tình huống Google muốn tránh.

Còn với Xamarin, Microsoft lại giải quyết một bài toán tất yếu mà ai ai cũng có thể nhìn ra, ngay cả khi thời đại Internet of Things sắp bùng nổ: ứng dụng/dịch vụ nào cũng sẽ phải hỗ trợ nhiều loại nền tảng khác nhau. Trong thời đại đa nền tảng này, bất cứ một coder nào cũng đều mong muốn có thể tiết kiệm tối đa công sức bằng cách tái sử dụng lượng code tối đa có thể (cụ thể hơn là các lớp code chứa business nằm ngoài các lớp code gọi trực tiếp xuống hệ điều hành). Dĩ nhiên, bài toán cao đẹp ấy cũng xuất phát từ riêng một vấn đề của Microsoft: Windows (và Windows Phone trước đây) quá thiếu ứng dụng so với iOS và Android.

Thực tế, câu chuyện "tự giải quyết vấn đề của riêng mình rồi thấy hay quá nên đem 'mở' cho tất cả mọi người cùng sử dụng" không phải là hiếm trong thế giới công nghệ. Cuộc đua ngôn ngữ lập trình ngày nay chỉ là biểu hiện mới nhất của tư tưởng này.



...và tham vọng
Dĩ nhiên, chẳng mấy kẻ làm công nghệ tốt bụng đến mức đi làm không công cho kẻ khác. Đằng sau mỗi bước đi của các gã khổng lồ luôn là những tham vọng kinh tế khổng lồ.

Đầu tiên, các ngôn ngữ cũ như C, Java hay PHP đều không phải do Apple, Google hay Facebook nắm phần kiểm soát chủ chốt. Khả năng các hãng này có thể tác động lên các ngôn ngữ cũ để cải tiến theo mong muốn của mình là không nhiều. Các rắc rối pháp lý cũng có thể từ đây mà xuất hiện.

Ví dụ điển hình là Google. Oracle đã nhiều lần mang Google ra tòa với cáo buộc vi phạm bản quyền thiết kế API của Java. Google đã chuyển sang sử dụng bộ API mở tương thích với OpenSDK, nhưng trớ trêu là phần mềm mã nguồn mở này cũng do Oracle thao túng. Dù rằng JetBrains không phải là công ty con của Google, và dù rằng Kotlin vẫn phụ thuộc ít nhiều vào Java, khả năng Google gây ảnh hưởng lên ngôn ngữ này vẫn cao hơn khả năng gây sức ép lên Oracle.

Tiếp đến là tham vọng dành cho tương lai. Không phải vô cớ mà Apple biến Swift thành mã nguồn mở. Microsoft cũng biến C# thành ngôn ngữ open-source sau nhiều năm giữ làm của riêng. Google chắc chắn không bắt JetBrains (chủ sở hữu Kotlin) phải độc quyền Kotlin cho Android dù rằng vị thế của gã khổng lồ tìm kiếm đủ lớn để bắt chẹt bất cứ một công ty nhỏ nào. Lý do: dù là mã nguồn mở nhưng các ông lớn vẫn đứng đằng sau kiểm soát hướng đi tương lai của các ngôn ngữ này. Càng nhiều người sử dụng thì quyền lực ngầm của tác giả ngôn ngữ đối với thế giới công nghệ càng lớn.

Thêm nữa, Google cũng hoàn toàn có thể sử dụng phiên bản hiện tại của Kotlin làm bước đệm để dần dần từ bỏ Java, theo cùng một cách Apple đang thay thế Objective-C bằng Swift.

- Hãy thử nghĩ mà xem: nếu như các lợi thế của Swift là đủ để một bên thứ ba nào đó phát triển một phiên bản ngôn ngữ này cho back-end server thì quyền thao túng của Apple cũng sẽ được mở lên một chiến trường trước nay Apple vẫn bỏ mặc. Nếu Kotlin có thể chứng minh được lợi ích trên Android, kịch bản ngôn ngữ này thay thế Java cũng không hẳn là viễn tưởng.

Cuộc đua ngôn ngữ lập trình đã lại một lần nữa khởi tranh. Lần này, thế lực đứng đằng sau sẽ không phải là các tổ chức độc lập hay phi lợi nhuận nữa. Với tham vọng kinh tế rất rõ ràng, hãy chờ đợi một cuộc chiến ngôn ngữ lập trình muôn phần khốc liệt hơn trước đây.

Share this

Related Posts

Previous
Next Post »