<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EstiloCorreo17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=ES-MX link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-CARRIBEAN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hi Joe,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-CARRIBEAN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-CARRIBEAN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I did try nodejs some time ago and I can tell from that experience that regards to development performance and confortable programming, nodejs is very nice, it is very intelligent way to program, it is faster too, but I have to tell you this, nodejs as a program language is very close or even more nicely than Erlang, but as a technology it is the biggest crap I ever taste, sorry about that, everything there explode and you have no control at all of the explodes, if the stack ran out; and it does quickly and easily, it just ran out without any possible solution and the system goes down inevitably, I came out to think that you cannot program a serious thing over that! Despite of that simple fact, all other is fine, nicely coding programming I think.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-CARRIBEAN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-CARRIBEAN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Best regards,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-CARRIBEAN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Ivan.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-CARRIBEAN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-CARRIBEAN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-CARRIBEAN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=ES style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>De:</span></b><span lang=ES style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> erlang-questions-bounces@erlang.org [mailto:erlang-questions-bounces@erlang.org] <b>En nombre de </b>Joe Armstrong<br><b>Enviado el:</b> lunes, 16 de junio de 2014 10:22 a.m.<br><b>Para:</b> Erlang<br><b>Asunto:</b> [erlang-questions] node.js vs erlang<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>I'm trying to compare node.js with erlang. I'm a total node.js novice BTW - but I've written some JS.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Program 1 is just fibonacci - I want a web server to compute fib(N)<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>So requesting <a href="http://127.0.0.1:8124/fib?n=2">http://127.0.0.1:8124/fib?n=2</a> should compute and return fib(2)<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>My node.js attempt crashes<o:p></o:p></p></div><div><p class=MsoNormal>Here's the code in fib.js<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>--- fib.js<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><p class=MsoNormal>var http = require('http');<o:p></o:p></p></div><div><p class=MsoNormal>var url  = require('url');<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>function fib(n) {<o:p></o:p></p></div><div><p class=MsoNormal>  if (n < 2) {<o:p></o:p></p></div><div><p class=MsoNormal>    return 1;<o:p></o:p></p></div><div><p class=MsoNormal>  } else {<o:p></o:p></p></div><div><p class=MsoNormal>    return fib(n - 2) + fib(n - 1);<o:p></o:p></p></div><div><p class=MsoNormal>  }<o:p></o:p></p></div><div><p class=MsoNormal>}<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>http.createServer(function (req, res) {<o:p></o:p></p></div><div><p class=MsoNormal>    var q = url.parse(req.url, true).query;<o:p></o:p></p></div><div><p class=MsoNormal>    var n = q.n;<o:p></o:p></p></div><div><p class=MsoNormal>    var result = fib(n);<o:p></o:p></p></div><div><p class=MsoNormal>    console.log('fib('+ n + ')= '+result);<o:p></o:p></p></div><div><p class=MsoNormal>    res.writeHead(200, {'Content-Type': 'text/plain'});<o:p></o:p></p></div><div><p class=MsoNormal>    res.end(result.toString());<o:p></o:p></p></div><div><p class=MsoNormal>}).listen(8124, "127.0.0.1");<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>console.log('Server running at <a href="http://127.0.0.1:8124/'">http://127.0.0.1:8124/'</a>);<o:p></o:p></p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>-- end<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>-- now we run it<o:p></o:p></p></div><div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>$ node fib.js<o:p></o:p></p></div><div><p class=MsoNormal>Server running at <a href="http://127.0.0.1:8124/">http://127.0.0.1:8124/</a><o:p></o:p></p></div><div><p class=MsoNormal>fib(2)= 2<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>/home/ejoearm/Dropbox/experiments/hello_world/fib.js:5<o:p></o:p></p></div><div><p class=MsoNormal>function fib(n) {<o:p></o:p></p></div><div><p class=MsoNormal>            ^<o:p></o:p></p></div><div><p class=MsoNormal>RangeError: Maximum call stack size exceeded<o:p></o:p></p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>fib(2) has run out of stack space????<o:p></o:p></p></div><div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>$ node --version<o:p></o:p></p></div><div><p class=MsoNormal>v0.8.21<o:p></o:p></p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Any ideas what I'm doing wrong<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Cheers<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>/Joe<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div></div></div></body></html>