Học ngôn ngữ gì cho Data Science?

3186

Data Science là một lĩnh vực vô cùng thú vị, kết hợp giữa thống kê nâng cao, phân tích số liệu và khả năng lập trình. Có rất nhiều ngôn ngữ lập trình thích hợp để dùng cho Data Science.

Tuy sẽ không có câu trả lời chính xác nhưng để thành công trong Data Science, bạn sẽ cần chú ý đến những điều sau:

Specificity – Chuyên biệt

Khi nói đến Data Science, bạn sẽ cần phải thuần thục tất cả các package và module khác nhau có trong ngôn ngữ lập trình bản thân chọn.

Generality – Tổng quát

Data scientist phải có kĩ năng tốt trong lập trình cũng như khả năng phân tích số liệu. Bởi phần lớn công việc hàng ngày của Data science là lọc và clean dữ liệu. Đây là một task mà không có bất kì machine learning packages nào có thể làm thay được.

Productivity – Năng suất

Với việc mọi thứ càng trở nên năng động hơn trong thế giới kinh doanh hiện nay, năng suất đóng cũng đóng vai trò rất quan trọng. Tuy vậy, nó đồng nghĩa với việc khả năng xuất hiện lỗi cũng nhiều hơn cũng như đòi hỏi kĩ năng cao từ các Data scientist.

Performance – Hiệu năng

Trong một số trường hợp, việc cải thiện hiệu năng cho code được ưu tiên hàng đầu, đặc biệt là khi ta có một lượng lớn các data quan trọng. Ngôn ngữ Compiled thường nhanh hơn so với loại interpreted, cũng như statically typed languages thì ít bị “fail” hơn khi so với loại dynamically. Tất nhiên bù lại thì hiệu năng của nó thấp hơn.

Đây là 4 tiêu chí mà bạn sẽ dùng để xếp hạng các loại ngôn ngữ lập trình cho Data Science. Giờ thì chúng ta cùng xem qua những ngôn ngữ nổi bật thường được dùng. Chúng sẽ được xếp hạng theo độ nổi tiếng cũng như dựa theo quan điểm và trải nghiệm của chính tôi:

R

Điều mà bạn cần biết

Được tung ra vào năm 1995 với tư cách là truyền nhân của ngôn ngữ lập trình S. R đã có những bước phát triển và cải thiện mình. Hiện project đang được hỗ trợ bởi R Foundation for Statistical Computing.

License

Hoàn toàn miễn phí!!

Điểm mạnh

Chất lượng tuyệt hảo, domain chi tiết và open source packages. R gần như có mọi package cho từng thể loại app khác nhau. Có thể kể đến là neural networks, non-linear regression, phylogenetics, advanced plotting, v.v…

Phần mềm cài đặt đã có tích hợp sẵn các function và phương pháp thông kê nâng cao. R cũng không gặp phải vấn đề gì với ma trận đại số.

Data visualization cực kì mạnh mẽ với các libraries như ggplot2.

Điểm yếu

Hiệu năng. Không có gì để bào chữa, R không phải là một ngôn ngữ nhanh nhẹn.

Chỉ thích hợp cho một số mục đích nhất định. R cực kì tuyệt vời về thông số và data science nhưng thua những đứa em khác khi bạn chỉ muốn lập trình chung chung thôi.

Quái. R có một số tính năng hơi quái khi đi ngược với các ngôn ngữ lập trình khác như: index bắt đầu từ 1, sử dụng nhiều assignment operators, cấu trúc dữ liệu lạ lẫm.

Kết luận – Tuyệt vời cho mục đích của nó

R là một ngôn ngữ vô cùng mãnh mẽ khi nói về thông số và data visualization, và cũng như việc là open source cho phép cộng đồng đóng góp cải thiện R. Gần đây, nó càng ngày nổi tiếng vì quá xuất sắc tại lĩnh vực của mình.

Python

Điều mà bạn cần biết

