вот теперь думаю, как разумно въехать в тему? начать ли с чтения чего-то фундаментального , типа теории категорий
или сразу броситься ваять очередной "хелоу , вёлд" ?
Кто как вообще такое без "старшего брата" самостоятельно осваивал?
T>наткнулся на досуге...
1. Ну, Лисп — наше все...
2. Сейчас можно не лисп, а Scala.
3. Можно освоить Linq в C#
4. Есть английская книга по функциональному программированию на С++
5. Спросить Кодта — он все знает.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
T>вот теперь думаю, как разумно въехать в тему? начать ли с чтения чего-то фундаментального , типа теории категорий T> или сразу броситься ваять очередной "хелоу , вёлд" ?
T>Кто как вообще такое без "старшего брата" самостоятельно осваивал?
Для меня это был длительный процесс, после прочтения книжки или статьи остается только легкое офигевание и вопрос в голове "зачем всё это надо".
Проще всего въехать в тему изучая ФП-язык. Это либо Haskell и какая-нибудь книжка про Haskell с нуля, либо Scala и Functional Programming in Scala.
Отличие в том, что Haskell более хардкоден и академичен (больше информации сразу, но язык маргинальный — приличной IDE нет, тулинг убогий, крупных опнсорс приложений мало, вакансий мало), а Scala — гибрид императивного программирования с ФП (популярен, всё есть, но не все концепции из хаскеля используются)
Лисп, имхо, не стоит того, чтобы учиться на нем писать программы. Так, прочитать книжку в ознакомительных целях.
Здравствуйте, takTak, Вы писали:
T>Кто как вообще такое без "старшего брата" самостоятельно осваивал?
Неплохо было бы ознакомиться с теорией категорий/типов и освежить теорию множеств. Всё это можно делать изучая сам язык.
P>CISP — наше все. Так его для Питона переписали.
Кста, где можно скачать, не знаешь?
Что- я пропустил как-то. LVV>>2. Сейчас можно не лисп, а Scala. P>Что-то Scala показался мне каким-то тяжеловатым.
Зато книжки две новых есть. Одна — прямо от Мартина Одерски.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Кста, где можно скачать, не знаешь?
Я нагуглил по словам SICP python
LVV>Зато книжки две новых есть. Одна — прямо от Мартина Одерски.
Толку с них, если язык не нравится. Если бы реальный проект подвернулся, я бы, конечно, начал читать. Возможно, и отношение к Scala переменилось бы. А вот просто из любопытства посмотрел — не понравилось.
А книга Одерски в свободном доступе раньше лежала.
Здравствуйте, takTak, Вы писали:
T>вот теперь думаю, как разумно въехать в тему? начать ли с чтения чего-то фундаментального , типа теории категорий T> или сразу броситься ваять очередной "хелоу , вёлд" ?
Зависит от того, что ты дальше с этим навыком делать собрался: продавать или просто для себя. Если продавать, то тут по большому счету два варианта, всякая околодесктопщина и бэкенд. В околодесктопной разработке в небольшом количестве водится Haskell и OCaml. В бэкенде есть Clojure и Elixir. По слухам еще где-то используют F# и Scala, но я таких не знаю даже заочно, в отличие от первых двух категорий и языков.
T>Кто как вообще такое без "старшего брата" самостоятельно осваивал?
Я сам ковырял Haskell, понял что сильно далеко от моей сферы интересов и слишком замудренная хрень, но если страсть как любишь математику — это то, что нужно. А вот Clojure и Elixir на оборот, довольно легкие в изучении и сразу очевидно куда и как их можно применить, кроме того, пусть и редко, но присутствуют в ряде позиций, т.е. продаваемо при желании.
Это я к тому, что перед тем как с каким-то из языков связываться стоит определиться что именно нужно и как это дальше использовать. Ну а учиться, я бы не рекомендовал с чем-то фундаментальным связываться, разве что интерес не чисто академический. Что-то полезное для себя и/или окружающих — это именно то, с чего и стоит начинать.
T>>вот теперь думаю, как разумно въехать в тему? начать ли с чтения чего-то фундаментального , типа теории категорий T>> или сразу броситься ваять очередной "хелоу , вёлд" ?
KP>Зависит от того, что ты дальше с этим навыком делать собрался: продавать или просто для себя. Если продавать, то тут по большому счету два варианта, всякая околодесктопщина и бэкенд. В околодесктопной разработке в небольшом количестве водится Haskell и OCaml. В бэкенде есть Clojure и Elixir. По слухам еще где-то используют F# и Scala, но я таких не знаю даже заочно, в отличие от первых двух категорий и языков.
T>>Кто как вообще такое без "старшего брата" самостоятельно осваивал?
KP>Я сам ковырял Haskell, понял что сильно далеко от моей сферы интересов и слишком замудренная хрень, но если страсть как любишь математику — это то, что нужно. А вот Clojure и Elixir на оборот, довольно легкие в изучении и сразу очевидно куда и как их можно применить, кроме того, пусть и редко, но присутствуют в ряде позиций, т.е. продаваемо при желании.
KP>Это я к тому, что перед тем как с каким-то из языков связываться стоит определиться что именно нужно и как это дальше использовать. Ну а учиться, я бы не рекомендовал с чем-то фундаментальным связываться, разве что интерес не чисто академический. Что-то полезное для себя и/или окружающих — это именно то, с чего и стоит начинать.
KP>Зависит от того, что ты дальше с этим навыком делать собрался: продавать или просто для себя. Если продавать, то тут по большому счету два варианта, всякая околодесктопщина и бэкенд. В околодесктопной разработке в небольшом количестве водится Haskell и OCaml. В бэкенде есть Clojure и Elixir. По слухам еще где-то используют F# и Scala, но я таких не знаю даже заочно, в отличие от первых двух категорий и языков.
Elixir — это всего лишь диалект Erlang. Который, внезапно, обслуживает пол-мира (Ericsson в коммутаторах, Klarna — бэкенд, и, внезапно, весь WhatsApp Server).
Здравствуйте, SkyDance, Вы писали:
SD>Elixir — это всего лишь диалект Erlang. Который, внезапно, обслуживает пол-мира (Ericsson в коммутаторах, Klarna — бэкенд, и, внезапно, весь WhatsApp Server).
SD>Elixir — это всего лишь диалект Erlang. Который, внезапно, обслуживает пол-мира (Ericsson в коммутаторах, Klarna — бэкенд, и, внезапно, весь WhatsApp Server).
Я в книжке5 читал, что это не диалект, а надстройка — над Эрлангом, да.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
SD>>Elixir — это всего лишь диалект Erlang. KP>А Scala – это всего лишь диалект Java
Про это мне не ведомо. А вот про Erlang/Elixir — которые еще называют BEAM Languages — известно, скажем так, многое, включая код той самой BEAM, виртуальной машины.
Кто в теме, тот еще знает и о https://erlef.org — Erlang Ecosystem Foundation, которая, внезапно, включает и Elixir.
Здравствуйте, 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, которые являются разными языками, но никак не диалектами друг друга.
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?
Здравствуйте, 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 как до Луны.