Chris Lattner, tác giả Mojo: Mojo không chỉ là một ngôn ngữ AI.

công nghệ số5tháng trướccập nhật AIANT
43 00
Chris Lattner, tác giả Mojo: Mojo không chỉ là một ngôn ngữ AI.

Mojo, một ngôn ngữ lập trình mô-đun mới dựa trên Python, được ra mắt vào năm 2023 với mục tiêu đặc biệt là GPU và các bộ xử lý khác. Theo phần hỏi đáp chính thức của Mojo, “Mục tiêu của chúng tôi không chỉ đơn thuần là tạo ra một ‘Python nhanh hơn’, mà còn xây dựng một hệ thống hoàn toàn mới về lập trình hệ thống, cung cấp khả năng truy cập trực tiếp vào phần cứng tốc độ cao.”

Như Chris Lattner đã chia sẻ trong một cuộc phỏng vấn, họ muốn tập trung vào việc “biểu đạt” toàn bộ khả năng của phần cứng. Đồng thời, họ cũng muốn duy trì phong cách và trải nghiệm của Python trong môi trường quen thuộc cho người dùng, bởi vì nhiều người, đặc biệt là trong lĩnh vực AI, đang sử dụng Python rộng rãi.

Sự tiến hóa của một ngôn ngữ lập trình thực sự là cơ hội để khám phá logic đằng sau quyết định thiết kế ngôn ngữ và triết lý cơ bản kết hợp những quyết định này. Trong năm 2024, những gì các lập trình viên thực sự quan tâm? Trong tập podcast “Software Unscripted” số 100, Lattner đã chia sẻ về quan điểm của mình về việc thiết kế ngôn ngữ lập trình, trình biên dịch và cơ sở hạ tầng liên quan.

Richard Feldman, tác giả của ngôn ngữ lập trình Roc, đã mở đầu cuộc trò chuyện bằng câu hỏi quan trọng: “Với hàng loạt ngôn ngữ lập trình hiện có, tại sao lại cần phát triển một ngôn ngữ mới?” Đối với Lattner, câu trả lời rất rõ ràng: “Đây thực chất là cách giải quyết vấn đề.”

Lattner không chỉ trả lời câu hỏi “tại sao”, mà còn trả lời cả “làm gì” và “cách nào” – mang lại cái nhìn toàn diện về hệ sinh thái ngôn ngữ lập trình hiện tại.

Lattner đồng ý với Feldman rằng Mojo đang tận dụng hệ sinh thái Python, đồng thời cải thiện hiệu suất thông qua “sự tiến hóa một phần”. Công việc này đang diễn ra. Lattner nói, “Một trong những mục tiêu của chúng tôi vào mùa thu năm nay là có thể dễ dàng tạo ra các gói Python bằng Mojo”, mang đến hiệu suất xuất sắc cho các nhà phát triển Python.

Mojo sẽ “loại bỏ sự phức tạp khi tương tác với ngôn ngữ C,” Lattner nói, đồng thời cung cấp “hiệu suất ngang bằng hoặc tốt hơn so với C hoặc C++.”

Lattner sau đó nói đây là điều “tự nhiên” xảy ra, vì một cộng đồng ngôn ngữ thành công tự nhiên sẽ mở rộng quy mô. “Các lập trình viên muốn nâng cao kỹ năng của mình sẽ tự nhiên mang kỹ năng đó vào các lĩnh vực liên quan mà họ muốn ứng dụng.”

Tất nhiên, cuối cùng Lattner cũng đưa ra một câu trả lời đơn giản hơn: “Chúng tôi phát triển Mojo vì chúng tôi quan tâm đến AI, GPU và các lĩnh vực liên quan đến bộ xử lý tốc độ cao.”

“Trong cộng đồng Python có nhiều tiếng nói về việc ‘tăng tốc Python gốc lên 20 lần’, nhưng quan niệm của Mojo là ‘làm thế nào để không bắt đầu từ Python nhưng vẫn cải thiện nó’. Chúng tôi nói rằng ‘khai thác tối đa hiệu suất của phần cứng’. Chúng tôi muốn khai thác toàn bộ tiềm năng của phần cứng – không chỉ là việc làm cho kiểu dữ liệu int trở nên nhanh chóng… mà còn bao gồm các bộ xử lý tốc độ cao, SIMD (Xử lý song song dữ liệu đơn lệnh) và tất cả những thứ tương tự…”

“Điều này phụ thuộc vào tải công việc cụ thể, nhưng chúng tôi đã viết một bài đăng blog cho thấy Mojo có thể nhanh hơn Python tới 65000 lần.”

“Phản hồi phổ biến là ‘trong Python, bạn không cần phải viết mã liên quan đến toán học phức tạp’, nhưng đó chính xác là tinh thần của Mojo – cho phép bạn viết mã giống như Python nhưng trong một ngôn ngữ nhất quán và liền mạch. Vì vậy, bạn không cần phải chuyển đổi ngôn ngữ!”

Để cung cấp hỗ trợ song song hàng đầu, cú pháp SIMD của Mojo bao gồm tất cả các loại số khác nhau.

Chris Lattner, tác giả Mojo: Mojo không chỉ là một ngôn ngữ AI.

