Chuyển đến nội dung chính

Ngôn Ngữ Mojo: Ngôn Ngữ Lập Trình Mới Cho AI

Tổng quan về một ngôn ngữ lập trình mới đơn giản như Python và nhanh như Rust.
Đã cập nhật 5 thg 10, 2026  · 9 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Mojo là một ngôn ngữ lập trình kết hợp sự dễ dùng và linh hoạt của các ngôn ngữ động như Python với hiệu năng và khả năng kiểm soát của các ngôn ngữ hệ thống như C++ và Rust.

Ngôn ngữ này đạt hiệu năng cao nhờ các công nghệ biên dịch sáng tạo như bộ nhớ đệm tích hợp, đa luồng và phân phối trên đám mây, trong khi autotuning và metaprogramming cho phép tối ưu mã cho nhiều phần cứng khác nhau.

Các tính năng chính của Mojo bao gồm:

  • Cú pháp giống Python và kiểu động giúp Mojo dễ học với các lập trình viên Python, vì Python là ngôn ngữ chủ đạo đứng sau các phát triển AI/ML hiện đại.
  • Với Mojo, bạn có thể nhập và sử dụng bất kỳ thư viện Python nào, đảm bảo khả năng tương tác hoàn toàn với Python.
  • Hỗ trợ cả biên dịch đúng lúc (JIT) và biên dịch trước (AOT). Trình biên dịch Mojo áp dụng các tối ưu hóa nâng cao và thậm chí tạo mã cho GPU/TPU.
  • Mojo cho phép kiểm soát hoàn toàn bố cục bộ nhớ, đồng thời xử lý đồng thời và các chi tiết cấp thấp khác.
  • Bằng cách kết hợp khả năng của ngôn ngữ động và ngôn ngữ hệ thống, Mojo theo đuổi một mô hình lập trình thống nhất, thân thiện với người mới và có thể mở rộng cho nhiều trường hợp sử dụng dựa trên bộ tăng tốc.

Hiện tại, Mojo vẫn là một ngôn ngữ chưa hoàn thiện và chưa được phát hành công khai. Tài liệu hướng tới các nhà phát triển có kinh nghiệm lập trình hệ thống.

Tuy nhiên, khi ngôn ngữ phát triển, họ dự định sẽ khiến nó thân thiện hơn và dễ tiếp cận với người mới bắt đầu.

Bắt đầu với Mojo Lang

Mojo chưa có sẵn công khai, nhưng bạn có thể truy cập Mojo Playground bằng cách đăng ký Modular Products. Khi đăng ký, hãy đảm bảo bạn đã chọn Mojo trong phần Modular Product Interest.

Hình ảnh từ Modular: Bắt đầu ngay hôm nay

Hình ảnh từ Modular: Bắt đầu ngay hôm nay

Sau khi đăng ký, bạn sẽ nhận được email cấp quyền truy cập Mojo Playground trong vòng một giờ. Mojo Playground là môi trường JupyterHub, nơi người dùng có thể truy cập cùng một thư viện chuẩn Mojo. Tuy nhiên, mỗi người dùng có một vùng lưu trữ riêng để viết và lưu chương trình Mojo của mình.

Hình ảnh từ Mojo Playground

Hình ảnh từ Mojo Playground

Khi Mojo trở thành mã nguồn mở và phát hành công khai, bạn có thể chạy chương trình Mojo từ terminal. Đây vừa là ngôn ngữ thông dịch vừa là ngôn ngữ biên dịch.

Bạn có thể lưu tệp test.mojo hoặc test.🔥.

Đúng vậy, bạn có thể lưu tệp của mình bằng biểu tượng cảm xúc ngọn lửa. Như bạn thấy, chúng tôi đã tạo một tệp Mojo đơn giản test.🔥 và chạy nó trong terminal.

def main():
    print("Hello Mojo!")
$ mojo test.🔥
Hello Mojo!

Mojo Lang và Python

