Re[2]: ФП: вводная статья
От: Nick_ Россия  
Дата: 27.09.04 16:26
Оценка: +1
Здравствуйте, FR, Вы писали:

FR>У меня такой вопрос какие задачи ложатся на ФЯ лучше чем на ИЯ. Просто из своего опыта и из тех веток где была задача с простыми числами, у меня сложилось впечатление что даже многие математические задачи проще решаются ИЯ, например у той же задачи про решето Эратосфена сишная реализация намного прозрачнее и ближе к описанию алгоритма на естественном языке.


Хорошо, давайте сравним.

Быстрая сортировка на ФЯ:

qsort []     = []
qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
                 where
                   elts_lt_x   = [y | y <- xs, y < x]
                   elts_greq_x = [y | y <- xs, y >= x]


Решето эрастофена на ФЯ:

ld n = ldf 2 n

divides d n = rem n d == 0

ldf k n | divides k n = k
        | k^2 > n     = n
        | otherwise   = ldf (k+1) n

prime n | n < 1     = error "not a positive integer"
        | n == 1    = False
        | otherwise = ld n == n


Императивные аналоги, я думаю, Вы себе представляете.

На функциональных языках многое записывается проще. Проблема же состоит только в том, что современные компиляторы функциональных языков не могут сгененрировать эффективный код. Но это не принципиальная проблема. Рано или позно появятся эффективные компиляторы. Еще одна проблема функциональных языков — это убогая семантика массивов. Но и она, скорее всего, тоже окажется в прошлом.
Идея любого языка программирования заключается в том, что бы переложить максимальное количество рутинной работы на компьютер. А для этого задача должна описываться на максимально возможном для машины уровне абстракции. Пока что для этого ничего лучше функционального и логического подхода не придумано.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.