Функциональное программирование |
Функциональное программирование всегда привлекало меня в противопоставлении к императивному.
Я очень часто обсуждаю различные аспекты функционального программирования на различных ветках на Базарной площади.
Но хотелось бы собрать всех заинтересованный этой темой в одной ветке.
Я думаю что настало время открыть такую тему. И вот почему.
Исторически функциональное программирование появилось практически вместе с императивным.
Вторым языком после фортрана был лисп.
Но увы, функциональное программирование надолго было уделом исследовательских институтов или специализированных приложений (Искусственный Интеллект)
Конечно не надо считать весь мир дураками из за того что развитие пошло по пути языков Алгол семейства.
Для этого были вполне обьективные причины. Функциональные языки слишком близки к человеку и слишком далеки от машины.
Они сьедают в десятки раз больше рессурсов чем императивные языки.
Вспомните претензии, предявляемые к java - первому императивному языку с виртуальной машиной и сборщиком мусора, толкаемому большими корпорациями в mainstream.
Жутко тормозит, и жрет всю память какая есть. А ведь функциональные языки (далее ФЯ) все без иключения имеют сборщик мусора, виртуальную машину.
Многие из них (семейство лисп) еще и динамические, что только усугубляет положение.
Вполне естественно что появившись более полусотни лет назад они надолго опередилли свое время.
Для широкого распространения ФЯ нужны гигабайты дешевой памяти и гигагерцы дешевых процессоров.
Прошло более 50 лет, прежде чем такие требования к железу стали реальностью.
Это время наступило. СЕЙЧАС.
Добро пожаловать в новую эру программирования.
Jack Of Shadows
Всего в теме 5502 сообщения
Добавить свое сообщение
Отслеживать это обсуждение
- Средства разработки. Языки программирования.
- Delphi 4 or Delphi 5
- Что приобрести в качестве средства разработки?
- Delphi6
- Delphi vs PowerBuilder
- Сравнение компиляторов
- Вот и вышла Delphi 7... Вы рады?
№ 3012 29-09-2007 16:01 | |
Никто не читал книгу Р. Душкина "Функциональное программирование на языке Haskell"? Купил недавно, понемногу читаю. Но интересно мнение тех, кто знаком с ФЯ и с литературой по ним насчет этой книги.
№ 3011 18-09-2007 12:21 | |
№ 3010 17-09-2007 09:23 | |
Ответ на »сообщение 3007« (Мухтар )
___________________________
Ух-ты как все просто и легко, то оказывается! Будем каждый цикл от одного до десяти параллелить? :)))))
Уже сейчас есть маленькие компьютеры с 2048-ми ядрами. На них можно распараллеливать циклы побольше, чем от 1 до 10... :о))
Глядишь, вспомнят и про SISAL. Хороший был язык, распараллеливался отично, куда лучше фортранов...
№ 3009 17-09-2007 09:19 | |
Ответ на »сообщение 3000« (Илья Ермаков)
___________________________
Т.е. возможно ли "ФП без доминирования функционально-математических абстракций". Такой вот провокационный вопрос к господам функциональщикам :-)
Боюсь, это уже нельзя будет назвать функциональным программированием... ;о)
№ 3008 17-09-2007 07:07 | |
Ответ на »сообщение 3007« (Мухтар )
___________________________
Ух-ты как все просто и легко, то оказывается! Будем каждый цикл от одного до десяти параллелить? :)))))
Ну напишите архиватор, который будет использовать преимущества многоядерности. Или программу взлома ключа шифрования.
№ 3007 17-09-2007 04:33 | |
Ответ на »сообщение 3005« (Marduk)
___________________________
Весело тут у вас-сами себе дифирамбы поете :)))
Чтобы что-то распараллелить-надо сначала что-то написать посерьезней quicksorta
Совершенно согласен :) У меня дома пылится книжка "Параллельные вычисления" в шестьсот страниц. Осталась со времен диплома. Матрицы, графы и прочее.
Ответ на »сообщение 2998« (Geniepro)
___________________________
void Render(Scene scene, Color[,] rgb)
{
Parallel.For(0, screenHeight, delegate(int y)
{
for (int x = 0; x < screenWidth; x++) {
rgb[x,y] = TraceRay(new Ray(scene,x,y));
}
});
}удалось добиться семикратного роста скорости трассировки лучей на восьмиядерном компьютере!
Ух-ты как все просто и легко, то оказывается! Будем каждый цикл от одного до десяти параллелить? :)))))
№ 3006 17-09-2007 03:47 | |
Ответ на »сообщение 2998« (Geniepro)
___________________________
добиться семикратного роста скорости трассировки лучей на восьмиядерном компьютере
Правильно - одно ядро потрачено на согласование работы других семи.
Задача для распараллеливания уж больно хороша!
№ 3005 17-09-2007 03:16 | |
Ответ на »сообщение 2998« (Geniepro)
___________________________
Весело тут у вас-сами себе дифирамбы поете :)))
Чтобы что-то распараллелить-надо сначала что-то написать посерьезней quicksorta
№ 3004 16-09-2007 04:03 | |
Спасибо за объяснение! Кратко и ясно :-)
№ 3003 15-09-2007 16:55 | |
Ответ на »сообщение 3002« (Jack Of Shadows)
___________________________
В следующей пятилетке может они додумаются наконец до type inference (выведение типов) и
{int x,int y => x + y}
првератится в
{x,y => x + y}
:))
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|