Mojo là một siêu tập của Python và có cú pháp gần như tương tự Python. Nó cũng giới thiệu các tính năng mới như let, var, struct và fn để định nghĩa biến, cấu trúc và hàm nhằm tăng hiệu năng.

Khai báo let và var

Khi viết mã cho Mojo, bạn có thể khai báo biến cụ thể bằng các từ khóa let và var. Điều này tương tự cách bạn khai báo biến trong Rust.

Từ khóa let cho biết một biến là bất biến, trong khi var cho biết nó có thể thay đổi. Điều này cải thiện hiệu năng bằng cách áp đặt ràng buộc ngay tại thời điểm biên dịch.

Kiểu struct

Mojo sử dụng từ khóa struct tương tự class của Python. Lớp trong Python là động và chậm, còn kiểu struct giống với C/C++ và Rust hơn. Chúng có bố cục bộ nhớ cố định được xác định tại thời điểm biên dịch, tối ưu cho hiệu năng ở mức máy.

Định nghĩa fn

Dùng def để định nghĩa hàm sẽ tạo ra một hàm Python, với toàn bộ tính động và linh hoạt gắn liền với Python. Ngược lại, từ khóa fn định nghĩa một hàm Mojo với nhiều ràng buộc hơn. Điều này có nghĩa là đối số mặc định là bất biến và yêu cầu khai báo kiểu tường minh cũng như khai báo biến cục bộ, cùng các điều kiện khác.

Ví dụ so sánh cú pháp

Trong ví dụ này, chúng ta sẽ tạo một hàm Mojo để cộng hai đối số.

Để chạy hàm Mojo:

  • Bạn phải chỉ định kiểu cho các đối số của hàm.
  • Bạn phải khai báo kiểu trả về bằng mũi tên.
fn add(x: Int, y: Int) -> Int:
    return x + y

z = add(3, 5)
print(z)
>>> 8

Khi lập trình bằng Python, chúng ta có thể định nghĩa hàm mà không cần nêu rõ kiểu đối số và kiểu đầu ra. Điều này khiến quá trình trở nên linh hoạt và đơn giản hơn. Tuy nhiên, so với đó, hàm fn của Mojo nhanh hơn def.

def add(x, y):
    return x + y

z = add(3, 5)
print(z)
>>> 8

Matplotlib trong Mojo

Mojo không chỉ tăng hiệu năng mà còn cho phép nhà phát triển nhập bất kỳ thư viện Python nào và tích hợp với các hàm Mojo. Bằng cách sử dụng trình thông dịch CPython, Mojo hỗ trợ liền mạch tất cả các mô-đun Python hiện có.

Trong ví dụ sau, chúng tôi đã nhập matplotlib.pyplot và trực quan hóa biểu đồ đường. Với các ví dụ nâng cao, hãy xem Mandelbrot trong Mojo.

from PythonInterface import Python

let plt = Python.import_module("matplotlib.pyplot")

x = [1, 2, 3, 4]
y = [30, 20, 50, 60]
plt.plot(x, y)
plt.show()

Đồ thị đầu ra Mojo

Ai cũng biết Python là ngôn ngữ phổ biến nhất cho AI/ML. Theo học lộ trình nghề nghiệp Machine Learning Scientist with Python sẽ trang bị cho bạn kỹ năng Python cần thiết để ứng tuyển vị trí nhà khoa học máy học.

Lập trình với Mojo Lang

Mojo là siêu tập của Python, tương tự như TypeScript là siêu tập của JavaScript. Ngoài các từ khóa và hàm mới, bất kỳ lập trình viên Python nào cũng có thể hiểu và xây dựng chương trình bằng Mojo.

Trong phần này, chúng ta sẽ xem các tính năng lập trình của Mojo giúp nó vừa hiệu năng vừa an toàn.

Lập trình cấp thấp

Mojo là ngôn ngữ lập trình cấp cao cung cấp quyền truy cập vào các nguyên thủy cấp thấp thông qua MLIR (Multi-Level Intermediate Representation) — một định dạng biểu diễn trung gian có thể mở rộng. Điều này cho phép lập trình viên Mojo triển khai các trừu tượng hóa không tốn chi phí đồng thời tận dụng các tối ưu hóa mạnh mẽ của trình biên dịch.

