Geekflare est soutenu par son public. Nous pouvons percevoir des commissions d'affiliation sur les liens d'achat présents sur ce site.
En Développement Dernière mise à jour : 25 septembre 2023
Partager sur :
Invicti Web Application Security Scanner - 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 a toujours semblé être le langage de programmation dominant, avec des bibliothèques puissantes 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 en C .

Cela s'explique par le fait que Python est trop lent pour l'IA. Mojo est un nouveau langage de programmation qui tente de combiner la vitesse du C/C avec l'élégance de Python.

Mojo : Vue d'ensemble

YouTube vidéo

Mojo est un nouveau langage de programmation dont la syntaxe est similaire à celle de Python, mais qui a la vitesse du C. Il est principalement destiné à l'intelligence artificielle et au développement de systèmes, deux domaines qui requièrent des logiciels très performants.

Il utilise le paradigme SIMD (Single Instruction, Multiple Data) pour tirer parti du parallélisme. Il est également compilé en flux tendu et est économe en mémoire.

Mojo n'est cependant pas un langage entièrement nouveau ; c'est un surensemble de Python. Cela signifie qu'il s'agit de Python avec des fonctionnalités supplémentaires. Un peu comme TypeScript étend JavaScript. C'est une bonne chose, car si vous connaissez déjà Python, il ne devrait pas être trop difficile d'apprendre 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é pour le développement de l'IA et la programmation de systèmes. Bien que le projet ne soit pas achevé, il est incroyablement prometteur, et dans la section suivante, nous verrons pourquoi.

Caractéristiques de Mojo par rapport à d'autres langages de programmation

Mojo est devenu incroyablement populaire même s'il n'est pas encore disponible publiquement. En effet, il présente plusieurs avantages significatifs par rapport à d'autres langages de programmation pour l'apprentissage automatique et la construction de logiciels de niveau système. Dans cette section, nous allons discuter de ces avantages.

#1. Support natif pour les tâches d'IA et de Machine Learning

Mojo est conçu pour développer des applications d'intelligence artificielle. Par conséquent, il est livré avec des fonctions et des modules dans la bibliothèque standard pour construire des réseaux neuronaux, effectuer de la vision par ordinateur et préparer des données.

La plupart des langages généralistes comme Python nécessitent des bibliothèques supplémentaires pour réaliser ces tâches, mais Mojo les prend en charge dès la sortie de la boîte.

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

Pour écrire des logiciels rapides et efficaces, nous devrions normalement utiliser des langages comme C, C , et Rust. Bien que ces langages soient rapides, ils sont plus difficiles à apprendre et à utiliser. En effet, ils vous obligent à travailler à un bas niveau, ce qui vous permet d'avoir plus de contrôle.

Cependant, Mojo fournit toujours des abstractions de plus haut niveau comme Python et une syntaxe simple. Cela le rend plus facile à utiliser que d'autres langages comparables en performance.

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

Comme mentionné précédemment, Mojo n'est pas un langage complètement nouveau - c'est un surensemble de Python. Par conséquent, 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 celui de Python.

#4. Des capacités de manipulation de données efficaces

Mojo est conçu pour manipuler efficacement plusieurs valeurs en parallèle. Ceci est particulièrement utile pour l'algèbre linéaire, sur laquelle l'apprentissage automatique s'appuie fortement. Mojo est également compilé en flux tendu, 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 support du calcul parallèle

Comme mentionné précédemment, Mojo est conçu pour supporter le paradigme de l'instruction unique et des données multiples de l'informatique parallèle. Cela est intégré dans Mojo et le rend plus rapide dès sa sortie de l'emballage. Il est également plus performant que les bibliothèques Python telles que NumPy.

Eléments clés de Mojo

Dans cette section, nous allons voir comment écrire des programmes dans Mojo. Mojo étant conçu comme un surensemble de Python, tout comme TypeScript est un surensemble de JavaScript, tout code Python valide est un code Mojo valide, mais tout code Mojo n'est pas un code Python valide.

Mojo est encore un travail en cours, et certaines caractéristiques du langage Python ne sont pas encore prises en charge, par exemple les classes. En outre, un compilateur n'est pas encore disponible, mais vous pouvez utiliser Mojo dans un cahier de jeux. Cependant, vous aurez besoin d'un compte au préalable, que vous pouvez créer sur leur site web.

Pour l'instant, il est difficile de donner un tutoriel complet sur le langage car certaines fonctionnalités doivent encore être ajoutées, et tout n'est pas encore supporté. A la place, nous allons discuter de quelques ajouts clés que Mojo ajoute à ce que Python a déjà.

