<?xml version="1.0" encoding="iso-8859-1" ?>
<rss version="0.92">
	<channel>
    <title>erlang</title>
    <link>http://erlang.blog2geek.com</link>
    <description>Blog specialise; geek et geek attitude.</description>
    <language>fr-FR</language><item>
        <title>Erlang Syntaxique (2)</title>
        <link>http://erlang.blog2geek.com/erlang-syntaxique-2-311.html</link>
        <description>
Bon maintenant, attaquons les fonctions ...
Pour cela on va coder dans un fichier, c&amp;#39;est mieux !


Ouvrons tuto.erl.
la premiere ligne a ajouter est toujours : 
-module(XXX).
avec XXX valant le nom du fichier sans son extension (et en minuscule je crois).
Ici on a donc -module(tuto).
Puis on a une ligne 
-export([fun1/x, fun2/y ...]).
Cette ligne definie les fonctions exportees du module.
C&amp;#39;est une liste de noms de fonction suivie de leur nombre d&amp;#39;argument.
Ici nous allons faire une fonction double prenant un argument, nous auront donc :
-export([double/1]).
Il peut y avoir autant de lignes d&amp;#39;export que voulu.
Puis vient une autre directive de compilation possible : 
-include(&quot;fichier&quot;).
Pour include un autre fichier (des &quot;defines&quot; la plupart du temps). A utiliser moderement.

Maintenant, la fonction !
Nous allons ecrire une fonction double, qui va retourner le double de la valeur passee en argument.


double(Arg) -&gt; Arg * 2.

Et c&amp;#39;est fini.
Comme nous le voyons clairement(ou pas), cette fonction prend un argument (non type) et renvoi cet argument multiplie par 2.

