Logo Zephyrnet

Khoa học dữ liệu và ngôn ngữ lập trình cờ vây – KDnuggets

Ngày:

Tài trợ Nội dung

Nhận xét của Tom Miller, Giám đốc Khoa của Đại học Northwestern MSDS chương trình.

Nhiều năm trước, khi còn là sinh viên ngành thống kê ứng dụng tại Đại học Minnesota, tôi đã học được một bài học về lập trình trong học viện. Khi bắt đầu khóa học, giáo sư nói:

“Tôi không quan tâm bạn sử dụng ngôn ngữ nào cho bài tập, miễn là bạn tự làm việc của mình.”

Tôi đã có kinh nghiệm với Fortran nhưng đang tự học Pascal, cố gắng áp dụng phong cách lập trình có cấu trúc.

Nghe lời giáo sư, tôi lập trình bài tập đầu tiên bằng Pascal trong khi các bạn cùng lớp của tôi sử dụng Fortran. Nhiệm vụ đầu tiên đã đến hạn. Tôi mang bài báo của mình (danh sách chương trình) ra trước phòng và đưa cho giáo sư. Anh ta nhìn nó một cách thắc mắc và hỏi, "Đây là cái gì?"

Tôi giải thích: “Đó là Pascal. Bạn đã nói với chúng tôi rằng chúng tôi có thể lập trình bằng bất kỳ ngôn ngữ nào chúng tôi thích, miễn là chúng tôi tự làm công việc của mình.”

Giáo sư nói: “Pascal. Tôi không đọc Pascal. Tôi chỉ đọc Fortran.”

Bài học rút ra: Giới học thuật không đặc biệt cởi mở với các ngôn ngữ lập trình mới.

FORTRAN

Fortran được phát triển bởi John Backus tại IBM và được giới thiệu vào năm 1957. Khi bạn nghe thấy tên của nó, hãy nghĩ đến “dịch công thức”. Fortran rất phù hợp để tính toán số, khi cần thiết cho các ứng dụng khoa học và kỹ thuật. Fortran gần đây đã chứng kiến ​​sự hồi sinh, có lẽ do nhu cầu tính toán của các tập dữ liệu lớn và siêu máy tính.

PASCAL

Được thiết kế bởi Nicholas Wirth, một nhà khoa học máy tính người Thụy Sĩ và được giới thiệu vào năm 1970, Pascal là một dẫn xuất của ALGOL. Pascal gắn liền với phong trào lập trình có cấu trúc tại nhiều trường đại học trong những năm 1970 và 80. Các biến thể của Pascal đã được sử dụng để lập trình hệ thống tại Apple và Microsoft.

 
Sinh viên khoa học dữ liệu tại hầu hết các trường đại học ngày nay sẽ có trải nghiệm tương tự nếu họ nộp bài tập bằng Go, Rust hoặc bất kỳ ngôn ngữ đương đại nào khác thay vì Python hoặc R.

Với các ứng dụng học máy và AI, Python thống trị mọi thời đại. Các nhà khoa học dữ liệu có thể cảm thấy hài lòng khi chèo thuyền Python với các thiết bị bảo hộ sự sống như numpy, Gấu trúc, Học hỏiTensorFlow bởi bên của họ.

Nhưng hãy coi chừng. Đại dương dữ liệu ngày nay rất khó thay đổi. Cá mập đang đến gần.

Nhớ lại lời của cảnh sát trưởng Brody với Quint trong phim Hàm cá mập: “Bạn sẽ cần một chiếc thuyền lớn hơn.” Tôi đề nghị nên đóng một chiếc thuyền lớn hơn, nhanh hơn bằng cờ vây.

ĐI (GOLANG)

Go được phát triển bởi ba nhà khoa học máy tính của Google: Robert Griesemer, Rob Pike và Ken Thompson. Nó vẫn giữ được những lợi thế về hiệu suất của C, đồng thời làm việc dễ dàng và an toàn hơn C. Go được giới thiệu vào năm 2009 và là ngôn ngữ lập trình hệ thống chính tại Google. Đối với các hệ thống quan trọng trong nhiều tổ chức, Go đang thay thế C/C++, C#, Java và Python. Cờ vây đôi khi được gọi là “Golang” để phân biệt với trò chơi cờ vây và để cung cấp một thuật ngữ đáng tin cậy hơn trong các công cụ tìm kiếm.

