Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Функциональные языки: общие вопросы > [ФЛП] Переспективы функциональных языков


Автор: Sartorius 10.9.2008, 17:43
MS потихоньку переводит F# из своего исследовательского отдела на рынок. Я тут посмотрел http://msdn.microsoft.com/ru-ru/fsharp/default(en-us).aspx... Оно похоже на смесь Python, C# и Haskel. Некоторые вещи можно записать оч. коротко и красиво. Однако въехать в такой стиль оказалось непросто. Хочу определитья: имеет ли смысл вообще обращать на функциональные языки внимание в плане использования их для промышленной разработки ну или под свои нужды. Кто что думает?

Автор: maggot 16.9.2008, 22:10
ИМХО, функциональные языки ещё долго не смогут вытеснить императивные.
Но всё-таки за функциональными языками будущее.

Автор: semka 17.9.2008, 07:12
Имеет смысл, даже если вы никогда не будете писать на функциональных языках. 
В конце концов — это банальная грамотность.

Автор: Mayk 17.9.2008, 07:25
Не вижу предпосылок к "Функциональные языки за пару лет займут существенную долю рынка". Может потому что их по-просту нет?

Автор: semka 17.9.2008, 07:55
Насчет существенной может перегиб, конечно, но что функциональные языки занимают все большую долю рынка по-моему очевидно.
Взять хотя бы Erlang. 

Автор: nerezus 16.11.2008, 11:42
Я сомневаюсь, что чисто функциональные языки наберут обороты. А фот функциональные фишки в императивных - это круто. Питон это доказывает, очень часто использую в нем функциональные вещи, однако большинство кода все же классическое ООП)

Автор: kemiisto 21.11.2008, 16:47
Цитата(nerezus @  16.11.2008,  09:42 Найти цитируемый пост)
однако большинство кода все же классическое ООП

Классическое ООП:
Цитата
    * Объект - базовая единица объектно-ориентированной системы.
    * Объекты могут обладать состоянием.
    * Посылка сообщения - единственный способ обмена информацией между объектами.

В Python разве так? smile 

А вообще ты прав. ФП в чистом виде не наберёт обороты никогда.

Цитата(semka)
Насчет существенной может перегиб, конечно, но что функциональные языки занимают все большую долю рынка по-моему очевидно.
Взять хотя бы Erlang. 

Ну, допустим, взять Erlang. И?

Автор: nerezus 21.11.2008, 17:03
Цитата

В Python разве так?
 
Цитата

    * Объект - базовая единица объектно-ориентированной системы.
 Это так.

Цитата

Объекты могут обладать состоянием.
 Полубому есть, но не понял формулировку )

Цитата

Посылка сообщения - единственный способ обмена информацией между объектами.
 Это так. Только вот богаче питон этим )

Автор: kemiisto 21.11.2008, 17:21
nerezus, я только насчёт последнего не был уверен. Ага, значит посылка сообщения. Ну чтож, тогда всё OK! smile 
Цитата(nerezus @  21.11.2008,  15:03 Найти цитируемый пост)
Это так. Только вот богаче питон этим )

Эм... Не понял. Богаче чем кто?

Автор: Gunslinger 25.8.2010, 19:28
Рас уж тут про эрланг заговорили.
Прочитал о его фишке - что легко масштабируется на любое количество процессоров. Серьезная такая перспектива, но я не в курсе про следующие вопросы: чтобы проводить параллельные расчеты (сетевые рендеры для 3d, чисто математические расчеты, нейронные сети) нужно соответствующе переписывать все алгоритмы соответствующего софта, подстраивая их под многопроцессорность?

Автор: Kakadu 26.8.2010, 12:21
Цитата(Gunslinger @ 25.8.2010,  19:28)
 чтобы проводить параллельные расчеты  нужно соответствующе переписывать все алгоритмы соответствующего софта, подстраивая их под многопроцессорность?

Имеется ввиду, что их надо написать на ерланге, а компилятор всё сам распараллелит.

P.S. Как автор расшифровывает ФЛП?

Автор: kemiisto 26.8.2010, 12:38
Цитата(Kakadu @  26.8.2010,  13:21 Найти цитируемый пост)
Имеется ввиду, что их надо написать на ерланге, а компилятор всё сам распараллелит.

Да ладно? smile Там же вроде Actor model, как в Scala. Точнее, наоборот. Но не суть. Ничего там компилятор сам не распараллелит.

Цитата(Kakadu @  26.8.2010,  13:21 Найти цитируемый пост)
P.S. Как автор расшифровывает ФЛП?

Функционально-логическое программирование?

Автор: Kakadu 26.8.2010, 12:46
Цитата

Там же вроде Actor model, как в Scala. Точнее, наоборот. Но не суть. Ничего там компилятор сам не распараллелит.

Возможно, xто я погорячился. smile Знакомство с эрлангом мне оставило именно такое впечатление. Сам я фанат OCaml/

Цитата
Функционально-логическое программирование?

Если так, то опрос построен немного нелогично. Хотя, это всё вопрос толкования русского языка. 
Лично я к логическим языкам отношуся предвзято и очень подозрительно. Я читал математические модели, на которых они построены, но не могу пока найти им применение.

Автор: Gunslinger 26.8.2010, 16:42
Цитата(kemiisto @  26.8.2010,  12:38 Найти цитируемый пост)
Ничего там компилятор сам не распараллелит.

Получается эрланг всего лишь платформа для многопроцессорных расчетов в функциональном стиле, весь затык в правильно построенных алгоритмах? Как бы и не в эрланге фишка, а в мозгах программистов. Только тут странность: программист строит параллельный код, определяя количество "параллельностей". Затем появляется процессор с большем количеством ядер. Возможности распараллелить увеличиваются. В итоге опять рефакторить код, чтобы и их задействовать?

Автор: kemiisto 26.8.2010, 18:10
Gunslinger, ну можно ведь программно определять кол-во имеющихся ядер и, зная их число, вычислять кол-во потоков.

Автор: Gunslinger 28.8.2010, 15:36
Цитата(kemiisto @  26.8.2010,  18:10 Найти цитируемый пост)
ну можно ведь программно определять кол-во имеющихся ядер и, зная их число, вычислять кол-во потоков. 

На моем дилетанстком уровне программа (например, математическое моделирование какого-либо процесса) состоит из данных, которые последовательно обрабатываются различными алгоритмами. Тогда результаты одних расчетов будут входными данными для других расчетов. Поэтому мне и не ясно,как автоматически можно распараллеливать вычисления.

Автор: k0rvin 29.8.2010, 09:22
Цитата(Gunslinger @ 28.8.2010,  15:36)
На моем дилетанстком уровне программа (например, математическое моделирование какого-либо процесса) состоит из данных, которые последовательно обрабатываются различными алгоритмами. Тогда результаты одних расчетов будут входными данными для других расчетов. Поэтому мне и не ясно,как автоматически можно распараллеливать вычисления.

Код

foo (bar x) (gee y)

вычисления (bar x) и (gee y) можно провести параллельно

Добавлено через 6 минут и 23 секунды
Цитата(Gunslinger @ 26.8.2010,  16:42)
Цитата(kemiisto @  26.8.2010,  12:38 Найти цитируемый пост)
Ничего там компилятор сам не распараллелит.

Получается эрланг всего лишь платформа для многопроцессорных расчетов в функциональном стиле, весь затык в правильно построенных алгоритмах? Как бы и не в эрланге фишка, а в мозгах программистов. Только тут странность: программист строит параллельный код, определяя количество "параллельностей". Затем появляется процессор с большем количеством ядер. Возможности распараллелить увеличиваются. В итоге опять рефакторить код, чтобы и их задействовать?

ну  можно ж хотя бы в вике почитать?

Автор: Gunslinger 29.8.2010, 18:57
Цитата(k0rvin @  29.8.2010,  09:22 Найти цитируемый пост)
ну  можно ж хотя бы в вике почитать? 

читал я.
Цитата(k0rvin @  29.8.2010,  09:22 Найти цитируемый пост)
вычисления (bar x) и (gee y) можно провести параллельно

Они обрабатывают разную информацию? Минимальные единицы, до которых можно распараллелить - функции?

Автор: k0rvin 29.8.2010, 19:18
Цитата(Gunslinger @ 29.8.2010,  18:57)
Они обрабатывают разную информацию?

любую, одна из основных черт ФП -- отсутствие побочных эффектов, в вике об этом написано же.

Цитата(Gunslinger @ 29.8.2010,  18:57)
Минимальные единицы, до которых можно распараллелить - функции?