Tối ưu hóa tiling và autotune

Mojo có công cụ tối ưu hóa tiling tích hợp, cải thiện tính cục bộ của bộ nhớ đệm và mẫu truy cập bộ nhớ bằng cách chia phép tính thành các ô (tile) nhỏ hơn phù hợp với bộ nhớ đệm nhanh.

Mô-đun Autotune trong Mojo cung cấp các giao diện cho biên dịch thích ứng. Nó giúp bạn tìm các tham số tốt nhất cho phần cứng đích bằng cách tự động tinh chỉnh mã của bạn.

Sở hữu và mượn

Mojo sử dụng hệ thống sở hữu và mượn để quản lý bộ nhớ, loại bỏ nhu cầu về bộ gom rác và đảm bảo hiệu năng thời gian chạy ổn định. Trình biên dịch của Mojo phân tích vòng đời biến thông qua phân tích tĩnh và giải phóng dữ liệu ngay khi không còn được sử dụng.

Quản lý bộ nhớ thủ công

Mojo cũng cung cấp hệ thống quản lý thủ công bằng con trỏ tương tự C++ và Rust.

Nhân ma trận trong Mojo

Trong ví dụ Nhân ma trận, chúng tôi nhận thấy việc nhập mã Python vào Mojo giúp tăng hiệu năng 17,5 lần.

Bằng cách bổ sung kiểu cho phần triển khai Python, hiệu năng còn được cải thiện mạnh mẽ hơn nữa, lên tới 1866,8 lần.

Ngoài ra, họ sử dụng các kỹ thuật như Vectorizing, Parallelizing, Tiling và Autotuning để đạt mức tăng hiệu năng 14050,5 lần. Thật ấn tượng. Ngay cả Julia và Rust cũng khó đạt mức tối ưu hóa này.

Ví dụ mã Mojo Lang

Trong ví dụ về ô tô này, chúng ta sẽ tạo một lớp CAR với cú pháp Mojo.

  1. Chúng ta sẽ tạo lớp CAR bằng struct.
  2. Khởi tạo biến có thể thay đổi bằng var.
  3. Đặt kiểu cho biến. ‘speed’ là Float32 và ‘model’ là String. String không phải kiểu dựng sẵn, nên chúng ta phải nhập nó.
  4. Chúng ta sẽ tạo hai hàm khởi tạo tương tự Python nhưng dùng hàm fn. Một hàm chỉ có tốc độ xe và một hàm có cả tốc độ và mẫu xe.
  5. Sau đó, tạo một đối tượng CAR với tốc độ 300.
  6. In mẫu xe.
from String import String

struct CAR:
    var speed: Float32
    var model: String

    fn __init__(inout self, x: Float32):
        """Car with only speed"""
        self.speed = x
        self.model = 'Base'

    fn __init__(inout self, r: Float32, i: String):
        """Car with Speed and model"""
        self.speed = r
        self.model = i

my_car=CAR(300)
print(my_car.model)
Base

Như bạn có thể thấy, phong cách và chức năng lập trình của Mojo tương tự Python. Nó hoạt động như một phần mở rộng của Python, tăng cường khả năng hiệu năng và quản lý bộ nhớ. Với Mojo, bạn có thể huấn luyện mô hình nhanh chóng, đạt suy luận mô hình nhanh hơn (kể cả với CPU), phân tích bộ dữ liệu khổng lồ trong vài giây và mô phỏng theo thời gian thực.

Bạn có thể xem tất cả ví dụ mã trên Modular Docs và chạy chúng trên sổ tay Jupyter trong playground.

Mojo có thay thế Python không?

Hiện tại, thật khó để xác định tiềm năng của Mojo như một ngôn ngữ lập trình tổng quát do đang ở giai đoạn phát triển sớm và thiếu các tính năng cần thiết. Tuy nhiên, nó có thể vượt trội hơn Python trong các ứng dụng học máy và AI, nơi hiệu năng cao là then chốt.

