Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
In Développement Dernière mise à jour : 25 juin 2023
Partager sur:
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Pour l'apprentissage automatique et l'intelligence artificielle, Python est toujours apparu comme le langage de programmation dominant, avec de puissantes bibliothèques telles que NumPy, TensorFlow et PyTorch. Mais une vérification rapide des pages GitHub de ces bibliothèques vous montrera qu'une grande partie de leur code source est écrite en C et C++.

C'est parce que Python est trop lent pour l'IA. Mojo est un nouveau langage de programmation qui tente de combiner la vitesse de C/C++ avec l'élégance de Python.

Mojo: An Overview

YouTube vidéo

Mojo est un nouveau langage de programmation qui est syntaxiquement similaire à Python mais qui a la vitesse de C. Il est principalement destiné à Intelligence artificielle et le développement de systèmes, qui sont tous deux des domaines qui nécessitent des logiciels performants.

Il utilise le paradigme SIMD - Single Instruction, Multiple Data pour tirer parti du parallélisme. Il est également compilé juste-à-temps et économe en mémoire.

Mojo, cependant, n'est pas une langue complètement nouvelle ; c'est un sur-ensemble de Python. Cela signifie qu'il s'agit de Python plus des fonctionnalités supplémentaires. Semblable à la façon dont TypeScript étend JavaScript. C'est bien parce que si vous connaissez déjà Python, il ne devrait pas être trop difficile de prendre Mojo.

Mojo est développé par Modular, une société fondée par Chris Lattner - le créateur de LLVM et du langage de programmation Swift.

En conclusion, Mojo est un nouveau langage de programmation conçu pour être syntaxiquement similaire à Python mais aussi rapide que C/C++. Il est destiné à être utilisé dans le développement de l'IA et la programmation des systèmes. Bien que le projet ne soit pas terminé, il est incroyablement prometteur, et dans la section suivante, nous expliquerons pourquoi.

Features of Mojo Over Other Programming Languages

Mojo est devenu incroyablement populaire même s'il n'est pas encore accessible au public. En effet, il comporte plusieurs avantages significatifs par rapport aux autres langages de programmation lors de l'exécution Machine Learning et la création de logiciels au niveau du système. Dans cette section, nous allons discuter de ces avantages.

# 1. Prise en charge native des tâches d'IA et d'apprentissage automatique

Mojo est destiné au développement d'applications d'intelligence artificielle. En conséquence, il est livré avec des fonctions et des modules dans la bibliothèque standard pour la construction les réseaux de neurones, effectuer une vision par ordinateur et préparer des données.

La plupart des langages à usage général comme Python nécessiteraient des bibliothèques supplémentaires pour y parvenir, mais Mojo le prend en charge dès la sortie de la boîte.

# 2. Syntaxe simplifiée et abstractions de haut niveau

Pour écrire un logiciel rapide et efficace, nous aurions normalement besoin d'utiliser des langages comme C, C++ et Rust. Bien que ces langues soient rapides, elles sont plus difficiles à apprendre et à utiliser. C'est parce qu'ils vous obligent à travailler à un niveau bas pour que vous ayez plus de contrôle.

Cependant, Mojo fournit toujours des abstractions de niveau supérieur comme Python et une syntaxe simple. Cela facilite le travail avec d'autres langages comparables en termes de performances.

# 3. Intégration avec les frameworks et bibliothèques d'IA populaires

Comme mentionné précédemment, Mojo n'est pas un langage complètement nouveau - c'est un sur-ensemble de Python. En conséquence, il s'intègre bien avec les bibliothèques existantes telles que NumPy et PyTorch. Cela signifie que, par défaut, Mojo a un écosystème aussi grand que Python.

# 4. Capacités efficaces de traitement et de manipulation des données

Mojo est conçu pour manipuler efficacement plusieurs valeurs en parallèle. Ceci est particulièrement utile lors de l'exécution d'algèbre linéaire, sur laquelle l'apprentissage automatique repose si fortement. Mojo est également compilé juste-à-temps, de sorte que le bytecode est optimisé pour la vitesse. Cela rend le travail avec les données et l'apprentissage automatique efficace dans Mojo.

