ΠΡΠΈΡ ΠΠ°ΡΠ½Π΅Ρ (Chris Lattner), ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π» ΠΈ Π³Π»Π°Π²Π΅Π½ Π°ΡΡ ΠΈΡΠ΅ΠΊΡ Π½Π° LLVM, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΡΠ·Π΄Π°ΡΠ΅Π» Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈΡ Π΅Π·ΠΈΠΊ Swift, ΠΈ Π’ΠΈΠΌ ΠΠ΅ΠΉΠ²ΠΈΡ (Tim Davis), Π±ΠΈΠ²Ρ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π» Π½Π° AI ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π² Google, ΠΊΠ°ΡΠΎ Tensorflow ΠΈ JAX, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡ Π° Π½ΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈΡ Π΅Π·ΠΈΠΊ Mojo, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ΅ΡΠ°Π²Π° ΠΏΡΠΎΡΡΠΎΡΠ° Π·Π° Π½Π°ΡΡΠ½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π±ΡΡΠ·ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠΎΡΡ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ. ΠΡΡΠ²ΠΎΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ·Π½Π°ΡΠ°ΡΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° Python, Π° Π²ΡΠΎΡΠΎΡΠΎ ΡΡΠ΅Π· Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π² ΠΌΠ°ΡΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π°Π½Π³Π°ΠΆΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡΡΠ°.
ΠΡΠΎΠ΅ΠΊΡ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΎΠΊ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠ΅ΠΏΠΎΠ΄Π½ΠΎΡΠΈΡΡΡ ΠΊΠ°ΠΊ ΡΠ·ΡΠΊ ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠ°ΡΡΠΈΡΡΡΡΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° Python ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π΄Π»Ρ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ ΠΊΡΡΠ³Π° Π·Π°Π΄Π°Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ·ΡΠΊ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ, ΠΊΠ°ΠΊ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ . ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ Mojo ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΡ emoji-ΡΠΈΠΌΠ²ΠΎΠ»Π° Β«π₯Β» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΊΠΎΠ΄ΠΎΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«helloworld.π₯Β»), ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Β«.mojoΒ».
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅Π·ΠΈΠΊΡΡ Π΅ Π² Π΅ΡΠ°ΠΏ Π½Π° ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΈ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΡΠ°ΠΌΠΎ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π‘Π°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ, ΡΠ»Π΅Π΄ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΎΡΠ·ΠΈΠ²ΠΈ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°ΡΠ° ΡΠ΅Π± ΡΡΠ΅Π΄Π°. ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ°, JIT ΠΈ Π΄ΡΡΠ³ΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠ»Π°Π½ΠΈΡΠ°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΡΠ»Π΅Π΄ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²ΡΡΡΠ΅ΡΠ½Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° (ΠΌΠΎΠ΄Π΅Π»ΡΡ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π·Π°Π΄ Π·Π°ΡΠ²ΠΎΡΠ΅Π½ΠΈ Π²ΡΠ°ΡΠΈ Π½Π°ΠΏΠΎΠΌΠ½Ρ Π½Π° Π½Π°ΡΠ°Π»Π½ΠΈΡ Π΅ΡΠ°ΠΏ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° LLVM, Clang ΠΈ Swift). Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡΡ Π½Π° Mojo Π΅ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° Python, Π° ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π΅ Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ C/C++, Π² Π±ΡΠ΄Π΅ΡΠ΅ Π΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π·Π° ΡΠ»Π΅ΡΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°Π½ΡΠ»Π°ΡΠΈΡΡΠ° Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° C/C++ ΠΈ Python, ΠΊΡΠΌ Mojo, Π° ΡΡΡΠΎ ΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Ρ ΠΈΠ±ΡΠΈΠ΄Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠΈ ΠΊΠΎΠ΄ Π½Π° Python ΠΈ Mojo.
ΠΡΠΎΠ΅ΠΊΡΡΡ Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½ Π΄Π° ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π½Π° Ρ Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° Mojo ΠΈ ΡΠ°Π·ΠΏΠ°ΡΠ°Π»Π΅Π»ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ GPU, ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΡΠΊΠΎΡΠΈΡΠ΅Π»ΠΈ Π·Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° (SIMD). ΠΡΠΈΡΠΈΠ½Π°ΡΠ° Π·Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π° Π΅Π·ΠΈΠΊΠ° Python, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡ CPython, Π΅ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° ΠΊΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΡΠ° Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ²ΡΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½Π° Π²ΡΡΡΠ΅ΡΠ½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° GPU ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ ΡΡΠΊΠΎΡΠΈΡΠ΅Π»ΠΈ. ΠΡΠΈ ΡΠΎΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Mojo ΡΠ° ΡΠ΅ΡΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΡΡΡΠ΅ΠΌΡΡ, Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΡΠΌ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ CPython.
Mojo ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡΠΎ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΎΠ½Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Ρ JIT, ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π² ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (AOT, ahead-of-time). ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ Π²Π³ΡΠ°ΠΆΠ΄Π° ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ. ΠΡΡ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° Π΅Π·ΠΈΠΊΠ° Mojo ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° Π² Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π² ΠΊΠΎΠ΄ MLIR (ΠΠ½ΠΎΠ³ΠΎΡΡΠ΅ΠΏΠ΅Π½Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½Π° ΡΠ΅ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ), ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° LLVM, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π³ΡΠ°ΡΠ° Π½Π° ΠΏΠΎΡΠΎΠΊΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ. ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ MLIR.
ΠΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡΡΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, ΠΊΠΎΡΡΠΎ ΠΏΡΠΈ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΈ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π½Π° C/C++. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΎΡ ΠΠ°Π½Π΄Π΅Π»Π±ΡΠΎΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Mojo, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ΠΎ Π² ΠΎΠ±Π»Π°ΠΊΠ° AWS (r7iz.metal-16xl), ΡΠ΅ ΠΎΠΊΠ°Π·Π° 6 ΠΏΡΡΠΈ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° C++ (0.03 ΡΠ΅ΠΊ. ΡΠΏΡΡΠΌΠΎ 0.20 ΡΠ΅ΠΊ.), ΠΊΠ°ΠΊΡΠΎ ΠΈ 35 Ρ ΠΈΠ»ΡΠ΄ΠΈ ΠΏΡΡΠΈ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Python Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ CPython 3.10.9 (0.03 ΡΠ΅ΠΊ. ΡΠΏΡΡΠΌΠΎ 1027 ΡΠ΅ΠΊ.) ΠΈ 1500 ΠΏΡΡΠΈ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° PYPY (0.03 ΡΠ΅ΠΊ. ΡΠΏΡΡΠΌΠΎ 46.1 ΡΠ΅ΠΊ.).
ΠΡΠΈ ΠΎΡΠ΅Π½ΠΊΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, AI-ΡΡΠ΅ΠΊ Modular Inference Engine, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ Mojo, ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° Π±Π°Π·Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ TensorFlow ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ Intel Π² 3 ΡΠ°Π·Π° Π±ΡΡΡΡΠ΅Π΅ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π² 6.4 ΡΠ°Π·Π° Π±ΡΡΡΡΠ΅Π΅ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ ΠΈ Π² 2.1 ΡΠ°Π·Π° Π±ΡΡΡΡΠ΅Π΅ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² AMD Π²ΡΠΈΠ³ΡΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Mojo ΡΠΎΡΡΠ°Π²ΠΈΠ» 3.2, 5 ΠΈ 2.2 ΡΠ°Π·Π°, Π° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ARM β 5.3, 7.5 ΠΈ 1.7 ΡΠ°Π·, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π΅ PyTorch ΠΎΡΡΡΠ°Π»ΠΎ ΠΎΡ Mojo Π² 1.4, 1.1 ΠΈ 1.5 ΡΠ°Π· Π½Π° CPU Intel, Π² 2.1, 1.2 ΠΈ 1.5 ΡΠ°Π· Π½Π° CPU AMD ΠΈ Π² 4, 4.3 ΠΈ 1.3 ΡΠ°Π·Π° Π½Π° CPU ARM.