Syntaxe et grammaire

Mojo étant un surensemble de Python, leurs syntaxes sont identiques. Comme Python, un programme est constitué d'instructions. Ces instructions peuvent être regroupées en blocs sous forme de fonctions, de boucles ou de conditionnelles. Les instructions à l'intérieur d'un bloc sont indentées. Voici un exemple de programme écrit en Mojo :

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

odd_or_even()

Ce programme est parfaitement identique à un programme Python. Cependant, Mojo offre des fonctionnalités supplémentaires que vous verrez dans les sections suivantes.

Déclarations de variables

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

Le principal avantage des variables déclarées à l'aide de let ou de var est qu'elles prennent en charge les spécificateurs de type. L'exemple suivant illustre la manière dont les variables sont déclarées dans Mojo.

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

# Ce serait impossible
# pi = 6.283

# Mais c'est possible
greeting = "Ola"

print(pi, greeting)

Structures

En plus d'une manière différente de déclarer les variables, Mojo supporte les structures. Une façon simple de voir les structs est qu'ils sont comme des classes, mais plus rigides. Contrairement aux classes, vous ne pouvez pas ajouter/supprimer ou modifier des méthodes en cours d'exécution, et tous les membres doivent être déclarés à l'aide des mots-clés var ou let. Cette structure plus rigide permet à Mojo de gérer la mémoire et les performances plus efficacement. 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)

Fonctions

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

En particulier, une fonction déclarée à l'aide de fn a ses arguments immuables par défaut. En outre, 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 d'être utilisées.

fn say_hello(name : StringLiteral) :
 print("Hello,", name)
    
# Ceci serait invalide
# fn say_hello(name) :
# print("Hello,", name)

say_hello("John")

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

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

Supplément

Mojo supporte également la surcharge des opérateurs basés sur différents types de données. Ceci supporte le principe de polymorphisme orienté objet.

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)

Comment Mojo est utilisé dans le développement de l'IA

Mojo est livré avec des bibliothèques permettant de construire des modèles d'apprentissage automatique. Il s'agit notamment de bibliothèques permettant de construire des réseaux neuronaux. En outre, vous pouvez également effectuer des tâches telles que le traitement du langage naturel et la vision par ordinateur.

Bien que le langage lui-même ne soit pas encore achevé et que son écosystème soit pratiquement inexistant, nous pouvons nous attendre à ce que Mojo apporte de nombreuses fonctionnalités permettant d'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.

Mojo est-il l'avenir du développement de l'IA ?

Il est difficile de prédire comment une 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 savoir si Mojo est susceptible de remplacer Python, examinons les avantages et les inconvénients/limites de Mojo :

Avantages

  • Mojo est très rapide et conçu pour tirer parti du parallélisme sans en faire beaucoup, ce qui est essentiel pour l'apprentissage automatique, car l'apprentissage des modèles peut prendre beaucoup de temps.
  • C'est un surensemble de Python, donc plus facile à apprendre et avec une courbe d'apprentissage plus douce. Cela réduit la friction pour l'adoption.
  • Il réduit les risques d'erreurs en production, car les erreurs telles que les noms de variables mal saisis ou les incompatibilités de type sont détectées au moment de la compilation. C'est pourquoi il est préférable de l'utiliser.

Inconvénients

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

Le 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 suffit à elle seule à encourager les gens à passer au langage Mojo. Sa simplicité est un atout. Mais comme TypeScript n'a pas remplacé complètement JavaScript, il est probable que Mojo ne remplacera pas complètement Python.

Mojo est sans aucun doute un langage à garder sous le coude lorsqu'il arrivera à maturité.

Prochainement, lisez Type vs. Interface en TypeScript.

  • Anesu Kafesu
    Auteur
    Développeur web et rédacteur technique. Actuellement en train d'apprendre l'IA.
Merci à nos sponsors
D'autres lectures intéressantes sur le développement
Alimentez votre entreprise
Quelques outils et services pour aider votre entreprise à se développer.
  • Invicti utilise le 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, search engine crawler, et tout ce dont vous avez besoin pour collecter des données web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation tout-en-un qui vous aide à gérer vos projets, vos tâches, votre travail, vos ventes, votre CRM, vos opérations, vos flux de travail et bien plus encore.
    Essayez le lundi
  • Intruder est un scanner de vulnérabilité en ligne qui détecte les faiblesses de votre infrastructure en matière de cybersécurité, afin d'éviter des violations de données coûteuses.
    Essayer l'intrus