думаю да, функции, а что может быть минимальней (в ФП)?

Автор: ZyK 12.9.2010, 02:53
Цитата(Gunslinger @ 26.8.2010,  16:42)
Цитата(kemiisto @  26.8.2010,  12:38 Найти цитируемый пост)
Ничего там компилятор сам не распараллелит.

Получается эрланг всего лишь платформа для многопроцессорных расчетов в функциональном стиле, весь затык в правильно построенных алгоритмах? Как бы и не в эрланге фишка, а в мозгах программистов. Только тут странность: программист строит параллельный код, определяя количество "параллельностей". Затем появляется процессор с большем количеством ядер. Возможности распараллелить увеличиваются. В итоге опять рефакторить код, чтобы и их задействовать?

Фишка эрланга в легковесных процессах. Таким образом при написании программ для машины с 8-ю ядрами, можно смело создавать одновременно сотню процессов. При переносе программы на машину с 50-ю ядрами, производительность резко растет.
При тяжелых процессах мы такого позволить не можем.

Вторая черта эрланга - процессы не имеют общей памяти, это позволяет работать на машинах без общей памяти.

Автор: ZyK 14.9.2010, 23:49
Цитата(Gunslinger @ 25.8.2010,  19:28)
Рас уж тут про эрланг заговорили.
Прочитал о его фишке - что легко масштабируется на любое количество процессоров. Серьезная такая перспектива, но я не в курсе про следующие вопросы: чтобы проводить параллельные расчеты (сетевые рендеры для 3d, чисто математические расчеты, нейронные сети) нужно соответствующе переписывать все алгоритмы соответствующего софта, подстраивая их под многопроцессорность?

На эрланге не пишут числодробилок, математика там медленная.
Эрланг заточен под связь. На нем проще писать отказоустойчивые распределенные программы. В основная нише эрланга - телекомы. Тому пример, самая известная программа на эралаге - сервер жабера.

Автор: Gunslinger 17.9.2010, 12:47
Цитата(ZyK @  12.9.2010,  02:53 Найти цитируемый пост)
при написании программ для машины с 8-ю ядрами, можно смело создавать одновременно сотню процессов. При переносе программы на машину с 50-ю ядрами, производительность резко растет.

100 процессов в расчете на увеличение количества ядер? Чуда  нет - автоматически не масштабируется?

Цитата(ZyK @  14.9.2010,  23:49 Найти цитируемый пост)
На эрланге не пишут числодробилок, математика там медленная.

ясно.

Автор: ZyK 19.9.2010, 22:36
Цитата(Gunslinger @ 17.9.2010,  12:47)
Цитата(ZyK @  12.9.2010,  02:53 Найти цитируемый пост)
при написании программ для машины с 8-ю ядрами, можно смело создавать одновременно сотню процессов. При переносе программы на машину с 50-ю ядрами, производительность резко растет.

100 процессов в расчете на увеличение количества ядер? Чуда  нет - автоматически не масштабируется?


нет, в Эрланге используется конкурентная парадигма программирования. Вместо объектов ооп - используются процессы. Процесс может принимать сообщения - и отправлять их другим процессам.
В отличии от объектов - процессы общаются между собой асинхронна.

Соответственно, у тебя количество процессов не всегда зависит от предлагаемого количества ядер.
Даже для одноядерной тачки, может быть удобным создать 100 процессов одновременно, в частности для медленно выполняющих операций - таких как загрузка страниц с веба.

Автор: kemiisto 9.11.2010, 20:45
Цитата
Функциональные языки за пару лет займут существенную долю рынка    [ 14 ]

Прошло 2 года. I have bad news for you. smile 

Автор: Sartorius 9.11.2010, 20:52
Нда... Что-то этого F# не слышно не видно. На TIOBE у Cobola наверно рейтинг больше  smile 

Автор: ZyK 13.11.2010, 01:13
Цитата(Sartorius @ 9.11.2010,  20:52)
Нда... Что-то этого F# не слышно не видно. На TIOBE у Cobola наверно рейтинг больше  smile

да и подозрительно, что под апачем недавно выпустили.

Автор: A5uKa 30.11.2010, 09:03
Цитата(Sartorius @ 9.11.2010,  20:52)
Нда... Что-то этого F# не слышно не видно. На TIOBE у Cobola наверно рейтинг больше  smile

Вполне даже слышно ... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)