LINUX.ORG.RU

Как начинать изучать функциональное программирование?

 


1

5

Что то захотелось поучить Haskell или чего еще в этом духе, но что взять в качестве учебного материала? в 2018 то.

haskell если возьму то станет первым моим ЯП. До этого лишь максимум калькуляторы на плюсах и шарпах и простейшие конструкции на Паскале. Стоит ли вообще или лучше к нему прийти после года на других ЯП (к примеру) Ruby, C, или Python?

Деньги нужны будут только через 2 года(мне 16) так что думаю пока могу глянуть на языки. (или стоит набивать двухлетний опыт на одном лишь питоне?)



Последнее исправление: StepanKirdin (всего исправлений: 2)

haskell если возьму то станет первым моим ЯП

И вероятно последним,так как отобьёт желание программировать. Но вы не случайно подумали о Haskell. Его хвалят учащиеся, которые думают, что это наикрутейший язык (а взрослые дяди и не знают этого). В действительнлсти дяди знают, но им надо работать. Дальше задачи расстановки ферзей такие программисты обычно не продвигаются. Haskell непригоден для составления практически полезных программ, а интересно изучать (и меньше забывается) то, что потом можно применить на практике.

Ruby - специализированный язык для программирования веб-приложений. Но он один из многих. Другой специализированный язык для этого - PHP,но используются и многие другие, в частности Python.

Python - универсальный язык, подходящий для многих задач. Есть учебники разного уровня, в том числе на русском языке, в том числе для изучения в качестве первого языка программирования (для чего он является обычным выбором).

Так что из названных только Python.

Partisan ★★★★
()
Ответ на: комментарий от Partisan

ТС вообще-то про функциональщину спрашивал, так что твой ответ про Руби, пых и питон не в тему от слова «совсем».

Про учащихся и дядь - у моего друга дочка бакалавр по прикладной математике, так вот, из ЯП они как раз учили Хаскель и тот же Питон (но их не на кодеров учили, а именно что математике и алгоритмам).

hobbit ★★★★★
()

или стоит набивать двухлетний опыт на одном лишь питоне?

На _одном_ Питоне точно не стоит. Вообще, конкретно про ФП я тебе ничего не посоветую, ибо сам в эту область за 25 лет программирования (это я считаю только те годы, которые мне за это платят деньги, без школы и института), увы, так и не залез. Но именно поэтому скажу — да, ты прав, изучай функциональщину сейчас, потом руки могут и не дойти.

Это во-первых, а во-вторых, одного ЯП тебе до пенсии точно не хватит. Знать несколько языков и уметь выбирать нужный под задачу — это нормально.

hobbit ★★★★★
()

Как начинать изучать функциональное программирование?

А зачем начинать изучать функциональное программирование? ) Почему не императивное?

vvn_black ★★★★★
()
Ответ на: комментарий от Partisan

Дальше задачи расстановки ферзей такие программисты обычно не продвигаются. Haskell непригоден для составления практически полезных программ, а интересно изучать (и меньше забывается) то, что потом можно применить на практике.

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

А с точки зрения разделения алгоритмов и данных Haskell является вообще идеальным языком (в отличие от ООП, где невозможно к типу добавить интерфейс).

monk ★★★★★
()

Набивай питон. 16 лет - у тебя ещё тонна времени на «поучить функциональщину». Так что лучше практикуйся с питоном.

Deleted
()

Что то захотелось поучить Haskell или чего еще в этом духе, но что взять в качестве учебного материала? в 2018 то.

Начинай с http://learnyouahaskell.com/chapters (перевод http://learnhaskellforgood.narod.ru/learnyouahaskell.com/chapters.html)

В 2018 Haskell, конечно, умеет намного больше (есть динамический тип, гетерогенные списки, списки типов, ...), но новые возможности лучше изучать после базовых.

monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 1)

Стоит ли вообще или лучше к нему прийти после года на других ЯП (к примеру) Ruby, C, или Python?

Если «максимум калькуляторы на плюсах и шарпах» были, то можно сразу на Haskell. Ruby, C и Python идеологически не отличаются.

Ещё из полезных для общего развития я бы назвал Forth или Factor. Но их первым языком точно нельзя.

monk ★★★★★
()

когда учился в ВУЗе, нам преподавали ФП, якобы для «обеспечения многопоточности». Но я так и не понял, в чём суть.

Einstok_Fair ★★☆
()
Ответ на: комментарий от menangen

Например, в Scala, и в JavaScript, C, Objective-C, Python

Про C и Objective-C ты пошутил? Или как на них написать простейший compose?

compose f g = \x -> f (g x)

Scala, Python и Javascript не имеют нормальной функциональной библиотеки. В Scala есть, конечно, Scalaz/Cats, но Haskell гораздо лаконичней и красивей (в Scala наследие ООП очень мешает).

monk ★★★★★
()
Ответ на: комментарий от menangen

древнючий Haskell

Он явно менее древнючий, чем C, Objective-C и примерно одного возраста с Scala, JavaScript, Python

monk ★★★★★
()

На степике есть просто великолепные курсы Дениса Москвина по хаскелю, например.

ymn ★★★★★
()
Ответ на: комментарий от Deleted

Это только кажется что времени много. По факту его мало. Сделать и узнать хочется много, а жизнь короткая.

peregrine ★★★★★
()
Ответ на: комментарий от Einstok_Fair

нам преподавали ФП, якобы для «обеспечения многопоточности». Но я так и не понял, в чём суть

К многопоточности ФП очень косвенное отношение имеет. Конвейеры в shell и то более актуальны.

ФП нужно для того, чтобы алгоритм писать отдельно от данных. Когда пишешь fold и он работает на всём, что можно обойти, а не отдельно list_fold, tree_fold, array_fold, ...

monk ★★★★★
()

По Haskell есть отличная книга «Get Programming with Haskell» автора Will Kurt для начинающих, где вводятся монады, функторы и прочие вещи довольно постепенно и с пониманием того, что новичку будет сложно сразу понять их. За одно английский подтянешь.

Еще присмотрись к языку Rust. Среди языков системного программирования, т.е. тех, которые компилируются как и Haskell в нативный код, но в отличие от Haskell не имеют сборщика мусора, пожалуй, Rust - самый интересный на сегодняшний день. Там много идей взято из функционального программирования, из того же Haskell. Впрочем, из Си и Си++ тоже много взято всего.

dave ★★★★★
()
Ответ на: комментарий от vvn_black

Почему не императивное

Известно же, что хаскель - лучший императивный язык(копирайт не мой). Одним языком 2 парадигмы познать = профит.

DonkeyHot ★★★★★
()

Потыкай няшный Elixir и Elm.

commagray ★★★★★
()

хуйней лучше не стоит заниматься, жизнь то дана один раз. а тратить на пустые ебли не стоит. ооп хватит тебе на всю жизнь.

Deleted
()

Ни в коем случае не выбирай Хачкель, это будет большой ошибкой.

Деньги нужны будут только через 2 года(мне 16)

Вот и приглядывайся к тому, с помощью чего деньги будет проще заработать. Думаешь, 2 года это большой промежуток времени, чтобы ты на фоне учебы и экзаменов углубился в дебри Хачкеля достаточно далеко?

Virtuos86 ★★★★★
()

Так, тут зависит от того, хочешь ли ты на типах программировать или всё же ФП. Если второе, то бери Clojure

Lancelot
()
Ответ на: комментарий от Virtuos86

Ну тогда как для развлечения или когда будет скучно попишу на Haskell что либо. Хотя я не знаю что на нем можно писать дальше алгоритмов уровня ЕГЭ или из какого нибудь задачника под Pascal.

Как к примеру писать нормальное оконное приложение? примитивные 2д игрушки, какие то скрипты? Что то под бэк энд? по идеи это займет в 3 раза больше времени сил в отличии от Ruby, python.

но и в чем преимущество Ruby над PHP в плане веба? Пайтон наверно точно возьму под основу для следующего заработка(ну и мне интересны очень эти языки)

StepanKirdin
() автор топика
Ответ на: комментарий от StepanKirdin

но и в чем преимущество Ruby над PHP в плане веба

преимуществ Ruby над PHP в плане веба нет.

Ruby лучше чем PHP в плане вообще.

практически что угодно лучше чем PHP.

стендап на тему: https://skillsmatter.com/skillscasts/6088-the-worst-programming-language-ever

MyTrooName ★★★★★
()
Последнее исправление: MyTrooName (всего исправлений: 1)

Деньги нужны будут только через 2 года(мне 16)

зачем тебе в армии деньги?

anonymous
()
Ответ на: комментарий от StepanKirdin

python и C

python, или лучше java - для начального обучения

C - для саморазвития и квалификации

с каким-нибудь ассемблером шапочно познакомься, можешь даже код не писать вообще,

MyTrooName ★★★★★
()
Ответ на: комментарий от StepanKirdin

а что тогда как вторым языком для саморазвития

Причём тут язык?

Ты же хочешь изучать парадигму ФП? Мне, без всякого троллинга, интересно, зачем, на какую перспективу?

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от vvn_black

ФП

Scala достаточно популярна, в том числе среди новичков. Хз, заслуженно ли. Но в любом случае фп не первым языком и не вторым

MyTrooName ★★★★★
()
Ответ на: комментарий от StepanKirdin

знающих хаскель забирают и с инвалидностью

anonymous
()
Ответ на: комментарий от MyTrooName

Поэтому и вопрос, кмк (может конечно я ошибаюсь), востребованность ФП несколько в стороне от программирования в целом. Изучать, просто чтобы изучать, без практики? Время на ветер.

vvn_black ★★★★★
()

Для первого яп лучше SICP почитай.

+1. раз уж пока есть время

MyTrooName ★★★★★
()
Ответ на: комментарий от vvn_black

сорри, не туда ответил. целился в ОП

востребованность ФП несколько в стороне от программирования в целом

с оговорками «несколько» и «в целом» соглашусь. но некоторые концепции крайне удобны. ADT, high-order functions, functional data structures. все это встречается и используется и в не-ФП языках

MyTrooName ★★★★★
()
Последнее исправление: MyTrooName (всего исправлений: 1)
Ответ на: комментарий от StepanKirdin

если инвалид, лучше займись Computer Graphic, особенно в области кино, иллюстрации или фотографии, их любят награждать всякими премиями и делать победителями всяких конкурсов, а программистом-инвалидом ты всю жизнь под шконкой пропашешь, пока не вынесут и не закопают на заднем дворе.

anonymous
()
Ответ на: комментарий от StepanKirdin

Как к примеру писать нормальное оконное приложение? примитивные 2д игрушки, какие то скрипты? Что то под бэк энд? по идеи это займет в 3 раза больше времени сил в отличии от Ruby, python.

О таких подробностях лучше расспросить достопочтенных джентльменов, которые тебе советуют в этом треде взяться за Хачкель. Вне всякого сомнения, они обладают опытом, необходимым для ответа на твои вопросы о практическом применении этого замечательного, но сложного языка программирования.

Virtuos86 ★★★★★
()

Молодой человек, вам бы школу сначала закончить. И институт, что крайне желательно.

Без В/О ваше резюме HRюши даже читать не будут. Соответственно, все ваши попыточки сделаться крутейшим погроммистом разобьются о суровую реальность бытия.

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

А потом пойдёте работать в лучшем случае офисным планктоном. В худшем - разнорабочим «бери больше, кидай дальше, отдыхай пока летит».

slamd64 ★★★★★
()
Последнее исправление: slamd64 (всего исправлений: 2)
Ответ на: комментарий от MyTrooName

но некоторые концепции крайне удобны... встречается и используется и в не-ФП языках

А кто спорит.

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

И эту «функциональщину» можно принять как данность языка, не вдаваясь и не изучая саму парадигму.

vvn_black ★★★★★
()

Начинать - с умения выбрать правильный раздел форума. В хаскель пока рано.

anonymous
()

Что то захотелось поучить Haskell или чего еще в этом духе, но что взять в качестве учебного материала?

Есть вот такая прекрасная ссылка https://ruhaskell.org/links.html

Crocodoom ★★★★★
()
Ответ на: комментарий от Virtuos86

Ни в коем случае не выбирай Хачкель, это будет большой ошибкой.

Ничесе толстота. Или ты серьезно так считаешь? Хачкель даже в вузах сейчас дают.

bread
()
Ответ на: комментарий от StepanKirdin

но и в чем преимущество Ruby над PHP в плане веба?

Практическое преимущество как раз у пыха. Но руби это все же ЯП (и не самый плохой) в отличие от шаблонизатора-переростка.

bread
()

Learn you a haskell уже советовали?

Deleted
()
Ответ на: комментарий от Deleted

Можно просидеть жизнь на попе перед телеком/компом/личинками человека/бабой которая будет старательно капать на мозги, а можно заниматься любимым делом. Каждому свое.

peregrine ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.