# 5. Évolutivité et prise en charge du calcul parallèle

Comme mentionné précédemment, Mojo est conçu pour prendre en charge le paradigme Single Instruction – Multiple Data du calcul parallèle. Cela est intégré à Mojo et le rend plus rapide dès la sortie de la boîte. Il surpasse également les bibliothèques Python telles que NumPy.

Key Elements of Mojo

Dans cette section, nous verrons comment écrire des programmes dans Mojo. Étant donné que Mojo est censé être un sur-ensemble de Python, tout comme TypeScript est un sur-ensemble de JavaScript, tout code Python valide est un code Mojo valide, mais tout le code Mojo n'est pas un code Python valide.

Mojo est toujours en cours de développement et certaines fonctionnalités du langage Python ne sont pas encore prises en charge, par exemple les classes. De plus, un compilateur n'est pas encore disponible, mais vous pouvez utiliser Mojo dans un cahier d'aire de jeux. Cependant, vous aurez d'abord besoin d'un compte, que vous pouvez créer sur leur site Web.

Pour le moment, il est difficile de donner un didacticiel complet sur le langage car certaines fonctionnalités doivent encore être ajoutées et tout n'est pas actuellement pris en charge. Au lieu de cela, nous discuterons de certains ajouts clés que Mojo ajoute en plus de ce que Python a déjà.

Syntaxe et grammaire

Parce que Mojo est un sur-ensemble de Python, leurs syntaxes sont identiques. Comme Python, un programme est composé d'instructions. Ces instructions peuvent être regroupées en blocs sous des fonctions, des boucles ou des conditions. Les instructions à l'intérieur d'un bloc sont indentées. Voici un exemple de programme écrit en Mojo :

def odd_or_even():
     for i in range(1, 101):
        if i % 2 == 0:
            print("Even")
        else:
            print("Odd")

odd_or_even()

Ceci est parfaitement identique à un programme Python. Cependant, Mojo propose des fonctionnalités supplémentaires que vous verrez dans les sections à suivre.

Déclarations de variables

Avec Mojo, vous avez deux façons supplémentaires de déclarer des variables. Vous pouvez utiliser soit le let or var mot-clé. le let Le mot clé déclare une variable immuable. Une fois initialisé, vous ne pouvez pas réaffecter sa valeur à autre chose. En revanche, les variables déclarées à l'aide de var peuvent être réaffectés car ils sont modifiables.

Le principal avantage des variables déclarées en utilisant let or var est qu'ils prennent en charge les spécificateurs de type. L'exemple suivant illustre comment les variables sont déclarées dans Mojo.

let pi: Float64 = 3.141
var greeting = "Hello, World"

# This would be impossible
# pi = 6.283

# But this is possible
greeting = "Ola"

print(pi, greeting)

Structures

De plus, pour une manière différente de déclarer les variables, Mojo prend en charge les structures. Une façon simple de visualiser les structures est qu'elles ressemblent à des classes, sauf qu'elles sont plus rigides. Contrairement aux classes, vous ne pouvez pas ajouter/supprimer ou modifier des méthodes pendant l'exécution, et tous les membres doivent être déclarés à l'aide de la var or let mots clés. Cette structure plus rigide permet à Mojo de gérer plus efficacement la mémoire et les performances. Voici un exemple de structure :

struct Person:
    var name: StringLiteral
    var age: Int32
    
    fn __init__(inout self, name: StringLiteral, age: Int32):
        self.name = name
        self.age = age


john = Person("John Doe", 32)
print(john.name, john.age)

Les fonctions

À partir de la structure ci-dessus, vous avez peut-être remarqué que nous avons déclaré le __init__ méthode utilisant le mot-clé fn au lieu de def. C'est parce que, dans Mojo, vous pouvez déclarer des fonctions en utilisant fn , def. Une fonction déclarée en utilisant fn est plus strict par rapport à son def homologue.

Plus précisément, une fonction déclarée à l'aide de fn a ses arguments immuables par défaut. De plus, vous devez spécifier le type de données des arguments et la valeur de retour de la fonction. Toutes les variables locales doivent être déclarées avant utilisation.

