функциональное программирование
От: takTak  
Дата: 02.09.18 18:16
Оценка: 4 (1)
наткнулся на досуге на https://www.youtube.com/watch?v=AG3KuqDbmhM очень впечатлило!


вот теперь думаю, как разумно въехать в тему? начать ли с чтения чего-то фундаментального , типа теории категорий
или сразу броситься ваять очередной "хелоу , вёлд" ?

Кто как вообще такое без "старшего брата" самостоятельно осваивал?
Re: функциональное программирование
От: LaptevVV Россия  
Дата: 03.09.18 03:14
Оценка:
T>наткнулся на досуге...
1. Ну, Лисп — наше все...
2. Сейчас можно не лисп, а Scala.
3. Можно освоить Linq в C#
4. Есть английская книга по функциональному программированию на С++
5. Спросить Кодта — он все знает.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: функциональное программирование
От: takTak  
Дата: 03.09.18 04:59
Оценка: 14 (1)
вот тут есть список того, где перечислены книги, в которых описываются фундаментальные основы...
Re: функциональное программирование
От: scf  
Дата: 03.09.18 06:17
Оценка: +1
Здравствуйте, takTak, Вы писали:

T>наткнулся на досуге на https://www.youtube.com/watch?v=AG3KuqDbmhM очень впечатлило!



T>вот теперь думаю, как разумно въехать в тему? начать ли с чтения чего-то фундаментального , типа теории категорий

T> или сразу броситься ваять очередной "хелоу , вёлд" ?

T>Кто как вообще такое без "старшего брата" самостоятельно осваивал?


Для меня это был длительный процесс, после прочтения книжки или статьи остается только легкое офигевание и вопрос в голове "зачем всё это надо".
Проще всего въехать в тему изучая ФП-язык. Это либо Haskell и какая-нибудь книжка про Haskell с нуля, либо Scala и Functional Programming in Scala.

Отличие в том, что Haskell более хардкоден и академичен (больше информации сразу, но язык маргинальный — приличной IDE нет, тулинг убогий, крупных опнсорс приложений мало, вакансий мало), а Scala — гибрид императивного программирования с ФП (популярен, всё есть, но не все концепции из хаскеля используются)

Лисп, имхо, не стоит того, чтобы учиться на нем писать программы. Так, прочитать книжку в ознакомительных целях.
Re[2]: функциональное программирование
От: Privalov  
Дата: 03.09.18 09:03
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>1. Ну, Лисп — наше все...


CISP — наше все. Так его для Питона переписали.

LVV>2. Сейчас можно не лисп, а Scala.


Что-то Scala показался мне каким-то тяжеловатым.
Re: функциональное программирование
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 03.09.18 09:14
Оценка:
Здравствуйте, takTak, Вы писали:

T>Кто как вообще такое без "старшего брата" самостоятельно осваивал?

Неплохо было бы ознакомиться с теорией категорий/типов и освежить теорию множеств. Всё это можно делать изучая сам язык.
Sic luceat lux!
Re[3]: функциональное программирование
От: LaptevVV Россия  
Дата: 17.08.19 18:20
Оценка:
P>CISP — наше все. Так его для Питона переписали.
Кста, где можно скачать, не знаешь?
Что- я пропустил как-то.
LVV>>2. Сейчас можно не лисп, а Scala.
P>Что-то Scala показался мне каким-то тяжеловатым.
Зато книжки две новых есть. Одна — прямо от Мартина Одерски.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: функциональное программирование
От: Privalov  
Дата: 18.08.19 05:58
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Кста, где можно скачать, не знаешь?


Я нагуглил по словам SICP python

LVV>Зато книжки две новых есть. Одна — прямо от Мартина Одерски.


Толку с них, если язык не нравится. Если бы реальный проект подвернулся, я бы, конечно, начал читать. Возможно, и отношение к Scala переменилось бы. А вот просто из любопытства посмотрел — не понравилось.
А книга Одерски в свободном доступе раньше лежала.
Re[5]: функциональное программирование
От: LaptevVV Россия  
Дата: 18.08.19 09:01
Оценка:
P>Я нагуглил по словам SICP python
У меня только вот это получилось:
1. https://wizardforcel.gitbooks.io/sicp-in-python/content/
2. https://github.com/csfulop/sicp_python
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: функциональное программирование
От: Privalov  
Дата: 18.08.19 10:17
Оценка: 42 (1)
Здравствуйте, LaptevVV, Вы писали:

LVV>У меня только вот это получилось:

LVV>1. https://wizardforcel.gitbooks.io/sicp-in-python/content/

Я скачал pdf. Сейчас вполглаза глянул, сравнил: у меня эта редакция.

Ну вот у меня выскочила вот такая ссылка: https://legacy.gitbook.com/book/wizardforcel/sicp-in-python/details
Там PDF. Беглый просмотр показывает, что это та же книга.


LVV>2. https://github.com/csfulop/sicp_python


А это какие-то примеры. Не разбирался.
Re: функциональное программирование
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.08.19 11:00
Оценка: 5 (1)
Здравствуйте, takTak, Вы писали:

T>вот теперь думаю, как разумно въехать в тему? начать ли с чтения чего-то фундаментального , типа теории категорий

T> или сразу броситься ваять очередной "хелоу , вёлд" ?

Зависит от того, что ты дальше с этим навыком делать собрался: продавать или просто для себя. Если продавать, то тут по большому счету два варианта, всякая околодесктопщина и бэкенд. В околодесктопной разработке в небольшом количестве водится Haskell и OCaml. В бэкенде есть Clojure и Elixir. По слухам еще где-то используют F# и Scala, но я таких не знаю даже заочно, в отличие от первых двух категорий и языков.

T>Кто как вообще такое без "старшего брата" самостоятельно осваивал?


Я сам ковырял Haskell, понял что сильно далеко от моей сферы интересов и слишком замудренная хрень, но если страсть как любишь математику — это то, что нужно. А вот Clojure и Elixir на оборот, довольно легкие в изучении и сразу очевидно куда и как их можно применить, кроме того, пусть и редко, но присутствуют в ряде позиций, т.е. продаваемо при желании.

Это я к тому, что перед тем как с каким-то из языков связываться стоит определиться что именно нужно и как это дальше использовать. Ну а учиться, я бы не рекомендовал с чем-то фундаментальным связываться, разве что интерес не чисто академический. Что-то полезное для себя и/или окружающих — это именно то, с чего и стоит начинать.
Отредактировано 18.08.2019 11:47 kaa.python . Предыдущая версия . Еще …
Отредактировано 18.08.2019 11:11 kaa.python . Предыдущая версия .
Re[7]: функциональное программирование
От: LaptevVV Россия  
Дата: 18.08.19 11:41
Оценка:
Спасибо.
LVV>>2. https://github.com/csfulop/sicp_python
P>А это какие-то примеры. Не разбирался.
Это вроде как примеры по этой книге на питоне
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: функциональное программирование
От: takTak  
Дата: 18.08.19 11:49
Оценка:
T>>вот теперь думаю, как разумно въехать в тему? начать ли с чтения чего-то фундаментального , типа теории категорий
T>> или сразу броситься ваять очередной "хелоу , вёлд" ?

KP>Зависит от того, что ты дальше с этим навыком делать собрался: продавать или просто для себя. Если продавать, то тут по большому счету два варианта, всякая околодесктопщина и бэкенд. В околодесктопной разработке в небольшом количестве водится Haskell и OCaml. В бэкенде есть Clojure и Elixir. По слухам еще где-то используют F# и Scala, но я таких не знаю даже заочно, в отличие от первых двух категорий и языков.


T>>Кто как вообще такое без "старшего брата" самостоятельно осваивал?


KP>Я сам ковырял Haskell, понял что сильно далеко от моей сферы интересов и слишком замудренная хрень, но если страсть как любишь математику — это то, что нужно. А вот Clojure и Elixir на оборот, довольно легкие в изучении и сразу очевидно куда и как их можно применить, кроме того, пусть и редко, но присутствуют в ряде позиций, т.е. продаваемо при желании.


KP>Это я к тому, что перед тем как с каким-то из языков связываться стоит определиться что именно нужно и как это дальше использовать. Ну а учиться, я бы не рекомендовал с чем-то фундаментальным связываться, разве что интерес не чисто академический. Что-то полезное для себя и/или окружающих — это именно то, с чего и стоит начинать.


я начал вот эту книжку с переменным успехом читать : https://www.manning.com/books/functional-programming-in-c-sharp,
а так по синтаксису F# нравится — но куда-то его присобачить вряд ли получится,

ну разве что по работе один интеграционный проект под apache camel/ clojure может родиться, но это пока далёкое будущее
Re[2]: функциональное программирование
От: SkyDance Земля  
Дата: 19.08.19 04:44
Оценка:
KP>Зависит от того, что ты дальше с этим навыком делать собрался: продавать или просто для себя. Если продавать, то тут по большому счету два варианта, всякая околодесктопщина и бэкенд. В околодесктопной разработке в небольшом количестве водится Haskell и OCaml. В бэкенде есть Clojure и Elixir. По слухам еще где-то используют F# и Scala, но я таких не знаю даже заочно, в отличие от первых двух категорий и языков.

