кто бы смог доходчиво объяснить что за звери такие функциональные языки программирования, в чём фишка, и какие они бывают. Я не программист, но мне просто интересно и хотелось бы увидеть ваши комментарии.
Спасибо!
Модератор: Модераторы разделов
Код: Выделить всё
fact int -> int
fact 0 = 1
fact n = n * fact (n-1)Это скорее объясняет, что такое рекурсивное программирование. Функциональное почти всегда использует рекурсивное, но "рекурсивное" не равно "функциональное", оно может с тем же успехом применяться и в процедурном программировании, и в объектном.(bogus @ Пятница, 15 Октября 2004, 10:11) писал(а):t.t., как математик, объяснит конечно лучше.
Но пока он думает, вот мои 15 коп.:
1) Функция для вычисления факториала. (из учебника по Haskell, близко к тексту):
Код: Выделить всё
fact int -> int fact 0 = 1 fact n = n * fact (n-1)
Смотря что называть наукой, наверное. Экспертные системы, например, -- это наука? А самообучающиеся алгоритмы? И там, и там функциональное программирование применяется весьма успешно; впрочем, как и логическое. Хотя, пожалуй всё равно не только в науке, emacs -- живой тому пример.(bogus @ Пятница, 15 Октября 2004, 10:11) писал(а):4) t.t. - это где-нибудь кроме науки применяется?
Пролог -- тоже классная штука, но это не функциональное, а логическое программирование. ФП и ЛП можно полностью смоделировать одно через другое, но изначально это всё-таки совершенно разные вещи (хотя по "концепции" друг на друга похожи больше, чем на ставшие традиционными методы программирования).(Jan2ary @ Пятница, 15 Октября 2004, 11:02) писал(а):Я когда-то прологом увлекался. Очень красивый и забавный язык, полностью переворачивает мышление!
Из каких-то ещё первой в голову пришла схема (schema). Разница между ними только, так сказать, на уровне реализации -- синтаксиса и структуры "построения языка"; база у всех (мне известных, по крайней мере) общая.(brazhe @ Пятница, 15 Октября 2004, 10:59) писал(а):И кстати, haskell, Lisp (куча разных?), ocaml, Smalltalk -- это все функциональные языки? Есть ли какие-то ещё, какая между ними разница?
Возможно. Кажется, где-то тоже такое слышал.(brazhe @ Пятница, 15 Октября 2004, 10:59) писал(а):И еще, вроде какой-то Windows Manager на Lisp'e писан, или я ошибаюсь?
(brazhe @ Пятница, 15 Октября 2004, 10:59) писал(а):И еще, вроде какой-то Windows Manager на Lisp'e писан, или я ошибаюсь?
(brazhe @ Пятница, 15 Октября 2004, 10:59) писал(а):И еще, вроде какой-то Windows Manager на Lisp'e писан, или я ошибаюсь?
Нет, она правильная. Последнее время в лиспе не так жёстко подходят к "чистой функциональности" языка. Т.е. есть, так сказать, ядро языка, и в этом ядре выполняются все формальные требования к функциональному программированию, а есть большое количество функций, не входящих в это ядро, для которых сохраняются основные принципы функциональности, но сняты многие запреты (например, запрет на побочные эффекты). Пришли к этому потому, что поняли мощность сочетаний чистого ФП с другими методами программирования; и сейчас в любом лиспе, соответствующем стандарту, можно как ограничиваться чистым ФП, так и сочетать его с другими подходами (процедурным, структурным, объектным, логическим). Это действительно даёт огромную свободу в разработке.(bogus @ Пятница, 15 Октября 2004, 12:57) писал(а):К слову о лиспе...
Одним из требований чисто функционального (pure functional) языка явл. отсутствие у функций побочных эффектов. Кроме всего прочего, это означает отсутствие переменных. В хаскеле это выполняется, а в лиспе нет. Правда, я смотрел только на реализацию лиспа librep; может он неправильная