Học ngôn ngữ gì cho Data Science?
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 và 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: via Medium
- M Mới ra trường không kinh nghiệm, sao làm BA?
- C Chuyển đổi SA key sang Workload Identity
- U Use Case Diagram và 5 sai lầm thường gặp
- K Kinh nghiệm xử lý câu lệnh điều kiện trong JavaScript
- D Dart là gì? Ứng dụng của ngôn ngữ lập trình Dart
- C Chuẩn Hóa CV, Nhận Ngay Phím Chất
- S So sánh MySQL và MongoDB: Nên chọn CSDL nào?
- D Dân BA có cần phải rành về kỹ thuật???
- C CSS Selector là gì? Cách sử dụng các loại CSS Selector phổ biến
- P Phân biệt Sketch, Wireframe, Mockup, và Prototype?