fn say_hello(name: StringLiteral):
    print("Hello,", name)
    
# This would be invalid
# fn say_hello(name):
#     print("Hello,", name)

say_hello("John")

Si la fonction lève une exception, elle doit être explicitement indiquée lors de la déclaration de la fonction à l'aide de la raises mot-clé. De plus, Mojo n'utilise pas la classe Exception comme le fait Python, mais plutôt la classe Error.

fn will_raise_error() raises:
    raise Error('Some error')
    
will_raise_error()

Surcharge

Mojo prend également en charge les opérateurs de surcharge basés sur différents types de données. Cela prend en charge le principe orienté objet du polymorphisme.

fn add_numbers(a: Int32, b: Int32) -> Int32:
    return a + b

fn add_numbers(a: Int32, b: Int32, c: Int32) -> Int32:
    return a + b + c

let first_total = add_numbers(2, 3)
let second_total = add_numbers(1, 2, 3)

print(first_total, second_total)

How Mojo Is Used in AI Development

Mojo est livré avec des bibliothèques pour créer des modèles d'apprentissage automatique. Celles-ci incluent des bibliothèques pour la construction de réseaux de neurones. En outre, vous pouvez également effectuer des tâches telles que Traitement du langage naturel et vision par ordinateur.

Alors que le langage lui-même n'est pas encore terminé et que son écosystème est pratiquement inexistant, nous pouvons toujours nous attendre à ce que Mojo apporte de nombreuses fonctionnalités pour effectuer des tâches telles que le traitement des données, la création de modèles, l'optimisation, la gestion des modèles et la surveillance.

Is Mojo the Future of AI Development

Il est difficile de prédire comment la technologie est susceptible d'évoluer et d'être adoptée. La plupart des prédictions sont fausses, mais cela ne signifie pas que nous ne pouvons pas essayer. Pour prédire si Mojo est susceptible de remplacer Python, considérons les avantages et les inconvénients/limites de Mojo :

Avantages

  • Il est très rapide et conçu pour tirer parti du parallélisme sans faire grand-chose, ce qui est essentiel pour l'apprentissage automatique car les modèles de formation peuvent prendre beaucoup de temps.
  • C'est un sur-ensemble de Python, donc plus facile à apprendre et a une courbe d'apprentissage plus douce. Cela réduit les frictions pour l'adoption.
  • Cela réduit les risques d'erreurs en production, car des erreurs telles que des noms de variable mal typés ou des incompatibilités de type sont détectées au moment de la compilation. Cela le rend préférable.

Inconvénients

  • C'est actuellement incomplet. Mais bien sûr, l'équipe de Modular travaille à la publication du langage et de son traducteur.
  • Même si cela simplifie le travail des producteurs de framework, cela peut ne pas apporter beaucoup d'avantages aux consommateurs de framework puisqu'ils utilisent déjà des frameworks d'apprentissage automatique en Python.
  • Il ne dispose pas encore d'un vaste écosystème d'outils et de ressources d'apprentissage. Bien que vous puissiez utiliser les bibliothèques Python dans Mojo, vous pouvez toujours utiliser les bibliothèques Python dans Python. Pour que Mojo ait un avantage sur Python, il a besoin de bibliothèques qui portent la vitesse de Mojo.

Mot de la fin

Si l'on en croit le battage médiatique actuel, Mojo est susceptible de devenir un langage d'IA populaire. Je pense que sa vitesse à elle seule suffit à inciter les gens à basculer. Sa simplicité est un plus. Mais comme la façon dont TypeScript n'a pas complètement remplacé JavaScript, il est probable que Mojo ne remplacera pas complètement Python.

Mojo est définitivement une langue à garder sur votre radar lorsqu'elle arrivera à maturité.

Ensuite, consultez Type vs interface dans TypeScript.

  • Anesu Kafesu
    Auteur
    Développeur web full stack et rédacteur technique. En train d'apprendre l'IA.
Merci à nos commanditaires
Plus de bonnes lectures sur le développement
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation de travail tout-en-un pour vous aider à gérer les projets, les tâches, le travail, les ventes, le CRM, les opérations, workflowset plus encore.
    Essayez Monday
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder