<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Julien Marie Web Marketing &#187; Web</title>
	<atom:link href="http://www.julienmarie.com/tag/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.julienmarie.com</link>
	<description>Un blog utilisant WordPress</description>
	<lastBuildDate>Tue, 09 Mar 2010 09:10:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Erlang&#8230; nom étrange pour bête sympa</title>
		<link>http://www.julienmarie.com/2010/02/erlang-nom-etrange-pour-bete-sympa/</link>
		<comments>http://www.julienmarie.com/2010/02/erlang-nom-etrange-pour-bete-sympa/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 23:02:41 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
				<category><![CDATA[Geekeries webmasteriennes]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.julienmarie.com/?p=46</guid>
		<description><![CDATA[
Attention, ce post est ultra-geek.
J&#8217;ai quelque peu fait allusion précédemment à ce langage un peu exotique. Il faut dire que mon côté geek aime bien tout ce qui est langages de programmations. J&#8217;ai très tôt apprécié Ruby et Rails, et l&#8217;approche agréable du «tout objet» de Ruby.
Mais l&#8217;aventure YesOrNow version 1, entièrement en Rails + [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.julienmarie.com/wp-content/uploads/2010/02/fuji.jpg"><img class="alignnone size-full wp-image-48" title="fuji" src="http://www.julienmarie.com/wp-content/uploads/2010/02/fuji.jpg" alt="" width="900" height="250" /></a></p>
<p>Attention, ce post est ultra-geek.</p>
<p>J&#8217;ai quelque peu fait allusion précédemment à ce langage un peu exotique. Il faut dire que mon côté geek aime bien tout ce qui est langages de programmations. J&#8217;ai très tôt apprécié Ruby et Rails, et l&#8217;approche agréable du «tout objet» de Ruby.</p>
<p>Mais l&#8217;aventure YesOrNow version 1, entièrement en Rails + JS, il m&#8217;est apparu des choses toutes bêtes, et j&#8217;ai cherché comment y remédier.</p>
<p>Ces «choses toute bêtes» sont à mon sens des facteurs clef de succès dans le web. Car c&#8217;est un chose d&#8217;avoir une bonne proposition de valeur, un bon marketing mix, une bonne interface. Il faut que derrière, cela tienne, et que cela soit performant.</p>
<p>L&#8217;approche Rails / 37 Signals / désinvolte, c&#8217;est en deux mots : <strong>si vous avez des problèmes de scaling, cool, c&#8217;est que ça cartonne</strong> ! En effet, mais autant ne pas avoir de problème de scaling, car <strong>préserver l&#8217;expérience en cas de forte exposition est justement primordial</strong>e : c&#8217;est tout d&#8217;un coup l&#8217;occasion de faire connaître ce que l&#8217;on fait à de nombreuses personnes&#8230; autant que la première impression soit bonne.</p>
<p>Aussi, pour 37 Signals, leur business model uniquement par abonnement, sans partage entre comptes clients, limite ces problème de scalabilité car le coût a moins à jouer.</p>
<p>L&#8217;argument, c&#8217;est aussi qu&#8217;une architecture scalable, c&#8217;est complexe. Cela veut dire systèmes de cache (mais cela, même quand on a pas à scaler, c&#8217;est nécessaire car améliore immensément les performances et soulage le server&#8230;. d&#8217;autant que NGinx l&#8217;intègre dans son coeur), systèmes genre memcached de distribution, cache et partage d&#8217;objets, réplication de bases MySql et structures Master-Slaves ou autre&#8230; Enfin, tout le tintouin.</p>
<p>PHP n&#8217;est pas bien différent. La seule différence avec PHP, c&#8217;est que ce language est tellement souple qu&#8217;il est un peu trop facile de mal coder&#8230; Et comme tous les développeurs web font du PHP, il est plus difficile de séparer le bon grain du mauvais grain.</p>
<p>Et donc&#8230; Erlang.</p>
<p>Erlang, c&#8217;est d&#8217;abord un monsieur, un mathématicien. Mais ça on s&#8217;en moque.</p>
<p>Erlang, c&#8217;est maintenant un language. Un truc un peu fou inventé chez Ericsson pour leurs besoins propres, afin d&#8217;avoir des PABX et autres machineries des telecoms qui soit stables, performantes, etc&#8230; Enfin, un truc pour gérer des telecoms au niveau d&#8217;un pays quoi.</p>
<p>Donc, quelques mecs se sont réunis, dont un certain Joe Armstrong, qui est un peu le DHH d&#8217;Erlang, version père de famille, je fais pas de surf des neiges, mais je suis brillant et marrant, et ont réfléchi.</p>
<p>Ils ont pondu Erlang, qui est un langage fonctionnel.</p>
<p>Pour ceux qui se demandent, un langage fonctionnel c&#8217;est ça (Wikipedia) :</p>
<blockquote><p>La programmation fonctionnelle est un paradigme de programmation qui considère le calcul en tant qu&#8217;évaluation de fonctions mathématiques et rejette le changement d&#8217;état et la mutation des données. Elle souligne l&#8217;application des fonctions, contrairement au modèle de programmation impérative qui met en avant les changements d&#8217;état.</p></blockquote>
<p>En gros, ici, pas d&#8217;objet, des fonctions. Que des fonctions, dans des modules. On ne partage aucune donnée, on se passe des messages entre fonctions. Moi, personnellement, ça me plaisait bien, parce que je codais intuitivement un peu comme cela : la programmation objet me faisait mal à la tête, car je savais jamais où en était mes objets à chaque moment. Là je sais.</p>
<p>Après, Erlang a d&#8217;autres caractéristiques, qui elles sont intéressantes pour nous, personnes du Web.</p>
<p>1. C&#8217;est un langage concurrent. C&#8217;est à dire que <strong>les process fonctionnent en même temps</strong> en utilisant toutes les ressources des processeurs multicoeurs. Cela est possible car la mémoire n&#8217;est pas partagée : les fonctions s&#8217;envoient des messages. Mais là où ça devient génial, c&#8217;est qu&#8217;<strong>Erlang fonctionne par noeuds</strong> : c&#8217;est à dire que ma fonction trucmuche, sur mon Mac, peut envoyer un message à la fonction bidule sur le PC de mon pote australien, qui à son tour envoie un message à machin etc&#8230; Scalabilité vous avez dit ?</p>
<p>2. C&#8217;est un langage rapide, qui se compile à la volée. En gros, <strong>plus de deux fois plus rapide que PHP5 et 4 fois plus rapide que Ruby</strong>.</p>
<p>3. C&#8217;est un langage qui supporte nativement le versionning. C&#8217;est à dire qu&#8217;on peut <strong>faire une rollout de nouvelles fonctionnalités ou corriger des bugs sans downtime</strong>, le language intègrera de lui même les nouvelles versions intelligemment.</p>
<p>4. C&#8217;est un langage qui <strong>incorpore sa base de donnée, Mnesia</strong>, elle même distribuée sur plusieurs noeuds, on peut fragmenter les tables, etc&#8230; et les performances sont excellentes.</p>
<p>5. Plusieurs serveurs web existent pour Erlang : Yaws, Mochiweb principalement. Les deux ont des performances superbes, surtout derrière un Nginx. Yaws est célèbre pour tenir à plus de 80 000 connexions simultanées quand Apache meurt à 4000&#8230;.</p>
<p>6. Quelques frameworks web commencent à poindre leur nez, dont <a href="http://www.nitrogenproject.com">Nitrogen</a>. Et aussi, niveau CMS, <a href="http://www.zotonic.com">Zotonic</a> apparaît. Au programme,&#8230; je vous laisse découvrir.</p>
<p>7. Dernier point : la possibilité de bundler son applicatif, erlang compris. Vous l&#8217;uploader sur le serveur, vous configurer votre NGinx pour qu&#8217;il pointe sur le bon port de votre mochiweb, vous faites un petit ./start.sh, et hop, c&#8217;est live, database incluse. C&#8217;est pas beau ça ?</p>
<p>Sinon, niveau syntaxe, au début, ça surprend&#8230;. Surtout quand on sait qu&#8217;une variable ne peut changer de valeur&#8230; mais son scope est limité à sa fonction. En fait, il faut vraiment plonger dedans pour comprendre (je commence à peine) comment ça marche, mais ça va assez vite.</p>
<p>En fait, ce qui me plaît dans ce langage, c&#8217;est qu&#8217;il semble résoudre la plupart des contraintes techniques du Web : performance, stabilité, scalabilité.</p>
<p>Petit détail en passant : 37 Signals, Facebook et Meetic utilisent Erlang pour leurs systèmes de chat.</p>
<p>Et bien sûr, le gros inconvénient d&#8217;Erlang c&#8217;est de trouver des développeurs en Erlang !</p>
<p>Donc voilà, c&#8217;était le post ultra-geek pour commencer février. Promis, je ne parlerai pas d&#8217;Haskell ni d&#8217;OCaml !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.julienmarie.com/2010/02/erlang-nom-etrange-pour-bete-sympa/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
