Dans la foire aux questions du projet, Sylvan Clebsch – le créateur du langage – explique qu’il tient le nom d’un banal échange avec un contributeur du projet. « Oui, moi je veux un poney », lui a envoyé ce dernier. Le créateur du langage venait de lui tendre une énième liste de fonctionnalités à implémenter. La formule était donc probablement destinée à faire entendre à Sylvan Clebsch qu’on ne peut pas toujours obtenir ce que l’on désire.
Passé ce premier motif de commentaires à propos de ce langage de programmation, il faut souligner que Pony c’est aussi un choix de design qui divise. Généralement, les cas de division par zéro génèrent des exceptions, mais l’équipe derrière le langage de programmation a décidé qu’une variable reçoit zéro comme résultat lorsque cette situation se présente. La manœuvre est destinée à contourner une limitation du compilateur de l’actuelle version du langage (ponyc v0.2).
Qu’a donc ce poney dans le ventre ?
Pony est le principal langage utilisé par les créateurs du framework Wallaroo – un moteur de traitement de données « élastique » et rapide pour emprunter au vocabulaire des têtes derrière l’outil. Dans un billet de blog paru au mois de mai, l’un des auteurs du framework (par ailleurs contributeur du projet Pony) explique ce choix. « Développer des applications concurrentes rapides, efficientes et sécurisées n’est pas évident avec les outils existants. Rapide, efficient et hautement concurrent est un objectif atteignable, mais ajoutez-y la contrainte sécurité et les choses se compliquent. Avec Wallaroo, nous avions besoin de réunir ces quatre aspects et Pony a grandement facilité l’atteinte de cet objectif », a-t-il souligné.
« Pony pourrait être la solution adéquate si vous avez un difficile problème de concurrence à résoudre. Les applications concurrentes sont la raison d’être de ce langage. Si vous êtes capable d’atteindre votre objectif à l’aide d’un script python monothread alors vous n’avez pas besoin de Pony. […] En faisant usage de Pony, vous bénéficiez d’un compilateur qui vous évite d’introduire des bogues d’accès concurrent et d’un environnement d’exécution qui contribue à l’obtention d’excellentes performances », a-t-il ajouté.
Les développeurs qui ont flirté avec Rust et Erlang retomberont très certainement sur leurs pattes avec célérité puisque les concepteurs du langage le décrivent comme une rencontre des deux mondes. Illustration avec une portion de code dédiée à l’analyse de paramètres passés par le biais de la ligne de commande.
Code : | Sélectionner tout |
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 26 27 28 29 30 31 32 | use "cli" actor Main new create(env: Env) => let command_spec = try CommandSpec.leaf( "pony-embed", "sample program", [ OptionSpec.string("output", "output filename", 'o') ], [ ArgSpec.string("input", "source of input" where default' = "-") ] )? .> add_help()? else env.exitcode(1) return end let command = match CommandParser(command_spec).parse(env.args, env.vars()) | let c: Command => c | let ch: CommandHelp => ch.print_help(env.out) env.exitcode(0) return | let se: SyntaxError => env.err.print(se.string()) env.exitcode(1) return end let input_source = command.arg("input").string() let output_filename = command.option("output").string() env.out.print("Loading data from " + input_source + ". Writing output to " + output_filename) // ... |
Sources : page du projet, opensource.com
Et vous ?
Que pensez-vous du choix du nom de ce langage ?
Dans l’histoire des langages de programmation quels sont ceux dont les noms vous ont le plus marqué ? Pour quelles raisons ?
Êtes-vous sur un projet de langage de programmation ? Si oui, quel nom avez-vous retenu ? Pour quelle raison ?
Quel commentaire faites-vous du choix de design relatif à la gestion des cas de division par zéro ? Quel autre langage fonctionne sur le même schéma ? En quoi un tel choix peut-il être utile ?
Avez-vous testé ce langage ? Si oui, quel retour pouvez- vous en termes de comparaison par rapport à l'existant dans le cadre de la programmation concurrente ?
Voir aussi :
C2 : un langage qui se présente comme une évolution de C, plus rapide, sans fichiers d'en-tête, avec système de build intégré et d'autres changements
Microsoft crée un nouveau langage de programmation dédié aux ordinateurs quantiques qui devrait être officialisé d'ici la fin d'année
Quel langage de programmation pour le calcul scientifique en 2018 ? Quelles caractéristiques vous paraissent-elles les plus importantes ?
Quelle est la probabilité de passer d'un langage de programmation donné à un autre ? Des prédictions basées sur une étude empirique
Ritchie : un nouveau langage de programmation dérivé de C qui veut combiner la facilité de Python et la vitesse de C