Trong biểu đồ Venn nổi tiếng của Drew Conway về các kỹ năng khoa học dữ liệu, các kỹ năng lập trình có thể là mục tiêu khó nắm bắt nhất. Các thư viện và gói (packages) mới liên tục xuất hiện – và thậm chí là có các ngôn ngữ lập trình mới tham gia vào lĩnh vực này.
Cho tới nay Python tiếp tục thống trị. Tuy nhiên, mặc dù có sự phát triển rộng rãi và dễ sử dụng, nó hầu như không giữ vị trí độc quyền trong khoa học dữ liệu. Và các lựa chọn thay thế cho Python không chỉ có ngôn ngữ lập trình R, bất chấp có những tranh luận bất tận về Python và R.
Bài viết này tập hợp một danh sách các ngôn ngữ lập trình khoa học dữ liệu đáng chú ý, cùng với bảng phân tích điểm mạnh và điểm yếu của chúng. Rất nhiều trong số này không hề mới mẻ đối với các chuyên gia dày dạn kinh nghiệm, nhưng sẽ rất hữu ích cho bất kỳ ai muốn có một khảo sát nhanh .
Python
Tùy vào các khảo sát khác nhau, Python có thể là ngôn ngữ lập trình phổ biến nhất trên thế giới hoặc chỉ đơn giản là trong ba ngôn ngữ hàng đầu. Nhưng dù gì đi nữa, Python chắc chắn đã bùng nổ trong những năm gần đây. Mặc dù đã tồn tại được 30 năm nhưng ngôn ngữ này chỉ bắt đầu phổ biến rộng rãi hơn vào khoảng năm 2007, khi Dropbox được xây dựng đa phần trên Python ra mắt, cung cấp bằng chứng cho các điểm mạnh của nó. (Và thực tế là Google đã sử dụng Python nhiều vào thời điểm đó.) Nhưng không ở đâu mức độ phổ biến của Python lại rõ ràng hơn trong giới khoa học dữ liệu, nơi mà nó thường được coi là phù hợp.
Ngôn ngữ lập trình Python đã được sử dụng rộng rãi trong lĩnh vực khoa học dữ liệu vì một số lý do. Python ưu tiên khả năng dễ đọc, là ngôn ngữ lập trình dynamically typed và có cú pháp trực quan, giúp nó tương đối dễ học và sử dụng. Ngoài ra, nó có một hệ sinh thái thư viện vô cùng phong phú để xử lý và phân tích dữ liệu (NumPy, SciPy, Pandas), trực quan hóa (Matplotlib, Seaborn, Bokeh) và hơn thế nữa. Có lẽ đáng chú ý nhất là khi học máy và học sâu phát triển và trở nên phổ biến, Python cũng vậy, nó bổ sung các nền tảng và thư viện đầu nguồn như scikit-learning, Keras, PyTorch do Facebook phát triển và TensorFlow do Google phát triển.
Và khi nền tảng Python đã được củng cố, thì các tài nguyên hỗ trợ của nó cũng vậy. Ngôn ngữ này có một cộng đồng hỗ trợ lớn, chuyên dụng và rất nhiều sách, chương trình đào tạo và khóa học dành riêng cho Python. Có lẽ tất cả các lý do đó khiến ngôn ngữ lập trình này thường xuyên lọt vào danh sách “được yêu thích nhất” trong các cuộc khảo sát nhà phát triển hàng năm của Stack Overflow.
R
Mặc dù ngôn ngữ lập trình R được cho là dùng trong nghiên cứu học thuật hơn là trong ứng dụng thực tiễn, R vẫn được coi là phù hợp nhất cho khai thác dữ liệu và phân tích thống kê, trong đó nó cung cấp nhiều tùy chọn. Nó cũng được coi là dễ tiếp cận hơn so với Python đối với những người không phải là developer, vì có thể tạo ra một mô hình thống kê – và một hình ảnh trực quan sắc nét – chỉ với một vài dòng code.
R cũng thể hiện một loạt các packages mạnh mẽ. Đáng chú ý nhất là tidyverse, được tạo ra bởi R Hadley Wickham. Nó có các gói phổ biến để tổ chức dữ liệu (tidyr), trộn dữ liệu (dplyr) và trực quan hóa (ggplot2 mang tính đột phá).
Bạn có thể thấy R hoạt động thông qua dự án #TidyTuesday rất được yêu thích. Mỗi tuần, một tập dữ liệu mới được phát hành để các nhà khoa học dữ liệu thực hành và chứng minh kỹ năng hình dung và thu thập dữ liệu của họ. Đó là hình thức học tập (và rèn luyện) và cũng là biểu tượng của cộng đồng nổi tiếng ủng hộ – và hòa nhập – của R.
Julia
Ngôn ngữ lập trình Julia phát triển nhanh chóng trong giới khoa học dữ liệu trong vài năm qua. Julia hiện là ngôn ngữ nằm trong top 20 trong bảng xếp hạng IEEE Spectrum và nó cũng đã lọt vào top 20 của chỉ số TIOBE có ảnh hưởng.
So với Python, Julia nhanh hơn; năng động, là ngôn ngữ type-safe (nhờ just-in-time compiler và multiple dispatch); và được trang bị tốt hơn cho tính toán phân tán và song song.
Sức mạnh đó đã khiến nó trở thành một lựa chọn nổi bật cho phân tích dữ liệu lớn (BlackRock, Apple, Oracle và Google đều là người dùng) và, đặc biệt, đối với nghiên cứu khoa học, nơi nó được sử dụng trong các dự án đáng chú ý về mô hình khí hậu, dự báo thời tiết, các cuộc khảo sát thiên văn và trong số những cuộc khảo sát khác. Khả năng tương tác trên phạm vi rộng của nó – tương thích với mọi thứ từ Python đến Fortran cũ – và sự thúc đẩy liên tục của nó từ MIT, nơi nó có nguồn gốc, cũng khiến Julia có khả năng trở thành một ứng cử viên lâu dài. Và giống như Python, nó cũng thu hút được rất nhiều sự yêu thích từ người sử dụng.
C / C ++
Ngôn ngữ phổ biến, có mục đích chung C và người anh em họ hướng đối tượng của nó, C ++, hầu như không được coi là phải biết đối với khoa học dữ liệu nói chung, nhưng cả hai đôi khi xuất hiện trong danh sách việc làm cho các vai trò kỹ sư học máy. Điều đó có thể liên quan đến thực tế là cả hai thư viện ML chính PyTorch và Tensorflow đều là cốt lõi, được viết phần lớn bằng C ++ cấp thấp, ngay cả khi hầu hết các học viên sử dụng cả hai với Python. (Pytorch được coi là “pythonic” hơn, nhưng trình bao bọc Python về cơ bản vẫn chỉ như vậy.)
Java
Ngôn ngữ lập trình Java có thể trông cũ, nhưng đừng để điều đó đánh lừa bạn. Java từ lâu đã được một số doanh nghiệp hàng đầu sử dụng để phát triển các ứng dụng của họ. Để phục vụ cho sự bùng nổ trong ngành Khoa học Dữ liệu, Java đã cung cấp các công cụ như Hadoop, Spark, Hive, Scala và Fink.
Máy ảo Java là một lựa chọn phổ biến cho các nhà phát triển để viết code cho các hệ thống phân tán, phân tích dữ liệu và học máy trong môi trường doanh nghiệp. Các lợi ích chính khác do Java cung cấp bao gồm:
- Được sử dụng cho các nhiệm vụ liên quan đến phân tích dữ liệu, Học sâu, Xử lý ngôn ngữ tự nhiên, khai thác dữ liệu và hơn thế nữa
- Cho phép mở rộng quy mô dễ dàng để xây dựng các ứng dụng phức tạp từ đầu
Scala
Scala là một ngôn ngữ lập trình cấp cao chạy trên Máy ảo Java và có thể giúp làm việc với Java dễ dàng hơn. Scala có thể được sử dụng hiệu quả với Spark để xử lý một lượng lớn dữ liệu được lưu trữ. Hỗ trợ đồng thời cơ bản làm cho Scala trở thành lựa chọn hoàn hảo để xây dựng các Data Science frameworks hiệu suất cao, chẳng hạn như Hadoop. Các đặc điểm chính của Scala bao gồm:
- Ổn định, linh hoạt và có thể mang lại kết quả tương đối nhanh hơn trong một số tình huống nhất định
- Đi kèm với hơn 175000 thư viện mở rộng chức năng của Scala
- Được hỗ trợ trên nhiều IDE khác nhau, chẳng hạn như IntelliJ IDEA, VS Code, Vim, Atom, Sublime Text và ngay cả trong trình duyệt của bạn
- Có được sự hỗ trợ lớn từ cộng đồng
JavaScript
Ngôn ngữ lập trình đa dụng (multi-paradigm) và theo hướng sự kiện (event-driven) JavaScript là một trong những ngôn ngữ lập trình hàng đầu để phát triển web. Với JavaScript, các nhà phát triển có thể tạo các trang web phong phú và tương tác, và chính thuộc tính này của JavaScript khiến nó trở thành một lựa chọn tuyệt vời cho việc trực quan hóa dữ liệu. Các ứng dụng khác của JavaScript cho Khoa học dữ liệu bao gồm quản lý các tác vụ không đồng bộ và xử lý dữ liệu thời gian thực.
JavaScript hỗ trợ nhiều thư viện Machine Learning hiện đại khác nhau như TensorFlow.js, Keras.js, ConvNetJs..
SQL
Là một lập trình viên, chắc chắn rằng bạn đã từng sử dụng SQL vào một thời điểm nào đó trong đời. SQL không chỉ kết nối bạn với cơ sở dữ liệu của bạn, nó phục vụ một mục đích rất quan trọng và đó là, nó cung cấp cho bạn dữ liệu và số liệu thống kê từ một lượng lớn dữ liệu, chỉ với một vài truy vấn.
Một số tính năng của SQL để đơn giản hóa các tác vụ khác nhau trong Khoa học dữ liệu, chẳng hạn như tiền xử lý dữ liệu, là:
- Bản chất phi thủ tục của SQL cho phép bạn tập trung vào Cái gì, thay vì Tại sao
- Tích hợp tốt với các ngôn ngữ lập trình và hệ quản trị cơ sở dữ liệu như nhau
- Giúp bạn kết nối với dữ liệu của mình để hiểu dữ liệu đó tốt hơn
- Cho phép quản lý lượng dữ liệu khổng lồ mượt mà hơn
Swift
Đúng như tên gọi, ngôn ngữ biên dịch do Apple phát triển này nhanh chóng tạo được danh tiếng về tốc độ sau khi ra mắt công chúng vào năm 2014. (Giống như các ngôn ngữ mới nổi tương tự như Rust và Clang, Swift được hỗ trợ bởi khung trình biên dịch mạnh mẽ LLVM.) Như Đã xây dựng trước đây lưu ý, các vòng kết nối máy học đã đặc biệt chú ý vì một vài lý do: Swift có thể tương tác với Python và Google, công ty đã từng giúp thiết lập sự phổ biến của Python, đang hỗ trợ mạnh mẽ Swift. (Người sáng tạo chương trình đã tham gia nhóm nghiên cứu học hỏi sâu hàng đầu của Google vào năm 2017.)
Chọn ngôn ngữ lập trình nào cho bạn?
Trên đây là danh sách các ngôn ngữ lập trình được sử dụng phổ biến trong lĩnh vực khoa học dữ liệu. Việc chọn một ngôn ngữ lập trình phù hợp cho công việc hay dự án của bạn sau đó sẽ phụ thuộc vào:
- Kinh nghiệm của bạn trong lĩnh vực Khoa học dữ liệu (số liệu thống kê và toán học) và lập trình.
- Lĩnh vực của dự án và mức độ xử lý thống kê hoặc khoa học được yêu cầu.
- Phạm vi tương lai của dự án
- Ngôn ngữ, framework được hỗ trợ rộng rãi nhất trong nhóm, công ty và ngành của bạn.
Thông tin tham khảo cho bài viết
1/https://builtin.com/data-science/data-science-programming-languages
2/https://towardsdatascience.com/top-programming-languages-for-data-science-in-2020-3425d756e2a7