Я, конечно, согласен с основным смыслом принятого ответа, и, учитывая, что вы в основном погружаетесь в вещи, пытаясь дать Эрлангу попытку, похоже, у вас, скорее всего, достаточно хорошее понимание того, как вы учитесь, и просто нужно немного подтолкнуть в правильном направлении. направление, так ясно, что это был хороший ответ для вас ... Но, я думаю, я бы подошел к этому вопросу немного по-другому, так как я вижу, что этот ответ не помог бы мне совсем; Я всегда пишу код, чтобы учиться! Итак, вот мои мысли ...
(Кстати, я , как правило , идти дальше в деталях подходит больше для, скажем, главы в книге, и я уверен , что я не могу сдерживать свои инстинкты полностью здесь, но я собираюсь попробовать другую тактику, я собираюсь кратко изложить мои мысли здесь, и в случае, если кто-то захочет получить более подробную информацию о чем-либо или сочтет, что то, что я говорю, вводит в заблуждение в этом формате, я приложу все усилия, чтобы не забыть просмотреть ответные напоминания ...)
Чтобы попытаться держать себя на задании, вот мое понимание основных вопросов, заданных в ОП; Я буду держать на обочине как минимум, чтобы объяснить ....
Сначала быстрые ответы:
я был в подобной ситуации? Это было по крайней мере похоже; Я занимал руководящую должность, выполняя множество разнообразных проектов, которые, тем не менее, были связаны ... (CRM / Web / DB / Data Integration / и т. Д.)
как / почему я сделал переход к функционалу? » Я видел несколько примеров LINQ, и хотя я определенно мечтал о каком-то интегрированном, статически типизированном языке запросов [поскольку я в основном использовал статически типизированные языки (прежде всего C ++, а позже C #) )] на протяжении всей моей карьеры ... Но это была довольно быстрая обстановка, в которой я находился, и хотя мне часто удавалось увидеть, что происходит в прошлом, я никогда не задумывался об этом, поэтому я никогда не предвидел, что это мог / мог бы так же легко разрешить операции с Простыми Старыми Объектами (смеется!), когда я увидел это, я понял, что мне нужно это иметь ... так вот почему и началось то, как: я сосредоточился на том, чтобы научиться понимать LINQ ,
Четыре Мысли ... ошибаться, нет, это не так ... Мысли
Когда я читаю ответ Мартина Вербурга , упоминание о функциональности бизнеса сразу же заставляет меня задуматься о том , чтобы начать реализовывать код для всего, над чем я работаю ... В зависимости от того, насколько мелким был этот первоначальный эксперимент, я мог бы ответить по-другому, но предположив, что это было просто окунув свой большой палец в ногу, я не уверен, что у меня было что-то непосредственно для работы (или будущей работы), которое дало бы мне волнение / страсть, я думаю, что у вас, вероятно, должны быть первые несколько проблем, которые вы начинаете решать ...
Я был почти полностью основан на статически типизированных языках + метафоры и паттерны ООП + все, что я в итоге случайно обернул вокруг себя, решая мои настоящие проблемы за эти годы ... Суть в том, что если вы совсем такие, как я, Скорее всего, у вас много мозгов, посвященных вещам, которые не помогут вам с LINQ / FP.
Я думаю, что это похоже на чисто процедурное или ОО-программирование: есть много процедурных вещей, которые вы в конечном итоге будете использовать в ООП, но те, кто приходят на C ++ из C, не делая это приоритетом для grok / ken / "get" OO в конечном итоге очень и очень плохо в C ++. На самом деле я брал интервью у многих (более 15) разработчиков прошивок и драйверов устройств, которые действительно думали, что знают C ++, но у которых, как правило , было ужасно базовое / учебное понимание C ++, практически без понимания или опыт работы в ООП - потому что они никогда не делали ООП ... Они написали одноэлементные многоцелевые классы со статическими членами и статическими функциями с некоторым количеством нестатических / неинглетонных классов, которые использовались в качестве структур.
И у ФП есть такие же сногсшибательные (для тех, кто не затрагивает парадигму) концепции и другие вещи, которые с ней связаны, и (хотя я считаю, что гибридизация множества методов идеальна для меня), я понимаю больше и с течением времени именно то, насколько ограниченным было мое мышление, прежде чем я приобрел реальные функциональные способности в своем наборе инструментов; В прошлом мне удалось воплотить в жизнь многие вещи, которые были немного более креативными, чем, возможно, большинство программистов ОО, но, поскольку я использую понятия о том, насколько медленным было мое мышление, было раньше ... Существуют целые классы проблем, которые можно решить. в нескольких строках, которые в C ++ / C # чертовски много искажали.
вдруг ты оказываешься ...
В "Слишком длинном" посте
Вы в лабиринте извилистых "не читал", все так.
Вы видите телеконференцию в ближайшем будущем, быстро приближается.
> немногословный
Ага. Конечно. Хорошо, мы скажем «краткий» режим «включен».
Вы видите телеконференцию в ближайшем будущем, быстро приближается.
> Что это должно означать?
Просто говорю'. Разве ты не должен был что-то делать этим утром?
Вы видите телеконференцию в ближайшем будущем, быстро приближается.
> эй, это за тобой крик?
Какая!? ГДЕ?! [убегает с криком]
> Извините, я не понял ЧТО ГДЕ, перефразировать?
[продолжал бежать и кричать, сарказм незаметно]
Итак ... Чему я должен научиться, дорогая PSE, дорогая PSE?
Я лично начал в C # с LINQ. Это позволило мне представить несколько концепций за раз, и, хотя я постоянно читал о FP и его концепциях, а также о LINQ и отношениях между ними, он дал мне путь вперед, продолжая при этом продуктивно работать. Я добавил несколько вещей одновременно, запросы данных быстро стали для меня полезным инструментом без необходимости понимать тонну.
Теперь, оглядываясь назад, мне хотелось бы сделать первый проект (решенный примерно год спустя) первым; Я немного познакомился с F # (что, кстати, дало мне хороший старт в изучении ML (метаязык) и других его производных (например, OCaml ).
В принципе, я думаю, что достойный ответ на вопрос «что» зависит от нахождения хорошего сочетания какой-то проблемы программирования, которая вас интересует, но, конечно, она должна сочетаться с небольшим количеством FP, которое вы хотите изучить ... (и вы можете промыть / повторить / вспенить после того, как выбить что-то из списка ...) И, конечно, вы всегда в конечном итоге узнаете немного больше, чем главное, что вы намеревались сделать; сначала я сделал несколько маленьких шагов, но потом закончил тем, что делал большие вещи и позволял мелким вещам становиться на свои места, пока я делал это.
Во-первых, что плавает на вашей лодке? Особенно поначалу лучше иметь что-то веселое и захватывающее (для вас), и это будет держать ваш интерес достаточно, чтобы сделать его полезным для вас. Итак, IOW проблемы, над которыми нужно работать, и методы, которые решают эти проблемы ... LINQ и встроенные запросы данных сначала для меня. Для меня рекурсия была еще одной, включая хвостовую рекурсию, я выкапываю ее GodelEscherBach-ness; и я читал о хвостовой рекурсии. Примерно в это же время вещи, над которыми я работал, были приостановлены, и у меня закончился большой промежуток времени, так что я смог надолго над этим поработать. Это было легче с меньшими перерывами, но поскольку я выбирал вещи, которые мне показались забавными, это было не так уж сложно, даже с перерывом в работе. :)
И хотя я не придумал ничего крутого, о чем я мог бы рассказать, как самосознательную Программу Крабов, мне удалось довольно неплохо это сделать.
И ... чему я научусь, дорогая PSE, дорогая PSE, с чем?
Для этого я использовал различные алгоритмы, которые мне так или иначе заинтересовались, а также различные вещи, которые я задавался вопросом, можно ли делать в F #, и когда у меня заканчивались идеи, я решал такие вещи, как 99 бутылок пива и Project Euler. проблемы ...
Я уверен, что вы можете найти много вещей, которые вас интересуют, к которым относится FP; он предлагает все, от улучшений до ООП, которые помогают вам изложить вещи более лаконично, вплоть до превращения того, как вы думали об этом раньше, в форму, которую вы не узнаете и, скорее всего, даже не имели ментальной модели для выражения перед.
Но ... В моей модели дыра, дорогая PSE, дыра ...
И именно поэтому важно, что, особенно в начале, но на самом деле в течение всего времени обучения (и разве это не всегда так, когда вы чему-то учитесь?), Вы, по крайней мере, тратите немного времени между проблемами, чтобы прочитать что-то не связанное, но по-прежнему FP и время для чтения исходного кода, написанного экспертами, предпочтительно для решения тех же или похожих задач; а также их объяснения вещей ...
И все это время вам приходится напрягать свой мозг, чтобы понять все это, не с вашей старой точки зрения, а изнутри самой FP ... В какой-то момент для меня это щелкнуло, и ... вещь, которую я могу лучше всего связать с этим становится более или менее свободно владеющим голландским языком; в какой-то момент мне удалось достаточно погрузиться в образ мыслей (я сделал это с помощью погружения, что я и описал здесь; погружаясь в FP, а не пытаясь выучить это исключительно через "book larnin '" ...
И в конце концов я сделал; Мне удалось все усвоить и крутить свой мозг, пока я не начал высовывать FP / LINQ, даже не пытаясь перевести его обратно в ООП. (Да, я сделал это; мне нужно было что-то, чтобы повесить мою юбку. Шляпа. Что угодно.)
Последние мысли...
О-о, кажется, ты теряешь способность думать о своей умной подписи
заголовки разделов. Какой позор.
Телеконференция все еще быстро приближается. Это кажется намного большим теперь.
> Да, да, хорошо .. кратко и все. Я вижу, ты сумел потерять этого грёма.
близкий вызов, это ... ну, да, я теряю ... О, НЕТ, ЭТО НАЗАД!
AAAAAAAHHHHHH !! [убегает с криком, еще раз]
Телеконференция все еще быстро приближается.
Это как-то напоминает сэра Ланжона Клизевиза.
Это почти на вас.
> Эй, поспеши обратно! У меня есть эксперимент с вами! (и по-та-то)
Вы можете найти много информации в Интернете о FP, естественно. Главное - понять основные понятия, а затем научиться их применять. Например, узнать об неизменности и почему это важно / полезно для FP. Я настоятельно рекомендую изучить небольшую теорию, чтобы согласиться со всем, например, как чистый FP может быть гораздо более поддающимся формальному доказательству. Это было движущей силой прародителя F #, ML. YMMV, конечно, вы можете быть кем-то скучающим до слез, и в этом случае, множество примеров, множество проб и ошибок, чтобы точно понять, почему используемые методы являются тем, чем они являются, помогут вам получить это «Ага!» момент лампочки.
Итак, я оставлю это сейчас. Надеюсь, это кому-то пригодится. Я хотел узнать немного больше о конкретных вещах, но сейчас у меня нет времени. Надеюсь, я скоро найду время, чтобы вернуться к нему, хотя для меня это будет долгая неделя, так что, вероятно, это будут как минимум выходные.
<3 «Представляем GRUEBOL, временный промежуток; до тех пор, пока не закончится SnozzML. Это должно быть скоро; в этот раз мне помог огромный комитет». - Грейс Хоппервит Яичная голова, Известные последние слова , XX97 GUE <3