Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2011-10-17 20:41:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Таки о консерватизме и buzzwords
Ну вот - да сейчас считаю - лымбды - очень круто (или сложный отстой), функциональное программирование, прогресс-прогресс. И какую-то теоретическую хуйню вокруг этого разводят - хотя то, что возможность передать в функциюю параметром callback, привязанный к локальной среде - удобное - веещь которая была общеизвестной в 60-е годы - отчасти из-за лиспа, но не только: есть такая старая техника использования А-60 - "прием Йенсена" - основанная на эксплутации того странного факта, что в А-60 параметры передавались в виде кода для их вычисления - и такое работало:
begin
   integer i;
   real procedure sum (i, lo, hi, term);
      value lo, hi;
      integer i, lo, hi;
      real term;
      comment term is passed by-name, and so is i;
   begin
      real temp;
      temp := 0;
      for i := lo step 1 until hi do
         temp := temp + term;
      sum := temp
   end;
   comment note the correspondence between the mathematical notation and the call to sum;
   print (sum (i, 1, 100, 1/i))
end


Понятно что несколько через жопу - но в сравнении с плюсовыми итераторами - это можно сказать верх краткости и удобства.

Черезжопность исправили уже в А-68, где просто были анонимные процедуры.

Лет же 6 назад еще автор перла руками и ногами отпихивался от требований вставить туда что-то похожее - типа "я не понимаю зачем". Да затем что куча программерских идиом начинает писаться в разы короче и яснее - неужели недостаточая причина?


(Добавить комментарий)


[info]alamar
2011-10-17 21:05 (ссылка)
Я читаю твои вхождения в мир ФП со взлётами и падениями, и нахожусь в замешательстве.

Во-первых, ведь в б-гопротивном дотнете, который ты вроде бы практикуешь, делегаты и прочая функциональная хрень имеет быть.

Или там никто так и не написал map/groupBy/filter для коллекций??

А в перле есть така конструкция:
sort { $a <=> $b } @foo;
Здесь хрень в скобочках - именно что анонимная процедура, работающая над именованными переменными.

(Ответить) (Ветвь дискуссии)


[info]kouzdra
2011-10-17 21:13 (ссылка)
Во-первых, ведь в б-гопротивном дотнете, который ты вроде бы практикуешь, делегаты и прочая функциональная хрень имеет быть

Имеет конечно быть - им вообще заправляет скупленная лет 8-10 назад MS функциональная тусовка. Но я им не занимаюсь - просто пересекался время от времени (первый раз кажется в 2000-ом) - и знаю примерно тамошний личный состав.

А в перле есть така конструкция:

Это она сейчас есть. Еще недавно от нее отбивались руками и ногами.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alamar
2011-10-17 21:15 (ссылка)
Я не изучал вопроса, но предполагаю, что в перл5 эта конь струкция есть с рождения.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2011-10-17 21:46 (ссылка)
Вот как раз по этому поводу и возмущался - "заставили проклятые вставить з зачем????"

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vitus-wagner.livejournal.com
2011-10-17 22:22 (ссылка)
Ну так это не "лет 6 назад" а все шестнадцать.

(Ответить) (Уровень выше)


[info]ifp5
2011-10-17 23:09 (ссылка)
Недавно это когда? Perl 1-2-3 не застал, но вот в Perl 4 уже было, почти 20 лет назад, однако.

(Ответить) (Уровень выше)


[info]gregory_777
2011-10-18 03:06 (ссылка)
> Еще недавно от нее отбивались руками и ногами.

Как и от функции map, ага.
Расскажы.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]alamar
2011-10-18 03:42 (ссылка)
Про это даже программный текст имеется
https://sites.google.com/site/steveyegge2/singleton-considered-stupid

...the Perl community caught on to this first (or at least funniest). They pointed out that many of these so-called patterns were actually an implementation of Functional Programming in C++.

(Ответить) (Уровень выше)