EN VI

Ngôn ngữ lập trình Mojo là gì? Mojo có ưu điểm gì vượt trội?

    Mojo là một ngôn ngữ lập trình mới, kết hợp những ưu điểm tốt nhất của cú pháp Python với lập trình hệ thống và metaprogramming. Với Mojo, bạn có thể viết mã di động nhanh hơn C và tương tác một cách dễ dàng với hệ sinh thái Python. Mojo được đánh giá là nhanh gấp hàng chục lần so với Python.

Mojo sử dụng MLIR để cho phép các nhà phát triển tận dụng các kỹ thuật song song hóa như vectorization, threading và các đơn vị phần cứng AI.

Dưới đây là so sánh tốc độ xử lý của ngôn ngữ lập trình Mojo:


Những lý do tại sao bạn nên lập trình bằng Mojo?

Khi họ thành lập Modular, mục tiêu ban đầu của họ không phải là tạo ra một ngôn ngữ lập trình mới. Tuy nhiên, khi họ đang phát triển nền tảng của mình với mục đích thống nhất cơ sở hạ tầng ML/AI, họ nhận ra rằng việc lập trình trên toàn bộ hệ thống quá phức tạp. Ngoài ra, họ đang viết nhiều MLIR bằng tay và không thấy vui vẻ với quá trình đó. Những gì họ cần là một mô hình lập trình có tính mở rộng và sáng tạo có thể nhắm vào các hệ thống không đồng nhất và bộ gia tốc phổ biến trong lĩnh vực AI. Điều này đòi hỏi một ngôn ngữ lập trình có tính toán biên dịch mạnh mẽ, kỹ thuật biên dịch thích nghi, bộ nhớ cache trong quá trình biên dịch và các tính năng khác không được hỗ trợ bởi các ngôn ngữ hiện có. Họ cũng nhận ra rằng CPU là một phần quan trọng của quá trình gia tốc, bởi vì chúng phục vụ như "fallback" cho các hoạt động mà các bộ gia tốc chuyên dụng không xử lý được, chẳng hạn như tải dữ liệu, xử lý trước và sau và tích hợp với các hệ thống ngoại lai. Do đó, họ nhận ra rằng việc chỉ tạo ra một "ngôn ngữ gia tốc" chỉ hoạt động với các bộ xử lý cụ thể sẽ không đủ. Vì vậy, họ đã tạo ra Mojo để giải quyết tất cả các thách thức này với một ngôn ngữ duy nhất cho các hệ thống AI ứng dụng.

  • Một ngôn ngữ cho công nghệ biên dịch thế hệ tiếp theo:
  • Là 1 ngôn ngữ lập trình tách bởi ngôn ngữ lập trình Python
  • Có khả năng tương thích với Python
  • Sự khác biệt cố ý so với Python    

MLIR là gì?

MLIR là một biểu diễn trung gian của một chương trình, tương tự như ngôn ngữ assembly, trong đó một tập hợp các chỉ thị tuần tự hoạt động trên các giá trị trong bộ nhớ.

Quan trọng hơn, MLIR là một hệ thống linh hoạt và có thể mở rộng. MLIR được tạo thành từ một số "dialects" ngày càng lớn. Mỗi điạlect định nghĩa các hoạt động và tối ưu hóa: ví dụ, dialects 'math' cung cấp các hoạt động toán học như sine và cosine, dialects 'amdgpu' cung cấp các hoạt động cụ thể cho các bộ xử lý AMD, và còn nhiều dialects khác.

Mỗi dialects trong MLIR có thể tương tác với các dialects khác. Điều này là lý do tại sao MLIR được cho là mở khóa tính toán đa dạng: khi các bộ xử lý và kiến trúc mới, nhanh hơn được phát triển, các điạlect mới của MLIR được triển khai để tạo ra mã tối ưu cho những môi trường đó. Bất kỳ điạlect mới của MLIR đều có thể dịch sang các dialects khác một cách mượt mà, vì vậy khi có nhiều điạlect được thêm vào, tất cả MLIR hiện có trở nên mạnh mẽ hơn.

Điều này có nghĩa là các kiểu tùy chỉnh của chúng ta, chẳng hạn như kiểu OurBool chúng ta sẽ tạo bên dưới, có thể được sử dụng để cung cấp cho các lập trình viên một giao diện giống như Python ở mức độ cao. Nhưng "dưới lớp" của Mojo và MLIR sẽ tối ưu hóa các kiểu tiện lợi và mức độ cao của chúng ta cho mỗi bộ xử lý mới xuất hiện trong tương lai.

Có rất nhiều điều để viết về lý do tại sao MLIR là một công nghệ cách mạng.


Các thắc mắc thường gặp về ngôn ngữ lập trình Mojo

1. Tại sao lại gọi là Mojo?

    Mojo có nghĩa là "một lời nguyền ma thuật" hoặc "sức mạnh ma thuật". Nhà phát triển của ngôn ngữ Mojo nghĩ rằng đây là một cái tên phù hợp cho một ngôn ngữ lập trình mang lại sức mạnh ma thuật cho Python, bao gồm cả việc mở khóa một mô hình lập trình đổi mới cho các bộ xử lý tăng tốc và các hệ thống đa dạng khác phổ biến trong lĩnh vực trí tuệ nhân tạo hiện nay.

2. Mục đích Mojo ra đời để là gì?

    Nhà phát triển của ngôn ngữ Mojo xây dựng Mojo để giải quyết một thách thức nội bộ tại Modular, và họ đang sử dụng nó rộng rãi trong các hệ thống của mình như Inference Engine. Kết quả, họ rất cam kết với sự thành công dài hạn của nó và đang đầu tư mạnh vào nó. Sứ mệnh chung của họ là thống nhất phần mềm trí tuệ nhân tạo và họ không thể làm được điều đó nếu không có một ngôn ngữ thống nhất có thể mở rộng trên toàn bộ cấu trúc hạ tầng trí tuệ nhân tạo. Nói vậy, họ không có kế hoạch dừng lại ở trí tuệ nhân tạo - mục tiêu của Mojo là hỗ trợ toàn bộ các lĩnh vực lập trình đa dụng trong tương lai.

3. Tại sao mojo có phần mở rộng tệp 🔥?

    Họ đã kết hợp Mojo với biểu tượng ngọn lửa 🔥 để truyền tải cho người dùng một cách thú vị rằng Mojo giúp mọi người trở nên mạnh mẽ hơn để phát triển nhanh hơn và hiệu quả hơn bao giờ hết. Họ cũng tin rằng thế giới hiện tại có thể xử lý được một phần mở rộng unicode, nhưng bạn cũng có thể sử dụng phần mở rộng .mojo.

4. Mojo giải quyết vấn đề gì mà không ngôn ngữ nào khác có thể?

    Mojo kết hợp tính sử dụng của Python với các tính năng lập trình hệ thống mà Python thiếu. Họ được hướng dẫn bởi tính thực dụng hơn là tính mới lạ, nhưng việc sử dụng MLIR trong Mojo cho phép nó mở rộng tới các loại phần cứng mới và các lĩnh vực kỳ lạ mà các ngôn ngữ khác chưa chứng tỏ được (để xem ví dụ về Mojo nói trực tiếp với MLIR, hãy xem sổ tay IR cấp thấp trong Mojo). Nó cũng bao gồm tự động điều chỉnh và có tính năng bộ nhớ đệm và biên dịch phân tán được tích hợp vào lõi của nó. Họ cũng tin rằng Mojo có khả năng thống nhất các gói hybrid trong cộng đồng Python rộng hơn.

5. Loại nhà phát triển nào sẽ được hưởng lợi nhiều nhất từ ​​​​Mojo?

    Điểm tập trung ban đầu của Mojo là đưa tính lập trình trở lại trí tuệ nhân tạo, cho phép các nhà phát triển trí tuệ nhân tạo tùy chỉnh và tận dụng tối đa phần cứng của họ. Vì vậy, Mojo sẽ chủ yếu có lợi cho các nhà nghiên cứu và kỹ sư khác muốn viết các hoạt động trí tuệ nhân tạo hiệu suất cao. Theo thời gian, Mojo sẽ trở nên thú vị hơn đối với cộng đồng Python chung khi nó trở thành một siêu tập hợp của Python. Họ hy vọng điều này sẽ giúp nâng cao hệ sinh thái thư viện Python rộng lớn và cho phép nhiều nhà phát triển hệ thống truyền thống hơn sử dụng C, C ++, Rust, vv.

6. Tại sao Mojo lại xây dựng dựa trên Python? 

    Đúng vậy, hiện nay hầu hết các nghiên cứu và phát triển mô hình trí tuệ nhân tạo đều diễn ra trên Python và điều này có lý do chính đáng! Python là một ngôn ngữ mạnh mẽ cấp cao với cú pháp đơn giản và sạch sẽ cùng một hệ sinh thái thư viện khổng lồ. Nó cũng là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới, và họ muốn giúp nó trở nên ngày càng tốt hơn. Tại Modular, một trong những nguyên tắc cốt lõi của họ là đáp ứng nhu cầu của khách hàng - mục tiêu của họ không phải là phân mảnh thêm cảnh quan trí tuệ nhân tạo mà là thống nhất và đơn giản hóa quy trình phát triển trí tuệ nhân tạo.

