Si le languages t'intéresse tant que ca je ne peux que t'inviter à jeter un oeil à
Erlang.
Ce langage dispose de certains avantages et des fonctionnalités que tu décris plus haut.
Non seulement il est robuste, simple et ultra productif, mais en plus il vient avec un framework très très attractifs. (OTP)
C'est un langage fonctionnel, et peut dérouter les débutants ou expérimentés aux cerveaux encore trop habitués aux autres langages.
Erlang, dispose de 'green threads' c'est à dire de process ultra légers, ce ne sont pas le même threads que dans java ni celle de pthread ou de nptl, ce sont des processus erlang.
Un processus erlang pèse 300 octets, et une machine virtuelle de base (sans paramètre de démarrage) est configurée pour faire tourner un peu plus de 32000 processus.
Il est courant d'avoir un très grand nombre de processus tournant en même temps.
Pour vous donner une idée, un crawler de page web peut tout à fait être développé de manière à avoir un processus erlang par url à récupérer. En d'autres termes chaque href contenu dans une page va déclencher un "spawn" (fonction de création de processus) d'un processus faisant une requète GET.
Donc 5000 liens dans une page va déclencher 5000 processus...
Erlang est distribué, pour communiquer la syntaxe est très simple, les processus sont identifiés par leur PID et pour leur parler on écrit ceci:
Pid ! coucou.
Cela veut dire qu'on envoit l'atome coucou au processus Pid.
Pid peut être sur la machine locale comme sur une autre machine, c'est transparent...
Erlang dispose des List Comprehension, du Pattern Matching, d'une base de donnée repliquée et distribuée (Mnesia).
Erlang dispose également de modules indispensables, tableaux (ets, dets), arbres (gb_sets, gb_trees), gestion de queue (queue), de timers (timer) et bien d'autres.
Erlang dispose de types de bases proches de ceux du javascript (pardonner cette phrase mais elle permettra à plus de monde de comprendre :p), liste et tuple.
[1,3,4,5,2] est une liste
{user, Login, Pass} est un tuple
[{a, 1}, {b,2}, {c,3}] est une liste de tuple...
Erlang c'est aussi un moyen de faire de la livraison de code à chaud, Erlang fait la différence entre les versions de codes, il est donc capable d'être mis à jour sans arrêt. No DownTime.
Erlang vaut définitivement le coup d'oeil, il est facile de dire que ce language va faire énormément parler de lui dans les années avenir, ne serait-ce qu'avec l'arrivée de processeur multicore... (pour comprendre il faut regarder en détails et arriver à comprendre qu'une variable ne peut pas changer de valeur une fois assignée...)
Une Vidéo sur le sujet, certainement le plus accessible:
google video
Certains projets commencent à être connu (ou le sont déjà):
Ejabberd (process-one)
Tsung
Eddie
Doc Erlang:
Erlang.org
Intro a Erlang (en anglais)
Et pour approfondir, n'hésiter pas à chercher sur del.ico.us ou digg ou reddit, ou encore l'excellent Lambda the Ultimate
# Erlang ?
Posté par forc3 . En réponse au journal L'expressivité des langages. Évalué à 5.
Erlang.
Ce langage dispose de certains avantages et des fonctionnalités que tu décris plus haut.
Non seulement il est robuste, simple et ultra productif, mais en plus il vient avec un framework très très attractifs. (OTP)
C'est un langage fonctionnel, et peut dérouter les débutants ou expérimentés aux cerveaux encore trop habitués aux autres langages.
Erlang, dispose de 'green threads' c'est à dire de process ultra légers, ce ne sont pas le même threads que dans java ni celle de pthread ou de nptl, ce sont des processus erlang.
Un processus erlang pèse 300 octets, et une machine virtuelle de base (sans paramètre de démarrage) est configurée pour faire tourner un peu plus de 32000 processus.
Il est courant d'avoir un très grand nombre de processus tournant en même temps.
Pour vous donner une idée, un crawler de page web peut tout à fait être développé de manière à avoir un processus erlang par url à récupérer. En d'autres termes chaque href contenu dans une page va déclencher un "spawn" (fonction de création de processus) d'un processus faisant une requète GET.
Donc 5000 liens dans une page va déclencher 5000 processus...
Erlang est distribué, pour communiquer la syntaxe est très simple, les processus sont identifiés par leur PID et pour leur parler on écrit ceci:
Pid ! coucou.
Cela veut dire qu'on envoit l'atome coucou au processus Pid.
Pid peut être sur la machine locale comme sur une autre machine, c'est transparent...
Erlang dispose des List Comprehension, du Pattern Matching, d'une base de donnée repliquée et distribuée (Mnesia).
Erlang dispose également de modules indispensables, tableaux (ets, dets), arbres (gb_sets, gb_trees), gestion de queue (queue), de timers (timer) et bien d'autres.
Erlang dispose de types de bases proches de ceux du javascript (pardonner cette phrase mais elle permettra à plus de monde de comprendre :p), liste et tuple.
[1,3,4,5,2] est une liste
{user, Login, Pass} est un tuple
[{a, 1}, {b,2}, {c,3}] est une liste de tuple...
Erlang c'est aussi un moyen de faire de la livraison de code à chaud, Erlang fait la différence entre les versions de codes, il est donc capable d'être mis à jour sans arrêt. No DownTime.
Erlang vaut définitivement le coup d'oeil, il est facile de dire que ce language va faire énormément parler de lui dans les années avenir, ne serait-ce qu'avec l'arrivée de processeur multicore... (pour comprendre il faut regarder en détails et arriver à comprendre qu'une variable ne peut pas changer de valeur une fois assignée...)
Une Vidéo sur le sujet, certainement le plus accessible:
google video
Certains projets commencent à être connu (ou le sont déjà):
Ejabberd (process-one)
Tsung
Eddie
Doc Erlang:
Erlang.org
Intro a Erlang (en anglais)
Et pour approfondir, n'hésiter pas à chercher sur del.ico.us ou digg ou reddit, ou encore l'excellent Lambda the Ultimate