Функциональное программирование |
Функциональное программирование всегда привлекало меня в противопоставлении к императивному.
Я очень часто обсуждаю различные аспекты функционального программирования на различных ветках на Базарной площади.
Но хотелось бы собрать всех заинтересованный этой темой в одной ветке.
Я думаю что настало время открыть такую тему. И вот почему.
Исторически функциональное программирование появилось практически вместе с императивным.
Вторым языком после фортрана был лисп.
Но увы, функциональное программирование надолго было уделом исследовательских институтов или специализированных приложений (Искусственный Интеллект)
Конечно не надо считать весь мир дураками из за того что развитие пошло по пути языков Алгол семейства.
Для этого были вполне обьективные причины. Функциональные языки слишком близки к человеку и слишком далеки от машины.
Они сьедают в десятки раз больше рессурсов чем императивные языки.
Вспомните претензии, предявляемые к java - первому императивному языку с виртуальной машиной и сборщиком мусора, толкаемому большими корпорациями в mainstream.
Жутко тормозит, и жрет всю память какая есть. А ведь функциональные языки (далее ФЯ) все без иключения имеют сборщик мусора, виртуальную машину.
Многие из них (семейство лисп) еще и динамические, что только усугубляет положение.
Вполне естественно что появившись более полусотни лет назад они надолго опередилли свое время.
Для широкого распространения ФЯ нужны гигабайты дешевой памяти и гигагерцы дешевых процессоров.
Прошло более 50 лет, прежде чем такие требования к железу стали реальностью.
Это время наступило. СЕЙЧАС.
Добро пожаловать в новую эру программирования.
Jack Of Shadows
Всего в теме 5502 сообщения
Добавить свое сообщение
Отслеживать это обсуждение
- Средства разработки. Языки программирования.
- Delphi 4 or Delphi 5
- Что приобрести в качестве средства разработки?
- Delphi6
- Delphi vs PowerBuilder
- Сравнение компиляторов
- Вот и вышла Delphi 7... Вы рады?
№ 4342 22-07-2008 06:58 | |
Ответ на »сообщение 4341« (Варяг)
___________________________
Silverlight для вас синоним DLR? Это все равно, что писать "теплое(мягкое)" ;)
Вы можете представить себе Silverlight без DLR? Я вот мягкое без теплого - могу :)
IronScheme я уже давно заметил. Но с его применением у меня пока ничего не получится - теже проблемы, что и у Lisp Hobbyist в »сообщение 4339« :(
№ 4341 22-07-2008 06:16 | |
Ответ на »сообщение 4333« (panda)
___________________________
IronScheme вроде нацелен на DLR (Silverlight)? Silverlight для вас синоним DLR? Это все равно, что писать "теплое(мягкое)" ;)
IronScheme не нацелен на DLR, а использует его. О чем сейчас жалеет, т.к. DLR создан для реализации таких языков как Python и Ruby, а со Scheme возникают определенные проблемы (почитайте в разделе Discussions на IronScheme-секторе Codeplex-а). Так что сейчас автор нацелен на то, чтобы избавиться в будущем от кода, в котором используется DLR.
№ 4340 22-07-2008 04:03 | |
Ответ на »сообщение 4336« (Geniepro)
___________________________
Ответ на »сообщение 4318« (Илья Ермаков)
___________________________
Хотя в OCaml есть чудесный отладчик, позволяющий ходить по программе и вперед и назад, никакой потребности в нем за последние 3 года я не ощутил. Да. За последние 3 года я ни разу не пользовался отладчиком для программ, написанных на OCaml. Он просто не нужен! Если и возникают какие-то непонятки, то все решается отладочной печатью или запуском проблемных мест в интерпретаторе.
Это как раз понятно (Вы будете оберонщику рассказывать про то, что с хорошим языком отладчик не нужен? :-) ).
Там речь, очевидно, про другое - я уж сказал: про вопрос типа "why" к системе, делающий некий вывод на данных...
№ 4339 22-07-2008 03:36 | |
Ответ на »сообщение 4338« (Jack Of Shadows)
___________________________
То же самое вот уже сколько времени на этом форуме говорю и я.
...
В подавляющем большинстве случаев все сводится к простой инерции. Программисты предпочитают бороться с тем с чем они мучались все эти годы, нежели предпринимать какие то начальные усилия по пересаживанию на новые санки. И при этом с успехом уговаривают сами себя, что и так мол хорошо.
Опять, Jack, Вы обобщаете свой собственный опыт на всех. Далеко не все занимаются фрилансом или работают в крупных непрофильных компаниях, для которых ИТ --- не единственный источник дохода, а всего лишь вспомогательное подразделение, и которые могут себе позволить рискнуть провалить какой-нибудь из программных проектов. Не все пишут клиент-серверные продукты, в которых можно перерабатывать серверную инфраструктуру, не затрагивая клиентов. Некоторым приходится еще и вместо разработки многочисленных, не связанных друг с другом проектов (как у аусорсеров), на которых можно попробовать различные подходы, длительное время сопровождать один продукт. И так далее...
№ 4338 22-07-2008 01:02 | |
Ответ на »сообщение 4337« (Geniepro)
___________________________
Верно. То же самое вот уже сколько времени на этом форуме говорю и я. Время пришло. И на dotnet и на java и на windows и на linux уже сегодня есть полноценные ФЯ на любой вкус, будь то строго типизированные хаскель окамл f# скала, либо динамические лисп, эрланг.
В подавляющем большинстве случаев все сводится к простой инерции. Программисты предпочитают бороться с тем с чем они мучались все эти годы, нежели предпринимать какие то начальные усилия по пересаживанию на новые санки. И при этом с успехом уговаривают сами себя, что и так мол хорошо.
Главное привычно. К тому же и начальство мол не уговоришь, и коллеги перестанут здороваться. Оно им надо ?
№ 4337 22-07-2008 00:34 | |
Ответ на »сообщение 4336« (Geniepro)
___________________________
Разгромная статья Владимира Шабанова:
Язык имеет значение
Все мы слышали, что есть Хаскел. Все мы знаем, что он крут. Крут настолько, что многие его даже боятся.
Все мы знаем, что программы на Хаскеле короче и быстрее пишутся. Те, кто писал на Хаскеле, уже с трудом могут заставить себя использовать другой язык.
Так какого черта мы пишем на чем-то другом?
Мне кажется, мы просто ссым!
Почему? Чем мы себя обманываем? Почему боимся «рисковать», когда риск заключается как раз в неиспользовании Хаскела?
Лично я сыт по горло от собственных же отмазок. Проведя анализ ВСЕХ своих проектов, сделанных за последние 9 лет, я пришел к выводу, что ВСЕ они (кроме драйверов и прошивок микроконтроллеров) могли бы быть сделаны на Хаскеле.
Но это не самое страшное. Самое страшное — это сколько времени было потеряно на низкоуровневые языки.
читать далее
Тоже самое и я думаю, надо исправлять такое плачевное положение... ;о)
№ 4336 22-07-2008 00:19 | |
Ответ на »сообщение 4318« (Илья Ермаков)
___________________________
Кроме того, системы, построенные на базе языков программирования типа lisp и ему подобных, практически не поддаются диагностике. Иначе говоря, получая от такой системы не удовлетворяющие нас решения, мы не имеем гарантированной возможности заставить систему сообщить нам, почему, по какой причине и внутри какой из составляющих ее программ зародилась нежелательная ситуация.
Этот факт известен как проблема lisp-отладчика, т. е. проблема не существования алгоритма (способа) узнать, почему некоторая программа ведет себя именно таким образом, иначе как проделав в точности те же действия и в той же последовательности. Некоторые возможности решения этой проблемы предусматриваемые в lisp-подобных языках типа ML и Miranda ситуацию кардинально не изменяют.
Текст: http://www.polyakov.com/informodynamics/chast2_glava5.html
(Лачинов, Поляков "Информодинамика" http://www.polyakov.com/informodynamics).
А вот мнение человека, использующего Хаскелл и Окамл (т.е. потомков Миранды и МЛ) в разработке компьютерных игр: Немного по OCaml и Haskell
Однако сейчас я хочу сказать про другую черту — корректность программ. Как часто вам приходится пользоваться отладчиком? Можете ли вы себе представить, что отладчик — вещь ненужная? В OCaml и Haskell это действительно так!
Хотя в OCaml есть чудесный отладчик, позволяющий ходить по программе и вперед и назад, никакой потребности в нем за последние 3 года я не ощутил. Да. За последние 3 года я ни разу не пользовался отладчиком для программ, написанных на OCaml. Он просто не нужен! Если и возникают какие-то непонятки, то все решается отладочной печатью или запуском проблемных мест в интерпретаторе.
№ 4335 21-07-2008 23:19 | |
Ответ на »сообщение 4332« (Варяг)
___________________________
Если хочется свежего и необычного в .Net - обратите внимание на http://www.codeplex.com/IronScheme.
IronScheme -- любопытная вещь, спору нет, но тут уже у меня включается вкусовщина -- мне более привычен синтаксис как у Хаскелла, F#, он мне более приятен, синтаксис же С# или Лиспа...
Хотя, по большому счёту, выбор-то надо делать с учётом того, смогут ли это потом поддерживать конкретные коллеги -- а тут что Хаскелл, что F#, что Лисп в одинаково безнадёжном положении (в том окружении, в котором лично я нахожусь)...
Scheme - язык очень гибкий, динамический, с потрясными гигиеничными макросами.
Макросы -- это обоюдоострое оружие: легко потерять голову и наворотить такого, что потом мало кто в этом разберётся.
Хотя иногда макросы (даже такие примитивные, как в Си) удобны, но Хайльсберг, имхо, всё-таки прав, говоря, что макросы -- слишком большая пушка для простых программистов... :о)
Тут нужны какие-то стандарты, хотя бы внутрифирменные, а с этим в маленьких конторах (которых большинство) огромная проблема...
В общем, IronScheme - проект интересный, правда, чувствуется, что автору довольно тяжело приходится.
Вот это вот общая проблема подобных разработок, и тут у F# прямое преимущество и перед IronScheme, и перед Nemerle -- официальная поддержка крупнейшей корпорации в этом бизнесе... ;о)
F# можно пропихивать хотя бы одним упоминанием о Майкрософте...
№ 4334 21-07-2008 12:15 | |
Ответ на »сообщение 4329« (Сергей Перовский)
___________________________
Ответ на »сообщение 4325« (Илья Ермаков)
___________________________
Из теории систем известно, что формальные-абстрактные языки/модели не подходят для описания сложных систем. Они могут описать максимум мгновенный снимок - а так потребуется бесконечное их множество... Требуется формально-семантический подход..
Может кому и известно...
В этом утверждении как минимум четыре термина, вокруг определения которых не утихают споры. Начиная с самой "теории систем" и заканчивая "формально-семантический подходом".
Тут это злостный офтопик, и первой реакцией было предложить "пойдем выйдем" :)
Вот только не могу предложить куда.
Уважаемый Сергей, я бы с радостью... Но нет возможности затевать долгие обсуждения.
Так что, коллеги, приписываю к фразе ИМХО и поясняю, на какие ветки опираюсь в своих суждениях-убеждениях в этих вопросах: Берталанфи; Г.П. Мельников ("Системология и языковые аспекты кибернетики", М.: Радио, 197--); Ю.А. Шрейдер ("Системы и модели" и др. труды), С.И. Маторин (УФО-метод системного анализа и проектирования, БелГУ, наст. время). На Мессаровича, Садовского и др. сторонников формального теоретико-множественного определения системы - категорически нет...
№ 4333 21-07-2008 10:59 | |
Ответ на »сообщение 4332« (Варяг)
___________________________
IronScheme вроде нацелен на DLR (Silverlight)?
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|