back to blog

Modular Mojo: Write all your code for AI in one language

Read Time 6 mins | Written by: Cole

Up until now, building AI/ML infrastructure required a complex family of programming languages. But no existing language could solve the challenges in AI compute. That’s why Modular decided to develop Mojo. Now your AI/ML teams can write code for everything down to the servers in one language to utilize the full power of the hardware.


Mojo combines the usability of Python with the performance of C. According to its creators, Mojo can be up to 35,000 times faster than Python in certain scenarios, e.g. training deep neural networks. Our senior AI/ML software engineers are excited about Mojo, and it has serious potential to transform the way everyone builds enterprise AI/ML solutions. 

What is Modular Mojo?

Modular Mojo is a new programming language that combines the usability of Python with the speed of C. It was developed by Modular, an AI infrastructure company. Mojo has several features that set it apart from other AI programming languages:

  1. Native support for AI and machine learning tasks
  2. Simplified syntax and high-level abstractions
  3. Integration with popular AI frameworks and libraries
  4. Efficient data handling and manipulation capabilities
  5. Scalability and parallel computing support

The goals for Mojo include full compatibility with the Python ecosystem, predictable low-level performance and low-level control, and the ability to deploy subsets of code to accelerators. 

Mojo’s creators didn't want to create a fragmented software ecosystem, and they didn't want Python users who adopt Mojo to draw comparisons to the painful migration from Python 2 to 3. Mojo is a brand-new code base, but it’s not starting from scratch conceptually. By embracing Python, the creators of Mojo were able to focus their efforts on building Mojo’s compilation model and systems programming features. They also learned from other languages like Rust, Swift, Julia, Zig, Nim, etc., and leveraged the existing MLIR compiler ecosystem.

Use cases for Modular Mojo 

Mojo can be used for everything from ML/AI infrastructure to the web apps that run on top of it all. Mojo even comes with its own web framework called Mojolicious, which provides a complete set of tools and features for developing sophisticated web applications.


Mojo is also great for API development and can be used for task automation. Here’s a short list of current use cases:

  1. AI app web development: Mojo provides a simple and intuitive syntax for developing web applications. It comes with its own web framework called Mojolicious, which provides a complete set of tools and features for developing sophisticated web applications.
  2. AI/ML API development: Mojo has efficient data handling and manipulation capabilities, which can be useful when working with large amounts of data in APIs.
  3. AI/ML task automation: Mojo provides a simple and intuitive syntax for developing scripts and programs to automate tasks. It also has integration with popular AI frameworks and libraries, which can be useful when developing more complex automation tasks that involve machine learning or other AI techniques.
  4. Scientific computing: Mojo has strong support for complex computations and numerical operations that make scientific computing possible.
  5. Data science and machine learning: Mojo can be up to 35,000 times faster than Python. It provides scalability and parallel computing support, which is needed when training large machine learning models.

Benefits of Modular Mojo for AI dev teams

Adopting new languages is no small move. As a CTO, CIO, or VP of Engineering you might hear your AI/ML software engineers talking about mojo but not be sure why you should support the change. Overall, the features of Mojo could benefit your AI engineering teams by providing a more efficient and streamlined development process for AI-powered applications. That means more AI capabilities, faster. 

Here’s how Mojo makes it possible to design and build AI infrastructure and apps in a way that could lead to cost savings, happier development teams, and high-quality customer experiences:

  • Compatibility with Python: Mojo is designed to be compatible with the Python ecosystem and aims to provide a superset of Python. This means Mojo intends to be compatible with existing Python programs and to embrace the CPython implementation for long-tail ecosystem support. 

    The goal is for Python programmers to find Mojo immediately familiar while also providing new tools to develop safe and performant systems-level code that would otherwise require C and C++ below Python​.

  • Innovation in compiler technology: Mojo is designed to innovate in compiler internals and support for current and emerging accelerators. This is because traditional compiler technologies like LLVM and GCC were not suitable for the challenges in AI compute faced by Modular. 

    Instead, Mojo is designed expressly for MLIR, a relatively new open-source compiler infrastructure started at Google that has been widely adopted across the machine learning accelerator community. This makes Mojo uniquely powerful when writing systems-level code for AI workloads​.

  • Language for AI/ML infrastructure: Mojo was created to unify the world’s ML/AI infrastructure, addressing the complexities of programming across the entire stack. The language targets accelerators and other heterogeneous systems that are pervasive in the AI field and has powerful compile-time metaprogramming, integration of adaptive compilation techniques, and caching throughout the compilation flow​.

  • Python features: Python's features that led to its selection as the base for Mojo include its ease of learning, its widespread knowledge among programmers, its vibrant community, its rich package ecosystem, and its variety of good tooling. 

    Python's dynamic programming features, which support the development of expressive APIs, and its simple and composable abstractions were also factors. Python is a non-negotiable part of Modular's API surface stack, which led to a "Python-first" approach when developing Mojo​.

  • Static and dynamic typing: Mojo allows the programmer to decide when to use static or dynamic typing. This is part of the goal to achieve predictable low-level performance and low-level control, and the ability to deploy subsets of code to accelerators without creating a fragmented software ecosystem​.

  • High performance and low-level control: Mojo aims to provide predictable low-level performance and control, allowing programmers to manage memory and concurrency directly, similar to languages like C and C++. This makes it suitable for systems programming and allows for the development of high-performance AI and ML applications.​

  • Active development: Mojo is a relatively new language under active development. Therefore, it's expected that its capabilities and ecosystem will continue to evolve over time

How does Mojo compare to other programming languages?

Mojo might be the only language that has native support for AI and machine learning tasks while providing simplified syntax and high-level abstractions. It also has integration with popular AI frameworks and libraries.


It has an astonishing 35,000x speed advantage over Python in certain tasks – substantially outpacing competitors like PyPy, Scalar, and C++ 2.


Mojo has efficient data handling and manipulation capabilities and provides scalability and parallel computing support. It leverages multi-level intermediate representation (MLIR) to scale various hardware types – including GPUs running CUDA and similar hardware, without adding complexity. Mojo’s design also ensures portability across several hardware platforms and specialized accelerators.


As a Python superset, Mojo offers smooth access to Python libraries like NumPy. This means that you can jump into AI development using tools you’re already familiar with.


While traditional languages like Python and Java have been adapted for AI, they often require additional libraries and frameworks. Mojo was built with AI in mind, simplifying the development process and reducing the learning curve.

 

How do I get started with Modular Mojo?

To get started with the Mojo programming language, get one of your senior AI/ML software engineers to sign up for their Playground and try it out. You can also read through their digestible documentation to learn more about Mojo’s capabilities

If you want an expert opinion on whether or not it makes sense to adopt Mojo at your company, just send us a message. We’d love to talk with you about it. No strings or expectations, just get the answers you need

Don't Miss
Another Update

Subscribe to be notified when
new content is published
Cole

Cole is Codingscape's Content Marketing Strategist & Copywriter.