Guido van Rossum giới thiệu Python vào năm 1991. Kể từ đó, nó trở nên rất nổi tiếng bởi sự đa năng của mình và được dùng rộng rãi trong cộng đồng data science. Hai phiên bản chính hiện nay là 3.6 2.7.

License

Hoàn toàn miễn phí!!

Điểm mạnh

Python rất nổi tiếng, được xem là ngôn ngữ lập trình mainstream, thích hợp cho nhiều mục đích khác nhau. Nó có modules  được tạo ra nhằm mở rộng tính năng của mình cũng như sự trợ giúp đến từ cộng đồng. Có nhiều dịch vụ online còn cung cấp cả một Python API.

Python  rất dễ học bởi nó đơn giản. Do đó mà thường được các lập trình viên chọn ngôn ngữ đầu tiên để học.

Với những package như pandas, scikit-learn và Tensorflow khiến cho Python trở thành một lựa chọn khá tốt cho những app có áp dụng machine learning ở level cao.

Điểm yếu

Python là ngôn ngữ thuộc dạng dynamical, nên bạn sẽ phải rất quan tâm đến nó. Bởi các Type errors sẽ xuất hiện thường xuyên.

Với một số tình huống phân tích dữ liệu và thống kê, R sẽ vượt trội hơn so với Python. Còn nếu chỉ là đơn giản học chung chung thì lại có những lựa chọn khác tốt hơn Python.

Kết luận – Cân bằng mọi mặt

Python là một lựa chọn khá tuyệt vời cho data science. Đa phần bởi quá trình của data science nằm ở ETL process nên Python cũng rất được chú ý bởi sự thích hợp của nó.

SQL

Điều mà bạn cần biết

SQL (‘Structured Query Language’) defines, quản lí và queries databases. Xuất hiện từ 1974, trải qua nhiều thay đổi nhưng giá trị cốt lỗi vẫn được giữ nguyên.

License

Tùy thuộc – một số implementations miễn phí và số khác là tính phí.

Điểm mạnh

Cực kì hiệu quả với querying, update cũng như kiểm soát databases.

Declarative syntax giúp cho SQL trở thành một ngôn ngữ dễ đọc. Chẳng có gì khó hiểu với  SELECT name FROM users WHERE age > 18  cả.

SQL được dùng bởi rất nhiều ứng dụng khác nhau nên sẽ có ích khi bạn biết về nó. Các Modules  như SQLAlchemy giúp việc việc integrate SQL với các ngôn ngữ khác trở nên dễ dàng và nahnh chóng.

Điểm yếu

Khả năng phân tích của SQL khá hạn chế – ngoài tổng hợp, cộng, đếm và tính số trung bình cho data thì bạn không có nhiều lựa chọn lắm.

Programmer đôi khi sẽ thấy rằng SQL’s declarative syntax khá khó học

Có rất nhiều implementations cho SQL như PostgreSQL, SQLite, MariaDB. Điều quan trọng là chúng quá khác nhau đến mức việc bạn phải học từng cái đã rất đau đầu.

Kết luận – Hiệu quả và bền bỉ

SQL là ngôn ngữ thích hợp với việc xử lí data hơn là dùng để phân tích nó. Tuy vậy vẫn có nhiều quá trình data science dựa vào ETL, cũng như sự bền bỉ và hiệu quả của SQL đã chứng minh rõ sự mạnh mẽ của mình.  

Java

Điều mà bạn cần biết

Java là một ngôn ngữ lâp trình cực kì nổi tiếng, chạy trên (JVM) Java Virtual Machine. Nó cho phép tính di động giữa các platform và hiện đang được phát triển bởi Oracle.

License

Version 8 —  hoàn toàn miễn phí

Điểm mạnh

Ở khắp mọi nơi. Rất nhiều hệ thống và app ngày nay được tạo ra trên Java back-end. Tính năng tích hợp data science vào thẳng codebase quả thật cực kì mạnh mẽ.

