[ФЛП] Переспективы функциональных языков

 
0
 
Functional languages
ava
Sartorius | 10.09.2008, 18:43
MS потихоньку переводит F# из своего исследовательского отдела на рынок. Я тут посмотрел маны по F#... Оно похоже на смесь Python, C# и Haskel. Некоторые вещи можно записать оч. коротко и красиво. Однако въехать в такой стиль оказалось непросто. Хочу определитья: имеет ли смысл вообще обращать на функциональные языки внимание в плане использования их для промышленной разработки ну или под свои нужды. Кто что думает?
Comments (26)
ava
maggot | 16.09.2008, 22:10 #
ИМХО, функциональные языки ещё долго не смогут вытеснить императивные.
Но всё-таки за функциональными языками будущее.
ava
semka | 17.09.2008, 07:12 #
Имеет смысл, даже если вы никогда не будете писать на функциональных языках.
В конце концов — это банальная грамотность.
ava
Mayk | 17.09.2008, 07:25 #
Не вижу предпосылок к "Функциональные языки за пару лет займут существенную долю рынка". Может потому что их по-просту нет?
ava
semka | 17.09.2008, 07:55 #
Насчет существенной может перегиб, конечно, но что функциональные языки занимают все большую долю рынка по-моему очевидно.
Взять хотя бы Erlang. 
ava
nerezus | 16.11.2008, 11:42 #
Я сомневаюсь, что чисто функциональные языки наберут обороты. А фот функциональные фишки в императивных - это круто. Питон это доказывает, очень часто использую в нем функциональные вещи, однако большинство кода все же классическое ООП)
ava
kemiisto | 21.11.2008, 16:47 #
Цитата (nerezus @  16.11.2008,  09:42 findReferencedText)
однако большинство кода все же классическое ООП

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


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

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

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

Взять хотя бы Erlang. 


Ну, допустим, взять Erlang. И?
ava
nerezus | 21.11.2008, 17:03 #
Цитата


В Python разве так?


Цитата

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

 Это так.

Цитата


Объекты могут обладать состоянием.

 Полубому есть, но не понял формулировку )

Цитата


Посылка сообщения - единственный способ обмена информацией между объектами.

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

Эм... Не понял. Богаче чем кто?
ava
Gunslinger | 25.08.2010, 19:28 #
Рас уж тут про эрланг заговорили.
Прочитал о его фишке - что легко масштабируется на любое количество процессоров. Серьезная такая перспектива, но я не в курсе про следующие вопросы: чтобы проводить параллельные расчеты (сетевые рендеры для 3d, чисто математические расчеты, нейронные сети) нужно соответствующе переписывать все алгоритмы соответствующего софта, подстраивая их под многопроцессорность?
ava
Kakadu | 26.08.2010, 12:21 #
Цитата (Gunslinger @ 25.8.2010,  19:28)
 чтобы проводить параллельные расчеты  нужно соответствующе переписывать все алгоритмы соответствующего софта, подстраивая их под многопроцессорность?

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

P.S. Как автор расшифровывает ФЛП?
ava
kemiisto | 26.08.2010, 12:38 #
Цитата (Kakadu @  26.8.2010,  13:21 findReferencedText)
Имеется ввиду, что их надо написать на ерланге, а компилятор всё сам распараллелит.

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

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

Функционально-логическое программирование?
ava
Kakadu | 26.08.2010, 12:46 #
Цитата


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


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

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

Если так, то опрос построен немного нелогично. Хотя, это всё вопрос толкования русского языка.
Лично я к логическим языкам отношуся предвзято и очень подозрительно. Я читал математические модели, на которых они построены, но не могу пока найти им применение.
ava
Gunslinger | 26.08.2010, 16:42 #
Цитата (kemiisto @  26.8.2010,  12:38 findReferencedText)
Ничего там компилятор сам не распараллелит.

Получается эрланг всего лишь платформа для многопроцессорных расчетов в функциональном стиле, весь затык в правильно построенных алгоритмах? Как бы и не в эрланге фишка, а в мозгах программистов. Только тут странность: программист строит параллельный код, определяя количество "параллельностей". Затем появляется процессор с большем количеством ядер. Возможности распараллелить увеличиваются. В итоге опять рефакторить код, чтобы и их задействовать?
ava
kemiisto | 26.08.2010, 18:10 #
Gunslinger, ну можно ведь программно определять кол-во имеющихся ядер и, зная их число, вычислять кол-во потоков.
ava
Gunslinger | 28.08.2010, 15:36 #
Цитата (kemiisto @  26.8.2010,  18:10 findReferencedText)
ну можно ведь программно определять кол-во имеющихся ядер и, зная их число, вычислять кол-во потоков. 

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


foo (bar x) (gee y)

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

added later:
Цитата (Gunslinger @ 26.8.2010,  16:42)
Цитата (kemiisto @  26.8.2010,  12:38 \\"findReferencedText\\")
Ничего там компилятор сам не распараллелит.


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

ну  можно ж хотя бы в вике почитать?
ava
Gunslinger | 29.08.2010, 18:57 #
Цитата (k0rvin @  29.8.2010,  09:22 findReferencedText)
ну  можно ж хотя бы в вике почитать? 

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

Они обрабатывают разную информацию? Минимальные единицы, до которых можно распараллелить - функции?
ava
k0rvin | 29.08.2010, 19:18 #
Цитата (Gunslinger @ 29.8.2010,  18:57)
Они обрабатывают разную информацию?

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

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

думаю да, функции, а что может быть минимальней (в ФП)?
ava
ZyK | 12.09.2010, 02:53 #
Цитата (Gunslinger @ 26.8.2010,  16:42)
Цитата (kemiisto @  26.8.2010,  12:38 \\"findReferencedText\\")
Ничего там компилятор сам не распараллелит.


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

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

Вторая черта эрланга - процессы не имеют общей памяти, это позволяет работать на машинах без общей памяти.
ava
ZyK | 14.09.2010, 23:49 #
Цитата (Gunslinger @ 25.8.2010,  19:28)
Рас уж тут про эрланг заговорили.

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

На эрланге не пишут числодробилок, математика там медленная.
Эрланг заточен под связь. На нем проще писать отказоустойчивые распределенные программы. В основная нише эрланга - телекомы. Тому пример, самая известная программа на эралаге - сервер жабера.
ava
Gunslinger | 17.09.2010, 12:47 #
Цитата (ZyK @  12.9.2010,  02:53 findReferencedText)
при написании программ для машины с 8-ю ядрами, можно смело создавать одновременно сотню процессов. При переносе программы на машину с 50-ю ядрами, производительность резко растет.

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

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

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


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




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

Соответственно, у тебя количество процессов не всегда зависит от предлагаемого количества ядер.
Даже для одноядерной тачки, может быть удобным создать 100 процессов одновременно, в частности для медленно выполняющих операций - таких как загрузка страниц с веба.
ava
kemiisto | 09.11.2010, 20:45 #
Цитата
Функциональные языки за пару лет займут существенную долю рынка    [ 14 ]

Прошло 2 года. I have bad news for you. smile 
ava
Sartorius | 09.11.2010, 20:52 #
Нда... Что-то этого F# не слышно не видно. На TIOBE у Cobola наверно рейтинг больше  smile 
ava
ZyK | 13.11.2010, 01:13 #
Цитата (Sartorius @ 9.11.2010,  20:52)
Нда... Что-то этого F# не слышно не видно. На TIOBE у Cobola наверно рейтинг больше  smile

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

Вполне даже слышно ... 
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit