Ngôn ngữ lập trình là ngôn ngữ khoa học

Khoa học dữ liệu đã trở thành một trong những công nghệ phổ biến nhất của Thế kỷ 21. Với nhu cầu nhân lực cao trong ngành này, đòi hỏi nhiều nhà khoa học dữ liệu trang bị những kỹ năng cần thiết.

Bên cạnh các kỹ năng toán học, nhà khoa học dữ liệu cần có chuyên môn lập trình. Nhưng trước khi có được kiến thức chuyên môn, một nhà khoa học dữ liệu đầy tham vọng xác định được những loại ngôn ngữ lập trình cần thiết cho công việc.

Bài viết dưới đây cung cấp cho người đọc một số ngôn ngữ lập trình cần thiết để trở thành một nhà khoa học dữ liệu.

1. Python 

Python là ngôn ngữ lập trình hướng tới đối tượng bậc cao, dùng để phát triển website và nhiều ứng dụng khác nhau. Nó dễ dàng để tìm hiểu và đang nổi lên như một trong những ngôn ngữ lập trình nhập môn tốt nhất cho người lần đầu tiếp xúc với ngôn ngữ lập trình. 

Python là ngôn ngữ lập trình hướng tới đối tượng bậc cao

Python có cấu trúc dữ liệu cấp cao mạnh mẽ và cách tiếp cận đơn giản nhưng hiệu quả đối với lập trình hướng đối tượng. Cú pháp lệnh của Python là điểm cộng vô cùng lớn vì sự rõ ràng, dễ hiểu và cách gõ linh động làm cho nó nhanh chóng trở thành một ngôn ngữ lý tưởng để viết script và phát triển ứng dụng trong nhiều lĩnh vực, ở hầu hết các nền tảng. 

2. R

R là một công cụ rất mạnh cho học máy, thống kê và phân tích dữ liệu. Do đó, nó rất phổ biến trong số các nhà thống kê. Nếu bạn muốn đi sâu vào phân tích dữ liệu và thống kê, thì R là ngôn ngữ dành cho bạn.

Hạn chế duy nhất của R là nó không phải là ngôn ngữ lập trình có mục đích chung, điều đó có nghĩa là nó không được sử dụng cho các nhiệm vụ khác ngoài lập trình thống kê.

R là một công cụ rất mạnh cho học máy, thống kê và phân tích dữ liệu

Với hơn 10.000 gói trong kho lưu trữ nguồn mở của CRAN, R phục vụ cho tất cả các ứng dụng thống kê. Một sự phù hợp mạnh mẽ khác của R là khả năng xử lý đại số tuyến tính phức tạp. Điều này làm cho R lý tưởng cho không chỉ phân tích thống kê mà còn cho các mạng thần kinh.

Ngoài ra còn có các gói studio khác như Tidyverse và Sparklyr cung cấp giao diện Apache Spark cho các môi trường dựa trên R. R như RStudio đã giúp việc kết nối cơ sở dữ liệu dễ dàng hơn.

Nó có một gói tích hợp có tên là “RMyQuery”, cung cấp khả năng kết nối tự nhiên của R với MySQL. Tất cả các tính năng này làm cho R trở thành một lựa chọn lý tưởng cho các nhà khoa học dữ liệu.

3. SQL

SQL là kỹ năng quan trọng nhất mà nhà khoa học dữ liệu phải có. SQL hoặc ‘Structured Query Language’ là ngôn ngữ truy vấn dữ liệu từ các nguồn dữ liệu có tổ chức.

Trong Khoa học dữ liệu, SQL là để cập nhật, truy vấn và thao tác cơ sở dữ liệu. Là một nhà khoa học dữ liệu, biết cách lấy dữ liệu là rất quan trọng trong công việc của họ.

