Функциональное программирование |
Функциональное программирование всегда привлекало меня в противопоставлении к императивному.
Я очень часто обсуждаю различные аспекты функционального программирования на различных ветках на Базарной площади.
Но хотелось бы собрать всех заинтересованный этой темой в одной ветке.
Я думаю что настало время открыть такую тему. И вот почему.
Исторически функциональное программирование появилось практически вместе с императивным.
Вторым языком после фортрана был лисп.
Но увы, функциональное программирование надолго было уделом исследовательских институтов или специализированных приложений (Искусственный Интеллект)
Конечно не надо считать весь мир дураками из за того что развитие пошло по пути языков Алгол семейства.
Для этого были вполне обьективные причины. Функциональные языки слишком близки к человеку и слишком далеки от машины.
Они сьедают в десятки раз больше рессурсов чем императивные языки.
Вспомните претензии, предявляемые к java - первому императивному языку с виртуальной машиной и сборщиком мусора, толкаемому большими корпорациями в mainstream.
Жутко тормозит, и жрет всю память какая есть. А ведь функциональные языки (далее ФЯ) все без иключения имеют сборщик мусора, виртуальную машину.
Многие из них (семейство лисп) еще и динамические, что только усугубляет положение.
Вполне естественно что появившись более полусотни лет назад они надолго опередилли свое время.
Для широкого распространения ФЯ нужны гигабайты дешевой памяти и гигагерцы дешевых процессоров.
Прошло более 50 лет, прежде чем такие требования к железу стали реальностью.
Это время наступило. СЕЙЧАС.
Добро пожаловать в новую эру программирования.
Jack Of Shadows
Всего в теме 5502 сообщения
Добавить свое сообщение
Отслеживать это обсуждение
- Средства разработки. Языки программирования.
- Delphi 4 or Delphi 5
- Что приобрести в качестве средства разработки?
- Delphi6
- Delphi vs PowerBuilder
- Сравнение компиляторов
- Вот и вышла Delphi 7... Вы рады?
№ 2242 26-03-2007 01:40 | |
Ответ на »сообщение 2231« (Булат Зиганшин)
___________________________
желаете опровергнуть это самолично? :D
Булат, просто надоело одно и то же пятый год перетирать, одну и ту же завиральную демагогию некоторых участников читать.
Когда случается новый поворот какой -- тогда интересно. А так -- просто нет возможности.
№ 2241 26-03-2007 01:33 | |
Ответ на »сообщение 2235« (Сергей Перовский)
___________________________
Ответ на »сообщение 2222« (info21)
___________________________
>>>А эффект этих простых фундаментальных весчей propagates сквозь всю разработку -- от уровня кода, где это выглядит как приятные мелочи, до уровня архитектуры, где это выглядит уже как life saver.
Разберем, например, контроль заголовков процедур.
В статической компиляции он есть. При динамическом связывании dll отсутствует.
В Обероне работает и при динамическом связывании.
Я очень редко использую динамическое связывание - ну не надо оно мне.
И компилятор всегда найдет ошибки в вызове процедуры.
Поэтому контроль типов при динамическом связывании, для меня изящный пустячок.
А для разработчика операционной системы это фантастически важный механизм.
Разные задачи, разные критерии оценки, что тут удивительного?
Разберем, например, модули. У обычных школьников все задачки -- в одну процедуру.
Для них модули -- изящный пустячок.
Разные задачи, разные критерии оценки -- ничего удивительного 8))
Вы очень редко используете дин. связывание скорее всего потому, что Ваши инструменты его по-хорошему не поддерживают -- и тогда, конечно, одна морока.
№ 2240 26-03-2007 01:17 | |
Ответ на »сообщение 2225« (Булат Зиганшин)
___________________________
в данном случае мусор - это procedure, begin, end, if, then, else.
begin-end мусор в старом паскале. В обероне этого нет. Что остальное мусор -- Ваша субъективность. Неинтересно.
вы судите об опасности необъявления типов по императивным языкам, которые имеют куда менее строгую типизацию.
Сужу по Оберону, где типизация абсолютно герметичная.
в современном программировании приходится использовать очень сложные сконструированные типы, и менять объявления переменных каждый раз при изменении алгоритма - весьма скучная задача
Вы знаете, мне приходится заниматься постоянным экспериментированием с алгоритмами и очень сложными структурами данных. Такие уж задачи. Самые что ни на есть современные 8))
И там вероятность того, что двойная ошибка произойдет, нетривиально повышается -- потому что все время приходится что-то где-то переделывать. И когда *это* происходит, мало не покажется.
От ФЯ я давно отказался, потому что нужно, чтоб все было просто и надежно, как гвоздь, и чтобы студент 3-го курса пришел и через неделю-две что-то полезное уже ковырял.
Все умности ФЯ -- это игры ИТ-профессионалов, которым скучно ... программирование -- весчь пустая сама по себе. А также нужно чем-то гордиться... А мне веселья и поводов для законной гордости более чем хватает за пределами программирования 8))
А от программирования нужно только, чтобы как можно меньше от него головной боли происходило. Потому как еще раз -- пустое оно само по себе.
№ 2239 25-03-2007 23:35 | |
Ответ на »сообщение 2238« (Jack Of Shadows)
___________________________
Ответ на »сообщение 2237« (Geniepro)
___________________________
И почему дельфисты да цеплюсплюсники не могут найти на неё время, показать всю мощь их языков, не пойму... :о))
Дык показывать неча :))
Дельфисты не показывают, они делают... :)
№ 2238 25-03-2007 14:11 | |
Ответ на »сообщение 2237« (Geniepro)
___________________________
И почему дельфисты да цеплюсплюсники не могут найти на неё время, показать всю мощь их языков, не пойму... :о))
Дык показывать неча :))
№ 2237 25-03-2007 14:05 | |
Ответ на »сообщение 2234« (Jack Of Shadows)
___________________________
GeniePro даже пустился на героический просто поступок, потратил кучу времени и написал на хаскеле задачу с програмисткой олимпиады. С подороным разбором полетов.
Ой, Вагиф, ну прям засмущали... :о)
Не корысти ради, а токмо для пропаганды ФП в целом и Хаскелла в частности... ;о)
А задачка, кстати, ну такая простенькая, прям разминочная...
И почему дельфисты да цеплюсплюсники не могут найти на неё время, показать всю мощь их языков, не пойму... :о))
№ 2236 25-03-2007 14:05 | |
Ответ на »сообщение 2225« (Булат Зиганшин)
___________________________
вывод типов однако несовместим (или плохо совместим) с наследованием в стиле ООП, неограниченной перегрузкой имён, автоматическими преобразованиями типов
Немерлисты на RSDN.RU упорно утверждают обратное - мол, в Немерле наикрутейший алгоритм вывода типов, который прекрасно согласуется и с традиционным ООП из С#, и с перегрузкой имён функций, и позволяет макросам быть типизированными...
№ 2235 25-03-2007 13:42 | |
Ответ на »сообщение 2222« (info21)
___________________________
>>>А эффект этих простых фундаментальных весчей propagates сквозь всю разработку -- от уровня кода, где это выглядит как приятные мелочи, до уровня архитектуры, где это выглядит уже как life saver.
Разберем, например, контроль заголовков процедур.
В статической компиляции он есть. При динамическом связывании dll отсутствует.
В Обероне работает и при динамическом связывании.
Я очень редко использую динамическое связывание - ну не надо оно мне.
И компилятор всегда найдет ошибки в вызове процедуры.
Поэтому контроль типов при динамическом связывании, для меня изящный пустячок.
А для разработчика операционной системы это фантастически важный механизм.
Разные задачи, разные критерии оценки, что тут удивительного?
№ 2234 25-03-2007 13:00 | |
Ответ на »сообщение 2233« (Сергей Перовский)
___________________________
А с модульным или ООП имеет смысл сравнивать только на сложных задачах.
Что в рамках форума затруднительно.
Вот вы сами и ответили на вопрос, почему убеждать вас бессмысленно.
Почему на ваши "ты мне на пальцах покажи как базу данных на ФП написать" никто не имеет ни времени, ни желания.
GeioPro даже пустился на героический просто поступок, потратил кучу времени и написал на хаскеле задачу с програмисткой олимпиады. С подороным разбором полетов. Но даже это дла вас не является достаточно сложным примером. Стоит ли пытаться дальше ?
№ 2233 25-03-2007 12:52 | |
Ответ на »сообщение 2223« (Булат Зиганшин)
___________________________
>>>если я скажу что хаскелл - сверх-высокоуровневый язык и не покажу никаких примеров. вы поверите? ;)
Вы тут уже высказывались что хаскелл - сверх язык :)
И даже приводили примеры.
Вот только примеры в данном случае плохо убеждают.
Потому что каждый сторонник определенной парадигмы, потому и сторонник, что на ЕГО примерах она лучше работает.
С чем Вы сравниваете ФП на мелких примерах? С процедурным программированием. В большинстве случаев сравнение будет в пользу ФП, никто и не спорит.
А с модульным или ООП имеет смысл сравнивать только на сложных задачах.
Что в рамках форума затруднительно.
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|