はじめに 🚀

Mojoは、ModularによるAI重視の先駆的なプログラミング言語で、Pythonのユーザーフレンドリーなシンタックスとシステムおよびメタプログラミング機能を融合しています。Cの速度、Pythonエコシステムとの相互運用性、そしてポータビリティを提供します。ModularのMojoは、Pythonの豊富なライブラリエコシステムを活用する利点を加えて、効率的で強力でアクセスしやすいAI開発を可能にします。


機能 Mojo Python
シンタックス Pythonに似ているが、いくつかの違いがある 親しみやすくシンプルだが、時に冗長
メタプログラミング マクロ、テンプレート、DSLをサポート デコレータ、ジェネレータ、evalをサポート
システムプログラミング 低レベルコードの操作をサポート 低レベルコードには外部ライブラリやモジュールが必要
Python相互運用性 あらゆるPythonモジュールや関数のインポートをサポート 該当なし
パフォーマンス Cより高速なネイティブマシンコードにコンパイル Cより遅いバイトコードに解釈またはコンパイル

Mojoは、AIプログラミングの限界に正面から取り組みます!Pythonは人気がありますが、パフォーマンスと並列処理に苦労しています。CとC++は高速ですが複雑で、Julia、Rust、Swiftは有望ですが、ユーザーベースとライブラリはまだ成長中です🌱。


私たちのヒーローMojoは、Pythonの使いやすさとCの速度を組み合わせています⚡。Python風のシンタックスで、学習と記述が簡単です。Mojoのメタプログラミングにより、DSL、マクロ、テンプレートなどを作成するためのコードをその場で生成または修正できます🔄!システムプログラミングにより、Mojoでハードウェアやオペレーティングシステムをいじることができます🔧。さらに、MojoのPython相互運用性により、任意のPythonライブラリやモジュールを使用できます🐍。


Mojoの利点:

  • Pythonより高速で効率的
  • CとC++よりシンプルで簡単
  • 他の言語より表現力が豊かで強力
  • Pythonとの互換性と相互運用性

Mojoの欠点:

  • まだ開発中でオープンソース化されていない
  • いくつかの鋭い部分と不足している機能がある
  • Pythonより小さいコミュニティとリソース

Mojoプレイグラウンド 🎮

Mojoはまだ開発中でオープンソース化されていないため、ローカルのコンピュータにインストールすることはできません。ただし、Mojoの初期バージョンでコーディングを試すことができるホスト型JupyterHubであるMojoプレイグラウンドにアクセスできます。

Mojoプレイグラウンドにアクセスすると、新しいノートブックを作成してMojoコードを書き始めることができます。また、Pythonと同様に、ターミナルからMojoプログラムを実行することもできます。

322321-2.png

Mojoプレイグラウンドには、Web開発、科学計算、ゲーム開発、システムプログラミング、人工知能などの様々なタスクにMojoを使用する方法を示すJupyterノートブックも用意されています。これらは以下で見つけることができます:https://docs.modular.com/mojo/notebooks


Mojoプログラムの例 🖊️

JupyterLabからの例プログラムを紹介します

基本的な拡張機能

Pythonはネイティブにシステムプログラミングをサポートしていないため、Mojoでは以下のように行います。

letvar宣言

関数内では、Pythonと同様に、名前に値を割り当てると暗黙的に関数スコープの変数が作成されます。これは、コードを書くための非常に動的で儀式の少ない方法を提供しますが、2つの理由で課題となります:

  1. システムプログラマーは、値が不変であることを宣言したいことがよくあります。
  2. 代入で変数名を誤入力した場合にエラーを得たい場合があります。

これをサポートするために、Mojoは新しいスコープ付きランタイム値を導入するletvar宣言をサポートしています:letは不変で、varは可変です。これらの値は字句スコープを使用し、名前の隠蔽をサポートします:

1
2
3
4
5
6
7
8
9
10
11
def your_function(a, b):
let c = a
# エラーを確認するにはコメントを解除:
# c = b # エラー:cは不変

if c != b:
let d = b
print(d)

your_function(2, 3)
3

letvar宣言は、型指定子、パターン、遅延初期化もサポートしています:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def your_function():
let x: Int = 42
let y: F64 = 17.0

let z: F32
if x != 0:
z = 1.0
else:
z = foo()
print(z)

def foo() -> F32:
return 3.14

your_function()
1.000000

Mojoについてもっと学ぶ 📚

Mojoについてもっと学びたい場合は、以下のリソースをチェックしてください:

著者:New Bing、GPT4、One