Difference between revisions of "VT2021 Zig fiche"

From air
Jump to navigation Jump to search
Line 3: Line 3:
   
 
'''MALOD Victor ([[mettre mail ici]]) - PARA Yaël ([[ya38able@gmail.com]])'''
 
'''MALOD Victor ([[mettre mail ici]]) - PARA Yaël ([[ya38able@gmail.com]])'''
  +
  +
  +
== Résumé ==
  +
Mots clés : Zig, langage, performances, programmation
  +
  +
Zig est un langage de programmation qui met en avant la robustesse, l'optimalité et la réutilisation du code. Son créateur s'est inspiré de la simplicité du langage C afin de concevoir un langage qui va à l'essentiel et fournit les fonctionnalités indispensables des langages de programmation orienté objet tout en restant lisible et accessible. Ce langage est par ailleurs devenu un concurrent direct du langage C. Dans cette synthèse nous étudions les avantages de ce langage tout en le comparant avec ses concurrents en termes de performance, simplicité et d'accessibilité.
  +
  +
== Abstract ==
  +
Keywords : Zig, language, performance, programming
  +
  +
Zig is a programming language which emphasizes robustness, optimality and code reuse. Its creator was inspired by the simplicity of the C programming language and designed a language that provides the essential features of object-oriented programming languages while remaining simple and easy to learn. This language has also become a direct competitor of the C language. In this study, we will study the advantages of this language while making a comparison between Zig and its competitors in terms of performance, simplicity and accessibility.
  +
  +
== Synthèse ==
  +
  +
'''Objectifs du langage'''
  +
  +
L'objectif principal du créateur de Zig est de fournir une version améliorée du langage C sans ses défauts.
  +
  +
En effet le créateur du langage s'est inspiré du langage C lors de la conception, car il apprécie la simplicité du langage C, le fait qu'on puisse suivre facilement le flux de contrôle lors de l'exécution d'un programme, et il a souhaité avec ce nouveau langage conserver cet aspect minimaliste tout en proposant des fonctionnalités que l'on peut retrouver dans des langages orienté objet comme C++ (comme par exemple les types génériques).
  +
  +
Ce langage vise à être un remplaçant du langage C, il peut donc être utilisé dans les mêmes types de projets que ceux utilisant le langage C. Il a été utilisé pour des jeux, comme Oxid, mais également pour la programmation d'émulateurs, des serveurs HTTP/DNS, des kernels, des bases de données, et des compilateurs entre autres. Il peut par ailleurs être utilisé sur des microcontrôleurs. Une liste de projets utilisant le langage Zig peut être trouvée sur ce lien : https://github-wiki-see.page/m/ziglang/zig/wiki/Community-Projects
  +
  +
'''Caractéristiques du langage'''
  +
  +
'''Pas de flux de contrôle caché'''
  +
  +
Un passage d'un bloc de code à un autre est uniquement causé par des appels de fonctions et il n'y a pas de flux de contrôle caché.
  +
Dans d'autres langages, cela peut ne pas être le cas :
  +
  +
- Par exemple en D, il existe ce qu'on appelle des property functions, qui sont des méthodes appelées avec la même syntaxe que l'accès à un champ d'une structure.
  +
- De même, en C++ il existe l'overloading d'opérateur, ce qui permet de spécifier le comportement d'un opérateur par une fonction. Dans cette portion de code, l'opérateur pourrait également appeler une fonction.
  +
- Enfin en Java, une exception peut être levée, interrompant le flux d'exécution.
  +
  +
De façon générale, le langage est conçu de façon à ce que si dans le code on n'observe pas d'appel de fonction, il n'y aura pas d'entrée dans une fonction.
  +
Cela permet d'améliorer la lisibilité du code, et donc sa compréhension.

Revision as of 17:17, 27 November 2021

Analyse du Langage Zig

MALOD Victor (mettre mail ici) - PARA Yaël (ya38able@gmail.com)


Résumé

Mots clés : Zig, langage, performances, programmation

Zig est un langage de programmation qui met en avant la robustesse, l'optimalité et la réutilisation du code. Son créateur s'est inspiré de la simplicité du langage C afin de concevoir un langage qui va à l'essentiel et fournit les fonctionnalités indispensables des langages de programmation orienté objet tout en restant lisible et accessible. Ce langage est par ailleurs devenu un concurrent direct du langage C. Dans cette synthèse nous étudions les avantages de ce langage tout en le comparant avec ses concurrents en termes de performance, simplicité et d'accessibilité.

Abstract

Keywords : Zig, language, performance, programming

Zig is a programming language which emphasizes robustness, optimality and code reuse. Its creator was inspired by the simplicity of the C programming language and designed a language that provides the essential features of object-oriented programming languages while remaining simple and easy to learn. This language has also become a direct competitor of the C language. In this study, we will study the advantages of this language while making a comparison between Zig and its competitors in terms of performance, simplicity and accessibility.

Synthèse

Objectifs du langage

L'objectif principal du créateur de Zig est de fournir une version améliorée du langage C sans ses défauts.

En effet le créateur du langage s'est inspiré du langage C lors de la conception, car il apprécie la simplicité du langage C, le fait qu'on puisse suivre facilement le flux de contrôle lors de l'exécution d'un programme, et il a souhaité avec ce nouveau langage conserver cet aspect minimaliste tout en proposant des fonctionnalités que l'on peut retrouver dans des langages orienté objet comme C++ (comme par exemple les types génériques).

Ce langage vise à être un remplaçant du langage C, il peut donc être utilisé dans les mêmes types de projets que ceux utilisant le langage C. Il a été utilisé pour des jeux, comme Oxid, mais également pour la programmation d'émulateurs, des serveurs HTTP/DNS, des kernels, des bases de données, et des compilateurs entre autres. Il peut par ailleurs être utilisé sur des microcontrôleurs. Une liste de projets utilisant le langage Zig peut être trouvée sur ce lien : https://github-wiki-see.page/m/ziglang/zig/wiki/Community-Projects

Caractéristiques du langage

Pas de flux de contrôle caché

Un passage d'un bloc de code à un autre est uniquement causé par des appels de fonctions et il n'y a pas de flux de contrôle caché. Dans d'autres langages, cela peut ne pas être le cas :

- Par exemple en D, il existe ce qu'on appelle des property functions, qui sont des méthodes appelées avec la même syntaxe que l'accès à un champ d'une structure. - De même, en C++ il existe l'overloading d'opérateur, ce qui permet de spécifier le comportement d'un opérateur par une fonction. Dans cette portion de code, l'opérateur pourrait également appeler une fonction. - Enfin en Java, une exception peut être levée, interrompant le flux d'exécution.

De façon générale, le langage est conçu de façon à ce que si dans le code on n'observe pas d'appel de fonction, il n'y aura pas d'entrée dans une fonction. Cela permet d'améliorer la lisibilité du code, et donc sa compréhension.