Mojo é uma linguagem de programação inovadora que combina a usabilidade do Python com o desempenho do C. Ele pretende ser a linguagem de escolha para o desenvolvimento de inteligência artificial (IA), pois permite que os desenvolvedores escrevam códigos rápidos e fáceis de ler.
Aqui estão alguns pontos-chave,
- Modular é uma nova linguagem de programação projetada para enfrentar os desafios de programação de toda a pilha de IA.
- O Mojo pretende ser um modelo de programação inovador e extensível que pode atingir aceleradores e outros sistemas heterogêneos.
- O Mojo é construído sobre o ecossistema Python, o que o torna amplamente disponível e fácil de usar.
Por que se chama Mojo?
Mojo significa "encanto mágico" ou "poder mágico". O nome é apropriado para a linguagem que traz o poder mágico do Python, incluindo modelos de programação inovadores para aceleradores e outros sistemas heterogêneos onipresentes na IA.
Um membro da família Python, Mojo
Mojo é uma nova linguagem de programação projetada para ser totalmente compatível com o ecossistema Python.
- Fornecerá desempenho previsível de baixo nível e controle de baixo nível.
- Permitirá que os desenvolvedores implantem subconjuntos de código para aceleradores.
- Não cria um ecossistema de software fragmentado.
- Irá se beneficiar de aulas em outros idiomas.
- será um superconjunto do Python e será compatível com os programas Python existentes.
- Novas ferramentas serão fornecidas para desenvolver códigos de nível de sistema seguros e de alto desempenho.
- Permitirá aos desenvolvedores escolher entre digitação estática e digitação dinâmica.
Benefícios do Python:
Python é uma força dominante em ML e em inúmeros outros campos.
Python é fácil de aprender, é conhecido por um grupo significativo de programadores, possui uma comunidade incrível, possui um grande número de pacotes valiosos e possui uma ampla variedade de ótimas ferramentas.
O Python oferece suporte ao desenvolvimento de APIs bonitas e expressivas por meio de seus recursos de programação dinâmica.
Estruturas de aprendizado de máquina como TensorFlow e PyTorch usam Python como um front-end para seus tempos de execução de alto desempenho implementados em C++.
Para Modular, o Python é parte integrante de sua pilha de superfície de API.
A equipe da Modularity quer que as pessoas no ecossistema Python vejam que seu objetivo Mojo é levar o Python ao próximo nível - completá-lo - em vez de competir com ele.
Compatibilidade com Python
Mojo 旨在与 Python 生态系统完全兼容。兼容性有两种类型:导入兼容性和迁移兼容性。
Mojo 与 Python 100% 导入兼容,因为它使用 CPython 实现互操作性。但 Mojo 尚未完全与 Python 兼容。
就 Python 和 Mojo 而言,Mojo 期望直接与 CPython 运行时合作,并具有与 CPython 类和对象集成的类似支持,而无需自行编译代码。
这提供了与现有代码的庞大生态系统的插件兼容性,并且它支持渐进式迁移方法,在该方法中,向 Mojo 的增量迁移会产生增量收益。
Python 的问题
Python 有一些众所周知的问题,包括糟糕的底层性能和全局解释器锁 (GIL),这使得 Python 成为单线程的。这些问题在通常需要高性能和多线程能力的 AI 领域影响尤其大。
解决这些问题的一种方法是使用混合库,它们是使用 Python 和 C/C++ 的组合构建的。但是,构建混合库很复杂,需要 Python 和 C/C++ 的知识。这会使大型框架的发展变得困难,并可能导致可用性问题。
此外,必须同时处理 Python 和 C/C++ 代码的两个世界问题可能会导致难以使用调试器和其他工具。这对于 AI 开发人员来说尤其成问题,他们经常需要使用像 CUDA(计算统一设备架构)这样的加速器。
CUDA(计算统一设备架构)是一种定制的编程语言,有其自身的特殊问题和局限性。
AI 世界在硬件方面有大量的创新,因此,复杂性正在失控。现在有几种尝试为加速器(OpenCL、Sycl、OneAPI 等)构建有限的编程系统。
然而,这些系统都没有解决工具和生态系统中严重损害行业的基本碎片化问题。 Mojo 旨在通过提供一种可用于系统编程和 AI 开发的统一语言来解决这些问题。
Mojo 仍在开发中,但它有可能彻底改变人工智能行业。
移动和服务器部署:
Python 生态系统的另一个挑战是部署。这有很多方面,包括如何控制依赖关系、如何部署密封编译的“a.out”文件以及如何提高多线程和性能。
Python 子集和其他类似 Python 的语言:
已经有很多构建可部署 Python 的尝试,例如 PyTorch 项目中的 TorchScript。
这些语言很有用,因为它们通常提供低依赖性部署解决方案,有时还具有高性能。它们使用类似 Python 的语法,这使得它们比一门新语言更容易学习。
但是,这些语言并未得到广泛采用,因为它们:
- 不与 Python 生态系统互操作
- 没有出色的工具(例如调试器)
- 单方面更改 Python 中不方便的行为,这会破坏兼容性并进一步分割生态系统
这些方法的挑战在于它们试图解决 Python 的一个弱点,但它们在 Python 的强项上并不擅长。
充其量,它们可以提供 C 和 C++ 的新替代方案,但如果不解决 Python 的动态用例,它们就无法解决“两个世界问题”。
这种方法导致碎片化,不兼容性使迁移变得困难甚至不可能。