Julia - Ngôn ngữ lập trình có thể đánh bại Python đang chinh phục giới khoa học

21:13, 14/11/2020

Ngôn ngữ Julia là một 'chú hắc mã' đã xuất hiện trong thế giới khoa học những năm gần đây.

Nói về Julia, nhà vật lý học Lee Phillips đã xuất bản một bài báo khoa học để giới thiệu sức hấp dẫn thực sự của ngôn ngữ máy tính khoa học này. “Gần đây, nhiều nhà khoa học và tôi đã gặp nhau nhiều lần trên Internet, và họ rất hào hứng với một công cụ mới. Nó không phải là máy gia tốc hạt mới nhất hay siêu máy tính, mà là một ngôn ngữ máy tính trẻ tuổi-Julia”, Lee Phillips nói.

Các ngôn ngữ máy tính khác nhau thực hiện tốt các tác vụ khác nhau. Một số chạy nhanh, một số dễ phát triển và triển khai hơn, một số có hệ sinh thái và thư viện khổng lồ, một số phù hợp để giải quyết các vấn đề cụ thể.

Đối với các nhà khoa học cần mô phỏng biến đổi khí hậu hoặc phản ứng tổng hợp hạt nhân, ngôn ngữ chính hiện nay là Fortran. Trình biên dịch của nó có thể tận dụng tối đa hiệu suất mạnh mẽ của các siêu máy tính lớn. Đối với các nhà khoa học dữ liệu, Python là ngôn ngữ phổ biến nhất vì hệ sinh thái phong phú, tính tương tác mạnh và chu kỳ phát triển nhanh.

Julia dường như đã giải quyết được "vấn đề hai ngôn ngữ", đây là một vấn đề phổ biến mà người dùng các ngôn ngữ thông dịch như Python phải đối mặt. Viết một chương trình bằng Python, mặc dù bạn có thể tận hưởng cú pháp và tính tương tác tiện lợi của nó, nhưng khi quy mô tính toán được mở rộng đến một mức độ nhất định, tốc độ tính toán của chương trình sẽ chậm lại rất nhiều. Đây là một hạn chế của chính ngôn ngữ Python.

Đối với các hoạt động mô phỏng quy mô lớn, do lượng dữ liệu quá lớn, tốc độ chạy của chương trình là rất quan trọng nên các nhà nghiên cứu phải viết lại chương trình tương tự bằng một ngôn ngữ như C để cải thiện tốc độ chạy trong các ứng dụng thực tế. Nhưng sau khi tăng tốc, họ phải duy trì và cập nhật mã của cả hai ngôn ngữ trong nghiên cứu tiếp theo. “Vấn đề hai ngôn ngữ” ra đời từ đây.

Nhiệm vụ của Julia là giải quyết "vấn đề hai ngôn ngữ" kể từ khi nó ra đời, để thu hút các nhà khoa học và những người khác học ngôn ngữ, nhưng đây không phải là phần thú vị duy nhất của nó.

Hãy lấy hội nghị JuliaCon năm nay làm ví dụ. Hầu hết các hội nghị máy tính thông thường được tổ chức xoay quanh các chủ đề khoa học máy tính như lập trình, trình biên dịch, thuật toán và tối ưu hóa. Mặc dù có những thứ này trên JuliaCon, chúng thiên về các chủ đề nghiên cứu khoa học, chẳng hạn như cơ học chất lỏng, xử lý ngôn ngữ, hình ảnh não. Những chủ đề này tạo cho mọi người ảo tưởng rằng họ đã bước vào một hội nghị nghiên cứu khoa học.

Tình hình phổ biến này là do thái độ cởi mở của cộng đồng lập trình Julia, mọi người đều có thể tìm thấy code trên GitHub. Nếu ai đó muốn sử dụng một thuật toán hiện có, từ tài liệu trợ giúp đến nhận xét mã, họ có thể tải phiên bản mới nhất. Điều này hoàn toàn khác với bầu không khí mà hầu hết các nhà khoa học lớn tuổi quen thuộc: Trước đây, mã nghiên cứu hầu như không bao giờ rời khỏi phòng thí nghiệm.

Giải quyết "vấn đề biểu thức"

"Vấn đề biểu thức" là một khái niệm phổ biến trong nghiên cứu thiết kế ngôn ngữ máy tính. Đây là một lĩnh vực nghiên cứu nhánh của khoa học máy tính, và ý nghĩa và cách giải thích của nó thường rất trừu tượng và dựa trên thuật ngữ chuyên môn. Nếu chúng ta muốn hiểu rõ hơn về khái niệm này, chúng ta có thể so sánh nó với cách nấu ăn.

