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

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

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2013
    Messages
    8 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2013
    Messages : 8 455
    Points : 197 767
    Points
    197 767
    Par défaut 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


    Nom : janet.png
Affichages : 6699
Taille : 114,9 Ko

    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.janetSi 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
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2013
    Messages : 106
    Points : 373
    Points
    373
    Par défaut
    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 actif
    Avatar de Aiigl59
    Homme Profil pro
    Freelance
    Inscrit en
    Janvier 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 90
    Points : 264
    Points
    264
    Billets dans le blog
    1
    Par défaut Janet
    Ne pleure pas janeeette ! .... Aucun intérêt...

  4. #4
    Membre habitué
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2018
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2018
    Messages : 44
    Points : 158
    Points
    158
    Par défaut
    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.

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    638
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 638
    Points : 408
    Points
    408
    Par défaut
    Ce langage me paraît très intéressant. J'ai regardé rapidement les exemples de code sur le site. Je trouve la syntaxe simple, claire, concise et élégante. Je suis habitué à Racket, qui a une syntaxe plus verbeuse et lourde pour les dictionnaires et la POO, et qui impose par défaut l'utilisation de listes non mutables. Avec Janet, on a le choix entre des types de données mutables et non mutables. C'est un langage multi-paradigme, qui permet la programmation fonctionnelle mais sans l'imposer.

Discussions similaires

  1. [Débat] Langage Fonctionnel vs Langage impératif
    Par millie dans le forum Débats sur le développement - Le Best Of
    Réponses: 152
    Dernier message: 30/08/2010, 10h35
  2. Quel langage utiliser pour un programme qui contrôle des numéros ?
    Par Dsphinx dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 24/07/2010, 01h37
  3. [Débat] Langage Fonctionnel vs Langage impératif
    Par millie dans le forum Langages fonctionnels
    Réponses: 0
    Dernier message: 07/12/2007, 17h50
  4. Réponses: 7
    Dernier message: 13/03/2007, 13h32

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