Nghề nghiệp khoa học dữ liệu: Lý do nên đi

Trong bài thuyết trình có tựa đề “Tại sao nên đi,” Carmen Andoh đã theo dõi sự phát triển của ngôn ngữ máy tính từ năm 1980 đến năm 2017. Cô đưa ra lập luận thuyết phục về việc sử dụng Go trong các dự án lập trình lớn. Lập luận của cô ấy có vẻ đúng ngày hôm nay.

  • Cờ vây là Máy hiệu quả. Nó đánh bại các ngôn ngữ được thông dịch cũng như các ngôn ngữ phụ thuộc vào máy ảo.
  • Python tham gia vào lĩnh vực máy tính hơn ba mươi năm trước, trước khi có bộ xử lý đa lõi. Python là ngôn ngữ thông dịch, đơn luồng, không phù hợp với các hệ thống yêu cầu xử lý đồng thời.
  • Các nhà khoa học dữ liệu có thể viết bằng Python, nhưng đối với các tác vụ tính toán chuyên sâu thì C hoặc C++ mới thực hiện được. Python chỉ là “chất keo” gắn kết các mảnh của con thuyền học máy lại với nhau.
  • Không mất nhiều thời gian để tìm ra các ví dụ về điểm chuẩn thể hiện ưu điểm của Go so với Python và R, những ngôn ngữ hàng đầu trong khoa học dữ liệu.

Đôi khi được mô tả là “C của thế kỷ 21”, Go là một ngôn ngữ được gõ mạnh để biên dịch trực tiếp thành mã máy. Nó biên dịch nhanh hơn nhiều so với C và thực thi gần như nhanh như C.

C, C++ và C#

C được phát triển bởi Dennis Ritchie tại Bell Labs và được giới thiệu vào năm 1972. Vì nó cung cấp quyền truy cập cấp thấp vào bộ nhớ và ánh xạ dễ dàng tới các hướng dẫn máy, C đã trở thành ngôn ngữ lập trình hệ thống phổ biến trong nhiều năm. C có lợi thế về hiệu suất so với hầu hết các ngôn ngữ lập trình khác. C++ và C# cung cấp các phần mở rộng hướng đối tượng cho C, trong khi vẫn giữ được các lợi thế về cấu trúc và hiệu suất của C.

Xử lý đồng thời (không bao giờ là một nhiệm vụ dễ dàng) là một tính năng nội tại của Go

Go cung cấp một bộ công cụ phong phú để tận dụng các máy tính kỹ thuật số đa lõi ngày nay. Khoa học dữ liệu cần các ngôn ngữ và hệ thống có thể đáp ứng nhu cầu của thế giới sử dụng nhiều dữ liệu và dựa trên dữ liệu ngày nay. Khoa học dữ liệu cần Go.

Go là lập trình viên hiệu quả. Python thường được quảng cáo là dễ học. Nhưng tôi cho rằng Go dễ học hơn Python. Cờ vây có thiết kế đơn giản, một ngôn ngữ chỉ có 25 từ khóa. Go dễ đọc, dễ sử dụng và dễ bảo trì theo thời gian.

Hãy vui mừng khi những người lãnh đạo cộng đồng Go không muốn bổ sung thêm các tính năng mới. Donald knuth đã có ý tưởng đúng đắn. Khi anh ấy đến phiên bản 3.14 của TeX, ông tuyên bố rằng sẽ không có phiên bản ngôn ngữ mới, không có tính năng mới, chỉ có sửa lỗi. Và với mỗi lần sửa lỗi, anh ấy sẽ mượn một chữ số khác từ số π (pi).

Câu thần chú của các lập trình viên Go: “Hãy giữ mọi việc đơn giản. Hãy để nó chạy tiếp.”

