Bonjour,
Ça fait quelques temps que je regardais Haskell, un langage dit fonctionnel pur et qui possède des caractéristiques qui me plaisent vraiment. Cependant, il ne présente pas la propriété d'homoiconicité.
Pour cela, on va me dire d'aller voir du côté de la famille LISP et je dis pourquoi pas.
Mais voilà, j'ai déjà fait un peu de Common Lisp et j'ai eu une mauvaise impression quant aux différentes bibliothèques plus (surtout moins) développés, encore active ou pas…
Pour les interpréteurs, c'est un peu pareil. Ce n'est pas un langage purement fonctionnel mais c'est un moindre mal.
J'ai vu qu'un projet, Liskell, s'est intéressé à la fusion de la syntaxe LIPS pour écrire de l'Haskell mais je ne sais pas trop s'il est encore actif et il ne semble pas complet. Je ne suis pas certain qu'il soit homoiconique non plus.
Je voudrais ainsi savoir ce que vous me conseilleriez comme langage de programmation principalement axé sur le paradigme fonctionnel, typage fort en option, homoiconique et qui a de bonnes bibliothèques (web, graphiques…)? (Clojure ne m'intéresse qu'à moitié grâce à la JVM derrière…)
# Erlang
Posté par Niniryoku . Évalué à 2.
Tout est dans le titre.
Il n'y a pas de structure de données complexe en erlang. Si tu prend les
array
par exemple, c'est juste un tuple avec un atome « array » et une liste qui représente l'array. (Représentation{array, [item1, item2, item3]}
). Si j'ai bien compris c'est ce que tu cherches.Wings 3D est développé en erlang, ainsi que Yaws. Il y a nitrogen comme framework web erlang, mais je ne l'ai jamais testé ; pour faire du web avec erlang, jette un œil ici.
En plus erlang permet nativement de faire de la programmation concurrente ainsi que des application distribuées/réparties.
Knowing the syntax of Java does not make someone a software engineer.
[^] # Re: Erlang
Posté par Jiehong (site web personnel) . Évalué à 2.
J'aurais bien aimé qu'il soit aussi homoiconique, ce qui n'est pas le cas…
[^] # Re: Erlang
Posté par calandoa . Évalué à 2.
Tu veux pas nous dire pourquoi tu cherches un langage homoiconique? J'ai essayé de comprendre ce que c'était, j'ai presque réussi, mais ça ne cadre pas du tout avec le genre de fonctionnalité qu'un utilisateur pourrait réclamer.
[^] # Re: Erlang
Posté par Jiehong (site web personnel) . Évalué à 2.
En gros, c'est une propriété qui facilite grandement l'écriture de code par du code. (un programme qui écrit un autre programme (méta-programmation)).
[^] # Re: Erlang
Posté par Alex . Évalué à 2.
Et rebol (indiqué dans ton lien) ?
Je n'ai jamais vraiment pratiqué (rebuté par le modèle commercial), mais il semble correspondre à ton besoin. Ceci dit je ne suis pas sur qu'il soit fonctionnel pur.
[^] # Re: Erlang
Posté par kuroineko . Évalué à 10.
attention avoir un string dans l'array peut irriter.
# Scheme/Guile ?
Posté par Lizzie Crowdagger (site web personnel) . Évalué à 1.
J'y connais pas grand-chose sur le sujet, du coup je dis peut-être une grosse connerie, mais est-ce qu'utiliser Scheme/Guile, ça permet pas d'accéder à un peu plus de bibliothéques qu'en Clisp, avec une syntaxe similaire ? Bon, je sais pas si c'est encore très vivant, mais il me semble que la dernière fois que j'avais regardé Guile, il y avait au moins quelques bindings…
[^] # Re: Scheme/Guile ?
Posté par Jiehong (site web personnel) . Évalué à 1.
Ça à l'air intéressant. J'avais un préjugé sur Scheme (trop académique ?) mais peut-être devrais-je l'oublier et lui laisser la chance qu'il mérite.
[^] # Re: Scheme/Guile ?
Posté par hocwp (site web personnel) . Évalué à 1.
Dans ce cas, tu peux aussi jeter un oeil (entre autre) sur Chicken Scheme.
[^] # Re: Scheme/Guile ?
Posté par Jiehong (site web personnel) . Évalué à 0.
Je vois qu'il existe même une interface à Python et bien plus mature que celle de Clojure.
# clojure-py
Posté par MsieurHappy . Évalué à 2.
Il y a une implémentation de Clojure sur CPython2.
Du coup, les qualités de Clojure et la pelletée de bibliothèques de Python !
https://github.com/halgari/clojure-py
Le projet est encore jeune, mais c'est très prometteur.
[^] # Re: clojure-py
Posté par Jiehong (site web personnel) . Évalué à 0.
En effet, ça à l'air très intéressant !
# Julia?
Posté par reno . Évalué à 2.
Homo-iconique et typage fort en option: http://linuxfr.org/news/version-1-0-de-julia
# OCAML !
Posté par mackwic . Évalué à 1.
Surprenant que personne n'en ai parlé, mais notre langage fonctionnel national est homomachin chose, c'est même quelque chose d'assez courant (cf la merveilleuse lib lwt qui change la manière de penser la prog concurrente).
Donc l'AST d'ocaml peut-être manipulé directement avec ocaml P4 comme le montre ce tutoriel: http://caml.inria.fr/pub/docs/tutorial-camlp4/tutorial001.html
Je recommanderais aussi fortement l'usage de Batteries Included qui m'a fait gagner du temps plus d'une fois.
[^] # Re: OCAML !
Posté par mackwic . Évalué à 1.
Oups ! Le lie que j'ai donné pour Batteries n'est pas particulièrement à jour. Voici un meilleur lien: https://github.com/ocaml-batteries-team/batteries-included/wiki/
# Langages XML
Posté par neil . Évalué à 1.
Je ne te conseille absolument pas de les utiliser à moins que tu ais des besoins spécifiques, vu que tu sembles chercher quelque chose d'assez généraliste, mais il existe différents langages de programmation basés sur une syntaxe XML, qui sont fait pour manipuler du XML (entre autres), donc homoiconiques, et donc « faire du web ». Par exemple, XSLT et RefleX.
[^] # Re: Langages XML
Posté par reno . Évalué à 2.
Tiens oui, homoiconique et fonctionnel ça correspond bien à XSLT, un des langages les plus pourris que j'ai jamais vu (si, si, le langage que j'ai du utiliser avec des noms de variable restreint a 1 caractère était plus lisible).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.