SQL là ngôn ngữ chuẩn cho hệ cơ sở dữ liệu quan hệ. Tất cả các hệ thống quản lý cơ sở dữ liệu quan hệ [RDMS] như MySQL, MS Access, Oracle, Sybase, Informix, Postgres và SQL Server đều sử dụng SQL làm ngôn ngữ cơ sở dữ liệu chuẩn.

  • Xem thêm: 10 kỹ năng cần thiết để trở thành Data Scientist

4. Scala

Scala là một phần mở rộng của ngôn ngữ lập trình Java hoạt động trên JVM. Nó là ngôn ngữ lập trình có mục đích chung có các tính năng của công nghệ hướng đối tượng cũng như ngôn ngữ lập trình chức năng.

Bạn có thể sử dụng Scala kết hợp với Spark, một nền tảng Big Data. Điều này làm cho Scala trở thành ngôn ngữ lập trình lý tưởng khi xử lý khối lượng dữ liệu lớn.

Một tính năng quan trọng nhất của Scala là khả năng hỗ trợ xử lý song song trên quy mô lớn. Tuy nhiên, ngôn ngữ lập trình Scala có lộ trình học tập phức tạp và chúng tôi không khuyên dùng nó cho người mới bắt đầu.

Cuối cùng, nếu sở thích của bạn là một nhà khoa học dữ liệu đang xử lý một khối lượng dữ liệu lớn, thì Scala + Spark là lựa chọn tốt nhất của bạn.

5. Julia

Julia là một ngôn ngữ lập trình được phát triển gần đây, phù hợp nhất cho máy tính kỹ thuật. Julia phổ biến vì nó đơn giản như Python và có hiệu suất nhanh như ngôn ngữ C. Điều này đã làm cho Julia trở thành một ngôn ngữ lý tưởng cho các lĩnh vực đòi hỏi các hoạt động toán học phức tạp.

Julia ra đời và nhanh chóng trở thành một trong những ngôn ngữ với khả năng vận hành thần tốc trên các tập dữ liệu lớn. Tóm lại, Julia giải quyết bất kỳ lỗi thường gặp nào mà các ngôn ngữ lập trình khác không được thiết kế đặc biệt cho khoa học dữ liệu hay mắc phải.

6. SAS

Giống như R, bạn có thể sử dụng SAS để phân tích thống kê. Sự khác biệt duy nhất là SAS không phải là mã nguồn mở như R.

Tuy nhiên, nó là một trong những ngôn ngữ lâu đời nhất được thiết kế để thống kê. Các nhà phát triển ngôn ngữ SAS đã phát triển bộ phần mềm của riêng họ để phân tích nâng cao, mô hình dự đoán và thông minh kinh doanh.

SAS có độ tin cậy cao và đã được các chuyên gia và nhà phân tích đánh giá cao. Các công ty đang tìm kiếm một nền tảng ổn định và an toàn, SAS là một ngôn ngữ lập trình hoàn toàn phù hợp với yêu cầu của họ.

Mặc dù SAS có thể là một phần mềm nguồn đóng, nó cung cấp một loạt các thư viện và gói để phân tích thống kê và học máy.

SAS là ngôn ngữ lập trình để phân tích thống kê

SAS có một hệ thống hỗ trợ tuyệt vời cho công ty bạn. Tuy nhiên, SAS bị tụt lại phía sau với sự ra đời của phần mềm nguồn mở và tiên tiến. Điều đó tạo nên sự khó khăn và tốn chi phí khi kết hợp các công cụ và tính năng tiên tiến hơn trong SAS mà các ngôn ngữ lập trình hiện đại cung cấp.

Kết luận

Học 6 ngôn ngữ lập trình này sẽ giúp bạn có chỗ đứng nhất định trong lĩnh vực khoa học dữ liệu. Mặc dù không có thứ tự ưu tiên cụ thể của từng ngôn ngữ lập trình này, thế nhưng tôi nghĩ có lẽ bạn sẽ muốn tìm hiểu nhiều hơn một ngôn ngữ.

Điều này giúp vốn hiểu biết của bạn trở nên linh hoạt hơn và trở thành một nhà khoa học dữ liệu thực thụ.

  • Xem ngay 3 nhóm kiến thức cơ bản nào mọi Data Scientist cần có

Nguồn: data-flair.training

Cập nhật kiến thức mới

Nhập email để cập nhật nhanh nhất thông tin, kiến thức từ Viện ISB

Lý thuyết ngôn ngữ lập trình [thường được biết tới bởi chữ viết tắt tiếng Anh PLT [Programming language theory] là một nhánh của khoa học máy tính nghiên cứu việc thiết kế, thực hiện, phân tích, mô tả đặc điểm, và phân loại các ngôn ngữ lập trình và các đặc trưng của chúng. Lý thuyết ngôn ngữ lập trình phụ thuộc và chịu ảnh hưởng của toán học, kĩ nghệ phần mềm và ngôn ngữ học. Nó là một nhánh của khoa học máy tính được công nhận và là một khu vực nghiên cứu tích cực, với các kết quả được xuất bản trong nhiều tạp chí dành riêng cho PLT, cũng như trong các xuất bản phẩm kĩ thuật và khoa học máy tính chung. Hầu hết các chương trình đào tạo cử nhân khoa học máy tính yêu cầu phải học các môn học trong chủ đề này.

Phép tính lambda là một hệ thống hình thức để định nghĩa hàm, ứng dụng hàm và đệ quy được Alonzo Church đề xuất vào những năm 193x.

Mục lục

  • 1 Lịch sử
  • 2 Các môn con và các lĩnh vực liên quan
    • 2.1 Ngữ nghĩa học hình thức
    • 2.2 Lý thuyết kiểu
    • 2.3 Phân tích chương trình và chuyển đổi
    • 2.4 Phân tích ngôn ngữ lập trình so sánh
    • 2.5 Lập trình meta
    • 2.6 Ngôn ngữ đặc trưng miền
    • 2.7 Xây dựng trình biên dịch
    • 2.8 Hệ thống thời gian chạy
  • 3 Tạp chí chuyên ngành, xuất bản phẩm và hội thảo PLT
  • 4 Ký hiệu Lambda
  • 5 Xem thêm
  • 6 Đọc thêm
  • 7 Tham khảo
  • 8 Liên kết ngoài

Lịch sửSửa đổi

Trong một số cách, lịch sử lý thuyết ngôn ngữ lập trình có trước cả sự phát triển của chính các ngôn ngữ lập trình. Phép tính lambda, được phát triển bởi Alonzo Church và Stephen Cole Kleene trong những năm 193x, được một số người coi là ngôn ngữ lập trình đầu tiên của thế giới, mặc dù nó từng được dự định dùng làm mô hình tính toán hơn là phương tiện cho các lập trình viên mô tả các giải thuật cho một hệ thống máy tính. Nhiều ngôn ngữ lập trình hàm được mô tả như sự cung cấp một "lớp gỗ dán mỏng" lên phép tính lambda [1], và nhiều trong số đó dễ dàng được mô tả bằng những thuật ngữ của phép tính lambda.

Ngôn ngữ lập trình đầu tiên được đề cử là Plankalkül, do Konrad Zuse thiết kế vào những năm 194x, nhưng không được công chúng biết đến mãi cho đến năm 1972 [và không được thực hiện cho đến năm 1998]. Ngôn ngữ lập trình đầu tiên được biết đến rộng rãi và thành công là Fortran, được phát triển từ năm 1954 đến năm 1957 bởi một nhóm nhà nghiên cứu IBM được dẫn dắt bởi John Backus. Sự thành công của FORTRAN dẫn đến sự hình thành của ủy ban các nhà khoa học nhằm phát triển một ngôn ngữ máy tính "thế giới"; kết quả cho những cố gắng của họ là ALGOL 58. Một cách độc lập, John McCarthy của MIT đã phát triển ngôn ngữ lập trình Lisp [dựa trên phép tính lambda], ngôn ngữ đầu tiên thành công với các khởi điểm từ giới học viện. Với sự thành công của những cố gắng khởi nguồn này, các ngôn ngữ lập trình máy tính đã trở thành một chủ đề tích cực của việc nghiên cứu trong những năm 196x và về sau.

Một số sự kiện chủ chốt trong lịch sử của lý thuyết ngôn ngữ lập trình kể từ lúc đó:

  • Trong những năm 195x, Noam Chomsky đã phát triển hệ thống phân cấp Chomsky trong lĩnh vực ngôn ngữ học; một khám phá tác động trực tiếp lên lý thuyết ngôn ngữ lập trình và nhiều nhánh khác của khoa học máy tính.
  • Trong những năm 196x, ngôn ngữ Simula đã được phát triển bởi Ole Johan Dahl và Kristen Nygaard; nó được coi là ví dụ đầu tiên của một ngôn ngữ lập trình hướng đối tượng; Simula cũng đã giới thiệu khái niệm đồng chương trình con [tiếng Anh: coroutine].
  • Trong những năm 197x:
    • Một nhóm các nhà khoa học tại Xerox PARC được dẫn dắt bởi Alan Kay đã phát triển Smalltalk, một ngôn ngữ hướng đối tượng được biết đến rộng rãi nhờ môi trường phát triển sáng tạo của nó.
    • Sussman và Steele đã phát triển ngôn ngữ lập trình Scheme, một phiên bản của Lisp hợp nhất với phạm vi từ vựng [tiếng Anh: lexical scoping], một không gian tên thống nhất, và các yếu tố từ mô hình Actor bao gồm các continuation lớp nhất.
    • Lập trình logic và Prolog đã được phát triển cho phép các chương trình máy tính được biểu hiện như là logic toán học.
    • Backus, tại bài giảng ACM Turing Award năm 1977, đã tấn công hiện trạng của các ngôn ngữ công nghiệp và đề nghị một lớp mới các ngôn ngữ lập trình mà bây giờ được biết đến như là các ngôn ngữ lập trình mức hàm.
    • Xuất hiện phép tính tiến trình, ví dụ như Phép tính của các Hệ thống Giao tiếp [Calculus of Communicating Systems] của Robin Milner, và mô hình Các tiến trình giao tiếp liên tục [Communicating sequential processes] của C. A. R. Hoare, cũng như các mô hình song song tương tự ví dụ như mô hình Actor của Carl Hewitt.
    • Lý thuyết kiểu bắt đầu được áp dụng như là một ngành học [tiếng Anh:discipline] đối với các ngôn ngữ lập trình, được dẫn dắt bởi Milner; ứng dụng này dẫn đến những tiến bộ to lớn trong lý thuyết kiểu suốt nhiều năm qua.
  • Trong những năm 198x:
    • Bertrand Meyer đã tạo ra phương pháp học Thiết kế theo hợp đồng [Design by contract] và hợp nhất nó vào trong ngôn ngữ lập trình Eiffel.
  • Trong những năm 199x:
    • Gregor Kiczales, Jim Des Rivieres và Daniel G. Bobrow đã xuất bản cuốn sách Nghệ thuật của Giao thức Đối tượng meta [tựa tiếng Anh: The Art of the Metaobject Protocol].
    • Philip Wadler đề xuất dùng các monad cho việc cấu trúc các chương trình viết bằng các ngôn ngữ lập trình hàm.

Các môn con và các lĩnh vực liên quanSửa đổi

Có nhiều lĩnh vực nghiên cứu hoặc nằm trong lý thuyết ngôn ngữ lập trình, hoặc có ảnh hưởng sâu sắc lên nó; nhiều lĩnh vực trong số này có sự chồng chéo đáng kể. Thêm vào đó, PLT sử dụng nhiều nhánh khác của toán học, bao gồm lý thuyết tính toán, lý thuyết thể loại, và lý thuyết tập hợp.

Ngữ nghĩa học hình thứcSửa đổi

Ngữ nghĩa học hình thức là đặc điểm hình thức của hành vi của các chương trình máy tính và các ngôn ngữ lập trình, đề cập đến việc nghiên cứu ngôn ngữ hình thức.

Lý thuyết kiểuSửa đổi

Lý thuyết kiểu là sự nghiên cứu các hệ thống kiểu, "là các phương pháp cú pháp dễ kiểm soát nhằm chứng minh sự vắng mặt của các hành vi chương trình nào đó bằng cách phân loại các ngữ tuân theo các loại giá trị mà chúng tính được." [theo Các kiểu và các Ngôn ngữ lập trình, tiếng Anh: Types and Programming Languages, MIT Press, 2002]. Nhiều ngôn ngữ lập trình được phân biệt bằng các đặc điểm của các hệ thống kiểu.

Phân tích chương trình và chuyển đổiSửa đổi

Chuyển đổi chương trình là quá trình chuyển đổi một chương trình từ dạng [ngôn ngữ] này sang dạng khác; phân tích chương trình là vấn đề toàn cục của việc khảo sát một chương trình và xác định các đặc điểm mấu chốt [như sự vắng mặt các lớp lỗi chương trình].

Phân tích ngôn ngữ lập trình so sánhSửa đổi

Phân tích ngôn ngữ lập trình so sánh tìm cách phân loại các ngôn ngữ lập trình thành các loại khác nhau dựa trên các đặc điểm của chúng; các thể loại rộng của các ngôn ngữ lập trình thường được biết đến như là các mô hình lập trình.

Lập trình metaSửa đổi

Lập trình meta là sự phát sinh chương trình bậc cao hơn, mà kết quả sinh ra khi thực hiện chương trình đó là một chương trình khác [có thể trong ngôn ngữ khác, hoặc trong một tập hợp con của ngôn ngữ gốc].

Ngôn ngữ đặc trưng miềnSửa đổi

Ngôn ngữ đặc trưng miền là ngôn ngữ được xây dựng để giải quyết các vấn đề một cách hiệu quả trong một miền vấn đề riêng.

Xây dựng trình biên dịchSửa đổi

Lý thuyết Trình biên dịch là lý thuyết viết các trình biên dịch [compiler] [hoặc tổng quát hơn, máy dịch [translator]] chương trình dịch chương trình được viết trong một ngôn ngữ sang dạng khác. Các hành động của một trình biên dịch theo truyền thống được chia nhỏ thành phân tích cú pháp [quét [scan] và phân tích từ loại [parse]], phân tích ngữ nghĩa [xác định chương trình nên làm gì], tối ưu hóa [cải tiến hiệu suất của chương trình theo các chỉ số, điển hình là tốc độ thực hiện] và Phát sinh mã [Phát sinh và xuất một chương trình tương đương trong ngôn ngữ đích nào đó; thường là tập hợp lệnh của một CPU].

Hệ thống thời gian chạySửa đổi

Hệ thống thời gian chạy đề cập đến việc phát triển các môi trường thời gian chạy ngôn ngữ lập trình và các thành phần của chúng, bao gồm các máy ảo, thu thập dữ liệu rác, và các giao diện ngoại hàm.

Tạp chí chuyên ngành, xuất bản phẩm và hội thảo PLTSửa đổi

Các tạp chí xuất bản nghiên cứu nguyên bản trong lý thuyết ngôn ngữ lập trình gồm:

  • ACM Transactions on Programming Languages and Systems [2] Lưu trữ 2006-04-24 tại Wayback Machine [Giao dịch ACM trên các Ngôn ngữ Lập trình và các Hệ thống]
  • Computer Languages, Systems, and Structures [3] [Các ngôn ngữ máy tính, Các hệ thống, và các Cấu trúc]
  • Journal of Functional Programming [Tạp chí Lập trình hàm]
  • Journal of Functional and Logic Programming [Tạp chí Lập trình Logic và Hàm]
  • Journal of Symbolic Computation [Tạp chí Tính toán ký hiệu]

Các bài báo PLT về các cú hích quan trọng hoặc về sự quan tâm tổng quát hơn có thể xuất hiện trong các tạp chí bách khoa hơn như Tạp chí của ACM [Journal of the ACM], Thông tin và Tính toán [Information and Computation], hay Khoa học Máy tính Lý thuyết, [Theoretical Computer Science]. Xem thêm danh sách các xuất bản phẩm trong khoa học máy tính.

Cũng như trong nhiều lĩnh vực của Khoa học Máy tính, các cuộc hội thảo đóng vai trò quan trọng, đôi khi là lãnh đạo. Có lẽ các cuộc hội thảo nổi tiếng nhất trong PLT là Hội nghị chuyên đề về các Nguyên lý của các Ngôn ngữ Lập trình [tiếng Anh: Symposium on Principles of Programming Languages] [POPL]] và Hội thảo Quốc tế về Lập trình Hàm [tiếng Anh: International Conference on Functional Programming [ICFP]]. Các cuộc hội thảo khác có ảnh hưởng liên quan PLT gồm Hội thảo về Thiết kế và Thực hiện Ngôn ngữ Lập trình [Conference on Programming Language Design and Implementation [PLDI]] và Hội nghị Quốc tế về Lập trình Hướng đối tượng, các Hệ thống, các Ngôn ngữ và các Ứng dụng [tiếng Anh: International Conference on Object Oriented Programming, Systems, Languages and Applications [OOPSLA]].