Java bảo đảm bạn không phải lo về lỗi type. Đối với những big data applications, đây như là một thiên đường vậy.

Java là một ngôn ngữ compile với hiệu suất rất cao. Nhờ đó mà nó thích hợp cho việc tạo ra những ETL production code hiệu quả cũng như các thuật toán machine learning phức tạp.

Điểm yếu

Với những app tập trung về phân tích thông số thì Java sẽ không phải là lựa chọn đầu tiên bởi sự vượt trội của R và Python.

Không như R, Java không có nhiều libraries cho các phương thức thông kê nâng cao.  

Kết luận – Một ứng viên đầy tiềm năng cho Data Science

Có rất nhiều nguyên nhân để chọn Java làm ngôn ngữ data science. Rất nhiều công ty sẽ quí trọng khả năng tích hợp data science production code trực tiếp vào codebase, cũng như là hiệu năng cao và ít lỗi type của Java. Tuy vậy nếu như bạn chỉ tập trung thuần túy vào việc phân tích và thống kê thì ngoài Java ra vẫn có R và Python.

Scala

Điều mà bạn cần biết

Phát triển bởi Martin Odersky và được tung ra vào 2004, Scala là một ngôn ngữ chạy trên JVM. Nó là một mô hinh đa ngôn ngữ, cho phép sử dụng cả 2 phương thức object-oriented và functional. Framework Apache Spark cũng được được bằng Scala.

License

Miễn phí!

Điểm mạnh

Scala + Spark = cluster computing với năng suất cực cao. Scala là một lựa chọn lí tưởng khi làm với những data sets với qui mô lớn.

Đa mô hình: Scala programmers được hưởng tất cả những thứ tốt nhất. Cả hai mô hình object-oriented và functional đều có thể dùng được.

Scala được compiled vào Java bytecode và chạy trên JVM. Nhờ đó cho phép khả năng tương tác Java. Nhờ đó mà Scale là môt ngôn ngữ khá mạnh mẽ, phù hợp cho nhiều mục đích khác nhau.

Điểm yếu

Scala không phải là ngôn ngữ dễ cho bạn chọn đầu tiên để học. Cách tốt nhất là download sbt và set-up một IDE như Eclipse hay IntelliJ với Scala plug-in.

Syntax và type system rất phức tạp nên sẽ khiến nó không hấp dẫn bằng Python.

Kết luận – Hoàn hảo cho big data

Khi nói về cluster computing với Big Data, Scala + Spark là một sự kết hợp hoàn hảo cho bạn. Nếu đã từng dùng qua Java hoặc các ngôn ngữ thuộc statically typed, bạn sẽ thấy rằng các tính năng của Scala rất mạnh mẽ. Tuy nhiên nếu không nhắm tới qui mô như vậy thì R và Python sẽ là những lựa chọn phù hợp hơn.

Julia

Điều mà bạn cần biết

 

Với tuổi đời chỉ mới 5 năm, Julia đã gây được ấn tượng mạnh với cộng đồng lập trình. Nó được biết tới nhanh chóng nhờ vào việc nhiều ông lớn đã chấp nhận sử dụng Julia ngay từ thời điểm nó mới được tung ra.

License

Miễn phí

Điểm mạnh

Julia là một JIT (‘just-in-time’) compiled language với hiệu năng rất cao. Nó cũng có dynamic-typing cùng khả năng scripting như một interpreted language (Python chẳng hạn).

Julia được tạo ra nhằm để phân tích số liệu.

Code của Julia rất dễ đọc.

Điểm yếu

Do tuổi đời còn trẻ nên Julia vẫn chưa được ổn định khi dùng các packages khác nhau.

Mặt khác, số lượng của package vẫn còn rất hạn chế và không được phong phú đa dạng như các ngôn ngữ khác ở trên.

Kết luận – Dành cho tương lai

