Bonjour!
Bienvenue dans ce troisième blog dédié à l’exploration de Mojo 🔥. La semaine dernière, nous avons appris davantage sur l’historique de ce langage et son créateur. Cette semaine, nous allons nous pencher sur les bases de la programmation en Mojo.
Déclaration de fonction et de struct:
Une fonction peut être déclarée de deux façons : soit avec "def" soit avec "fn". Une fonction déclarée avec "def" n'a pas besoin de spécifier le type des arguments de la fonction ni son type de retour.
En revanche, pour une fonction déclarée avec "fn", l'inférence de type n'est pas possible. Les types des arguments et de la valeur de retour de la fonction doivent être explicitement déclarés.
Une struct est similaire à une classe en Mojo. Comme dans d'autres langages de programmation, les classes ou les struct possèdent des propriétés, des méthodes, des constructeurs et un bloc d'initialisation.
Arguments et paramètres de fonction ou de struct:
Dans plusieurs langages de programmation, les termes "argument" et "paramètre" sont souvent utilisés comme des synonymes ou de termes interchangeable. Toutefois, un argument, placé entre parenthèses, est une variable au moment de l'exécution (runtime), tandis qu'un paramètre, placé entre crochets, est une variable au moment de la compilation (compile-time) qui devient ensuite une constante au moment de l'exécution (runtime).
Dans cet exemple, la fonction "repeat" a un paramètre de type Int et un argument de type String. Pour que cette fonction soit appelée correctement, l'argument et le paramètre doivent être spécifiés comme ceci :
Actuellement, Mojo ne prend pas en charge le code au niveau supérieur, donc une méthode "main" doit être déclarée pour que le programme s'éxecute.
Déclaration de variables:
Une variable peut être déclarée avec "var" ou "let". "var" crée une variable muable, tandis que "let" crée une variable immuable. Cependant, si les variables sont déclarées à l'intérieur d'une fonction "def", il n'est pas nécessaire de préciser "var" ou "let" car "var" est utilisé par défaut. En revanche, dans le cas d'une fonction "fn", les variables doivent être explicitement déclarées comme muables ou immuables. De plus, le type de toutes les variables est inféré, même dans une fonction "fn" (seuls le retour et les paramètres doivent être typés).
Structure du code:
Les blocs de code tels que les structures de contrôle et les fonctions sont définis par un double-point (:) suivi d'un saut de ligne et des lignes de code suivantes indentées. Le nombre d'espaces d'indentation n'est pas important, tant que ce nombre reste constant dans le même bloc de code.
Mojo suit le modèle d'une instruction par ligne, comme en Python. Cependant, une longue instruction peut être séparée sur deux lignes si elle est indentée comme ceci :
Commentaires:
Le symbole "#" est utilisé pour écrire un commentaire sur une ligne. Pour écrire des commentaires plus longs sur plusieurs lignes, il faut utiliser les triples guillemets anglais. Les triples guillemets sont également utilisés pour la documentation des fonctions.
Références:
« Language basics », Modular.com, https://docs.modular.com/mojo/manual/basics.html#functions (Page consulté le 14 février 2024).
« Parameterization: compile-time metaprogramming », Modular.com, https://docs.modular.com/mojo/manual/parameters/ (Page consulté le 16 février 2024).
github.com, https://github.com/modularml/mojo/ (Page consulté le 14 février 2024)
« Compile time », wikipedia.org, https://en.wikipedia.org/wiki/Compile_time (Page consulté le 16 février 2024).
« Environnement d'exécution », wikipedia.org, https://fr.wikipedia.org/wiki/Environnement_d%27ex%C3%A9cution (Page consulté le 16 février 2024).
Commentaires2
Excellent article. J…
Excellent article. J'apprécie énormément la simplicité du langage de programmation de Mojo, tout comme tu l'as mentionné, il se rapproche énormément de celui de Python à quelques différences près. Quels sont les avantages de ce langage par rapport à Python, en quoi est-il meilleur?
C'est la première fois que…
C'est la première fois que je vois un langage de programmation qui fait cette distinction entre argument et paramètre. C'est un peu semblable aux macros C++, peut-être?