Ký hiệu LambdaSửa đổi

Một biểu tượng không chính thức của lĩnh vực lý thuyết ngôn ngữ lập trình là chữ cái Hi Lạp viết thường λ [lambda]. Cách dùng này bắt nguồn từ phép tính lambda, một mô hình tính toán được sử dụng rộng rãi bởi các nhà nghiên cứu ngôn ngữ lập trình. Nhiều văn bản, bài báo về lập trình và các ngôn ngữ lập trình sử dụng lambda theo mốt nào đó. Nó làm vẻ vang trang bìa của văn bản cổ điển Cấu trúc và Thuyết minh các Chương trình Máy tính [Structure and Interpretation of Computer Programs], và tiêu đề của nhiều cái gọi là các bài báo Lambda [Lambda Papers], được viết bởi Gerald Jay Sussman và Guy Steele, các nhà phát triển của Ngôn ngữ lập trình Scheme. Một trang mạng nổi tiếng về lý thuyết ngôn ngữ lập trình được gọi là Lambda the Ultimate nhằm vinh danh công trình của Sussman và Steele.

Xem thêmSửa đổi

  • SIGPLAN
  • Thời gian biểu của các ngôn ngữ lập trình
  • Ngôn ngữ lập trình bậc rất cao

Đọc thêmSửa đổi

  • Mitchell, John C.. Foundations for Programming Languages.
  • Pierce, Benjamin C. [2002]. Types and Programming Languages. MIT Press.
  • Pierce, Benjamin C. Advanced Topics in Types and Programming Languages.
  • Pierce, Benjamin C. et al. [2010]. Software Foundations.
  • Programming Language Pragmatics, 2nd Edition by Michael Scott [Morgan Kaufmann, 2006] [4]
  • Essentials of Programming Languages by Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes [MIT Press 2001] [5] Lưu trữ 2007-06-30 tại Wayback Machine

Tham khảoSửa đổi

Liên kết ngoàiSửa đổi

  • Lambda the Ultimate, một weblog cộng đồng dành cho thảo luận chuyên nghiệp và kho lưu trữ tài liệu về lý thuyết ngôn ngữ lập trình.
  • Lịch sử ngôn ngữ máy tính
  • Các sách lý thuyết lập trình miễn phí
  • Lịch sử Haskell Lưu trữ 2009-04-29 tại Wayback Machine

Video liên quan

Chủ Đề