Предлагается организовать форум «функциональные языки».
Форум «функциональные языки» предназначен для обсуждения всех вопросов, относящихся к функциональных языкам, включая их дизайн, реализацию, теоретические вопросы и применение.
Члены инициативной группы должны быть знакомы хотя-бы с одним ФЯ, поэтому я не поясняю, что такое ФЯ и зачем это нужно. Также они должны обладать некоторым количеством свободного времени. Запись добровольцев здесь. Просто отвечайте на этот пост.
30.08.04 14:06: Перенесено из 'Философия программирования'
Здравствуйте, Gaperton, Вы писали:
G>Предлагается организовать форум «функциональные языки».
G>Члены инициативной группы должны быть знакомы хотя-бы с одним ФЯ, поэтому я не поясняю, что такое ФЯ и зачем это нужно. Также они должны обладать некоторым количеством свободного времени. Запись добровольцев здесь. Просто отвечайте на этот пост.
Не знаю, интересно, готов поучаствовать, оказать посильную помощь
Здравствуйте, Gaperton, Вы писали: G>Члены инициативной группы должны быть знакомы хотя-бы с одним ФЯ, поэтому я не поясняю, что такое ФЯ и зачем это нужно. Также они должны обладать некоторым количеством свободного времени. Запись добровольцев здесь. Просто отвечайте на этот пост.
Что такое ФЯ представляю, знаком (но пока не очень сильно) с рядом ФЯ (OCaml, Haskell, Lisp и др.), некоторое количество найдём (не известо правда какое), готов быть добровольцем.
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, Gaperton, Вы писали: G>>Члены инициативной группы должны быть знакомы хотя-бы с одним ФЯ, поэтому я не поясняю, что такое ФЯ и зачем это нужно. Также они должны обладать некоторым количеством свободного времени. Запись добровольцев здесь. Просто отвечайте на этот пост.
Традиционный набор — OCaml, Haskell... Кстати, странно, что никто не упоминает Erlang...
Кто займется написанием "манифеста"?
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Здравствуйте, Курилка, Вы писали:
К>>Здравствуйте, Gaperton, Вы писали: G>>>Члены инициативной группы должны быть знакомы хотя-бы с одним ФЯ, поэтому я не поясняю, что такое ФЯ и зачем это нужно. Также они должны обладать некоторым количеством свободного времени. Запись добровольцев здесь. Просто отвечайте на этот пост.
INT>Традиционный набор — OCaml, Haskell... Кстати, странно, что никто не упоминает Erlang... INT>Кто займется написанием "манифеста"?
Революции?
Вопрос в том — что он должен содержать?
Пока я вижу там только 3 пункта:
1. форум
2. подбор ресурсов по ФП, возможно FAQ и/или how-to
3. проекты на ФЯ
Здравствуйте, Gaperton, Вы писали:
G>Предлагается организовать форум «функциональные языки».
G>Форум «функциональные языки» предназначен для обсуждения всех вопросов, относящихся к функциональных языкам, включая их дизайн, реализацию, теоретические вопросы и применение.
G>В данный момент ищется инициативная группа для совместной работы над "документом-призывом", и, в будущем, решения прочих вопросов, связанных с форумом ФЯ и развитием темы (http://www.rsdn.ru/Forum/Message.aspx?mid=782855&only=1
).
G>Члены инициативной группы должны быть знакомы хотя-бы с одним ФЯ, поэтому я не поясняю, что такое ФЯ и зачем это нужно. Также они должны обладать некоторым количеством свободного времени. Запись добровольцев здесь. Просто отвечайте на этот пост.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Здравствуйте, Курилка, Вы писали:
К>>Здравствуйте, Gaperton, Вы писали: G>>>Члены инициативной группы должны быть знакомы хотя-бы с одним ФЯ, поэтому я не поясняю, что такое ФЯ и зачем это нужно. Также они должны обладать некоторым количеством свободного времени. Запись добровольцев здесь. Просто отвечайте на этот пост.
INT>Традиционный набор — OCaml, Haskell... Кстати, странно, что никто не упоминает Erlang... INT>Кто займется написанием "манифеста"?
а я немного не в тему.
А где все Вы были ну скажем пол года назад,?
Мне так нужна была помошь по лиспу и тогда мне помогал в основном
Кодт (прошу прощения что не привожу полный список людей которые
мне оказали неоценимую помошь и кому я примногоблагодарен)
Каковы интересно темпы прироста населения рсдн. Ну это так
) верна и возможно, что с неё и стоит начать.
Эта же статья и станет ответом на, очевидно, самый первый вопрос FAQ — а что же такое ФЯ и ФП вообще (кстати полно народа его уже задавали).
Насчёт манифестов — не очень понятно, насколько они нужны. По-моему — если быть до конца честными, то всё просто. Есть просто область программирования и подход — который интересен части сообщества. Ему форум и посвящён. В конце концов успех в развитии области будет определяться не манифестами — а умными и практичными приёмами, подходами, решениями и инструментами — буде компания функционально-языкастых сумеет их придложить...
Следующим логичным шагом по-моему стал бы проект по портированию под Windows 2K/XP/2K3/LH платформ разработки на ФЯ — а так же освещению существующих. Может в виде плагинов к Visual Studio, может — отдельно (это уже детали) — главное — что бы получить среду для разработки на ФЯ было столь же просто — сколь получить среду разработки для C++/C#. То есть реализовать, наконец, для ФЯ гамбургер из среды разработки, документации и примеров программ, который позволил бы максимально упростить и облегчить изучение и использование языка
Возможно, что хорошим ходом стал бы перевод документации и описания языков на русский (тем более, что знатоки хвастались, что документация по ФЯ куда лаконичнее и проще чем по C++/C#) — но тут вопрос — сколькие из нас готовы тратить время на безвозмездный перевод документации...
Здравствуйте, Gaperton, Вы писали:
G>Члены инициативной группы должны быть знакомы хотя-бы с одним ФЯ, поэтому я не поясняю, что такое ФЯ и зачем это нужно. Также они должны обладать некоторым количеством свободного времени. Запись добровольцев здесь. Просто отвечайте на этот пост.
Я тоже не против поучаствовать в сей инициативе. Знаком с Lisp'ом (в смысле использовал). Времени только не сильно много.
Здравствуйте, AndreyFedotov, Вы писали:
AF>Здравствуйте, AndreyFedotov, Вы писали:
AF>PS. Кстати было бы хорошо начать с того, что собрать в кучу все ссылки, обильно рассыпанные по топикам где м ломали мечи об орала.
Угу, только для начала надо выделенное под это дело местечко, чтобы было куда складывать
Здравствуйте, AndreyFedotov, Вы писали:
AF> Возможно, что хорошим ходом стал бы перевод документации и описания языков на русский (тем более, что знатоки хвастались, что документация по ФЯ куда лаконичнее и проще чем по C++/C#) — но тут вопрос — сколькие из нас готовы тратить время на безвозмездный перевод документации...
Кстати, насчет безвозмездности, кто знает, насколько работа в изучении и развитии ФЯ прокатит как научная? В смысле публикаций и перспективы диссертации?
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, INTP_mihoshi, Вы писали:
INT>>Здравствуйте, Курилка, Вы писали:
К>>>Здравствуйте, Gaperton, Вы писали: G>>>>Члены инициативной группы должны быть знакомы хотя-бы с одним ФЯ, поэтому я не поясняю, что такое ФЯ и зачем это нужно. Также они должны обладать некоторым количеством свободного времени. Запись добровольцев здесь. Просто отвечайте на этот пост.
INT>>Традиционный набор — OCaml, Haskell... Кстати, странно, что никто не упоминает Erlang... INT>>Кто займется написанием "манифеста"?
К>Революции?
К>Вопрос в том — что он должен содержать? К>Пока я вижу там только 3 пункта: К>1. форум К>2. подбор ресурсов по ФП, возможно FAQ и/или how-to К>3. проекты на ФЯ
Я сделал первую версию документа, там есть несколько секций. Вечером пошлю в форум. Оглавление такое:
1. Что такое ФЯ (перевод секции comp.lang.functional FAQ — в духе complete idiot's guide).
2. Зачем нужны ФЯ (немного от себя, далее перевод кусков введения в Хаскель). Говорится про увеличение продуктивности, проводится аналогия с сравнением ISAM-SQL, далее следует пример quicksort на Хаскеле и С с анализом плюсов и минусов.
3. Список коммерческих проектов с применением ФЯ (нуждается в доработке. Пока — перевод секции из введения в Хаскель.) Нужны краткие описания, один абзац текста на проект.
4. Технические вопросы, объяснение терминологии и баззвордов (не написана — планируется взять за основу перевод comp.lang.functional FAQ)
5. Описание ФЯ, с упором на удобство промышленного применения, с преимуществами, недостатками, ссылками на ресурсы, руководством к установке, итд (не написана). Перевод comp.lang.functional FAQ брать нельзя, там лажа. Здесь нужены авторские тексты, в первую очередь по языкам OCaml (и другим вариантам ML, таким как SML/NJ и Moscow ML) , Haskell, Erlang, Clean. Если можете написать про другие языки — пишите. Размер ориентировочно — 1-2 станицы текста на язык. Ну как получится, вобщем.
6. Ссылки на ресурсы по ФЯ. Шлите все, что есть. Кстати, http://www.livejournal.com/userinfo.bml?user=ru_declarative.
7. Ответы на часто задаваемые вопросы. Это в последнюю очередь. Сюда свалим все то, что не влезло в предыдущие.
Корректировки к плану приветствуются (включая изменение порядка пунктов). Желающие взятся за написание частей — тоже.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Здравствуйте, AndreyFedotov, Вы писали:
AF>> Возможно, что хорошим ходом стал бы перевод документации и описания языков на русский (тем более, что знатоки хвастались, что документация по ФЯ куда лаконичнее и проще чем по C++/C#) — но тут вопрос — сколькие из нас готовы тратить время на безвозмездный перевод документации...
INT>Кстати, насчет безвозмездности, кто знает, насколько работа в изучении и развитии ФЯ прокатит как научная? В смысле публикаций и перспективы диссертации?
Легко. Все зависит от темы работы, и того, где защищаешься. Для этого весьма желательно наличие научного руководителя, который был бы в курсе всей темы, и мог бы оценить научную ценность.
Здравствуйте, Gaperton, Вы писали:
G>Предлагается организовать форум «функциональные языки».
G>В данный момент ищется инициативная группа для совместной работы над "документом-призывом", и, в будущем, решения прочих вопросов, связанных с форумом ФЯ и развитием темы (http://www.rsdn.ru/Forum/Message.aspx?mid=782855&only=1
).
G>Члены инициативной группы должны быть знакомы хотя-бы с одним ФЯ, поэтому я не поясняю, что такое ФЯ и зачем это нужно. Также они должны обладать некоторым количеством свободного времени. Запись добровольцев здесь. Просто отвечайте на этот пост.
Haskell.
К сожалению когда изучал такого форума не было.
Могу предоставить пример реализации AVL дерева с комментариями.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Кстати, насчет безвозмездности, кто знает, насколько работа в изучении и развитии ФЯ прокатит как научная? В смысле публикаций и перспективы диссертации?
Не знаю как сейчас, а на факультете кибернетики МИФИ 2-3 года назад — такие темы были.
Здравствуйте, Gaperton, Вы писали:
G>Корректировки к плану приветствуются (включая изменение порядка пунктов). Желающие взятся за написание частей — тоже.
Пока вроде бы особых идей по плану нет (за "взяться" пока не говорю, надо чуть подумать), народ вроде есть, план есть, что ещё нужно для успеха предприятия?
Здравствуйте, Gaperton, Вы писали:
G>Предлагается организовать форум «функциональные языки».
Поддерживаю!
G>Члены инициативной группы должны быть знакомы хотя-бы с одним ФЯ,
Практического опыта применения ФП не имею (если не считать мелких задачек), но чувствую большой потенциал этого подхода.
В основном интересуюсь Erlang, какое-то время баловался Haskell и другими языками (в порядке общего ознакомления).
Последнее время меня все больше и больше занимает идея разработки КИС на Erlang. Немного настораживает отсутствие информации по подобным продуктам. Единственное известное мне решение реализовано в южно-африканском банке Teba Bank. Несколько слов об этом можно прочесть здесь. Еще проскакивала информация о какой-то OpenSourсe российской разработке (EAS кажется, точно не помню), но сейчас что-то ничего об этом не слышно.
G> Также они должны обладать некоторым количеством свободного времени.
С этим сложнее, но постараюсь содействовать по мере сил и возможностей.
К>Пока вроде бы особых идей по плану нет (за "взяться" пока не говорю, надо чуть подумать), народ вроде есть, план есть, что ещё нужно для успеха предприятия?
Задающие вопросы, дабы поддерживать активность на форуме.
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, Курилка, Вы писали:
К>>Пока вроде бы особых идей по плану нет (за "взяться" пока не говорю, надо чуть подумать), народ вроде есть, план есть, что ещё нужно для успеха предприятия?
B>Задающие вопросы, дабы поддерживать активность на форуме.
И, для начала, желающие помочь мне с документом!
Здравствуйте, Gaperton, Вы писали:
G>Члены инициативной группы должны быть знакомы хотя-бы с одним ФЯ, поэтому я не поясняю, что такое ФЯ и зачем это нужно. Также они должны обладать некоторым количеством свободного времени. Запись добровольцев здесь. Просто отвечайте на этот пост.
Я бы записался, но я не согласен с идеей создания форума с названием "функциональные языки". "Функциональные языки" это все-таки слишком узкая тема в моем понимании. Т.е. офф-топиком для этого форума будет например Prolog, императивные скриптовые языки с элементами ФП, генеративное программирование и другие не менее интересные темы.
По смыслу больше подошло бы что-то типа "метапрограммирование".
Слово мета подходит как нельзя лучше, так как в качестве приставки обычно значит:
1. положение рядом или переход в иное качество
2. название наук и разделов, имеющих основополагающий характер
imho ФЯ языки интересны в первую очередь не моделью исполнения, а степенью абстракции. Языковые средства, такие как pattern-matching, term-rewriting — вот что действительно представляет серьезнейший интерес в плане применения в повседневном программировании, причем ни где-нибудь а в самых что обычных императивных языках. Первые наметки такого рода — Pizza, Kiev, Nemerle. Все это imho только начало. Я тут как-то успел покритиковать Степанова вместе со Страуструпом. Так вот — я был не совсем прав. Их вина только в том, что они не пошли дальше, оставив эти концепции в зачаточном состоянии.
Что касается авторских текстов, FAQ, ссылок итд по ФП, то это всегда пожалуйста, вопрос только в наличии свободного времени.
Самое лучшее решение — это не одна ветка форума, а целый раздел, в который можно было-бы перевести и философию программирования, и даже возможно этюды с алгоритмами. Так как имхо они не имеют непосредственного отношения к промышленному программированию, а лежат либо рядом, либо в основании в зависимости от того, что под этим подразумевать.
Что-то типа:
| Метапрограммирование
|- Алгоритмы
|- Логическое программирование
|- Разработка компиляторов
|- Философия программирования
|- Функциональные языки
|- Этюды для программистов
Вообще, основная проблема расширения темы в том, что ее, расширенную тему, сложнее осветить.
Замечу, что пока никто не изъявил желания помочь мне с написанием основополагающего документа.
Может, ты поможешь? Посмотри мой план, предложи изменения, а если согласишься написать часть — будет вообще здорово.
Здравствуйте, Цунцуяби, Вы писали:
Ц>Языки ФЯ не знаю, хотя ознакомился с ними ( бегло )
Ц>С математикой более — менее понятно Ц>Могу поделать переводы статей, еще какую-нибудь общественную работу.
Это было бы здорово. Не мог бы ты перевести секцию №3 Technical topics? http://www.cs.nott.ac.uk/~gmh//faq.html
Здравствуйте, Курилка, Вы писали:
К>Угу, только для начала надо выделенное под это дело местечко, чтобы было куда складывать
Складывать нужно в ту самую вводную статью. В общем, пока можно постить хоть сюда, а потом подберем. Можно завести еще одну тему. Модеры сами куда нужно перекинут.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Кстати, насчет безвозмездности, кто знает, насколько работа в изучении и развитии ФЯ прокатит как научная? В смысле публикаций и перспективы диссертации?
Было бы что публиковать. А вообще тема интересная.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Gaperton, Вы писали:
G>>Предлагается организовать форум «функциональные языки». VD>Одного форума мало. Нужно вообще развивать эту тему. Нужны статьи, факи и т.п.
Не все сразу.
Для начала, я думаю, сделаем FAQ по ФЯ. Хороший, толковый ФАК.
Далее, соберем все имеющиеся русскоязычные материалы по ФЯ, статьи и переводы.
Составим составим каталог ссылок на англоязычные материалы.
После этого будем готовить обзоры/переводы наиболее интересных англоязычных статей, писать свои статьи, примеры программ, — что угодно. А если удастся заманить на форум спецов и гуру — это будет праздник.
А форум по ФЯ необходим хотя-бы для того, чтобы координировать всю эту активность.
Здравствуйте, uw, Вы писали:
uw>Я бы записался, но я не согласен с идеей создания форума с названием "функциональные языки".
Предлагаю так: "Декларативные и функциональные и логические языки программирования". А?
uw>"Функциональные языки" это все-таки слишком узкая тема в моем понимании. Т.е. офф-топиком для этого форума будет например Prolog, императивные скриптовые языки с элементами ФП, генеративное программирование и другие не менее интересные темы.
Ну, и в правилах запишем, что приветсвуются все альтернативные ИЯ подходы.
uw>По смыслу больше подошло бы что-то типа "метапрограммирование". uw>Слово мета подходит как нельзя лучше, так как в качестве приставки обычно значит: uw>1. положение рядом или переход в иное качество uw>2. название наук и разделов, имеющих основополагающий характер
Да, метапрограммирование тоже из этой оперы. Но слишком обще тоже нельзя, так как иначе получится помойка.
uw>imho ФЯ языки интересны в первую очередь не моделью исполнения, а степенью абстракции. Языковые средства, такие как pattern-matching, term-rewriting
+1
uw>Что касается авторских текстов, FAQ, ссылок итд по ФП, то это всегда пожалуйста, вопрос только в наличии свободного времени.
Дык. Давай!
uw>Самое лучшее решение — это не одна ветка форума
Это никудышное решение. Через очень короткий промежуток времени она превратится в уродлевое дерево и только отдельные орлы смогут дочитать ее до конца.
uw>Что-то типа: uw>| Метапрограммирование
+1
uw>|- Алгоритмы
Алгоритмы то тут причем? Для них у нас уже есть и разделы и форумы.
uw>|- Логическое программирование
+1
uw>|- Разработка компиляторов
Тоже несколько другой вопрос.
uw>|- Философия программирования
Опять же есть отдельный форум.
uw>|- Функциональные языки
+1
uw>|- Этюды для программистов
И опять отдельный форум есть.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Gaperton, Вы писали:
G>Для начала, я думаю, сделаем FAQ по ФЯ. Хороший, толковый ФАК.
Для начала все же лучше вводную статью. А ФАК можно прямо ее чатью сделать.
G>Далее, соберем все имеющиеся русскоязычные материалы по ФЯ, статьи и переводы. G>Составим составим каталог ссылок на англоязычные материалы.
Хорошая идея.
G>После этого будем готовить обзоры/переводы наиболее интересных англоязычных статей, писать свои статьи, примеры программ, — что угодно. А если удастся заманить на форум спецов и гуру — это будет праздник.
Дык как без этого? Ну, да заманим. Главное чтобы интересно было.
G>А форум по ФЯ необходим хотя-бы для того, чтобы координировать всю эту активность.
С этим проблем не будет. Группа не против. Народ на форумах вроде тоже. Но один форум без основополагающего документа не будет иметь того комулятивного эффектна который нужен для серьезной раскрутки. А на первых порах подобному проекту раскрутка очень нужна. А ФЯ она нужна вообще как воздух. Идея без умения ее толкнуть в массы мертва.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Для начала все же лучше вводную статью. А ФАК можно прямо ее чатью сделать.
Ок, взгляни на первый набросок.
Немного переводов, немного отсебятины.
По поводу плана я писал здесь
VladD2:
> uw>Я бы записался, но я не согласен с идеей создания форума с названием "функциональные языки". > > Предлагаю так: "Декларативные и функциональные и логические языки программирования". А?
Т.е. и XML, и SQL
Posted via RSDN NNTP Server 1.9 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Gaperton, Вы писали:
G>Здравствуйте, Цунцуяби, Вы писали:
Ц>>Языки ФЯ не знаю, хотя ознакомился с ними ( бегло )
Ц>>С математикой более — менее понятно Ц>>Могу поделать переводы статей, еще какую-нибудь общественную работу. G>Это было бы здорово. Не мог бы ты перевести секцию №3 Technical topics?
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Здравствуйте, Gaperton, Вы писали:
G>>Предлагается организовать форум «функциональные языки».
INT>Я готов поработать над туториалом к OCaml. Средства, философия, паттерны использования, обычные ошибки, методы отладки.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Здравствуйте, Gaperton, Вы писали:
G>>Предлагается организовать форум «функциональные языки».
INT>Я готов поработать над туториалом к OCaml. Средства, философия, паттерны использования, обычные ошибки, методы отладки.
INT>Кстати, лучший туторил по OCaml, который я видел — здесь
Отлично. Для начала нужна характеристика языка на 1-2 страницы.
1) Что за язык
2) Особенности языка, отличия от других.
3) Характеристика рантайма — быстрый/медленный, на каких задачах.
3.5) Плюсы и минусы языка и конкретной реализации для промышленной разработки.
4) Какие библиотеки доступны.
5) Среды разработки, тулкиты, дистрибитивы — что где скачать, чем рекомендуется пользоваться.
6) Литература, мануалы, ссылки.
Прочитав это человек в идеале должен:
— в общих чертах поиметь представление о возможностях языка и реализации. Термины не пояснять — это будет сделано в отдельной секции. Т. е. если язык строгий (strict) — так и пиши — строгий.
— понять, что это тот язык, который ему нужен (если он ему нужен).
— соответственно, если этот язык человеку не подходит, от тоже должен это понять.
— понять, что читать и делать дальше.
INT>>Я готов поработать над туториалом к OCaml. Средства, философия, паттерны использования, обычные ошибки, методы отладки.
INT>>Кстати, лучший туторил по OCaml, который я видел — здесь
G>Отлично. Для начала нужна характеристика языка на 1-2 страницы. G>1) Что за язык G>2) Особенности языка, отличия от других...
G>Прочитав это человек в идеале должен: G>- в общих чертах поиметь представление о возможностях языка и реализации. Термины не пояснять — это будет сделано в ... G>Возьмешься?
Ок. В эти выходные вплотную займусь. Вобщем, есть что сказать по всем пунктам
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Ок. В эти выходные вплотную займусь. Вобщем, есть что сказать по всем пунктам
Ждём с нетерпением,
может ещё кто-нибудь по др. языкам накатает? (haskell, erlang, scheme, ...)
Я к сожалению очень чётко ни один не знаю, так бы взялся.
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, INTP_mihoshi, Вы писали:
INT>>Здравствуйте, Gaperton, Вы писали:
G>>>Предлагается организовать форум «функциональные языки».
INT>>Я готов поработать над туториалом к OCaml. Средства, философия, паттерны использования, обычные ошибки, методы отладки.
К>/me готов оказать посильную помощь в этом
Здравствуйте, faulx, Вы писали:
F>Здравствуйте, Gaperton, Вы писали:
G>>Предлагается организовать форум «функциональные языки».
G>>Форум «функциональные языки» предназначен для обсуждения всех вопросов, относящихся к функциональных языкам, включая их дизайн, реализацию, теоретические вопросы и применение.
G>>В данный момент ищется инициативная группа для совместной работы над "документом-призывом", и, в будущем, решения прочих вопросов, связанных с форумом ФЯ и развитием темы (http://www.rsdn.ru/Forum/Message.aspx?mid=782855&only=1
).
G>>Члены инициативной группы должны быть знакомы хотя-бы с одним ФЯ, поэтому я не поясняю, что такое ФЯ и зачем это нужно. Также они должны обладать некоторым количеством свободного времени. Запись добровольцев здесь. Просто отвечайте на этот пост.
Не желаешь взяться за характеристику Haskell? Примерный план здесь
Здравствуйте, Gaperton, Вы писали:
G>Здравствуйте, VladD2, Вы писали:
VD>>Для начала все же лучше вводную статью. А ФАК можно прямо ее чатью сделать. G>Ок, взгляни на первый набросок. G>Немного переводов, немного отсебятины. G>По поводу плана я писал здесь
Описание OCaml INTP_mihoshi сделает, может ещё кто других языков, так что это будет, значит в замечания не записываю.
Обращает внимание что описания всяких баззвордов нету (хотя в плане были). Если расширять статью, то можно описывать много техн. подробностей про развёртывание рекурсии и т.п. оптимизационные техники (хотя ИМХО лучше в отд. статью оформить). Чего не хватает для "популяризационной" статьи — хоть какое-нибудь упоминание исторических фактов развития ФЯ как части ЯП, т.е. тот же лисп был уже в 50-х годах вроде придуман (или вру?), потом можно ещё структуру языков расположить по хронологии. Хотя может быть конкретные даты будут по конкретным языкам...
Потом нет упоминания использования ФЯ в обучении (того же OCaml во Франции), областей использования ФЯ (иск. интеллект, выч. алгоритмы и пр., хотя в пр. применении это есть, но не настолько прямо). Ещё можно упомянуть использование ФЯ Open Source проектами (lisp в emacs, guile в gimp и др.)
А так вроде бы вполне даже ничего написано — так держать!
Здравствуйте, uw, Вы писали:
uw>imho ФЯ языки интересны в первую очередь не моделью исполнения, а степенью абстракции. Языковые средства, такие как pattern-matching, term-rewriting — вот что действительно представляет серьезнейший интерес в плане применения в повседневном программировании, причем ни где-нибудь а в самых что обычных императивных языках. Первые наметки такого рода — Pizza, Kiev, Nemerle
Глянул на Nemerle — очень понравилось. На первый взгляд — язык просто великолепен. Надо будет с ним поразбираться.
Кстати, т. к. он позволяет писать в современном функциональном стиле — он функциональный.
Здравствуйте, faulx, Вы писали:
F>Здравствуйте, Gaperton, Вы писали:
G>>Здравствуйте, Gaperton, Вы писали:
G>>>Не желаешь взяться за характеристику Haskell? Примерный план здесь
G>>Естественно, GHC. F>Попробую, но скоро не обещаю. F>Выложил лабораторные работы по функ. программированию (Haskell), а также исходники на LaTeX'е лекций и лаб.
Спасибо. Не посмотришь первую версию документа? http://www.rsdn.ru/Forum/Message.aspx?mid=786120&only=1
Здравствуйте, Gaperton, Вы писали:
G>Предлагается организовать форум «функциональные языки».
Вопрос — что можно будет считать поворотным моментом, т.е. когда будет форум создан, группа набрана и получит какой-то статус (какой?),
и можно будет по такому поводу выпить вина/водки/пива/кефира/сока/колы (нужное подчеркнуть)
ну и каковы мин. условия для того, чтобы это сбылось?
Да и ещё — а кто этот вопрос (по созданию форума) решает кроме влада?
Здравствуйте, Gaperton, Вы писали:
G>Глянул на Nemerle — очень понравилось. На первый взгляд — язык просто великолепен. Надо будет с ним поразбираться. G>Кстати, т. к. он позволяет писать в современном функциональном стиле — он функциональный.
Мне — нет. Ни одной фичи, отсутствующей в Caml и синтаксис более громоздкий.
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Здравствуйте, Gaperton, Вы писали:
G>>Глянул на Nemerle — очень понравилось. На первый взгляд — язык просто великолепен. Надо будет с ним поразбираться. G>>Кстати, т. к. он позволяет писать в современном функциональном стиле — он функциональный.
INT>Мне — нет. Ни одной фичи, отсутствующей в Caml и синтаксис более громоздкий.
Зато прозрачное взаимодействие с .NET, и полная совместимость c системой типов .NET. ИМХО, весьма удачный переходный язык для использования в .NET проектах. Подойдет любителям С#, или в тех случаях, когда испольщование .NET — часть требований.
Правда, пока не понял что там за система типов, которая позволяет им делать type inference.
Здравствуйте, Gaperton, Вы писали:
G>Здравствуйте, INTP_mihoshi, Вы писали:
INT>>Здравствуйте, Gaperton, Вы писали:
G>>>Глянул на Nemerle — очень понравилось. На первый взгляд — язык просто великолепен. Надо будет с ним поразбираться. G>>>Кстати, т. к. он позволяет писать в современном функциональном стиле — он функциональный.
INT>>Мне — нет. Ни одной фичи, отсутствующей в Caml и синтаксис более громоздкий. G>Зато прозрачное взаимодействие с .NET, и полная совместимость c системой типов .NET. ИМХО, весьма удачный переходный язык для использования в .NET проектах. Подойдет любителям С#, или в тех случаях, когда испольщование .NET — часть требований.
Я лучше подожду, когда Ocaml под NET закончат.
C# — образный синтаксис у меня особых восторгов не вызывает. Разве что, по сравнению с С++...
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Я лучше подожду, когда Ocaml под NET закончат. INT>C# — образный синтаксис у меня особых восторгов не вызывает. Разве что, по сравнению с С++...
Тоже нарыл ссылочку, только что-то особо сильно незаметно размахов проекта (хотя бы на http://caml.inria.fr/ была бы ссылочка...)
Здравствуйте, Курилка, Вы писали:
INT>>C# — образный синтаксис у меня особых восторгов не вызывает. Разве что, по сравнению с С++...
К>Тоже нарыл ссылочку, только что-то особо сильно незаметно размахов проекта (хотя бы на http://caml.inria.fr/ была бы ссылочка...)
Здравствуйте, INTP_mihoshi, Вы писали:
INT>Здравствуйте, Курилка, Вы писали:
INT>>>C# — образный синтаксис у меня особых восторгов не вызывает. Разве что, по сравнению с С++...
К>>Тоже нарыл ссылочку, только что-то особо сильно незаметно размахов проекта (хотя бы на http://caml.inria.fr/ была бы ссылочка...)
INT>В где я по-твоему ее нашел? Вот здесь оно все и лежит
Надо же, а я вроде гуглом только
INT>От первой странице по ссылке на The Humps и далее...
Вот в это "далее..." и есть проблема, что на перв. странице про .Net нет ни одного упоминания, хотя вещь реально модная и .Net compiler был бы ОЧЕНЬ на пользу для языка (продолжая всю ту же тему популяризации)
Здравствуйте, faulx, Вы писали:
F>Что-то я сегодня расписался. Вот небольшой текст по Haskell.
Просто здорово.
ИМХО, не хватает только ссылок на страницу GHC, прямых ссылок на download дистрибутивов, пары слов про наличие отладчиков и профайлеров, пояснение ситуации с наличием/отсутствием IDE и что с этим делать, а также замечания по поводу того, что GHC генерит native код. А также возможностей оптимизации доступных в GHC — strictness-analyzer, явного определения strict структур данных и параметров функций, и unboxed структур данных, которые способны поправить ситуацию с производительностью и интересны практикующему программисту.
Я могу попробовать добавить это сам, но уверен, что у тебя получится гораздо лучше (боюсь испортить). В конце концов, я, мягко говоря, не спец по Haskell. Поправишь?
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, Gaperton, Вы писали:
G>>Предлагается организовать форум «функциональные языки».
К>Вопрос — что можно будет считать поворотным моментом, т.е. когда будет форум создан, группа набрана и получит какой-то статус (какой?),
Поворотный момент, имхо — мы заканчиваем наш документ, Влад одобрительно кивает головой, и открывается форум. К>и можно будет по такому поводу выпить вина/водки/пива/кефира/сока/колы (нужное подчеркнуть)
Это запросто . К>ну и каковы мин. условия для того, чтобы это сбылось?
см. выше. К>Да и ещё — а кто этот вопрос (по созданию форума) решает кроме влада?
Здравствуйте, Курилка, Вы писали:
К>Обращает внимание что описания всяких баззвордов нету (хотя в плане были).
Цунцуяби готовит перевод соотв. секции comp.lang.functional FAQ.
К>Если расширять статью, то можно описывать много техн. подробностей про развёртывание рекурсии и т.п. оптимизационные техники (хотя ИМХО лучше в отд. статью оформить).
Надо подумать об этом.
К>Чего не хватает для "популяризационной" статьи — хоть какое-нибудь упоминание исторических фактов развития ФЯ как части ЯП, т.е. тот же лисп был уже в 50-х годах вроде придуман (или вру?), потом можно ещё структуру языков расположить по хронологии. Хотя может быть конкретные даты будут по конкретным языкам...
Можно. Но, думаю, для первого варианта не критично. Всегда можно потом добавить.
К>Потом нет упоминания использования ФЯ в обучении (того же OCaml во Франции), областей использования ФЯ (иск. интеллект, выч. алгоритмы и пр., хотя в пр. применении это есть, но не настолько прямо). Ещё можно упомянуть использование ФЯ Open Source проектами (lisp в emacs, guile в gimp и др.)
Это все надо добавить. Можешь привести известные тебе ссылки по теме?
Думаю перевести статью про Хаскель http://www.haskell.org/complex/why_does_haskell_matter.html Она не сверх хорошая, но лучше статей-введений я не видел пока. В дальнейшем мог бы приступить к переводу руководства по программированию — Gentle introduction или другого, которое было в ссылке выше. Также думаю написать пару статей по математическим основам, если получится, — лямбда исчислению, комбинаторам, монадам с категориями. У меня есть неплохая литература на эту тему.
Здравствуйте, Quintanar, Вы писали:
Q>Думаю перевести статью про Хаскель http://www.haskell.org/complex/why_does_haskell_matter.html Она не сверх хорошая, но лучше статей-введений я не видел пока.
Статья неплоха. Но это не введение в язык, это Haskell Advocacy. Документ, который мотивирует к изучению языка. По просту говоря, реклама.
Q>В дальнейшем мог бы приступить к переводу руководства по программированию — Gentle introduction или другого, которое было в ссылке выше. Также думаю написать пару статей по математическим основам, если получится, — лямбда исчислению, комбинаторам, монадам с категориями. У меня есть неплохая литература на эту тему.
Перевод Gentle Introduction — это очень хорошее дело. Особенно, учитывая его размер... Это не книга, конечно, но и не статья. В общем, если ты сделаешь перевод этого замечательного документа (который, как мне кажется, является по качеству лучшим из всех введений в языки), то будет тебе почет и слава. ИМХО, это приоритет №1.
Здравствуйте, Gaperton, Вы писали:
G>Здравствуйте, Курилка, Вы писали:
К>>Обращает внимание что описания всяких баззвордов нету (хотя в плане были). G>Цунцуяби готовит перевод соотв. секции comp.lang.functional FAQ.
Вчера вечером размышлял на эту тему и подумал, что круто было бы составить что-нибудь аля англо-русский словарь ФП, чтобы были нормально переведены все осн. термины, т.е. вот higher order function я знаю как перевести, а этот currying (или как там правильней) — просто не представляю, и слов таких с десяток точно наберётся (а я думаю и побольше, если глубже копнуть)
К>>Если расширять статью, то можно описывать много техн. подробностей про развёртывание рекурсии и т.п. оптимизационные техники (хотя ИМХО лучше в отд. статью оформить). G>Надо подумать об этом.
Угу, но это всёже задел скорее на будущее, т.к. задача не последняя, но не первоочередная.
К>>Чего не хватает для "популяризационной" статьи — хоть какое-нибудь упоминание исторических фактов развития ФЯ как части ЯП, т.е. тот же лисп был уже в 50-х годах вроде придуман (или вру?), потом можно ещё структуру языков расположить по хронологии. Хотя может быть конкретные даты будут по конкретным языкам... G>Можно. Но, думаю, для первого варианта не критично. Всегда можно потом добавить.
ИМХО для введения вполне уместная часть (аля мысль о том, что ФЯ появились по сути тогда же когда ИЯ)
К>>Потом нет упоминания использования ФЯ в обучении (того же OCaml во Франции), областей использования ФЯ (иск. интеллект, выч. алгоритмы и пр., хотя в пр. применении это есть, но не настолько прямо). Ещё можно упомянуть использование ФЯ Open Source проектами (lisp в emacs, guile в gimp и др.) G>Это все надо добавить. Можешь привести известные тебе ссылки по теме?
Ну особо "великих" ссылок не дам, но вот для затравки: http://www.gnu.org/software/emacs/ — ясно понятно что (конкректно описания, что делает лисп там нет, есть только всякие "введение в программирование на лиспе для emacs") http://www.gnu.org/software/guile/gnu-guile-projects.html — видимо с guile в gimp я погорячился (но был он там и на самой странице языка есть упоминание, а сейчас список проектов бедненький...), в принципе для любого ФЯ есть страничка с проектами, где он используется
BTW вспоминается использование lisp (точнее Autolisp) в AutoCAD, хотя в посл. время они вроде бы в сторону VBA копать стали...
Про Visual LISP вот тут есть информация — http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=770237
вот тут — http://caml.inria.fr/FAQ/general-eng.html про caml в образовании (раздел Caml and education)
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, Gaperton, Вы писали:
G>>Здравствуйте, Курилка, Вы писали:
К>>>Обращает внимание что описания всяких баззвордов нету (хотя в плане были). G>>Цунцуяби готовит перевод соотв. секции comp.lang.functional FAQ. К>Вчера вечером размышлял на эту тему и подумал, что круто было бы составить что-нибудь аля англо-русский словарь ФП, чтобы были нормально переведены все осн. термины, т.е. вот higher order function я знаю как перевести, а этот currying (или как там правильней) — просто не представляю, и слов таких с десяток точно наберётся (а я думаю и побольше, если глубже копнуть)
carring — каррирование ( но я бы использовал "карринг" )
Здравствуйте, Цунцуяби, Вы писали:
Ц>Здравствуйте, Курилка, Вы писали:
К>>Здравствуйте, Gaperton, Вы писали:
G>>>Здравствуйте, Курилка, Вы писали:
К>>>>Обращает внимание что описания всяких баззвордов нету (хотя в плане были). G>>>Цунцуяби готовит перевод соотв. секции comp.lang.functional FAQ. К>>Вчера вечером размышлял на эту тему и подумал, что круто было бы составить что-нибудь аля англо-русский словарь ФП, чтобы были нормально переведены все осн. термины, т.е. вот higher order function я знаю как перевести, а этот currying (или как там правильней) — просто не представляю, и слов таких с десяток точно наберётся (а я думаю и побольше, если глубже копнуть)
Ц>carring — каррирование ( но я бы использовал "карринг" )
Ну и + ещё должны быть хоть приблизительные описания, что это есть такое (толку-то от перевода, если это понятней не становится...)
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, INTP_mihoshi, Вы писали:
INT>>Ок. В эти выходные вплотную займусь. Вобщем, есть что сказать по всем пунктам
К>Ждём с нетерпением, К>может ещё кто-нибудь по др. языкам накатает? (haskell, erlang, scheme, ...) К>Я к сожалению очень чётко ни один не знаю, так бы взялся.
По erlang я сделаю.
Здравствуйте, Цунцуяби, Вы писали:
Ц>Здравствуйте, Gaperton, Вы писали:
G>>Это было бы здорово. Не мог бы ты перевести секцию №3 Technical topics? G>>http://www.cs.nott.ac.uk/~gmh//faq.html
Ц>OK
Перевод близко к тексту (литературный ), фактически подстрочник.
Некоторые вещи в источнике освещены не очень. Может быть имеет смысл заменить на варианты из лекций Душкина (МИФИ) по функциональному пронраммированию ( и+или других).
3. Технические вопросы
Этот раздел дает краткие ответы на разные технические вопросы, касающиеся функциональных языков, и некоторые ссылки на литературу и Интернет ресурсы.
3.1. Чистота
Что такое «чисто функциональный» язык программирования?
Этот вопрос был предметом многочисленных обсуждений в функциональном программировании. Принято считать, что языки, такие как Haskell и Miranda – это «чисто функциональные», в то время как SML и Scheme – нет. Однако, существуют некоторые различия во мнениях о точной технической мотивации для такого разбиения. Одно из определений, которое было предложено, звучит следующим образом:
Термин «чисто функциональный» часто используется для описания языков, которые производят все вычисления посредством применения функций, в противоположность к языкам, таким как SML и Scheme, которые преимущественно функциональны, но допускают «побочные эффекты» (эффекты, вызванные вычислением, которые сохраняются после того, как вычисление закончено ) .
Иногда термин «чисто функциональный» используют в более широком смысле, подразумевая языки, которые могут включать вычислительные эффекты, но без изменения понятия «функция» ( само собой, сохраняя важнейшие свойства функций ). Типично, вычисление выражений может получить «задание», которое затем выполняется отдельно, вызывая побочные эффекты. Фазы вычисления и выполнения разделены таким образом, что фаза вычисления не подрывает стандартные свойства выражений и функций. Механизм ввода/вывода на Haskell’е построен именно таким образом.
Дополнительная литература:
• "What is a purely functional language", Amr Sabry, Journal of Functional Programming, 8(1):1-22, Cambridge University Press, January 1998.
3.2. Каррирование
Что такое каррирование и откуда оно пришло?
Каррирование берет свое начало из математического исследования функций. В 1893 году Фреге (Frege) заметил, что такого приема достаточно, чтобы ограничиться функциями одного аргумента. Например, для любой функции двух аргументов f(x,y) существует однопараметрическая функция f' такая, что f'(x) – это функция, которая может быть применена к y, чтобы получилось (f'(x)(y)) = f(x,y). Это соответствует хорошо известному факту, что множества (AxB -> C) и (A -> (B -> C)) изоморфны, где x – это декартово произведение, и «->» — это функциональное пространство (is function space). В функциональном программировании применение функции обозначается записью в ряд и считается лево-ассоциативным так, что равенство выше становиться f' x y = f(x,y).
По-видимому, Фреге не стал развивать идею далее. Она была независимо переоткрыта Шёнфинкелем (Schoenfinkel), вместе с результатом, что все функции, имеющие отношение к структуре функций, могут быть построены из двух базисных элементов, K и S. Спустя десятилетие эта мысль породила комбинаторную логику Хаскелла Карри, в честь которого и появился термин «каррирование». Функция f' в примере выше называется каррированной формой функции f. С точки зрения функционального программирования каррирование может быть описано функцией:
curry : ((a,b) -> c) -> (a -> b -> c)
Обратная операция, очевидно, будет декаррирование:
uncurry : (a -> b -> c) -> ((a,b) -> c)
Дополнительная литература:
• "Highlights of the history of the lambda-calculus", J. Barkley Rosser, ACM Lisp and Functional Programming, 1982.
• "Ueber die Bausteine der mathematischen Logik", Moses Sch\"onfinkel, Mathematische Annalen, 92, 1924. An English translation, "On the building blocks of mathematical logic", appears in "From Frege to G\"odel", Jean van Heijenoort, Harvard University Press, Cambridge, 1967.
• "Combinatory logic", Haskell B. Curry and Robert Feys, North-Holland, 1958. This work also contains many references to earlier work by Curry, Church, and others.
3.3. Монады
Что такое монады и для чего они нужны?
Концепция монад пришла из теории категорий, их полное описание можно найти в любом стандартном учебнике по этому предмету. Самое интересное в монадах, касаемо функционального программирования – это результаты недавних исследований, показывающие, как монады могут быть использованы для описания всех возможностей языка программирования ( например, ввод/вывод, изменение состояния, возобновления и исключения) в чисто функциональном языке таком, как Haskell:
• "Comprehending monads", Philip Wadler, Mathematical Structures in Computer Science, Special issue of selected papers from 6th Conference on Lisp and Functional Programming, 1992. В электронном виде: http://www.cs.bell-labs.com/~wadler/topics/monads.html#monads
• "The essence of functional programming", Philip Wadler, Invited talk, 19th Symposium on Principles of Programming Languages, ACM Press, Albuquerque, January 1992. В электронном виде: http://www.cs.bell-labs.com/~wadler/topics/monads.html#essence
• "Imperative functional programming", Simon Peyton Jones and Philip Wadler, 20th Symposium on Principles of Programming Languages, ACM Press, Charlotte, North Carolina, January 1993. В электронном виде: http://www.cs.bell-labs.com/~wadler/topics/monads.html#imperative
• "How to declare an imperative", Philip Wadler, ACM Computing Surveys, to appear. В электронном виде: http://www.cs.bell-labs.com/~wadler/topics/monads.html#monadsdeclare
3.4. Парсеры (синтаксические анализаторы)
Как мне написать парсер на функциональном языке?
Парсер – это программа, которая преобразует список введенных символов в значения подходящего типа. Простым примером может быть функция, которая находит целое из строки цифр. Более сложным примером служит трансляция программы, написанной в некотором определенном синтаксе, в подходящий абстрактный, как первый этап компиляции или интерпретации. Существует два общепринятых способа написания парсера на функциональном языке:
• Использовать генератор парсеров. Некоторые функциональные языки имеют набор вспомогательных инструментов для автоматической генерации парсеров по заданной грамматике. См.:
o Happy: генератор парсеров для Haskell и Gofer, аналогичный `yacc' для C. Доступен на: http://www.dcs.gla.ac.uk/fp/software/happy/.
o Ratatosk: генератор парсеров и сканеров для Gofer. Доступен на:
Host: ftp.diku.dk;
Directory: /pub/diku/dists.
o ML-Yacc и ML-Lex: LALR – генератор парсеров и генератор лексических анализаторов для Standard ML. Включен в SML/NJ, доступен на:
Host: ftp.research.bell-labs.com;
Directory: /dist/smlnj.
• Использовать комбинаторный разбор. Парсеры представляются функциями и комбинируются в небольшие наборы, составляя парсер, который наиболее походит на грамматику заданного языка. Парсеры, написанные таким образом могут использовать перебор с возвратами. См.:
o "How to replace failure with a list of successes", Philip Wadler, FPCA '85, Springer Verlag LNCS 201, 1985.
o "Higher-order functions for parsing", Graham Hutton, Journal of Functional Programming, Volume 2, Number 3, July 1992. Доступен на: http://www.cs.nott.ac.uk/~gmh/bib.html#parsing.
3.5. Строгость
Что означает, когда говорят про функциональный язык «строгий» или «нестрогий»?
Вот одно из (практических) объяснений этого различия:
• В строгом языке аргументы функции всегда вычисляются перед тем как она вызвана. В результате, если вычисление выражения exp не завершилось соответствующим образом (например, произошла ошибка во время выполнения или вычисление вошло в бесконечный цикл), тогда и не завершиться соответствующе выражение f(exp). ML и Scheme – этому пример.
• В нестрогих языках, аргументы функций не вычисляются, пока ни потребуются их значения. Например, вычисление выражения f(exp) может завершиться как положено, даже если вычисление exp – нет, если значение параметра нигде не используется в теле f. Miranda и Haskell – примеры такого подхода.
Существует много споров в функциональном программировании об относительных достоинствах строгих и нестрогих языков. Возможно, однако, и смесь этих двух подходов, например, в некоторых версиях функционального языка Hope.
3.6. Производительность
Какова производительность функциональных программ?
В некоторых кругах, программы, написанные на функциональных языках, заработали репутацию медленных. Частично, за это ответственен высокий уровень абстракции, какой присущ таким программам, частично – такие мощные средства, как функции высших порядков (функционалы), автоматическое управление памятью и т.д. Конечно, производительность интерпретаторов и компиляторов для функциональных языков улучшается в свете новых технологических разработок.
Вот подборка ссылок для дальнейшего чтения:
• Более 25 реализаций различных функциональных языков были сравнены на программе «Pseudoknot» — приложение из молекулярной биологии, интенсивно использующее операции с плавающей запятой. См:
o "Benchmarking implementations of functional languages with 'Pseudoknot', a float-intensive benchmark", Pieter H. Hartel et al, Journal of Functional Programming, 6(4):621-655, July 1996. Доступно на: ftp://ftp.fwi.uva.nl/pub/computer-systems/functional/reports/.
• Ниже статьи сравнивающие пять реализаций ленивых функциональных языков:
o "Benchmarking implementations of lazy functional languages", P.H. Hartel and K.G. Langendoen, FPCA 93, ACM, pp 341-349. Доступны на:
Host: ftp.fwi.uva.nl;
Directory: pub/functional/reports.
• Эксперименты на сильно оптимизированном компиляторе для Sisal, строгом функциональном языке, показали, что функциональные программы могут быть быстрее, чем Фортран. См.:
o "Retire FORTRAN? A debate rekindled", D.C. Cann, Communications of the ACM, 35(8), pp. 81-89, August 1992.
• Материалы работы конференции 1995 года по высокопроизводительному функциональному вычислению (High Performance Functional Computing (HPFC)) доступны на: ftp://sisal.llnl.gov/pub/hpfc/index.html.
3.7. Применение
Что я могу найти о применении функциональных языков?
Вот небольшая подборка:
• "Special issue on state-of-the-art applications of pure functional programming languages", edited by Pieter Hartel and Rinus Plasmeijer, Journal of Functional Programming, Volume 5, Number 3, July 1995.
• "Applications of functional programming", edited by Colin Runciman and David Wakeling, UCL Press, 1995. ISBN 1-85728-377-5.
• Электронный список реальных приложений функционального программирования, который включает программы, написанные на нескольких различных функциональных языках. Главным критерием «реальности» приложения было то, что программа была написана для некоторой задачи, а не ради эксперимента по функциональному программированию.
Более детально здесь: http://www.cs.bell-labs.com/~wadler/realworld/.
Ц>3.1. Чистота Ц>Что такое «чисто функциональный» язык программирования? Ц>Этот вопрос был предметом многочисленных обсуждений в функциональном программировании. Принято считать, что языки, такие как Haskell и Miranda – это «чисто функциональные», в то время как SML и Scheme – нет. Однако, существуют некоторые различия во мнениях о точной технической мотивации для такого разбиения. Одно из определений, которое было предложено, звучит следующим образом:...
Несколько сбивчиво описано.
Ц>3.2. Каррирование
Имхо правильнее использовать кальку "Карринг", а не придумывать новое слово.
И имхо стоит опустить весь текст до следующего абзаца.
Ц>С точки зрения функционального программирования каррирование может быть описано функцией: Ц>curry : ((a,b) -> c) -> (a -> b -> c) Ц>Обратная операция, очевидно, будет декаррирование: Ц>uncurry : (a -> b -> c) -> ((a,b) -> c)
И объяснить, зачем оно надо.
Ц>3.3. Монады Ц>Что такое монады и для чего они нужны? Ц>Концепция монад пришла из теории категорий, их полное описание можно найти в любом стандартном учебнике по этому предмету. Самое интересное в монадах, касаемо функционального программирования – это результаты недавних исследований, показывающие, как монады могут быть использованы для описания всех возможностей языка программирования ( например, ввод/вывод, изменение состояния, возобновления и исключения) в чисто функциональном языке таком, как Haskell:
Так все таки, что такое монады и для чего они нужны?
Ц>3.4. Парсеры (синтаксические анализаторы) Ц>Как мне написать парсер на функциональном языке? Ц>Парсер – это программа, которая преобразует список введенных символов в значения подходящего типа. Простым примером может быть функция, которая находит целое из строки цифр. Более сложным примером служит трансляция программы, написанной в некотором определенном синтаксе, в подходящий абстрактный, как первый этап компиляции или интерпретации.
Ты уверен, что новичку будет интересен именнно этот вопрос?
Ц>3.5. Строгость Ц>Что означает, когда говорят про функциональный язык «строгий» или «нестрогий»?
Ц>>3.1. Чистота
Ц>>Что такое «чисто функциональный» язык программирования?
Ц>>Этот вопрос был предметом многочисленных обсуждений в функциональном программировании. Принято считать, что языки, такие как Haskell и Miranda – это «чисто функциональные», в то время как SML и Scheme – нет. Однако, существуют некоторые различия во мнениях о точной технической мотивации для такого разбиения. Одно из определений, которое было предложено, звучит следующим образом:...
INT> Несколько сбивчиво описано.
На чистом на английском не более понятно , просили перевести
Хотя я согласен, что текст стоит адаптировать,
готов сделать новые формулировки.
Ц>>3.2. Каррирование
INT>Имхо правильнее использовать кальку "Карринг", а не придумывать новое слово.
Приходилось выбирать.
Каррирование — видимо более старый термин + есть еще и декаррирование ( ср.: "декорирование" )
есть в лекциях МИФИ + список Googlя
Видимо, распространен в математике.
Среди программитстов более прижился карринг/анкарринг (см. Google)
Последний мне тоже больше нравиться
INTUIT.ru::Интернет-Университет ...
... 6, ε, app, Аппликация. 7, Λ, cur, Каррирование. 8, ‘, quote,
Цитирование. Таблица 11.2. Состояния КАМ. ... www.intuit.ru/department/se/tppfunc/11/2.html — 39k — Сохранено — Похожие страницы
[ Дополнительные результаты с www.intuit.ru ]
Конструкции языков ...
... скобок 94; 4.5.4 Каррирование 96; 4.5.5 Условные функции
98; 4.5.6 Case-конструкция 99; 4.5 ... www.jurinfor.ru/library/B5891580799.php — 22k — Сохранено — Похожие страницы
[PDF] КАТЕГОРИАЛЬНАЯ АБСТРАКТНАЯ МАШИНА
Формат файла: PDF/Adobe Acrobat — В виде HTML
... Последнее равенство опре- деляет каррирование, а предпоследнее – декаррирование ...
labs.rulezz.ru/files/136/CAM_00L.PDF — Дополнительный Результат — Похожие страницы
[PDF] Часть I: Список вопросов к экзамену ...
Формат файла: PDF/Adobe Acrobat — В виде HTML
... Оператор абстракции. Функции высших порядков.
31. Каррирование. Декаррирование. 32. ...
labs.rulezz.ru/files/142/PL-Quest_B4_exams_part-1-2.pdf — Дополнительный Результат — Похожие страницы
[PDF] Categorical Abstract Machine
Формат файла: PDF/Adobe Acrobat — В виде HTML
Page 1. И НСТИТУТ А КТУАЛЬНОГО О БРАЗОВАНИЯ
“Ю Р И НФО Р-МГУ” КАТЕГОРИАЛЬНАЯ ...
gitzo.newmail.ru/www/CAM_00L.pdf — Дополнительный Результат — Похожие страницы
INT>Так все таки, что такое монады и для чего они нужны?
Ну написано там так
Менять на наше ?
Ц>>3.4. Парсеры (синтаксические анализаторы)
Ц>>Как мне написать парсер на функциональном языке?
Ц>>Парсер – это программа, которая преобразует список введенных символов в значения подходящего типа. Простым примером может быть функция, которая находит целое из строки цифр. Более сложным примером служит трансляция программы, написанной в некотором определенном синтаксе, в подходящий абстрактный, как первый этап компиляции или интерпретации.
INT>Ты уверен, что новичку будет интересен именнно этот вопрос?
Легко убирается ( или переписывается )
Ц>>3.5. Строгость
Ц>>Что означает, когда говорят про функциональный язык «строгий» или «нестрогий»?
INT>Ни в коем случае не "нестрогость". "Ленивость" — она и есть ленивость.
Нестрогий и ленивый ( + unstrict и lazy ), как я понял по литературе -- заменяемые синонимы.
Пара strict/unstrict видимо из более фундаментальных работ, а lazy из функционального фольклора.
Хотя, "я, также как все мои товарищи..."
Короче пусть пипл решит, да и все.
Это голосование не о том, о чем мы с тобой говорили. В данном голосовании предлагается создать форум по функциональным языкам, а не форум "Декларативные и функциональные и логические языки программирования". Разница, имхо, очевидна.
Posted via RSDN NNTP Server 1.9 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Nick_, Вы писали:
N_>Если уж называть, то "Функциональное программирование".
Только гденить записать, что топики на тему того же пролога, не будут офтопиком.
В выходные подбираю материал из ветки и готовлю новую версию документа.
Все не поправленное авторами будет поправлено мной.
Все непоправленное мной (или поправленное мной криво) может быть поправлено остальными, если они смогут найти на это время.
G>ИМХО, не хватает только ссылок на страницу GHC, прямых ссылок на download дистрибутивов, пары слов про наличие отладчиков и профайлеров, пояснение ситуации с наличием/отсутствием IDE и что с этим делать, а также замечания по поводу того, что GHC генерит native код. А также возможностей оптимизации доступных в GHC — strictness-analyzer, явного определения strict структур данных и параметров функций, и unboxed структур данных, которые способны поправить ситуацию с производительностью и интересны практикующему программисту.
Не думаю, что информация о тонкостях работы компилятора — это то, чем необходимо забивать голову человеку, желающему узнать, что такое этот Haskell.
Здравствуйте, faulx, Вы писали:
F>Здравствуйте, Gaperton, Вы писали:
G>>ИМХО, не хватает только ссылок на страницу GHC, прямых ссылок на download дистрибутивов, пары слов про наличие отладчиков и профайлеров, пояснение ситуации с наличием/отсутствием IDE и что с этим делать, а также замечания по поводу того, что GHC генерит native код. А также возможностей оптимизации доступных в GHC — strictness-analyzer, явного определения strict структур данных и параметров функций, и unboxed структур данных, которые способны поправить ситуацию с производительностью и интересны практикующему программисту.
F>Не думаю, что информация о тонкостях работы компилятора — это то, чем необходимо забивать голову человеку, желающему узнать, что такое этот Haskell.
Наверно, ты прав. Как насчет отладчиков/профайлеров/IDE?
Здравствуйте, VladD2, Вы писали: VD>Предлагаю так: "Декларативные и функциональные и логические языки программирования". А?
Тогда "Неимперативне языки программирования"
... << RSDN@Home 1.1.4 beta 1 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, VladD2, Вы писали: VD>>Предлагаю так: "Декларативные и функциональные и логические языки программирования". А? S>Тогда "Неимперативне языки программирования"
А есть ещё кроме императивных и декларативных ещё какая-то подгруппа языков?
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, VladD2, Вы писали: VD>>Предлагаю так: "Декларативные и функциональные и логические языки программирования". А? S>Тогда "Неимперативне языки программирования"
Не. "Нетрадиционное и эзотерическое программирование".
Это дело уже заглохло? Просто тоже интересуюсь ФЯ и хотелось бы чтобы был форум.
Да еще такие языки как Python(в нем очень много декларативных свойств, да и в функциональном стиле легко работать) будут оффтопиком или нет?