Каким будет хороший первый функциональный проект программирования?
Я собираюсь закончить с моим проектом бакалавра, и я хочу закончить его с проектом функционального программирования. Мы не изучали его в школе, но нам предлагается самим учиться чему-то новому, и я подумал, что изучение новой парадигмы не только для нового языка будет для меня отличным упражнением, и, вероятно, что-то интересное для учителей, чтобы увидеть их тоже ,
Проблема в том, что я хочу начать свой проект немного раньше времени, чтобы воспользоваться летними каникулами, лучше понять функциональное программирование и познакомиться с одним языком.
Что бы вы сказали, что это будет хороший учебный проект, который будет немного сложным, но также позволит мне выучить язык, парадигму и т. Д. И что вы думаете, что будет хорошим (более продвинутым) проектом для моего бакалавриата?
Предложения по лучшему языку для начала при переходе к функциональному программированию также будут оценены.
Ответы:
Обычно проще, если вы выбираете что-то относительно математическое или логическое - функциональные языки программирования, как правило, хорошо подходят для приложений, представляющих некоторую форму преобразования из заданного ввода в вывод.
Некоторые идеи в грубом порядке сложности:
Генетические алгоритмы - напишите программу, которая разрабатывает решения для конкретной задачи, где решения представлены в виде простой DSL. Я повеселился, прежде чем создавать маленьких ботов, которые охотятся за едой в двумерной сетке и разрабатывают различные виды стратегий.
Комбинаторы синтаксического анализа - создайте библиотеку комбинатора синтаксического анализа, которая позволяет создавать синтаксический анализатор для произвольного языка с использованием функций более высокого порядка.
Если вы действительно хотите испытать трудности, попробуйте написать компьютерную игру ... имейте в виду, что это сложная задача, поскольку игры имеют огромное количество изменяемых состояний, которыми сложно управлять в функциональном стиле программирования. Ожидайте узнать больше, чем вы когда-либо хотели знать о монады и т.д .....
Я бы порекомендовал Clojure как прагматичный функциональный язык. Я использую его около 18 месяцев, и я очень доволен выбором. Основными причинами являются:
Вы можете легко опробовать основы с:
источник
Прежде чем вы начнете думать о конкретных проектах, начните с изучения основ функционального программирования, чтобы вы могли составить представление о типах проектов, которые подойдут.
Лучшее место для начала - это, вероятно, «Структура и интерпретация компьютерных программ» (SICP), основанная на диалекте Scheme на Лиспе. Это классический текст CS, и полный текст доступен онлайн (ссылка предоставлена).
Если вы хотите стать модным и использовать более современный функциональный язык, нацеленный на JVM, взгляните на Clojure. Есть даже адаптированная версия SICP специально для Clojure .
Просматривая текст SICP, вы поймете, почему функциональное программирование так хорошо подходит для определенных типов задач, и упражнения могут вдохновить на полноценный проект. Если вы решите пойти маршрут Clojure, и вы хотите изучить некоторые существующие проекты, есть некоторые хорошие ссылки здесь .
источник
Количественный анализ
Если вы находите финансы чем-то интересным, то хорошо подойдет количественный анализ функционального программирования, поскольку он очень алгоритмичен. Я говорю о теории портфеля и о таких вещах, как коэффициенты Шарпа и Сортино и т. Д. Создайте приложение, которое анализирует доходность фонда и дает различную статистику, диаграммы и т. Д.
Я бы порекомендовал F # только потому, что я думаю, что это простой функциональный язык для начала, с хорошими инструментами и хорошей структурой, поддерживающей его. Другими альтернативами могут быть LISP и Clojure, но их немного сложнее выучить.
источник
Для начала вы можете попробовать реализовать небольшую игру в блэкджек на F #. Это домашнее задание, заданное в этом коротком видеоуроке . Решение также предоставляется в сети (и в одном из видео).
источник
Вы можете написать интерпретатор для схемы или LISP с OCaml.
источник
О каком функциональном языке вы думали. Каждый из них имеет разные характеристики. Единственным языком, который оказал на меня наибольшее влияние, был Haskell, и я бы посоветовал вам сделать то же самое.
источник
Вы также можете внести свой вклад в какой-нибудь проект с открытым исходным кодом.
Например, в проекте по языку программирования Фреге много работы. Например, вы можете позаботиться о переносе базовых библиотек на Haskell. Это сделало бы вас экспертом по Haskell, пока вы над ним работали.
источник