Здравствуйте, nikov, Вы писали:
N>Мое мнение — компиляторы пока недостаточно умны для таких задач.
Согласен. Я верю что за декларативным программированием будующее. В каком направлении сейчас идет раввитие функцональных языков? Достигнут ли технолонический предел умности? Ведется ли разработка сред выполнения для функциональных языков ( я писал в одном из постов) или аппартных решений (например как ЛИСП — машина), позволяющих повысить производительность?
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания http://rsdn.ru/Info/rules.xml
Здравствуйте, igor-booch, Вы писали:
N>>Мое мнение — компиляторы пока недостаточно умны для таких задач.
IB>Согласен. Я верю что за декларативным программированием будующее. В каком направлении сейчас идет раввитие функцональных языков?
Есть гибридные функционально-логические языки, например Curry.
Есть языки с зависимыми типами, например Agda 2.
IB>Достигнут ли технолонический предел умности?
А разве он есть?
Здравствуйте, igor-booch, Вы писали:
IB>Программист должен стремиться к тому чтобы как можно больше кода было чистым. Декларация чистоты отделяет чистый код от нечистого. А так получается, что всё смешивается и мы не можем задействовать преимущества функциональных языков.
IB>Кто-нибудь встречал императивно-декларативные языки с декларацией чистоты?
Ну, как известно, Haskell — лучший императивный язык
Здравствуйте, nikov, Вы писали:
N>Можно написать алгоритм, имеющий сложность по времени O(Log(N)).
Напишите, пожалуйста
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания http://rsdn.ru/Info/rules.xml
Здравствуйте, igor-booch, Вы писали:
IB>Здравствуйте, nikov, Вы писали:
N>>Можно написать алгоритм, имеющий сложность по времени O(Log(N)).
IB>Напишите, пожалуйста
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания http://rsdn.ru/Info/rules.xml
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания http://rsdn.ru/Info/rules.xml
Здравствуйте, Mr.Cat, Вы писали:
MC>Здравствуйте, igor-booch, Вы писали: IB>>По времени сложность тоже экспонентциальная: MC>Потому что ты такой алгоритм написал: IB>> | n => Fib(n — 1) + Fib(n — 2) MC>fib(n) = fib(n-1) + fib(n-2) = [fib(n-2) + fib(n-3)] + [fib(n-3) + fib(n-4)] = ... MC>Заметь, что fib(n-3) раздвоился. Т.е. алгоритм делает кучу повторных вычислений.
Попытался для интереса найти количество вызовов моей рекурсивной функции, как функцию от номера числа Фибоначчи, получилось рекурсивное уравнение:
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания http://rsdn.ru/Info/rules.xml
Здравствуйте, igor-booch, Вы писали: IB>Попытался для интереса найти количество вызовов моей рекурсивной функции, как функцию от номера числа Фибоначчи, получилось рекурсивное уравнение
Если я правильно посчитал, то получается сумма чисел фибоначчи от 1-го до n-го за исключением n-1-го.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, nikov, Вы писали:
N>>Каким алгоритмом будем иррациональное число в степень возводить?
А>Да не об этом речь, 32-битные или 64-битные числа вообще можно по табличке возвращать.
По какой табличке?
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания http://rsdn.ru/Info/rules.xml
Действительно, формула возвращает число с плавающей точкой. При расчёте больших чисел Фибоначчи может появиться погрешность. Наверное нужны специальные аппаратные решения или виртуальные машины заточенные под функцианальное программирование.
Интересно как с этой задачей справилась бы ЛИСП машина?
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания http://rsdn.ru/Info/rules.xml
Здравствуйте, igor-booch, Вы писали:
А>>Да не об этом речь, 32-битные или 64-битные числа вообще можно по табличке возвращать.
IB>По какой табличке?
Имеется в виду, что в 64-битный интервал влезает меньше 100 первых чисел Фибоначчи. Можно их заранее посчитать, и потом доставать из таблицы за константное время.