В последнее время меня больше беспокоит то, как я пишу свой код. Прочитав несколько книг о шаблонах проектирования (и, я уверен, переусердствовал в их реализации), я сильно изменил свое мышление в сторону воплощения того, что изменилось. Я склонен замечать, что я пишу меньше интерфейсов и больше методо-ориентированного кода, где я люблю разделять жизнь на старые классы с помощью предикатов, действий и других задач делегатов. Я склонен думать, что часто меняются действия, поэтому я инкапсулирую их. Я даже часто, хотя и не всегда, разбиваю интерфейсы на один метод, и тогда я предпочитаю использовать делегата для задачи вместо того, чтобы заставлять код клиента создавать новый класс.
Так что я думаю, что тогда ударил меня. Должен ли я заниматься функциональным программированием вместо этого?
Редактировать: у меня может быть неправильное представление о функциональном программировании.
В настоящее время мой язык выбора - C #, и я пришел из C ++. Я работаю разработчиком игр, но в настоящее время я безработный.
У меня есть страсть к архитектуре. Мои достоинства - чистый, гибкий, многократно используемый и обслуживаемый код. Я не знаю, был ли я отравлен этими способами или это к лучшему. У меня лихорадка рефакторинга или я должен идти дальше? Я понимаю, что это может быть вопрос об «использовании правильного инструмента для работы» , но я хотел бы услышать ваши мысли.
Должен ли я подобрать функциональный язык? Один из факторов моего страха - это оставить комфорт Visual Studio.
источник
Ответы:
ДА
Изучение новых вещей должно быть весело. А изучение нового способа программирования должно сделать вас лучшим программистом. Отметьте один из Haskell или Erlang, оба работают, но они очень разные. Если вы выберете Haskell, найдите несколько выступлений Саймона Пэйтона Джонса на YouTube или в подкасте. Парень отличный оратор.
источник
Святой * * * *. Там нет серебряной пули. Шаг вниз. Расслабься, сделай глубокий вдох.
То, что у вас есть инструмент в вашем наборе инструментов, не означает, что вы обязаны его использовать. Сконцентрируйтесь на поставленной задаче, то есть написание программы, которая работает, и рефакторинг, когда код плохо пахнет. Не инкапсулируйте и не абстрагируйте каждую мелочь только потому, что она может измениться когда-нибудь в будущем. IMO, действительно намного лучше начать прямо, KISS & YAGNI, и реагировать на меняющиеся требования, когда они действительно меняются .
Я не думаю, что кто-то здесь может сказать вам, подходит ли функциональный язык для ваших нужд. Потому что вы не сказали нам, над чем вы работаете.
источник
Вы можете подобрать F # . Это функциональный язык .NET, который позволит вам использовать Visual Studio и многократно использовать ваши знания .NET. Конечно, его сборки легко интегрируются со сборками C # (что позволяет легко комбинировать C #, C ++ / CLI и F # в одном проекте). Поддержка F # поставляется с VS Pro или лучше, но я не уверен, включен ли он по умолчанию.
источник
ИМО, стоит попробовать функциональный язык. Даже если вы никогда не используете его непосредственно в выпущенном продукте, его изучение почти наверняка поможет дать несколько иной взгляд на программирование. Даже если вы в конечном итоге продолжите выполнять все свое «настоящее» кодирование на C #, вполне вероятно, что это поможет вам улучшить код, который вы пишете на C #.
Как уже упоминалось, очевидным выбором для тех, кто привык к Visual Studio, является F #, который в основном является производным Ocaml / Caml / ML. IMO, это был хороший выбор со стороны Microsoft для ознакомления людей с функциональным программированием - это полноценный функциональный язык, но не имеющий почти такого же иностранного синтаксиса, как некоторые (например, в то время как языки на основе Lisp делают имеют реальные преимущества, начинающим почти всегда трудно читать).
источник
Да, ты должен.
Если вы выберете чистый язык, такой как Haskell, вы выучите не только новый язык, но и новый способ мышления. Это может помочь вам позже в вашей процедурной / OO работе.
F #, с другой стороны, не является чистым, и поэтому вы можете легко пропустить то, что важно в функциональном программировании. Вы можете, так сказать, продолжать писать процедурные программы, которые изменяют переменную здесь, выполняют некоторые побочные эффекты, только в синтаксисе F #.
источник
Если вы уже используете c #, вам не нужен новый язык - с комбинацией методов расширения, лямбда-выражений и универсальных типов Func / Action довольно легко написать функциональный код на C # - таким образом вы можете использовать функциональный стиль в алгоритмы, в которых это имеет смысл, без необходимости изменения всего приложения.
источник