ΠΠ·ΠΈΠΊΡΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΡΠ°ΡΠΈΡΠ½Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΡΠ²Π°ΡΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, ΠΊΠ°ΡΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΆΠΈΠ²ΠΎΡ Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π·Π°Π΅ΠΌΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ (borrow checker). ΠΡΠ²Π΅Π½ ΡΡΠ΅Π΄ΡΡΠ²Π°ΡΠ° Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, Π² Π΅Π·ΠΈΠΊΠ° ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π° ΡΠ°Π±ΠΎΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌ unsafe Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΠΏΠ° Pointer, ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ SIMD ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΡΠΎ TensorCores ΠΈ AMX.

ΠΠ»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Python-ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΡΠ²Π½ΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠΎΠ² Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Β«fnΒ» Π²ΠΌΠ΅ΡΡΠΎ Β«defΒ». ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ
Π² ΠΏΠ°ΠΌΡΡΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (ΠΊΠ°ΠΊ Π² Π‘ΠΈ) Π²ΠΌΠ΅ΡΡΠΎ Β«classΒ» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΏ Β«structΒ». Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠΌΠΏΠΎΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π½Π° ΡΠ·ΡΠΊΠ°Ρ
C/C++, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ cos ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ math ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Β«from Β«math.hΒ» import cosΒ».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
