
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 ?





Voir aussi :