Compilons ce fichier. Pour cela utilisons erl. 
c(tuto).
Erlang est un langage integrant une fonction permettant de compiler (et en fait c&amp;#39;est le seul moyen de compiler). Elle prend un nom de module en entree (c&amp;#39;est pour cela que ca doit etre le meme que le nom de fichier).
Une fois compiler ({ok, tuto}), testons notre fonction.
ex : tuto:double(2).
resultat : 4.
Pas si mal.
ex : tuto:double(&quot;chaine de caractere&quot;).
resultat : 
=ERROR REPORT==== DATE ===
Error in process &lt;X.Y.Z&gt; with exit value: {badarith,[{tuto,double,1},{shell,exp    rs,6},{shell,eval_loop,3}]}
** exited: {badarith,[{tuto,double,1},{shell,exprs,6},{shell,eval_loop,3}]} **

Hum ... ca veut dire quoi ?

Et bien Erlang fait du type checking, mais dynamiquement.
Il a detecter que l&amp;#39;operateur * n&amp;#39;est pas compatible avec une chaine de caractere et a donc renvoyer une exception badarith.
[{tuto,double,1},{shell,exprs,6},{shell,eval_loop,3}] correspond a la pile d&amp;#39;appels, pas si mal pour se reperer.Et enfin il nous remontre ce qui l&amp;#39;a fait quitter ...

Les erreurs de typages ne se manifesteront donc qu&amp;#39;a l&amp;#39;execution, ce qui est plutot normal car Erlang est un langage tres dynamique, permettant de compiler et d&amp;#39;executer du code a la volee, de modifier du code a la volee ou encore de renvoyer des valeurs de types differents au sein d&amp;#39;une meme fonction.

To be continued...   
</description>
		<pubDate>Tue, 29 Aug 2006 23:31:00 GMT</pubDate>
      </item><item>
        <title>Erlang Syntaxique</title>
        <link>http://erlang.blog2geek.com/erlang-syntaxique-310.html</link>
        <description>
Maintenant lancons nous dans la syntaxe.


Tout t&amp;#39;abord, un petit rappel. Erlang est un langage fonctionnel, il n&amp;#39;y pas de variable, seulement des valeurs (Rappel : une variable est un emplacement memoire nomme, et donc pouvant changer de valeur). Une valeur, au sens fonctionnel du terme, n&amp;#39;est &quot;affectee&quot; qu&amp;#39;une fois. En fait une &amp;#39;valeur&amp;#39; n&amp;#39;existe qu&amp;#39;a partir du moment ou elle recoit sa valeur (ses donnees). En Erlang, on ne peut donc pas ecraser une &amp;#39;valeur&amp;#39; (contrairement a d&amp;#39;autres langages fonctionnels). Cela permet une meilleur securite du code.


Maintenant, la syntaxe ! (exemples a tester dans erl)
 


Une declaration  de valeur en Erlang se fait ... avec l&amp;#39;operateur egal !
ex : Val = 3.
Comme montrer ci dessus, une valeur a un nom commencant par une Majuscule.
(On expliquera pourquoi plus tard).


Le point &amp;#39;.&amp;#39; a aussi sont importance, il permet de delimiter la fin d&amp;#39;un &quot;bloc&quot; (declaration de fonction, affectation ...) (bloc parsable).


Maintenant voyons si Val vaut bien 3 ...
ex : Val.
resultat : 3


C&amp;#39;est plutot bon signe non ?


To be continued...
 


 
</description>
		<pubDate>Tue, 29 Aug 2006 23:07:00 GMT</pubDate>
      </item><item>
        <title>Debutons avec Erlang</title>
        <link>http://erlang.blog2geek.com/debutons-avec-erlang-307.html</link>
        <description>
Parlons tout d&amp;#39;abord de comment lancer un programme Erlang. Nous nous attaquerons au langage par la suite.


Tout d&amp;#39;abord installez le paquet Erlang sous votre distribution favorite.
Puis lancez erl.


Vous arriverez sur le shell erlang, vous permettant de tester du code en mode interactif. (C-C * 2 pour quitter).


Ce shell fait partie de la machine virtuelle (Et oui, Erlang est un langage pouvant etre Byte-Code compiler puis lance sur un machine virtuelle, ou alors compiler en natif). Il permet d&amp;#39;agir sur l&amp;#39;environnement de facon dynamique, d&amp;#39;appeler n&amp;#39;importe quelle fonction avec n&amp;#39;importe quels arguments ...

Voyons quelques arguments utiles : 
-noinput : permet de desactiver le mode interactif
-detached : detache l&amp;#39;application du terminal (demon)
-name : permet de nommer le noeud ( = paire machine + processus)
-s Module fun arg1 arg2 ... : appelle la fonction fun du module Module avec la liste d&amp;#39;arguments donnes 


Pour plus d&amp;#39;infos : man erl.


A savoir, le binaire erlc (permettant de generer du byte-code ou du code natif) passe par erl pour faire la compilation en byte-code. 
</description>
		<pubDate>Tue, 29 Aug 2006 19:13:00 GMT</pubDate>
      </item><item>
        <title>Erlang c\'est le futur !</title>
        <link>http://erlang.blog2geek.com/erlang-c-est-le-futur--253.html</link>
        <description>
Erlang est un langage fonctionnel dédié aux télécommunications.


Ce langage est fonctionnel impur, c&amp;#39;est à dire qu&amp;#39;il est basé sur des fonctions, objets prennant une entrée et renvoyant (ou pas) une valeur. Cependant des modifications extérieures telles que des communications réseaux peuvent intervenir, et ont des effets de bords.


Il est dédié aux télécommunications de par le fait qu&amp;#39;il embarque des primitives de communication.
Ainsi, il intègre un type PID natif, portable sur le réseau (composé d&amp;#39;une partie représentant le processus, d&amp;#39;une autre représentant le noeud sur lequelle il tourne).
Il possede des outils de filtrage sur les messages réseaux entrants (receive).
Il permet d&amp;#39;envoyer un message réseau contenant n&amp;#39;importe quel objet par un primitive de syntaxe simple : &quot;PID ! Message&quot;.
Il gère de plus la concurrence de façon native, ce qui lui permet d&amp;#39;être l&amp;#39;un des langages les plus efficaces sur un système multi-core ou multi-processeur.
(cf article: http://linuxfr.org/2006/05/22/20849.html et ses références [ http://www.erlang-stuff.net/wordpress/?p=14 http://www.franklinmint.fm/blog/archives/000792.html ])


Enfin, et c&amp;#39;est le plus important, ce langage est sous license libre ! 
</description>
		<pubDate>Mon, 21 Aug 2006 18:39:00 GMT</pubDate>
      </item>		</channel>
</rss> 