Lattner đã đưa ra một bình luận về ngôn ngữ lập trình hiện đại: “Nhắc đến, kể từ cuối những năm 90, tất cả các bộ xử lý đều hỗ trợ SIMD, nhưng tại sao không có ngôn ngữ lập trình nào theo kịp máy tính hiện đại? Điều này luôn là một bí ẩn đối với tôi.” (Ông cũng bày tỏ sự ngạc nhiên về việc “có quá nhiều mã vẫn chạy theo cách đơn luồng.”)

Mojo cũng tìm ra cách tăng hiệu suất, giúp nó vượt trội hơn Python. “Trong Python, số nguyên là số lớn,” Lattner giải thích, “bạn có thể tạo số nguyên với kích thước tùy ý, chúng được phân bổ trên đống, có ngữ nghĩa tham chiếu.” Mojo giữ nguyên tên int trong cú pháp, đồng thời giới thiệu loại thay thế của riêng mình – Int (chữ I hoa). Loại Int này là một cấu trúc, giúp đơn giản hóa công việc của trình biên dịch Mojo.

Mặc dù Mojo vẫn tương thích với cú pháp gốc của Python, nhưng nếu bạn chọn sử dụng kiểu dữ liệu Int của Mojo, “bạn sẽ nhận được hiệu suất và độ dự đoán tốt hơn. Nó còn có thể chạy trên GPU, v.v. Điều này không có nghĩa là một loại tốt hơn loại kia, mà là sự cân nhắc.”

Lattner nói, “Một số nhà sản xuất chip” đã quyết định hỗ trợ đầy đủ các số phức (số phức được sử dụng rộng rãi trong kỹ thuật và công thức vật lý). “Vì vậy, một khi ai đó tích hợp công nghệ này vào phần cứng và cảm thấy ‘điều này nhanh hơn việc thực hiện nhân và cộng riêng biệt tới 10 lần’, chúng tôi cũng không thể không nói ‘tăng hiệu suất 10 lần’ – vì họ đã tích hợp công nghệ này vào silicon… Vậy làm thế nào để mọi người tận dụng lợi thế này mà không cần hiểu sâu về phức tạp đằng sau nó?”

Mojo hỗ trợ việc định nghĩa cấu trúc sử dụng số phức, những cấu trúc này có hành vi cơ bản và “một loạt phương thức – bao gồm phép nhân.” Nếu trình biên dịch phát hiện có phần cứng số phức và hỗ trợ các hướng dẫn nhân nhanh đặc biệt, thì điều tuyệt vời sẽ xảy ra. “Tất cả các chương trình sử dụng số phức sẽ được tăng tốc, và người lập trình không cần lo lắng về chi tiết thêm.”

Mojo giữ lại chức năng quá tải toán tử của Python, tức là khả năng tùy chỉnh hành vi mặc định của toán tử, và giữ sự tương thích với cú pháp Python. Cuối cùng, nhiều phức tạp thêm được chuyển giao cho các nhà phát triển thư viện.

Lattner nói rằng anh ấy biết có nhiều kỹ sư trình biên dịch, nhưng anh ấy muốn nâng “hệ sinh thái tài năng” lên phía trên – những người hiểu rõ lĩnh vực của họ và biết cách tận dụng tăng cường hiệu suất GPU. Anh ấy nói: “Hành trình Mojo của tôi thực sự là về việc giải phóng tiềm năng của những người này và mang lại siêu năng lực cho họ.”

Sau đó, anh ta nói rằng điều này trái ngược hoàn toàn với xu hướng trong năm tới mười năm qua trong lĩnh vực này… “Đưa phức tạp vào trình biên dịch, khóa nó và vứt đi chìa khóa, sau đó tin tưởng chúng tôi – những người phát triển trình biên dịch”… Nhưng tôi thấy điều này thực sự không đúng… Trình biên dịch hiếm khi mang lại tăng hiệu suất 10 lần. Nhưng những người làm việc trong lĩnh vực ứng dụng, vì họ hiểu ứng dụng của họ – hoàn toàn có thể thực hiện điều này, vì họ có thể sử dụng các công cụ phù hợp để thực hiện.

Kết quả cuối cùng là, trong lĩnh vực có hàng chục loại số khác nhau, “chúng tôi có thể cho phép mọi người định nghĩa các loại này trong thư viện, giảm bớt gánh nặng cho ngôn ngữ cần giao tiếp với tất cả các loại phần cứng!”

Khi kết thúc chương trình, Lattner kêu gọi các lập trình viên quan tâm xem xét Mojo và trang web chính thức cùng tài liệu phong phú của nó. “Cộng đồng Mojo rất sôi nổi! Chúng tôi có một kênh Discord – theo tôi biết, khoảng 20.000 người, họ đang thảo luận về nhiều chủ đề và cùng nhau xây dựng dự án.”

Anh ấy cũng thêm một câu khích lệ: “Mojo không chỉ là ngôn ngữ AI, cộng đồng còn sử dụng nó để xây dựng máy chủ web, thư viện GUI và nhiều dự án khác. Chúng tôi rất mong mọi người tham gia. Mojo hiện đang ở giai đoạn sơ khai, chúng tôi vẫn đang liên tục thêm các tính năng cốt lõi và xây dựng thư viện.”

“Nhưng chúng tôi có một cộng đồng lớn, họ rất nhiệt tình, và tôi hy vọng mọi người sẽ tham gia.”

**Từ khóa:**
– Ngôn ngữ lập trình
– Mojo
– Python
– GPU
– Chris Lattner

© Thông báo bản quyền

Những bài viết liên quan:

Chưa có đánh giá nào

none
Không có đánh giá...