<br><br><div class="gmail_quote">18 октября 2012 г., 8:33 пользователь ksvs <span dir="ltr"><<a href="mailto:ksvs1996@ymail.com" target="_blank">ksvs1996@ymail.com</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div style="font-size:12pt;font-family:times new roman,new york,times,serif"><div><span><br></span></div><div><br></div>  <div style="font-family:times new roman,new york,times,serif;font-size:12pt"> <div style="font-family:times new roman,new york,times,serif;font-size:12pt">
 <div dir="ltr"> <font face="Arial"> <hr size="1">  <b><span style="font-weight:bold">From:</span></b> Orlovsky Alexander <<a href="mailto:nordicdyno@yandex.ru" target="_blank">nordicdyno@yandex.ru</a>><br> <b><span style="font-weight:bold">To:</span></b> Moscow.pm group <<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a>> <br>
 <b><span style="font-weight:bold">Sent:</span></b> Wednesday, 17 October 2012, 19:39<br> <b><span style="font-weight:bold">Subject:</span></b> Re: [Moscow.pm] Про node.js<br> </font> </div> <br><div><div class="im"><blockquote type="cite">
<div>Возможность манипулировать ссылками на функцию (Perl) и
 объектами-функциями (JS) – это немного разные вещи с точки зрения того как пишется и выглядит код.<br><div>(Как это реализовано под капотом в данном случае не важно.)</div><div> </div><div>Т.е.
 в том же JS  можно не заниматься разыменовыванием ссылок и получить 
более естественно (на мой вкус, например) выглядящий код:</div><div> </div><div>function func (num) { return num+2 }</div><div>var f = function () { return func };</div><div>var s = function (cb) { return cb(5) } </div><div>
console.log( s(f()) )</div><div> </div><div>vs </div><div>sub f { $_[0] + 2 };</div><div>my $f = sub { \&f; };</div><div>my $s = sub { $_[0]->(5) };</div><div>print $s->($f->());</div><div> </div><div>в
 принципе в JS не все хорошо в плане boilrplate синтаксиса как видно 
выше, но в асинхронщине и функциональщине приятнее писать, как в первом 
варианте</div><br></div></blockquote></div> Мне тут недавно про goto рассказывали и про прототипы...<br>А если добавить<br><br>sub call($@) { goto &{(shift)} }<br><br>И переписать код выше как<div class="im"><br><br>
sub f { $_[0] + 2 };<br>my $f = sub { \&f; };<br></div>my $s = sub { call $_[0], 5 };<br>print call $s, call $f;<br><br>Так тоже работает. И выглядик красивше.<br><br>Ура!!! Я уже крутой Perl программер!!!<br></div><br>
</div></div></div></div></blockquote><div><br>Вызов функции довольно дорогостоящая операция. Разыменовывание ссылки тоже тоже занимает время. Вызов функции по ссылке вдвойне дороже.<br><br>Конечно, это крутая техника, освоить её может не каждый, но на практике приходится несколько раз подумать, прежде чем использовать что-то подобное.<br clear="all">
</div></div><br>-- <br>Andrei Protasovitski<br>< andrei[dot]protasovitski[at]gmail[dot]com ><br>Diemen, Netherlands<br>