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

Débats sur le développement - Le Best Of Discussion :

Le langage fonctionnel et impératif Janet, qui reprend des fonctionnalités de Lua et Clojure,


Sujet :

Débats sur le développement - Le Best Of

  1. #1
    Chroniqueur Actualités

    Le langage fonctionnel et impératif Janet, qui reprend des fonctionnalités de Lua et Clojure,
    Le langage fonctionnel et impératif Janet, qui reprend des fonctionnalités de Lua et Clojure,
    pourrait être utilisée dans les applications IdO

    Janet, un langage fonctionnel et impératif ainsi qu'un interprète de bytecode, est en cours de développement en tant que plateforme polyvalente pour le code expressif. Le langage, nommé d'après un personnage de l'émission télévisée The Good Place (plus précisément une intelligence artificielle presque omnisciente et amicale), se compose d’une bibliothèque principale, d’un interpréteur, du compilateur et de l'assembleur.

    Version Lisp implémentée dans une norme C précédente connue sous le nom de C99, le langage Janet reprend les fonctionnalités de Lua et Clojure. Il peut servir de langage de script ou être intégré à d'autres programmes. Janet convient au prototypage et fonctionne sur Windows, MacOS et Linux, et il peut être porté sur d'autres systèmes.

    Sur la page dédiée à ce langage, il est expliqué « Janet fait un bon langage de script système ou un langage à intégrer dans d'autres programmes. Pensez Lua ou Guile. Janet peut également être utilisée pour le prototypage rapide, les systèmes dynamiques et d'autres domaines où Lisp brille. Implémentée principalement dans la norme C99, Janet fonctionne sur Windows, Linux et macOS. Les quelques fonctionnalités qui ne sont pas standard C (chargement dynamique de bibliothèque, optimisations spécifiques au compilateur) sont assez simples. Janet peut être facilement portée sur de nouvelles plateformes ».

    Les fonctionnalités de Janet sont :
    • configuration minimale - un binaire et vous pouvez commencer!
    • Fermetures de première classe
    • Récupérateur de mémoire
    • Green threads (threads qui sont planifiés par une bibliothèque d'exécution ou une machine virtuelle au lieu d'être natifs par le système d'exploitation sous-jacent) de première classe
    • Générateurs de style Python (implémentés comme une macro)
    • Tableaux mutables et immuables (tableau / tuple)
    • Tables de hachage mutables et immuables (table / struct)
    • Chaînes mutables et immuables (buffer/string)
    • Macros Lisp
    • Interprète de code d'octets avec une interface d'assemblage, ainsi que la vérification de bytecode
    • Optimisation de Tailcall
    • Interopérabilité directe avec C via des types abstraits et des fonctions C
    • Chargement dynamique des bibliothèques C
    • Bibliothèque standard fonctionnelle et impérative
    • Programmation impérative et fonctionnelle
    • REPL
    • Analyse des grammaires d'expression intégrées à la bibliothèque principale
    • Plus de 300 fonctions et macros dans la bibliothèque principale
    • Environnement interactif avec des traces de pile détaillées
    • Exportez vos projets vers des exécutables autonomes avec un outil de compilation compagnon, jpm



    Utilisation

    Un repl est lancé lorsque le binaire est appelé sans arguments. Passez l'indicateur -h pour afficher les informations d'utilisation. Des scripts individuels peuvent être exécutés avec ./janet myscript.janet

    Si vous cherchez à faire de l’exploration, vous pouvez imprimer une liste de toutes les macros, fonctions et constantes disponibles en entrant la commande (all-bindings) dans le repl.

    Code Janet :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    $ janet
    Janet 1.7.1-dev-951e10f  Copyright (C) 2017-2020 Calvin Rose
    janet:1:> (+ 1 2 3)
    6
    janet:2:> (print "Hello, World!")
    Hello, World!
    nil
    janet:3:> (os/exit)
    $ janet -h
    usage: build/janet [options] script args...
    Options are:
      -h : Show this help
      -v : Print the version string
      -s : Use raw stdin instead of getline like functionality
      -e code : Execute a string of janet
      -r : Enter the repl after running all scripts
      -p : Keep on executing if there is a top level error (persistent)
      -q : Hide prompt, logo, and repl output (quiet)
      -k : Compile scripts but do not execute (flycheck)
      -m syspath : Set system path for loading global modules
      -c source output : Compile janet source code into an image
      -n : Disable ANSI color output in the repl
      -l path : Execute code in a file before running the main script
      -- : Stop handling options


    S’ils sont installés, vous pouvez exécuter man janet et man jpm pour avoir les informations sur les usages.

    Intégration

    Janet peut être intégrée très facilement dans un programme hôte. La build normale créera un fichier build/janet.c, qui est un seul fichier C qui contient toute la source de Janet. Ce fichier, avec src/include/janet.h et src/conf/janetconf.h, peut être glissé dans n'importe quel projet C et compilé dans le projet. Janet devrait être compilée avec -std=c99 sur la plupart des compilateurs, et devra être liée à la bibliothèque mathématique, -lm, et à l'éditeur de liens dynamique, -ldl, si l'on veut pouvoir charger des modules dynamiques. S'il n'y a pas besoin de modules dynamiques, ajoutez le define -DJANET_NO_DYNAMIC_MODULES aux options du compilateur.

    Source : langage Janet (GitHub), langage Janet (site officiel), documentation

    Et vous ?

    Que pensez-vous de Janet ?
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre averti
    Qu'elle ne ressemble pas à la vrai Janet......Remboursé!!!

    Sinon on rentre dans l'éternel débat du "Encore un langage qui seras utilisé que par son créateur et trois barbus hipsters" ou autres phrases du genre.

  3. #3
    Membre régulier
    Janet
    Ne pleure pas janeeette ! .... Aucun intérêt...

  4. #4
    Candidat au Club
    Aucun intérêt...
    Ha bon? Mais pourquoi donc? Peut-être auriez-vous pu argumenter un peu plus...
    En l'occurrence il me semble que c'est plutôt votre commentaire qu'on pourrait qualifier d'inintéressant...

    Aviez-vous seulement pris la peine de jeter un coup d'oeil à la documentation?

    Il faut parfois faire preuve d'un peu de curiosité, regarder ce qui se fait ailleurs, ce qui sort de nouveau...

    Personnellement j'ai trouvé la présentation qui en est faite sur https://janet-lang.org fort intéressante.