Потребность изучить Пролог, Haskell для [закрытого] программиста C#

Взгляните на метод assertRaises unittest модуль.

6
задан pokrate 20 July 2009 в 12:04
поделиться

8 ответов

  1. Как и в первый раз, когда вы перешли от императивного к объектно-ориентированному, работа с функциональным программированием требует переосмысления вашего мышления. В первый раз вы склонны делать что-то гибридным, пока не поймете всю суть. Поскольку вы пришли из опыта работы с C #, я бы посоветовал попробовать F #, поскольку вы, вероятно, привыкнете к нему гораздо быстрее, поскольку языки .net имеют общую структуру, которая достаточно хороша, чтобы вы начали.

  2. Использование Prolog и Haskell - неплохая идея, но вам, возможно, придется сначала приспособиться к другому синтаксису и библиотекам языков по сравнению с скачком между C # и F #. Лично я перешел с C # / Java на Haskell с помощью двух книг: RealWorldHaskell и The Craft of Functional Programming , и справился отлично, поэтому у вас нет причин не делать этого. :)

  3. Изучение F #, а затем Haskell по-прежнему требует некоторой работы, потому что F # и Haskell разные: первый «нечистый», а второй «чистый». Примеси означают, что определенные «побочные эффекты», такие как состояние и ввод-вывод, по сути разрешены, тогда как чистота означает, что вы не получаете их сразу, а должны использовать определенные методы (например, монады). Исходя из C #, возможно, было бы проще попробовать F #, а затем Haskell, причину этого.

  4. Я считаю (предупреждение личного мнения), что если вы хотите стать лучшим программистом на C #, изучите F # и Haskell (или что-нибудь для этого дело) никогда не повредит! Особенно в случае F #, который можно интегрировать с C #. Функциональное программирование может облегчить вам определенные вещи, и, зная, что оно рано или поздно может пригодиться, особенно потому, что, как и другие говорили, существует текущая тенденция к программам на функциональном языке.

7
ответ дан 8 December 2019 в 05:56
поделиться

Изучение функционального программирования на императивном языке, таком как C #, очень сложно, это совершенно новый способ мышления (по крайней мере, для меня функциональные языки легче понять! Все зависит от вашего мозга работает;))

F # был бы хорошим выбором, потому что он находится в CLR, это означает, что вы можете легко использовать библиотеки F #, которые вы пишете из своего кода C #.

F # обычно лучше подходит для "функционального" (математического ) проблемы.

Я собираюсь переписать некоторые сложные алгоритмы в моем коде C # на F #, чтобы сделать их более быстрыми и краткими.

Как упоминает Ахмед. Научиться думать о проблемах по-новому - только на пользу!

4
ответ дан 8 December 2019 в 05:56
поделиться

Мне НИКОГДА не повредит выучить новый язык. Я собираюсь вырезать цитату, но суть в том, что «Если вы не знаете, как написать мысль, вы не знаете, как мыслить». Это было в контексте естественного языка, но я думаю, что это применимо и к языку программирования.

Взгляните на пролог и haskell и немного повозитесь. Это, по крайней мере, добавит вам инструментов к вашему поясу.

3
ответ дан 8 December 2019 в 05:56
поделиться

Существует очень мало языков X, если таковые имеются, для которых вы не могли бы написать одобренное Регом Брейтуэйтом сообщение формы " Что я узнал из языка X, что делает меня лучшим программистом, когда Я использую язык Y "

Сам C # накапливает ряд функциональных конструкций - лямбда-выражения и методы расширения System.Linq , поэтому обучение функциональному мышлению определенно поможет вам получить лучшее из повседневной работы, а также само по себе развлечение. Так получилось, что Erlang был первым функциональным языком / языком сопоставления шаблонов, который я выбрал после C #, но одного этого было достаточно, чтобы снова взглянуть на мой стиль C # и то, как я подходил к проблемам.

FP становится следующим большим достижением, и там'

7
ответ дан 8 December 2019 в 05:56
поделиться

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

Но обе парадигмы могут не иметь прямого влияния на ваше кодирование с использованием C #, но это может быть косвенным, когда вы думаете о самой проблеме

2
ответ дан 8 December 2019 в 05:56
поделиться

Я встречал здесь мнение, что лучше начинать изучать пролог изначально. Я лично не согласен. Функциональное программирование ближе к тому, что вы можете делать на других языках. Например, в C ++ существует множество подходов, которые исходят из точки зрения функционального программирования (алгоритмы stl, boost :: bind, boost :: lambda и т. Д.). Я не знаю C #, но мне сказали, что так бывает.

Думаю, было бы проще начать с функционального языка. Я лично знаю haskell, схему и пролог, и мне кажется, что если вы сразу начнете с унификации, охвата поиска, правил и так далее, это может немного взорвать ваш разум (по крайней мере, это могло бы взорвать мой ;-)). Опять же, это просто мнение ...

2
ответ дан 8 December 2019 в 05:56
поделиться

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

-5
ответ дан 8 December 2019 в 05:56
поделиться

Я бы начал с пролога, потому что он проще из двух. Позволит вам почувствовать новую парадигму. Тогда попробуйте haskell или f #.

Я бы рекомендовал f # вместо haskell, поскольку там проще создавать библиотеки, совместимые с C # и .net в целом, что делает его более полезным

2
ответ дан 8 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: