(english text below )
Version en français
J’aime bien Factor mais la version actuelle n’est pas assez stable et les mots de base changent trop souvent aussi je vais probablement attendre la version 1.0 pour me lancer dans une vraie application. La plupart des développeurs détestent ré-écrire le même code.
Pour la partie Erlang, je ne suis pas totalement d’accord avec Eric Remond sur le fait que d’autres langages ne permettraient pas de construire les mêmes mécanismes que dans Erlang parce ceux ci sont intégrés directement dans les bases du langage. En effet Factor est particulièrement malléable, en grande partie écrit en lui même, la plupart de ses primitives étant rétro-compilées lors du ‘bootstrap’. Il permet également de changer du code en cours d’exécution. Je pense qu’il serait tout à fait possible d’utiliser Factor comme un langage de primitives pour une sorte de ‘Erlang like’. Ce serait un bonne chose car cela permettrait d’ajouter des primitives directement écrites en ‘Erlang like’ et rétro-compilées en Factor ce qui serait infiniment plus souple que l’ajout de primitives en code C dans le mode actuel d’Erlang.
Mais tout ceci n’est pas le plus important. Je voulais également faire part ce certaine de mes pensées concernant ces langages assez sophistiqués. La plupart du temps leur concepteur pense que d ‘avoir un super langage est le plus important. Ceci est une erreur !
Regardez simplement quels sont les langages les plus utilisés actuellement : Java ou Python tiennent le haut du pavé! Pourquoi?
Je pense que c’est parce qu’ils offrent une richesse importante en terme de librairies et parce qu’ils sont plus facilement accessible au développeur moyen. Tous ces développeurs n’ont pas nécessairement des doctorats et la plupart ont simplement appris des langages impératifs à l’école. Il ont souvent beaucoup de mal à utiliser des langages fonctionnels ou concaténatifs utilisant très fortement la récursivité pour traiter les boucles.
D’autre part certains langages, tel que OCAML, sont plus destinés à la recherche sur les concepts même de la théorie des langage et offrent de bien pauvres librairies qui sont utiles au développement d’applications (par exemple accès au base de données, XML, interfaces graphiques, Internet, etc…)
Dans ce dernier domaine, Erlang est un peu plus riche que la moyenne, mais reste malgré tout très en retrait d’un Java par exemple. Alors je comprend le succès de Java même si ce langage est assez primitif (les lisp et smalltalk des années 60 faisaient déjà aussi bien en GC et multi plate forme et étaient plus bien plus sophistiqués). De plus Java est extrêmement gourmand en consommation mémoire et on se demande bien pourquoi.
Toujours est il que je comprend un peu le succès de Java!
in (bad) english
I like Factor, but basic library words change to often, so I won’t use it before they become frozen, probably in release 1.0. Application developper hate to re-write code because some primitives change !
For Erlang part , I do not agree with Eric Rémond on, the fact that other languages cannot compete with Erlang, because in Erlang things like fault tolerance, supervisor tree model and network transparency are built in the design of the language.
Factor is mostly written in Factor, and most parts are retro-compiled at boostrap. Factor also permit code change at run-time. Factor is so mold that it should be possible to create an entire Erlang like language in it, using Factor as an underline low level layer. This could be a good thing because, in this way, we may be able to add primitives directly from the ‘Erlang like’ layer instead of coding them with static C as it is done presently.
But all of this is not the most important. Most of the time, language maker believe their langage can win because it is clever than other’s. This is FALSE !
Simply look at Java or Python. They are becoming main stream not because they are better (in fact they are far to be better) but because they offer a strong and rich set of libraries .
What does need applications developper? Most of them are not Doctor but simple average developpers, so what’s they need is a simple to learn, trivial language with a lot of libraries.
On this last area some clever languages fails. This is the case for OCAML, a very goog language but mainly aim at research. Few people use it because most of the libraries are simply toys!
For database access, XML, UI, Internet among other things, Java and Python largely win. Even Erlang is a little bit late in this area.
Worst, language like Ocaml, Erlang, or Factor require more important effort to learn and use because, most of the time, school prepare people for imperatives languages not for functional or concatenative one using intensive recursive loop and higher-order programming.
So I understand why Java win !