Функциональное программирование |
Функциональное программирование всегда привлекало меня в противопоставлении к императивному.
Я очень часто обсуждаю различные аспекты функционального программирования на различных ветках на Базарной площади.
Но хотелось бы собрать всех заинтересованный этой темой в одной ветке.
Я думаю что настало время открыть такую тему. И вот почему.
Исторически функциональное программирование появилось практически вместе с императивным.
Вторым языком после фортрана был лисп.
Но увы, функциональное программирование надолго было уделом исследовательских институтов или специализированных приложений (Искусственный Интеллект)
Конечно не надо считать весь мир дураками из за того что развитие пошло по пути языков Алгол семейства.
Для этого были вполне обьективные причины. Функциональные языки слишком близки к человеку и слишком далеки от машины.
Они сьедают в десятки раз больше рессурсов чем императивные языки.
Вспомните претензии, предявляемые к java - первому императивному языку с виртуальной машиной и сборщиком мусора, толкаемому большими корпорациями в mainstream.
Жутко тормозит, и жрет всю память какая есть. А ведь функциональные языки (далее ФЯ) все без иключения имеют сборщик мусора, виртуальную машину.
Многие из них (семейство лисп) еще и динамические, что только усугубляет положение.
Вполне естественно что появившись более полусотни лет назад они надолго опередилли свое время.
Для широкого распространения ФЯ нужны гигабайты дешевой памяти и гигагерцы дешевых процессоров.
Прошло более 50 лет, прежде чем такие требования к железу стали реальностью.
Это время наступило. СЕЙЧАС.
Добро пожаловать в новую эру программирования.
Jack Of Shadows
Всего в теме 5502 сообщения
Добавить свое сообщение
Отслеживать это обсуждение
- Средства разработки. Языки программирования.
- Delphi 4 or Delphi 5
- Что приобрести в качестве средства разработки?
- Delphi6
- Delphi vs PowerBuilder
- Сравнение компиляторов
- Вот и вышла Delphi 7... Вы рады?
№ 2412 01-04-2007 05:22 | |
Ответ на »сообщение 2391« (Geniepro)
___________________________
Зачем требовать от школьников инженерных подходов к программированию? Всё равно мало кто из них захочет стать в будущем программистами, так зачем зря отпугивать?
Типичное непонимание того, зачем и как устроена система образования, в т.ч. школьного. Английский язык там преподают не для того, чтобы делать переводчиков, физику -- не для подготовки будущих физиков ... и т.д.
Плюс, если не хотят, то от чего отпугивать?
уж что проще, чем объяснить математические рекурсивные функции?
ХА-ХА-ХА-ХА-ХА!!!!!
№ 2411 01-04-2007 05:19 | |
Ответ на »сообщение 2387« (Geniepro)
___________________________
Менее известная работа, которую я тут %url[недавно приводил:]
Работа эта доказывает только то, что вводный курс для полных новичком лучше всего делать не на "промышленной" системе, а на максимально простой с минимумом основных понятий. Специфика ФЯ там не играет ровно никакой роли.
№ 2410 01-04-2007 05:17 | |
Ответ на »сообщение 2401« (AVC)
___________________________
... оберонщики склонны не замечать механизмы, отсутствующие в "чисто" императивных языках (например -- лямбды; каюсь).
Хорошую реализацию любого ФЯ можно написать на Обероне. Соответственно, все механизмы типа лямбд можно в любой своей программе на Обероне иметь. Другое дело, что не особо нужны они там. И соотв. функциональность проще (и эффективнее) по-другому сделать.
Еще раз: Оберон -- не "чисто" императивный язык. Таким является фортран 77. Но никак не Оберон.
№ 2409 01-04-2007 05:05 | |
Ответ на »сообщение 2401« (AVC)
___________________________
функциональщики несколько увлекаются деталями языка Хаскель, как будто ФП и Хаскель одно и то же (на мой взгляд, Хаскель -- частный случай)
По моему очень скромному мнению, этот частный случай на сегодня является наиболее общим представителем чистого ФП...
Ну, и по крайней мере, самым известным представителем чистого ФП.
а оберонщики склонны не замечать механизмы, отсутствующие в "чисто" императивных языках (например -- лямбды; каюсь).
Хотя мне VladD2 и не нравится своим фанатизмом в отношении Нэмерле, но тут очень кстати вспомнить его любимый пресловутый "парадокс Блаб"... :о))
№ 2408 01-04-2007 04:57 | |
Ответ на »сообщение 2398« (slava)
___________________________
Здесь (<10) является анонимной функцией. Не будь этой фозможности вам пришлось бы писать так:
Синтаксический сахар, как анонимные классы в Java.
Вы знаете, модули ведь тоже всего лишь синтаксический сахар. Как и оъекты, и записи...
И вообще, ВСЁ что свыше Машины Тьюринга (в ИП) или лямбда-исчисления (в ФП) - ВСЁ это лишь синтаксический сахар, не более того...
№ 2407 01-04-2007 04:51 | |
Ответ на »сообщение 2395« (AVC)
___________________________
Вместе с тем, он позволяет писать в функциональном стиле.
Естественно, это не слишком удобно, но возможно (а речь и шла именно о принципе).
Похоже, у нас с Вами слишком разные представления о функциональном стиле.
Повторю вопрос: все ФЯ реализуют ФП одинаково?
А все ли ООП-языки реализуют ООП одинаково?
Вряд ли есть хоть один человек, который знает все ФЯ.
Однако в тех ФЯ, описания которых мне попадались, во всех них были и анонимные функции, и функции высшего порядка. А если в языке не было этих элементов, то их авторы и не называли свои языки функциональными.
Другое дело, что есть гибридные языки (например, питон) в которых эти элементы есть, но при этом эти языки функциональными не считаются...
Если Вам известны обратные примеры - приведите их. Будет очень любопытно посмотреть на это...
Я правильно понял, что в ФП сборщик мусора -- необязательный элемент, кусок синтаксического сахара?
Например, в Обероне его необходимость считается математически доказанной...
Пардон? Как это можно понять? Как можно математически доказать необходимость в сборщике мусора?
Предположим, у Вас в наличии объём памяти, ограниченный лишь размерами Вселенной. Для подавляющего большинства задач сборщик мусора вам будет абсолютно не нужен...
Хочу напомнить, что в функторы (объекты-функции) в STL никакого отношения к ООП не имеют.
А то, если так рассуждать, то почти все ИЯ являются еще и ФЯ: ведь практически в каждом есть функции. :)
STL - это уже результат метапрограммирования на шаблонах.
Насколько я понял, необходимости в лямбдах нет, как и прямой связи между лямбдами (как безымянными функциями) и функциональностью (в смысле ФП).
На основании чего Вы так решили?
Начиная с Алгола-68, существуют императивные языки, ориентированные на ?-исчисление, но не ставшие от этого функциональными.
Что это за такое "?-исчисление" и что это за языки такие?
Короче, один пример (даже схематичный) стоит тысячи слов.
Ну так мы давно уж твердим: "Попробуйте!"
Возможно, многие вопросы отпадут сами собой...
№ 2406 01-04-2007 04:43 | |
Замечу при этом, что к Питону, как явлению в принципе, отношусь совершенно положительно, немного интересовался и даже пробовал. Интересная "игрушка", вполне применимая для ряда задач (например, в качестве макроязыка для каких-то приложений, я считаю, например, удачным решением разработчиков Civilization3 вынести все описания и игровую логику в скрипты на питоне - там их около 40 Мб :-) )
№ 2405 01-04-2007 04:38 | |
По поводу Python, Ruby и т.п., что Вы где-то выше предложили для школы...
Бррр... Мне от этой мысли коробит. Чистый Scheme/Lisp/Haskell - это одно...
Но только не эти "сахарные" языки. Нужно приучать с первых шагов к дисциплине и минимализму, а не к многочисленным удобствам и "язык должен мне позволить так, как я хочу". В противном случае - что будет заложено в школе, потом и рожном не вышибешь :-) И программиста не выйдет, выйдет еще один батонокидатель или кодолабатель.
№ 2404 01-04-2007 04:35 | |
Да, по поводу реального времени на ФП - чтобы не выглядело так, что я игнорирую данные мне ссылки... Скачал, погляжу на досуге, потом поделюсь впечатлениями. Мне это действительно интересно.
№ 2403 01-04-2007 04:19 | |
Ответ на »сообщение 2387« (Geniepro)
___________________________
Пример Оксфорда и MIT Вас, похоже, не впечатляет, а жаль...
Впечатляет. В Оксфорде два языка, на которых учат параллельно: Хаскел и Оберон. Что совершенно правильно. Если бы Вы повнимательней следили за мыслью собеседников, то помнили бы, что я подчеркнул НЕОБХОДИМОСТЬ преподавания ФП в ВУЗе - и чем раньше, тем лучше.
Я просил примеры преподавания в школе, а не в ВУЗе.
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|