[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Perl or Python?



 AD>>  У меня на  этапе изучения  лиспа было  очень яркое  впечатления от
 AD>> одной очень мелкой задачки, которая была решена на лиспе. Надо было
 AD>>  транспонировать  матрицу.  Решение  состояло  из вызова  3-х(трёх)
 AD>>  функций, которые не  имеют никакого  отношения к  матрицам, вообще
 AD>>  никакого. То есть  ни циклов,  ничего такого,  просто 3  строки, в
 AD>> каждой вызов  одной функции, вложенный в другую.  В лиспе также нет
 AD>> НИКАКИХ инструментов для обработки матриц.  Делайте выводы.

> Вообще-то, можно одной строкой:
> (apply #'map 'list matrix), 
> где matrix - список списков
О! Верх изящества. Вспоминается пример, как дядечка в середине 70-х
разбирал несколько ЧАСОВ(!) 4(!!!) строки на языке APL.
35 лет прошло, и никто ничему так и не научился :-/

> Но хотел бы  я посмотреть на законченную реальную  программу, которой бы
> надо было работать с матрицами,  и чтобы матрицы в ней были представлены
> списками. :-)

AFAIR существуют алгоритмы, которые реализуют списки с операциями
'head', 'tail', 'cons', 'n-th' и кажется еще и 'append' впридачу с
трудоемкостью не хуже O(log(N)). Причем, в статье, которую я читал
специльно указывавалось, что это, мол, актуально для функциональных
языков, таких как Лисп и ML. Учитывая, что на практике log(N) всегда
меньше 128, можно считать, эти операции имеют трудоемкость O(1), то есть
выполняются за константное время.

Лиспофилам эта информация, естественно, ни к чему ;-) Они никогда не
занимаются оценкой трудоемкости алгоритмов, которые пишут. O(N^2), там
где положено быть O(N), их нисколько не пугает. А экспонента -- вообще
полная фигня, машины сейчас быстрые, и память дешевая.

Вывод: с точки зрения идеологии введение в лисп массивов -- бестолковый
и непродуманный прогиб под практику. Точно такой же прогиб, как
всяческие Objective приставки к CAML-у.

А о том, что такое введение "аккумуляторов" для обеспечения хвостовой
рекурсии я вообще никому не скажу, потому что это непечатная лексика.

-- 
Best regards, Aleksey Cheusov.


Reply to: