IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

ZIG 0.9, le langage de programmation compilé, inspiré de Rust et conçu pour concurrencer le C, est disponible


Sujet :

Langages de programmation

  1. #1
    Chroniqueur Actualités
    Avatar de Bruno
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    mai 2019
    Messages
    838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : mai 2019
    Messages : 838
    Points : 10 475
    Points
    10 475
    Par défaut ZIG 0.9, le langage de programmation compilé, inspiré de Rust et conçu pour concurrencer le C, est disponible
    La version 0.9.0 de ZIG, le langage de programmation compilé, inspiré de Rust et conçu pour concurrencer le C, est disponible,
    avec une amélioration de l'interface mem.Allocator et bien plus

    La Zig Software Fondation, organisme en charge du langage ZIG, a annoncé le 22 décembre la disponibilité de la version 0.9 du langage de programmation ZIG. L’objectif du langage inspiré de Rust, selon ses concepteurs, reste de concurrencer (et d'améliorer) le langage C. Cette nouvelle version apporte une amélioration de l'interface mem.Allocator, une correction des caractéristiques CPU de l'assemblage RISC-V. Cependant, certains pensent que Zig pourrait facilement récupérer la plupart de ces optimisations s'il existait une sorte de membres immuables.

    Conçu par Andrew Kelley, Zig est un langage de programmation compilé impératif polyvalent, typé statiquement. Selon la documentation de Zig, le langage est conçu pour la « robustesse », l'« optimalité » et la « maintenabilité », prenant en charge les génériques et la réflexion au moment de la compilation, la compilation croisée et la gestion manuelle de la mémoire. Zig possède de nombreuses fonctionnalités pour la programmation de bas niveau, notamment des types composés (struct) avec zéro padding, des entiers de taille arbitraire et différents types de pointeurs.

    Nom : ZigB.jpg
Affichages : 128336
Taille : 7,7 Ko

    Le compilateur est écrit en Zig et C++, utilisant LLVM 11 comme back-end, prenant en charge plusieurs de ses cibles natives. Le compilateur est un logiciel libre et open source, distribué sous la licence MIT. Le compilateur Zig fournit la possibilité de compiler du C et du C++, similaire à Clang en utilisant respectivement la commande zig cc et zig c++. Le langage de programmation Nim prend en charge l'utilisation de zig cc comme compilateur C.

    WebAssembly

    « Avec la version 0.9.0, nous avons franchi quelques étapes importantes. Le linker autonome pour wasm a été réécrit, avec les connaissances acquises lors de la construction d'un linker autonome pour wasm », indique la Zig Software Fondation. En effet, le linker est maintenant capable de construire une disposition de la mémoire avec une pile virtuelle, ainsi que d'effectuer des relocations. Ce sont là quelques-unes des fonctionnalités nécessaires à l'implémentation de zig test.

    À ce jour, le backend wasm auto-hébergé est maintenant capable de passer 13 % de tous les tests comportementaux. Avec tous ces changements, la contribution au backend wasm est beaucoup plus facile. L'éditeur de liens est maintenant suffisamment performant pour que seule une connaissance de wasm soit nécessaire pour contribuer au backend.

    RISC-V

    Correction des caractéristiques CPU de l'assemblage RISC-V. Auparavant, Zig ne communiquait pas correctement les caractéristiques du CPU pour RISC-V à l'assembleur Clang, car Clang a une manière différente de transmettre les caractéristiques du CPU pour le code C et pour le code assembleur. Ce commit fait passer à Zig un tag RISC-V -march afin de communiquer les caractéristiques du CPU à Clang lors de la compilation des fichiers d'assemblage.

    Allocgate

    L'interface mem.Allocator a été modifiée dans la version 0.9.0 de ZIG. Pour modifier le code, La Zig Software Fondation recommande de :

    • changez *Allocator en Allocator dans les types de paramètres de fonctions et les types de champs de structures ;
    • au lieu de prendre le pointeur vers un champ allocateur, tel que &gpa.allocator, il serait mieux d’utiliser un appel de fonction comme ceci : gpa.allocator().

    L'interface rand.Random a été modifiée de manière équivalente aux modifications de l'interface Allocator, tous motivées par la recherche des performances.

    Zig aurait utilisé le pointeur vtable à l'intérieur de l'objet pour la bibliothèque standard, mais cette approche semblait lente car le compilateur n'était pas en mesure d'effectuer de nombreuses optimisations possibles en C++. « La propriété la plus cruciale qui bénéficie de la conception du C++ est que le pointeur vtable ne peut pas changer pendant toute la durée de vie de l'objet, même si l'objet est transmis par pointeur/référence à une fonction externe », « Chers tous, l'annonce de l'allocgate m'a fait réfléchir. Il y a généralement deux façons d'implémenter le polymorphisme d'exécution par le biais des vtables : le pointeur vers la vtable à l'intérieur de l'objet, et le pointeur vers la vtable à côté du pointeur vers l'objet (fat pointer). Le premier est utilisé par le C++, tandis que le second est utilisé par Rust. », ajoute-t-il.

    Notons qu’un objet immuable, en programmation orientée objet et fonctionnelle, est un objet dont l'état ne peut pas être modifié après sa création. Ce concept est à contraster avec celui d'objet variable. Avant l'apparition de la programmation orientée objet, les variables d'exécution dont le contenu n'était pas destiné à changer en cours d'exécution (par exemple, le facteur de conversion permettant de transformer des livres en kilogrammes, ou encore la valeur de pi avec plusieurs décimales) étaient connues sous le nom de constantes, pour les différencier de celles qui pouvaient être modifiées.

    Dans la plupart des langages orientés objet, les objets sont manipulés par des références. C'est le cas, par exemple, de Java, des objets de type class de C# et de Swift (contrairement aux objets de type struct), de Python, de JavaScript et de Ruby. Dans ce cas, le fait que l'état d'un objet partagé par référence puisse ou non être modifié est important.

    Lorsqu'un objet est réputé immuable, on peut en obtenir une copie en dupliquant simplement sa référence, au lieu de copier l'objet entier. Comme une référence (qui n'occupe typiquement en mémoire que la taille d'un pointeur) est habituellement bien moins volumineuse que l'objet lui-même, cette technique permet à la fois d'économiser de la mémoire et d'améliorer la vitesse d'exécution.

    Système de construction Zig

    Le système de construction Zig est invoqué par la commande zig build, qui exécute un script déclaratif build.zig pour collecter les options et décrire le graphe des étapes, puis fournit des options pour exécuter ces étapes. Bien qu'il soit déjà essentiel à presque tous les projets Zig, le système de construction Zig est encore expérimental et instable. En tant que système de compilation, la stabilité est particulièrement importante, mais elle ne peut être atteinte tant que le langage n'est pas stabilisé. La stabilité du langage est le prochain point d'attention de la feuille de route.

    Pour certains programmeurs, « Zig pourrait facilement récupérer la plupart de ces optimisations s'il existait une sorte de membres immuables (les membres d'un objet qui ne peuvent pas changer après sa création). » Si le pointeur de la vtable n'a pas changé depuis sa création (et pointe vers une vtable const), alors le compilateur devrait être capable de dévirtualiser les appels, même si l'objet peut changer, car il connaît la valeur de la vtable, estiment ces derniers. « Je ne dis pas que nous devrions revenir au fat pointer, mais j'aimerais être capable d'implémenter le polymorphisme d'exécution dans les deux sens de manière efficace. »

    Zig peut-il concurrencer le langage C ?

    Le langage C a toujours été un langage à feuilles persistantes et a joué un rôle prépondérant dans la plupart des développements de systèmes qui ont eu lieu au cours des dernières décennies. La programmation C a été développée à l'origine par Dennis Ritchie entre 1969 et 1973 aux Bell Labs et a été conçue pour la programmation informatique impérative à usage général, qui supporte la programmation structurée, les variables lexicales, la portée, la récursion, etc. Aujourd'hui, il existe une multitude de langages de programmation à choisir et à apprendre, mais en tant que débutant, tout le monde se pose la question « Quel langage de programmation dois-je apprendre en premier ? » et la plupart des réponses que nous obtenons sur Internet ou par le biais de suggestions sont "C".

    Flexibilité

    En tant que langage de niveau intermédiaire, le C combine les caractéristiques des langages de haut niveau et de bas niveau. Il peut être utilisé pour la programmation de bas niveau, comme les scripts pour les pilotes et les noyaux, et il supporte également les fonctions des langages de programmation de haut niveau, comme les scripts pour les applications logicielles, etc.
    Le noyau Windows de Microsoft est développé principalement en C, avec quelques parties de langage d'assemblage. Le noyau de Linux est également écrit en C. Chaque pilote et programme de Mac fonctionne sur un noyau en C. Les noyaux d'iOS, d'Android et de Windows Phone sont également écrits en C.

    Compatibilité

    Diverses caractéristiques du langage C, notamment l'accès direct aux API matérielles au niveau de la machine, la présence de compilateurs C, l'utilisation déterministe des ressources et l'allocation dynamique de la mémoire font du langage C un choix optimal pour les applications de script et les pilotes des systèmes embarqués. La plupart des systèmes embarqués comme un réveil, les télécommandes seraient programmés en C. Les bases de données les plus populaires au monde, notamment Oracle, MYSQL, MS SQL server, sont codées en C (avec C++).

    Portabilité

    Le C est un langage hautement portable. C'est un langage indépendant du matériel ou de la plateforme. Il est utilisé pour les scripts d'applications système qui constituent une part importante des systèmes d'exploitation Windows, UNIX et Linux.

    Source : Zig

    Et vous ?

    Quel est votre avis sur le langage Zig ?

    Que pensez-vous des améliorations apportées ?

    Pensez-vous que ce langage peut concurrencer le langage C ?

    Quel serait à votre avis l'aspect à améliorer sur Zig ?

    Selon vous, les membres immuables « résoudraient-ils » l'Allocgate dans Zig ?

    Voir aussi :

    La version 0.4.0 de Zig est disponible, le langage peut-il vraiment remplacer le C et devenir le nouveau standard pour la programmation système ?

    Zig 0.6.0 est disponible, le langage de programmation polyvalent prend en charge LLVM 10, WebAssembly, Windows et bien d'autres

    Quel langage pourrait remplacer C ?Après avoir comparé Go, Rust et D, le choix d'Andrei Alexandrescu se porte sur D

    Quels sont les meilleurs langages de programmation pour développer une application mobile ? Petit tour d'horizon sur les plus populaires
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur des cavernes
    Inscrit en
    août 2017
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Programmeur des cavernes
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2017
    Messages : 343
    Points : 1 205
    Points
    1 205
    Par défaut
    A ce jour le meilleur concurrent de C est... C++. Et vu la religion que C++ est devenu, les autres peuvent bien s'agiter autant qu'ils veulent...
    Sur Youtube, je publie le 1er de chaque mois une vidéo qui montre l'avancement de mes projets.
    Je crée des jeux, à l'ancienne et en ne sachant pas dessiner

    Mes deux chaînes principales :
    https://www.youtube.com/channel/UC5C...Hdt9ORG6lL0xcw

    https://www.youtube.com/channel/UCSz...bYl_pSNMv_zerQ

  3. #3
    Membre expérimenté
    Profil pro
    programmeur du dimanche
    Inscrit en
    novembre 2003
    Messages
    387
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : programmeur du dimanche
    Secteur : Santé

    Informations forums :
    Inscription : novembre 2003
    Messages : 387
    Points : 1 506
    Points
    1 506
    Par défaut
    Tout est possible en C++ ... , ce qui n'a pas découragé la création de Go, Swift, Rust... avec leurs surspécialités.
    Apparemment Zig se veut être une sorte de C, avec moins de "footguns" (avec moins de pièges par conception). Il y a sans doute une niche pour l'embarqué et pour les gens qui trouvent Rust ou c++ trop complexe. ça a l'air intéressant, mais c'est en pré 1.0. Zig se veut aussi nativement compatible avec C de manière transparente, ce qui est un atout.

    Il y a un résumé court des qualités supposées de zig sur hack a day avec un exemple de mauvais code c++ qui compile et d'équivalent Zig qui ne compile pas. Apparemment le compilateur empêche certaines écritures "unsafe" sans être trop trop verbeux...

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/12/2020, 12h37
  2. Réponses: 0
    Dernier message: 14/04/2020, 14h16
  3. Réponses: 7
    Dernier message: 12/10/2018, 18h53
  4. [Questions]Le langage de programmation Binaire existe t-il ?
    Par Nasky dans le forum Langages de programmation
    Réponses: 30
    Dernier message: 16/11/2012, 09h09
  5. Nombre de langage de programmation total
    Par Adrael dans le forum Langages de programmation
    Réponses: 16
    Dernier message: 22/07/2003, 00h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo