Функциональное программирование |
Функциональное программирование всегда привлекало меня в противопоставлении к императивному.
Я очень часто обсуждаю различные аспекты функционального программирования на различных ветках на Базарной площади.
Но хотелось бы собрать всех заинтересованный этой темой в одной ветке.
Я думаю что настало время открыть такую тему. И вот почему.
Исторически функциональное программирование появилось практически вместе с императивным.
Вторым языком после фортрана был лисп.
Но увы, функциональное программирование надолго было уделом исследовательских институтов или специализированных приложений (Искусственный Интеллект)
Конечно не надо считать весь мир дураками из за того что развитие пошло по пути языков Алгол семейства.
Для этого были вполне обьективные причины. Функциональные языки слишком близки к человеку и слишком далеки от машины.
Они сьедают в десятки раз больше рессурсов чем императивные языки.
Вспомните претензии, предявляемые к java - первому императивному языку с виртуальной машиной и сборщиком мусора, толкаемому большими корпорациями в mainstream.
Жутко тормозит, и жрет всю память какая есть. А ведь функциональные языки (далее ФЯ) все без иключения имеют сборщик мусора, виртуальную машину.
Многие из них (семейство лисп) еще и динамические, что только усугубляет положение.
Вполне естественно что появившись более полусотни лет назад они надолго опередилли свое время.
Для широкого распространения ФЯ нужны гигабайты дешевой памяти и гигагерцы дешевых процессоров.
Прошло более 50 лет, прежде чем такие требования к железу стали реальностью.
Это время наступило. СЕЙЧАС.
Добро пожаловать в новую эру программирования.
Jack Of Shadows
Всего в теме 5502 сообщения
Добавить свое сообщение
Отслеживать это обсуждение
- Средства разработки. Языки программирования.
- Delphi 4 or Delphi 5
- Что приобрести в качестве средства разработки?
- Delphi6
- Delphi vs PowerBuilder
- Сравнение компиляторов
- Вот и вышла Delphi 7... Вы рады?
№ 172 15-06-2006 08:03 | |
Ответ на »сообщение 171« (Trurl)
___________________________
Как говорил один прапорщик "А положено - ешьте". :-)
Я вижу тут не только борщи кастрюлями потребляют. Тут ещё и ждут, пока они протухают до вони...
"Немного" доплненный текст (например, отсюда http://www.cse.unsw.edu.au/~dons/haskell-1990-2000/msg01258.html):
* To: haskell@dcs.glasgow.ac.uk
* Subject: Obfuscated Haskell Code Contest
* From: Lennart Augustsson <augustss>
* Date: Fri, 5 Nov 93 16:42:01 +0100
* Approved: haskell@dcs.gla.ac.uk
* Mail-from: From Haskell-List-Dist-Request@Dcs.Gla.Ac.Uk Fri Nov 5 17:05:49 1993
* Old-resent-from: haskell-request@dcs.gla.ac.uk
* Resent-date: Fri, 5 Nov 1993 15:50:50 +0000
* Resent-from: kh
* Resent-message-id: <9311051605.AA28818@animal.cs.chalmers.se>
* Resent-to: haskell-list-dist
Resent-Message-Id: <9311051605.AA28818@animal.cs.chalmers.se>
From: Lennart Augustsson <augustss>
Subject: Obfuscated Haskell Code Contest
Date: Fri, 5 Nov 93 16:42:01 +0100
To: haskell@dcs.glasgow.ac.uk
Old-Resent-From: haskell-request@dcs.gla.ac.uk
Errors-To: haskell-request@dcs.gla.ac.uk
Approved: haskell@dcs.gla.ac.uk
Resent-Date: Fri, 5 Nov 1993 15:50:50 +0000
Resent-From: kh
Resent-To: haskell-list-dist
Obfuscated Haskell Code Contest
===============================
THE TIME HAS COME!
Haskell has now come of age
... SKIPPED ...
The goal: a program of at most 1024 characters that is as incomprehensible as possible.
Deadline: 1 Jan 1994.
Send to: iohcc@cs.chalmers.se
Full rules (stolen from the C contest) below.
Have fun
-- Lennart Augustsson Сообщение не подписано
№ 171 15-06-2006 05:30 | |
Ответ на »сообщение 165« (Сообщение не подписано)
___________________________
>>>>>Такого конкурса для функциональных языков нет.
>>>>Этого вы знать не можете. Вы можете не знать о таком конкурсе.
>>>Судя по здешней дискуссии и персоналиям, это ВЫ можете НЕ знать. Даже не "можете", а – "позволяете себе мочь не знать".
>>>А мне знать об этом положено. ;)
Как говорил один прапорщик "А положено - ешьте". :-)
From: Lennart Augustsson <augustss>
Subject: Obfuscated Haskell Code Contest
Obfuscated Haskell Code Contest
===============================
THE TIME HAS COME!
Haskell has now come of age and it is time to prove that we can do as good as C programmers can. Thus, the time has come for an obfuscated Haskell code contest. The contest is modelled after the corresponding C contest.
But with Haskell we should be able to reach levels of obfuscation that C programmers can only dream of in their wildest nightmares. Just consider the exception filled lexical rules (e.g. comments), strange syntax (try mixing layout with no-layout), and a semantics that is still debated.
The goal: a program of at most 1024 characters that is as incomprehensible as possible.
№ 170 15-06-2006 05:09 | |
Ответ на »сообщение 161« (Q. Werty)
___________________________
Нет никакой "пропасти" между хорошими императивными языками и хорошими функциональными. ... Великие идеи не знают границ - например, такая идея, как идея модульности. И это хорошо.
Дополню наблюдение коллеги-преподавателя:
Все "хорошие" языки -- синтетические, иначе работать было бы практически невозможно: между каждым нажатием клавиши комп ждет, имея state (даже если последний называть набором определений фукнций).
Но из трех парадигм императивная выделена -- тем, что именно так устроено железо. Поэтому самые по факту мощные языки берут императивную парадигму за основу, вводя ограничения и средства, мотивированные опытом работы в других парадигмах (хотя бы рекурсивные функции, наличествовавшие уже в Алголе; не говоря про герметичную систему типов вместе со сбором мусора в Обероне).
№ 169 15-06-2006 05:03 | |
№ 168 15-06-2006 04:02 | |
Ответ на »сообщение 162« (Jack Of Shadows)
___________________________
Поэтому прошу info21. Не могли бы вы поделиться с описанием тех трудностей, с которыми вам пришлось столкнуться в вашей, судя по всему, долгой практике работы с функциональными (?) языками ?
Обучение. Адаптация чужих программ.
Да и вообще а что за язык (языки) то были ?
Работал с лиспом. Смотрел много чего.
"Чтобы оценить борщ, не обязательно съедать всю кастрюлю."
может сложиться впечатление что вы действительно по фортрану о лиспе судите :))
Впечатления зависят от того, что люди хотят -- или не хотят -- услышать. За это я не могу отвечать.
№ 167 15-06-2006 02:13 | |
Ответ на »сообщение 163« (Комбриг)
___________________________
Ну что ж, кому-то обязательно надо сунуть в рот кусок чего-то, чтобы понять его малосъедобность, а кому-то достаточно посмотреть и понюхать и не ставить сомнительных экспериментов
Хорошо что люди не учатся программированию посмотрев и понюхав. :))
Пока что кроме как практикой другого способа научиться писать программы еще не придумано. В том числе и составить мнение о том или ином аспекте программирования.
языки программирования, в которых каждый кому ни лень может может "расширять синтаксис" я действительно "в гробу видал"
Вы наверное из тех кто по той же причине и сторонних библиотек не использует. Только свое или "стандартное" :))
На самом деле, как вы себе представляете "расширение синтаксиса" ?
По вашему людям делать нечего, только назло вам придумывать новые операторы if, while, for, специально переименовывая их так чтобы в ни в жисть не догадались что же они делают ?
Впрочем советовать вам попробовать самому не буду. Помню, вы уже понюхали :))
№ 166 15-06-2006 00:43 | |
Ответ на »сообщение 163« (Комбриг)
___________________________
Сразу замечу по поводу того, что "спорю о вкусе устриц с теми, кто их ел". Ну что ж, кому-то обязательно надо сунуть в рот кусок чего-то, чтобы понять его малосъедобность, а кому-то достаточно посмотреть и понюхать и не ставить сомнительных экспериментов :)
Вы лягушек употребляете?
А собак?
А гусениц величиной с "колбасу охотничью"?
Нет?
Странно, вы знаете, а кто-то вас просто не поймёт и подумает, что вы извращенец.
Далеко за примерами ходить не надо – обратитесь к первому попавшемуся мусульманину и спросите его мнение про свинину.
Тут приводили в пример Эксель как некоторый аналог функционального программирования. Так вот, я неоднократно видел попытки соорудить на Экселе нечто большее, чем подсчет сумм и средних по табличкам. И эти кошмарные произведения послужили для меня неплохой "прививкой"...
Вы не уловили аналогий – кто и зачем говорил об экселе...
Наверное, отсюда проистекает ваше: Не желаю ни с кем спорить, но языки программирования, в которых каждый кому ни лень может "расширять синтаксис" я действительно "в гробу видал".
Остаётся вам от всей души посочувствовать. Вам наверное так и придётся всю жизнь прометаться в жёстко определённом "прокрустовом ложе" задач и способов их решения.
И необходимость пользоваться таким инструментом для меня может быть сравнима с приговором к каторге на рудниках :)...
Стереотипы. И отсутствие опыта работы с такими языками. Сообщение не подписано
№ 165 15-06-2006 00:23 | |
Ответ на »сообщение 160« (info21)
___________________________
Бред какой-то: динамические структуры и Immutability.
Вы хоть поняли, что сказали?
Я – да.
Вы, как обычно, не умеете читать: я не связал два термина родительным падежом.
Либо вы не понимаете механизмов работы функциональных языков.
Я не понимаю, как применительно к неизменяемым (по падежам) английским словам применять падежи русского языка. МОжет русские окончания с дефисом дописывать?
А реализации, случаем, на ФОРТРАНЕ были?
Фортран не намного хуже ассемблера для реализации того же лиспа.
??? Кучу вы на базе огромного массива будете реализовывать? Подменяя (надстраивая) механизмы работы с памятью, уже имеющиеся в ОС?
За то бывает есть объективное сравнение затрат на том или ином языке соответствующих парадигм и подходов.
Вы не только читать не умеете, но и писать.
Специально для тех, у кого трудности с "достройкой контектса", и ассоциациями, я повторю:
За то есть объективное сравнение затрат на том или ином языке для поддержки соответствующих парадигм и подходов.
В Лиспе НЕ возвращаются ЛОКАЛЬНЫЕ функции в понятиях, сложившихся в императивных языках.
Вы точно не умеете читать. Я нигде не говорил про такие функции.
Для тех, у кого уже началось возрастное с памятью:
№156:
(пятая строчка от конца сообщения)
>>> А возращать локальные функции ...
Такого конкурса для функциональных языков нет.
Этого вы знать не можете. Вы можете не знать о таком конкурсе.
Судя по здешней дискуссии и персоналиям, это ВЫ можете НЕ знать. Даже не "можете", а – "позволяете себе мочь не знать".
А мне знать об этом положено. ;) Сообщение не подписано
№ 164 Удалено модератором | |
№ 163 14-06-2006 23:15 | |
Не желаю ни с кем спорить, но языки программирования, в которых каждый кому ни лень может может "расширять синтаксис" я действительно "в гробу видал". И необходимость пользоваться таким инструментом для меня может быть сравнима с приговором к каторге на рудниках :)...
Сразу замечу по поводу того, что "спорю о вкусе устриц с теми, кто их ел". Ну что ж, кому-то обязательно надо сунуть в рот кусок чего-то, чтобы понять его малосъедобность, а кому-то достаточно посмотреть и понюхать и не ставить сомнительных экспериментов :)
Тут приводили в пример Эксель как некоторый аналог функционального программирования. Так вот, я неоднократно видел попытки соорудить на Экселе нечто большее, чем подсчет сумм и средних по табличкам. И эти кошмарные произведения послужили для меня неплохой "прививкой"...
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|