Elixir — это всего лишь диалект Erlang. Который, внезапно, обслуживает пол-мира (Ericsson в коммутаторах, Klarna — бэкенд, и, внезапно, весь WhatsApp Server).
Re[3]: функциональное программирование
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 19.08.19 05:29
Оценка:
Здравствуйте, SkyDance, Вы писали:

SD>Elixir — это всего лишь диалект Erlang. Который, внезапно, обслуживает пол-мира (Ericsson в коммутаторах, Klarna — бэкенд, и, внезапно, весь WhatsApp Server).


А Scala – это всего лишь диалект Java
Re[3]: функциональное программирование
От: LaptevVV Россия  
Дата: 19.08.19 06:09
Оценка:
SD>Elixir — это всего лишь диалект Erlang. Который, внезапно, обслуживает пол-мира (Ericsson в коммутаторах, Klarna — бэкенд, и, внезапно, весь WhatsApp Server).
Я в книжке5 читал, что это не диалект, а надстройка — над Эрлангом, да.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: функциональное программирование
От: SkyDance Земля  
Дата: 19.08.19 16:02
Оценка:
SD>>Elixir — это всего лишь диалект Erlang.
KP>А Scala – это всего лишь диалект Java

Про это мне не ведомо. А вот про Erlang/Elixir — которые еще называют BEAM Languages — известно, скажем так, многое, включая код той самой BEAM, виртуальной машины.
Кто в теме, тот еще знает и о https://erlef.org — Erlang Ecosystem Foundation, которая, внезапно, включает и Elixir.
Re[5]: функциональное программирование
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 20.08.19 01:31
Оценка:
Здравствуйте, SkyDance, Вы писали:

SD>Про это мне не ведомо. А вот про Erlang/Elixir — которые еще называют BEAM Languages — известно, скажем так, многое, включая код той самой BEAM, виртуальной машины.

SD>Кто в теме, тот еще знает и о https://erlef.org — Erlang Ecosystem Foundation, которая, внезапно, включает и Elixir.

Похоже, у тебя просто нет понимания того, что такое диалект. Диалект – это очень маленькое изменение языка, адаптация языка к другой платформе и т.п. Может тебе будет проще понять, когда разница в языках куда сильнее чем в случае Erlang и Elixir. Так вот, LFE который так же развивается под эгидой Erlang Ecosystem Foundation, не является диалектом Erlang, хотя и работает на BEAM, но является диалектом LISP. Языки работающие на одной платформе могут, но совершенно не обязаны быть диалектами друг друга. Так и с Erlang и Elixir, которые являются разными языками, но никак не диалектами друг друга.
Re[6]: функциональное программирование
От: SkyDance Земля  
Дата: 20.08.19 06:11
Оценка: -1 :)
KP>Похоже, у тебя просто нет понимания того, что такое диалект. Диалект – это очень маленькое изменение языка, адаптация языка к другой платформе и т.п. Может тебе будет проще понять, когда разница в языках куда сильнее чем в случае Erlang и Elixir.

Elixir builds on top of Erlang and shares the same abstractions for building distributed, fault-tolerant applications.

KP> Так вот, LFE который так же развивается под эгидой Erlang Ecosystem Foundation, не является диалектом Erlang, хотя и работает на BEAM, но является диалектом LISP.


LFE — да, вообще ничего общего с Erlang/Elixir.

KP> Так и с Erlang и Elixir, которые являются разными языками, но никак не диалектами друг друга.


Как много кода ты написал на Erlang и Elixir? Как думаешь, откуда в Elixir названия вроде GenServer или GenEvent?
Re: функциональное программирование
От: HrorH  
Дата: 23.08.19 14:14
Оценка: 4 (1) +1
Здравствуйте, takTak, Вы писали:

T>Кто как вообще такое без "старшего брата" самостоятельно осваивал?


Функциональное программирование лучше всего изучать на примере Haskell.
Потому что все равно без Haskell не обойдется, в той или иной степени.
Можно использовать книгу Курта и например Wadler Bird "Introduction to functional programming",
а также "Gentle introduction" и YAHT.
В качестве IDE можно использовать Visual Studio Code, там можно расширение поставить для Haskell.

Хотя для начала можно изучать вообще все подряд, главное не останавливаться.

Ну и параллельно то же лямбда исчисление (недавно тут была ссылка на прекрасную лекцию David Beazley по lambda calculus), теорию комбинаторов, зависимые типы и т.д.

И одновременно, если есть желание, можно начинать изучать математику.
Абстрактная алгебра, алгебраическая топология, теория категорий, HOTT.

P.S. C# это не функциональный язык, это язык с некоторыми функциональными фишками, в плане функциональщины там до Haskell как до Луны.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.