Начиная с F # (изучение синтаксиса, изучение функциональных возможностей программирования) не так уж сложно. Хороший разработчик на C # 3, знакомый с LINQ и хорошо разбирающийся в лямбда-выражениях, должен уметь быстро освоить основы.
Трудно сказать, как трудно им избавиться от привычки объектно-ориентированного решения проблем, но проблемы, которые требуют функциональных решений, должны заставить их совершить этот скачок. На мой взгляд, трудно изменить свое мышление, если у вас нет новой проблемы.
В целом, я бы сказал, что мне потребовалась неделя, чтобы выучить синтаксис и основы языка в свободное время (2-3 часа в сутки). Вам понадобится больше времени, чтобы понять функциональное программирование.
Вопросы
Я все еще борюсь с типами. Я занимался проблемами Project Euler, чтобы научить себя синтаксису, поэтому мне пока не нужны никакие сложные пользовательские типы.
Вывод типа, который делает компилятор, также требует небольшого привыкания, поскольку не всегда понятно, когда ему нужно указывать типы, и когда он может просто их обработать.
Обучение
Я бы определенно предложил попробовать Project Euler проблемы для начинающих. Математические задачи всегда являются хорошим кандидатом для функционального программирования.
В более общем плане проблемы обработки данных тоже хороши. Обработка списков очень проста в функциональных языках и является одной из первых вещей, которые вы должны изучить IMO.
Книга
Функциональное программирование в реальном мире :
Я закончил эту книгу некоторое время назад, и нашел, что она действительно хороша для работы над тем, как применять принципы функционального программирования к задачам, использующим как C #, так и F #. Большинство примеров в книге выполнены на обоих языках с использованием идиом функционального программирования, специфичных для каждого языка, и объясняющих разницу между ними.
Ресурсы