Подтвердить что ты не робот

Какой язык функционального программирования я должен выбрать в качестве первого функционального языка программирования?

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

Мой опыт программирования: Java (я только что прошел экзамен SCJP), некоторые рубины и очень ограниченные Rails. Я использую bash для основных задач sysadmin. Я использую Ubuntu 9.04.

В качестве второй цели я хотел бы использовать fp, чтобы показать детям (14-18 лет), как математика и cs взаимосвязаны. Ребята очень хороши в программировании (они изучают Python и Java в политехническом вузе с первого года). Однако, как показывают тесты, у них есть трудности с математикой, особенно. основные понятия дискретной математики. Я думаю, что мы можем развивать свои математические навыки, используя программирование (и, возможно, это может быть темой моей педагогической диссертации). Я думаю, что язык с очень простой лексикой лучше всего послужит этому проекту.

4b9b3361

Ответ 1

Если ваша основная цель - работать с подростками, имеет смысл использовать функционально-язычную педагогику и технологию, которая, как доказано, работает с подростками, и это Схема PLT (aka DrScheme) с помощью Как создавать программы (также бесплатно онлайн). Эти ребята получили отличные результаты от средней школы до 3-го семестрового университета. У них ресурсы для учителей.

Многие респонденты, такие как SICP. Это замечательная книга, но не учиться. Если вы уже знаете Scheme, это хорошая книга, которой можно восхищаться, но SICP - это меньше о функциональном программировании и больше о том, как реализовать все известные интересные идеи компьютерной науки в Схеме.

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

  • Программирование с использованием шаблонов
  • Частичное применение точных функций
  • Полиморфная система статического типа
  • Чистые функциональные вычисления

Если вам нужны интересные идеи, попробуйте Haskell; Haskell намного усложняет программирование ваших старых мыслей на новом языке. Вместо этого Хаскелл заставляет вас думать о новых мыслях. В дополнение ко многим другим ресурсам, Real World Haskell бесплатно.

Заключительное примечание: у SO было много похожих вопросов по изучению функционального программирования.

Ответ 2

Я проголосую за Haskell, у которого есть следующие преимущества:

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

Ответ 3

Я большой поклонник Scheme, не в последнюю очередь потому, что лучшая книга на нем свободно доступна.

Ответ 4

Scala и Clojure оба запускают JVM, чтобы вы могли лучше ознакомиться с их средами.

Ответ 5

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

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

Ответ 6

Мой голос переходит на Scala или F #, которые одновременно доступны для скачивания.

Преимущество здесь в том, что они представляют собой смешанные языки парадигмы. Натурально они являются функциональными языками, но вы также можете использовать обязательное и объектно-ориентированное программирование. У них также есть большие стандартные библиотеки - Scala аттракционы на обратной стороне Java, а F # - все .NET, поэтому вы можете запрограммировать что-то интересное довольно быстро.

Scheme и Haskell являются чистыми функциональными языками, но, к сожалению, их стандартные библиотеки относительно невелики, поэтому трудно делать относительно общие вещи, например, анализировать XML или сканировать веб-страницы.

Ответ 7

Поскольку вы уже знакомы с Python, почему бы просто не использовать его функциональные возможности? Подробнее см. (черновик) HowTo.

Ответ 8

Мой вопрос в том, какой подход, вероятно, будет лучше всего для подростков, с которыми вы работаете. Если они хотят узнать что-то новое и другое, Scheme - отличный выбор в качестве функционального языка. Это так же просто, как и они. Если вы хотите придерживаться более привычного синтаксиса, Haskell может быть вашим ответом.

Ответ 9

Если вы делаете это для обучения, то определенно Scheme с SICP. Это будет тяжело и неприятно, и он взорвется, если у вас нет опыта в этом, но вы многое узнаете.

Если вы хотите использовать функциональное программирование на практике, то стоит посмотреть F #, Scala и Clojure.