7. Tại sao không nâng cao CPython (phiên bản Python chính)?
    Họ rất vui khi thấy cộng đồng hiện tại đang có nỗ lực lớn để cải thiện CPython, nhưng mục tiêu của Mojo (như triển khai trên các GPU và bộ tăng tốc khác) cần có một kiến ​​trúc và phương pháp biên dịch khác nhau. CPython là một phần quan trọng của phương pháp tương thích của họ và cung cấp tính tương tác với Python.

8. Tại sao không nâng cao một phiên bản Python khác (như Codon, PyPy, vv)?
    Codon và PyPy nhằm mục đích cải thiện hiệu suất so với CPython, nhưng mục tiêu của Mojo sâu hơn rất nhiều. Mục tiêu của họ không chỉ là tạo ra "một Python nhanh hơn", mà là cho phép một lớp lập trình hệ thống hoàn toàn mới bao gồm truy cập trực tiếp vào phần cứng được tăng tốc, như đã đề cập trong bài viết "Tại sao Mojo". Cách tiếp cận kỹ thuật của họ cũng rất khác biệt, ví dụ như họ không dựa vào các công nghệ biên dịch và JIT anh hùng để "hủy bỏ ảo hoá" Python.

Hơn nữa, giải quyết các thách thức lớn cho ngành máy tính là điều khó khăn và yêu cầu một cách suy nghĩ lại cơ bản về cơ sở hạ tầng biên dịch và thời gian chạy. Điều này thúc đẩy họ xây dựng một phương pháp hoàn toàn mới và họ sẵn lòng bỏ thời gian cần thiết để làm điều đó đúng cách (xem bài đăng trên trang blog của họ về xây dựng một nền tảng trí tuệ nhân tạo thế hệ tiếp theo), thay vì chỉnh sửa một hệ thống hiện có chỉ giải quyết một phần nhỏ của vấn đề.

9. Tại sao không làm cho Julia tốt hơn?
    Họ nghĩ Julia là một ngôn ngữ tuyệt vời và có một cộng đồng tuyệt vời, nhưng Mojo hoàn toàn khác biệt. Trong khi Julia và Mojo có thể chia sẻ một số mục tiêu và trông giống như một sự lựa chọn dễ sử dụng và hiệu suất cao thay thế cho Python, nhưng họ đang tiếp cận hoàn toàn khác để xây dựng Mojo. Đáng chú ý, Mojo là Python-first và không yêu cầu các nhà phát triển Python hiện có phải học cú pháp mới.

Mojo cũng có nhiều cải tiến kỹ thuật so với Julia, đơn giản là vì Mojo mới hơn và họ đã học được từ Julia (và từ Swift, Rust, C ++ và rất nhiều ngôn ngữ khác trước đó). Ví dụ, Mojo tiếp cận khác biệt với quản lý quyền sở hữu bộ nhớ và quản lý bộ nhớ, nó có thể tự điều chỉnh xuống cỡ bìa thư nhỏ hơn, và được thiết kế với các nguyên tắc AI và MLIR-first (mặc dù Mojo không chỉ dành cho AI).

Tuy nhiên, họ cũng tin rằng có đủ chỗ cho nhiều ngôn ngữ và điều này không phải là một lựa chọn "hoặc". Nếu bạn sử dụng và yêu thích Julia, thì tuyệt vời! Họ rất mong bạn thử Mojo và nếu bạn thấy nó hữu ích, thì cũng tuyệt vời.

10. Ngôn ngữ lập trình Mojo chỉ dành cho AI hay có thể dùng cho lập trình website, mobile được không?

    Mojo là một ngôn ngữ lập trình đa mục đích. Họ sử dụng Mojo tại Modular để phát triển các thuật toán trí tuệ nhân tạo, nhưng khi họ phát triển Mojo thành một siêu tập hợp của Python, bạn có thể sử dụng nó cho các mục đích khác như HPC, chuyển đổi dữ liệu, viết các hoạt động xử lý trước / sau và nhiều hơn nữa.

Rating: 10 (1 Votes)
Comment

Login


Forgot Your Password?

Create Account


Lost your password? Please enter your email address. You will receive a link to create a new password.

Reset Password

Back to login