Trào lưu ngôn ngữ lập trình: Sự trỗi dậy của dữ liệu lớn

Các ngôn ngữ được cho là có khả năng xử lý dữ liệu lớn, chẳng hạn như Julia, Python, R và Scala
Thanh Phong

(PCWorldVN) Các ngôn ngữ như Go, Julia, R, Scala và cả Python đều đang xử lý hàng đống con số

Năm nay là năm thứ ba tạp chí IEEE Spectrum thực hiện việc xếp hạng hàng năm các ngôn ngữ lập trình, và chúng ta bắt đầu thấy được một số trào lưu. Những ngôn ngữ nào lên hạng? Những ngôn ngữ đang đuối sức? Và những chỉ số đánh giá xếp hạng nào góp phần nhiều nhất cho những thay đổi này?

Bài viết này tập trung vào các ngôn ngữ được cho là có khả năng xử lý dữ liệu lớn, chẳng hạn như Julia, Python, R và Scala. Hầu hết các ngôn ngữ này được xây dựng nhằm xử lý lượng lớn con số, có các “gói” (hay mô-đun) có thể dùng để xây dựng nhanh chóng chức năng phân tích dữ liệu lớn. Những ngôn ngữ này đang ngày càng trở nên quan trọng vì chúng cho phép khai thác các tập dữ liệu lớn hiện có ở hầu hết các lĩnh vực từ khoa học đến thương mại.

Ngôn ngữ phát triển mạnh nhất trong thể loại này là Go, ngôn ngữ nguồn mở được Google tạo ra để giải quyết các vấn đề của công ty trong việc mở rộng hệ thống và lập trình song song hồi năm 2007. Theo xếp hạng của Spectrum, Go tăng 10 bậc so với năm 2014 để leo lên vị trí thứ 10 năm nay. Các ngôn ngữ dữ liệu lớn khác cũng thăng hạng so với năm 2014 là R và Scala, R tăng 4 bậc còn Scala tăng 2 bậc (mặc dù giảm 2 bậc so với năm 2015). Julia được đưa vào danh sách các ngôn ngữ đánh giá trong năm 2015, trong năm qua thứ hạng của nó lên xuống trong khoảng 40-33, vẫn còn là một “cầu thủ dự bị” nhưng rõ ràng rất có tiềm năng.

Sự thăng hạng nhanh chóng của Go chính là nhờ sự gia tăng mạnh mẽ các hoạt động liên quan trên kho mã nguồn GitHub. Kể từ năm 2014, tổng số kho mã trên GitHub dùng Go làm ngôn ngữ chính đã tăng lên gấp hơn 4 lần, nếu chỉ xem xét các kho GitHub đang hoạt động thì tăng gần 5 lần. Ngoài ra, số bài đăng trên Reddit đề cấp đến Go cũng nhiều hơn, số liệu của Spectrum cho thấy tăng gấp 3 lần.

Một ngôn ngữ khác cũng liên tục thăng hạng kể từ năm 2014 là R, giờ ở vị trí thứ 5. R được nâng hạng nhờ việc xử lý được nhiều câu hỏi hơn trên site Stack Overflow – nhiều hơn khoảng 46% so với năm 2014. Tuy nhiên, điều quan trọng hơn đó là R được đề cập ngày càng nhiều trong các tài liệu khoa học. Việc xếp hạng Spectrum dựa nhiều vào dữ liệu từ IEEE Xplore, nguồn này lập chỉ mục hàng triệu bài báo khoa học, tiêu chuẩn, và sách trong cơ sở dữ liệu IEEE (Institute of Electrical and Electronics Engineers). Trong bảng xếp hạng năm 2015 của Spectrum chỉ có 39 tài liệu đề cập đến ngôn ngữ này, trong khi đó năm nay có đến 244 tài liệu.

Ngược với những bước tiến đáng kể của các ngôn ngữ nguồn mở như Go, Julia, R, và Scala, các ngôn ngữ phân tích dữ liệu độc quyền như Matlab và SAS lại rớt hạng: Matlab rớt 4 bậc so với năm 2014 còn SAS rớt 7 bậc. Tuy nhiên, điều quan trọng cần lưu ý là cả hai ngôn ngữ này cũng có tiến bộ; chỉ có điều chúng không tiến nhanh như một số ngôn ngữ thay thế vị trí của chúng.

Khi đối chiếu thứ hạng với việc làm, các ngôn ngữ được sử dụng nhiều như Java và Python chiếm ưu thế. Nhưng trong năm 2016 các nhà tuyển dụng quan tâm đến R và Scala nhiều hơn hẳn so với năm 2014. Trong năm 2014 chỉ có 136 việc làm yêu cầu Scala trên các website tuyển dụng CareerBuilder và Dice. Nhưng đến năm 2016 thì có tới hơn 631 việc làm, tăng hơn gấp 4 lần.

Sự tăng trưởng này gợi lên câu hỏi liệu R có thể lật đổ Python hay Java là những ngôn ngữ hàng đầu cho dữ liệu lớn. Tuy R đã có những bước tiến rất lớn trong vài năm qua, nhưng Python và Java thực sự là những tượng đài lớn. Ví dụ, số lượng việc làm Python gấp 15 lần yêu cầu tuyển dụng lập trình viên R. Và trong khi chỉ có 63.000 mã nguồn R mới trên GitHub trong năm qua, thì có đến gần 458.000 mã nguồn Python. Mặc dù R có thể tuyệt vời cho việc phân tích và đồ họa thống kê và rõ ràng phổ biến với các học giả nghiên cứu, nhưng Python có lợi thế đáng kể trong các môi trường ứng dụng thực tế: Nó tích hợp với các quy trình dữ liệu thực tế dễ dàng hơn, và vì là ngôn ngữ đa năng nên nó có phạm vi ứng dụng rộng hơn.

Những con số trên cho thấy mặc dù một số lập trình viên muốn đánh giá các ngôn ngữ chỉ thuần túy về các chỉ số kỹ thuật nội tại như sự gọn gàng của cú pháp hay mức độ sử dụng các lớp, nhưng sự phổ biến của một ngôn ngữ luôn phụ thuộc nhiều vào khả năng ứng dụng mà nó nhắm đến, hoặc là do thiết kế hoặc có sẵn các thư viện hỗ trợ.