Go có cấu trúc được xác định rõ ràng với các tiện ích định dạng để đảm bảo một phong cách chung giữa các lập trình viên, một phong cách đôi khi được gọi là “Go thành ngữ”. Go có tính năng quản lý bộ nhớ tự động (thu gom rác), bảo vệ lập trình viên khỏi bị rò rỉ và lỗi bộ nhớ. Go an toàn hơn C và C++.

Các nhà phát triển cốt lõi của Go cam kết về khả năng tương thích ngược và hệ thống mô-đun của Go thúc đẩy sự an toàn, đảm bảo rằng các gói phù hợp được tích hợp vào mỗi bản dựng tại thời điểm biên dịch. Go theo dõi các phiên bản phần mềm khi kho phần mềm phát triển.

Hãy coi phát triển phần mềm như một trò chơi Jenga. Chúng tôi muốn truy cập các khối ở cuối ngăn xếp, đồng thời đảm bảo rằng toàn bộ ngăn xếp không bị sập. Hãy để chúng tôi làm điều này.

Go Đơn giản hóa ngăn xếp phần mềm. Còn kho phần mềm, cơ sở hạ tầng thì sao?

Khi Python (thậm chí được hỗ trợ bởi C hoặc C++) không đáp ứng được nhiệm vụ, các nhà khoa học dữ liệu sẽ chuyển sang các ngôn ngữ và hệ thống khác. Đây được gọi là giải pháp cho các vấn đề về hiệu năng của Python:

 
Khoa học dữ liệu và ngôn ngữ lập trình cờ vây

Khoa học dữ liệu và ngôn ngữ lập trình cờ vây
 

Để triển khai các giải pháp hiệu suất cao, các nhà khoa học dữ liệu chuyển sang Spark, được xây dựng trên Scala, phụ thuộc vào Máy ảo Java. Và để cung cấp khả năng truy cập dễ dàng, các nhà khoa học dữ liệu có thiện chí này đã thêm PySpark vào danh sách kết hợp. Đây có phải là cách tốt nhất để giải quyết các vấn đề về hiệu suất của Python không? KHÔNG.

Hãy xem xét một ngăn xếp phần mềm đơn giản hơn. Đó là Đi, cứ đi:

 
Khoa học dữ liệu và ngôn ngữ lập trình cờ vây

Khoa học dữ liệu và ngôn ngữ lập trình cờ vây
 

Với các ví dụ mã từ hội nghị GopherCon ở 20212023, Daniel Whitenack cho thấy cách triển khai các giải pháp học máy và trí tuệ nhân tạo trong Go. Chúng ta có thể sử dụng Go để xây dựng các ứng dụng web thông minh, tích hợp, bao gồm cả những ứng dụng dựa trên AI tổng hợp và các mô hình ngôn ngữ lớn.

Go đại diện cho ngôn ngữ lập trình hệ thống tinh túy cho các máy tính kỹ thuật số, đa lõi ngày nay. Go là ngôn ngữ của đám mây. Go là ngôn ngữ của điện toán phân tán. Các nhà khoa học dữ liệu trước đây từng coi Python là “ngôn ngữ keo dán” giờ đây có thể coi Go là “siêu keo”.

Go được sử dụng rộng rãi trong công nghiệp. Các công ty đánh giá cao sự an toàn, đơn giản và hiệu suất của cờ vây. Họ cũng nhận ra điểm mạnh của Go là môi trường lập trình hệ thống phụ trợ. Go rất phù hợp để phát triển máy chủ web và cơ sở dữ liệu, giao diện lập trình ứng dụng và dịch vụ vi mô. Go rất phù hợp để triển khai các hệ thống hiệu suất cao, có khả năng mở rộng.

Bắt đầu với Google, nơi khai sinh ra Go, nhiều công ty dựa vào Go cho các hệ thống lớn, có nhiệm vụ quan trọng. Nếu cờ vây đủ tốt cho Google, Netflix, Uber, Dropbox, PayPal, thẻ American Express, Capital One, Salesforce, Zillow, và nhiều thứ khác, thì Go là đủ tốt cho phần còn lại của chúng ta.

Nếu Go có thể cung cấp một nền tảng hiệu quả để xây dựng phu bến tàu, Kubernetes, Prometheus, grafana, da bì, Terraform, CrowdStrike, vvd, GiánDB, Làm suy yếu, mivus, Hàng không vũ trụvà một loạt các hệ thống phân tán và dịch vụ vi mô gốc đám mây, thì Go có thể là một nền tảng hiệu quả để xây dựng các ứng dụng khoa học dữ liệu.

Các nhà giáo dục khoa học máy tính và khoa học dữ liệu nên học hỏi từ ngành công nghiệp. Họ nên thêm Go vào khóa học của mình. Đây là những gì chúng tôi đang làm ở Northwestern.

Ba ngôn ngữ cho khoa học dữ liệu tại Northwestern

Sử dụng Go cho khoa học dữ liệu không có nghĩa là chúng ta phải từ bỏ những điều tốt đẹp mà R và Python mang lại. Chúng ta có thể đa ngôn ngữ.

Không khó để tưởng tượng các dự án mà nhà khoa học dữ liệu có thể khám phá dữ liệu bằng R, phát triển mô hình bằng Python và triển khai hệ thống trong Go. Trong số ba ngôn ngữ dành cho khoa học dữ liệu, Go là ngôn ngữ mới nhất. Cờ vây đang có xu hướng đi lên và mang đến nhiều cơ hội việc làm đáng kể.

Chương trình khoa học dữ liệu của Northwestern đánh giá cao sức mạnh của ba ngôn ngữ đối với khoa học dữ liệu trên các chuyên ngành của chương trình.

  • R, với nhiều gói phân tích và lập mô hình, được các nhà thống kê ứng dụng đánh giá cao. Đó là một sự lựa chọn tuyệt vời cho lập trình khoa học và nghiên cứu ứng dụng. R đặc biệt tốt cho việc khám phá và trực quan hóa dữ liệu. R là ngôn ngữ chính trong hầu hết các khóa học về chuyên ngành Phân tích và Mô hình hóa của Northwestern.
  • Python hiện là ngôn ngữ máy tính phổ biến nhất trong khoa học dữ liệu. Nó đặc biệt mạnh trong xử lý ngôn ngữ tự nhiên và đóng vai trò là khách hàng chính cho các nền tảng học sâu. Python cung cấp một môi trường giàu tính năng để phát triển mô hình và Python là ngôn ngữ chính trong hầu hết các khóa học về chuyên ngành Trí tuệ nhân tạo của Northwestern.
  • Go là ngôn ngữ lập trình hệ thống được thiết kế cho các máy tính đa bộ xử lý ngày nay. Nó rất phù hợp để triển khai các hệ thống hiệu suất cao, có khả năng mở rộng cho khoa học dữ liệu, bao gồm các ứng dụng web và máy chủ cơ sở dữ liệu. Go là ngôn ngữ chính trong chuyên ngành Kỹ thuật dữ liệu của Northwestern, như được trình bày trong Học tập về khoa học dữ liệu trang web.

Học sinh ở MS trực tuyến về Khoa học dữ liệu của Đại học Northwestern chương trình xây dựng các kỹ năng phân tích và lãnh đạo cần thiết để phân tích và giải thích dữ liệu nhằm đưa ra quyết định sáng suốt, có tác động trong nhiều lĩnh vực. Các lớp học được dẫn dắt bởi đội ngũ giảng viên giàu kinh nghiệm gồm các chuyên gia trong ngành. Học sinh phát triển kiến ​​thức chuyên môn trong lĩnh vực họ quan tâm bằng cách chọn chuyên ngành khoa học dữ liệu tổng quát hoặc một trong năm chuyên ngành: Phân tích và lập mô hình, Quản lý phân tích, Trí tuệ nhân tạo, Kỹ thuật dữ liệu và Khởi nghiệp công nghệ. Sinh viên học bán thời gian, theo tốc độ của riêng họ, hoàn toàn trực tuyến. Các ứng dụng được chấp nhận hàng quý.

 
Khoa học dữ liệu và ngôn ngữ lập trình cờ vây

Khoa học dữ liệu và ngôn ngữ lập trình cờ vây
 
 

tại chỗ_img

Tin tức mới nhất

tại chỗ_img