Vấn đề mà Julia  gặp phải là sự non trẻ của mình. Do đó hiện tại Python và R vẫn là những lựa chọn tốt hơn. Tuy vậy, nếu bạn muốn thử sự mới lạ cũng như có đủ kiên nhẫn thì Julia sẽ không làm bạn thất vọng.

MATLAB

Điều mà bạn cần biết

MATLAB là một ngôn ngữ chuyên về số liệu được dùng bởi nhiều đại học và công ty khác nhau. Được phát triển bởi MathWorks, một công ty chuyên về phần mềm số hóa.

License

Trả phí

Điểm mạnh

Dành cho việc thống kê và phân tích số liệu. MATLAB rất phù hợp cho những app chuyên về số cùng với áp dụng toán học nâng cao như signal processing, Fourier transforms, matrix algebra và image processing.

Data Visualization.

MATLAB được dùng rộng rãi từ toán học cho tới vật lí, Engineer.

Điểm yếu

Phải trả phí.

MATLAB không đa năng như các ngôn ngữ khác.

Kết luận – Là lựa chọn đầu tiên cho các app nặng về toán học

MATLAB với khả năng ưu việt của nó về phân tích và thống kê số liệu được xem là lựa chọn hoàn hảo cho data science.

Một số các ngôn ngữ khác

Vẫn có một số ngôn ngữ “mainstream” khác mà data scientists vẫn có thể dùng.

C++

C++ không phải là một lựa chọn thường thấy cho data science, dù nó cực kì nhanh cũng như rất nổi tiếng. Vấn đề đơn giản là nằm ở năng suất của nó.  

Thật sự mà nói, C++ vẫn có thể giúp ta tạo ra những machine learning feature ở level thấp, tuy vậy, những ngôn ngữ ở trên đều có thể làm được vậy và thậm chí là còn tốt hơn.

Kết luận – Không dành cho dùng hàng ngày nhưng nếu bạn thật sự chú trọng tới tốc độ xử lí.

JavaScript

Với sự phát triển của Node.js, JavaScript đang dần phát triển theo hướng server-side language. Tuy vậy, trong lĩnh vực data science và machine learning vẫn bị hạn chế rất nhiều. Nguyên nhân là bởi:

  • Kẻ sau đến muộn (Node.js chỉ mới có 8 năm tuổi)
  • Libraries và modules cho data science cực kì ít.
  • Dù Node.js nhanh nhưng JavaScript vẫn còn nhiều điểm yếu

Kết luận – Vẫn còn quá nhiều thứ cần phải cải thiện trước khi JavaScript thật sự được dùng cho Data Science.

Perl

Perl được xem như là dao thụy sĩ của giới lập trình bởi sự đa năng, phù hợp cho nhiều mục đích khác nhau. Chia sẻ nhiều điểm giống với Python nhưng lại có số phận khá lèo bèo và không có nhiều thành công trong data science như Python.

Kết luận – Một ngôn ngữ đa năng cho nhiều mục đích khác nhau nhưng không hề có điểm mạnh nào trong lĩnh vực Data science.

Ruby

Cũng là một ngôn ngữ nổi bật khác bởi sự đa năng của nó. Tuy nhiên cũng như Perl, khi so sánh với Python thì nó tỏ ra kém cạnh rất nhiều trong lĩnh vực Data Science.

Tuy hiện tại cũng có SciRuby project nhằm giúp Ruby phát triển thêm trong Data Science nhưng hiện tại thì Python vẫn là người dẫn đầu cuộc đua.

Kết luận – Không phải là một lựa chọn tốt nhưng cũng không quá tồi

Tổng Kết

Tôi thường dùng R, Python và SQL cho task hằng ngày, vốn tập trung vào việc phát triển data pipeline và ETL.

Tuy vậy với những project qui mô cũng như có liên quan tới Big Data thì Java và Scala là những lựa chọn tuyệt vời.

Còn nếu bạn muốn khám phá thì Julia project sẽ là một điểm tới hấp dẫn.

Nguồn: blog.topdev.vn via Medium