Nhưng trong thực tế, mối quan hệ giữa phương pháp nấu ăn và nguyên liệu có thể trở thành một phần của cấu trúc thư viện. Trong bối cảnh tương tự công thức, chúng ta có thể tưởng tượng rằng gà và cá là một tập hợp con của thịt, dâu tây và anh đào là một tập hợp con của các loại trái cây màu đỏ, và áp chảo và luộc là các biến thể của các phương pháp nấu ăn tương đồng.

Phương thức tư duy này là một nỗ lực để giải quyết "vấn đề biểu thức". Đây cũng được gọi là "lập kế hoạch nhiều lần" trong thiết kế ngôn ngữ và đề cập đến phương pháp lựa chọn tự động dựa trên kiểu của tất cả các kiểu dữ liệu sẽ được áp dụng.

“Lập kế hoạch nhiều lần” là phương pháp của Julia để giải quyết “vấn đề biểu thức” và nguyên tắc tổ chức cốt lõi của nó. Do đó, Julia không hướng đối tượng cũng không hướng chức năng. Giải pháp mà nó sử dụng mạnh hơn và linh hoạt hơn hai giải pháp trên. Điều này có nghĩa là Julia tự do hơn trong việc trộn và sử dụng các thư viện.

Tầm quan trọng của các công cụ

Julia không phải là ngôn ngữ đầu tiên cố gắng giải quyết "vấn đề về biểu thức", cũng không phải là ngôn ngữ đầu tiên sử dụng "lập kế hoạch nhiều lần". Ngôn ngữ Common Lisp với tính năng này đã ra đời được 40 năm và các phiên bản ngôn ngữ mới nhất như Perl cũng có tính năng này. Người dùng đã khẳng định sự tiện lợi của việc “lập kế hoạch nhiều lần” trong việc viết và mở rộng thư viện.

Nhưng sự khác biệt giữa Julia và họ là Julia được thiết kế xoay quanh "nhiều lịch trình", trong khi các ngôn ngữ khác chỉ sử dụng nó như một tùy chọn và sẽ làm giảm hiệu suất. Ví dụ, "lập kế hoạch nhiều lần" của Julia cho phép nó thể hiện tư duy toán học một cách linh hoạt và tự nhiên hơn, và việc sử dụng nhiều mã cộng đồng của nó đã khiến các nhà thiết kế ngôn ngữ ngạc nhiên.

Nhưng nếu bạn muốn có được chỗ đứng trong giới khoa học, những lợi thế trên là chưa đủ. Lý do tại sao Julia nhận được nhiều sự chú ý là nó kết hợp "lập kế hoạch nhiều lần" với các tính năng khác, chẳng hạn như mã chất lượng cao miễn phí và tốc độ tính toán rất nhanh, rất hấp dẫn đối với các nhà khoa học, những người cần nhiều tính toán số.

Giáo sư Đại học Stanford Mykel Kochenderfer đã sử dụng Julia để thiết kế một hệ thống tránh va chạm máy bay, hệ thống này đã trở thành tiêu chuẩn quốc tế. Ông nói rằng Julia không chỉ là “một ngôn ngữ cấp cao, có thể hiểu được mà còn chạy nhanh như mã C ++ được tối ưu hóa cao”.

Julia cũng có một cú pháp diễn đạt, dễ đọc, đặc biệt là khi xử lý các mảng. Nó cung cấp một đường dẫn nhanh để xử lý song song các thuật toán kỹ thuật số. Nó có những ưu điểm về thiết kế của kỷ nguyên Unicode, khiến nó giống toán học thực hơn khi thể hiện các công thức toán học.

Những tính năng này của Julia ngay từ những ngày đầu đã thu hút rất nhiều nhà khoa học, và ngay cả trước khi những ưu điểm đặc biệt của “lập lịch nhiều lần” gây chú ý, nó đã thu hút một lượng lớn người dùng.

Lee Phillips chia sẻ: “Và ý tưởng cốt lõi mà tôi học được từ đó là: Công cụ rất quan trọng. Điều này giống như khi họa sĩ chọn cọ và sơn phù hợp với phong cách của tác phẩm, và nhịp điệu trong suy nghĩ của người sáng tác phải phù hợp với kỹ năng của nhạc cụ và người biểu diễn”.

Là một công cụ lập trình, Julia cũng có ý nghĩa tương tự đối với các nhà khoa học. Nó có thể mở rộng các nhiệm vụ mà các nhà khoa học có thể hoàn thành trong thời gian giới hạn và giúp họ hiện thực hóa những ý tưởng không tưởng.

Theo ictnews.vietnamnet.vn