Dù vậy, khó có khả năng Mojo sẽ sớm thay thế hoàn toàn vai trò dẫn đầu của Python trong khoa học dữ liệu và các lĩnh vực phát triển phần mềm khác.

Mojo được thiết kế chuyên biệt cho các ứng dụng học máy và không nhắm đến các lĩnh vực khác như backend web, tự động hóa quy trình hay thiết kế web. Dù nhà phát triển có thể mở rộng khả năng trong tương lai, trọng tâm hiện tại của Mojo là tối ưu cho các ứng dụng học máy.

Ngoài ra, cũng cần lưu ý rằng Mojo có số lượng mô-đun và thư viện hạn chế so với Python, vốn được hưởng lợi từ cộng đồng nhà phát triển lớn liên tục tạo ra các công cụ mới và cải tiến cho AI và khoa học dữ liệu. Sẽ mất nhiều năm để Mojo bắt kịp mức độ phát triển của Python.

Tìm hiểu cách các mô hình AI tạo sinh được phát triển và cách chúng sẽ tác động đến xã hội trong thời gian tới bằng cách tham gia khóa học Generative AI Concepts của DataCamp.

Kết luận

Tóm lại, dù Mojo đầy hứa hẹn như một ngôn ngữ nhanh, tương thích với Python và được điều chỉnh cho AI/ML, nhưng khó có khả năng thay thế hoàn toàn Python trong tương lai gần. Python có lợi thế từ hệ sinh thái đồ sộ, cộng đồng mạnh và vị thế vững chắc trong khoa học dữ liệu và ML. Ở kịch bản tốt nhất, Mojo có thể trở thành ngôn ngữ bổ trợ cho Python, được dùng ở nơi tốc độ là yếu tố sống còn.

Trong hướng dẫn này, chúng ta đã xem lại các tính năng và cú pháp của ngôn ngữ lập trình Mojo cùng các ví dụ mã. Chúng ta cũng so sánh với Python xét trên các yếu tố như hiệu năng, cú pháp, chức năng và khả năng tương thích. Với những ai muốn nắm vững nền tảng AI và Machine Learning, chúng tôi khuyến nghị đăng ký lộ trình Machine Learning Fundamentals with Python.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Là một nhà khoa học dữ liệu được chứng nhận, tôi đam mê tận dụng công nghệ tiên tiến để tạo ra các ứng dụng học máy đổi mới. Với nền tảng vững chắc về nhận dạng giọng nói, phân tích và báo cáo dữ liệu, MLOps, AI hội thoại và NLP, tôi đã rèn giũa kỹ năng phát triển các hệ thống thông minh có thể tạo ra tác động thực sự. Bên cạnh chuyên môn kỹ thuật, tôi cũng là một người truyền đạt tốt, có khả năng chắt lọc các khái niệm phức tạp thành ngôn ngữ rõ ràng, súc tích. Nhờ đó, tôi trở thành một blogger được nhiều người quan tâm trong lĩnh vực khoa học dữ liệu, chia sẻ góc nhìn và kinh nghiệm với cộng đồng các chuyên gia dữ liệu ngày càng lớn. Hiện tại, tôi tập trung vào sáng tạo và biên tập nội dung, làm việc với các mô hình ngôn ngữ lớn để phát triển nội dung mạnh mẽ và hấp dẫn, giúp doanh nghiệp và cá nhân tận dụng tối đa dữ liệu của mình.

Chủ đề
Trí tuệ Nhân tạo
Python

Học các chủ đề được nhắc đến trong hướng dẫn này!

Khóa học

Các khái niệm về Generative AI

2 giờ
119.7K
Tìm hiểu cách ứng dụng AI tạo sinh có trách nhiệm. Tìm hiểu cách phát triển các mô hình AI tạo sinh và tác động của chúng đến xã hội trong tương lai.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm