Haskell или Erlang для планировщика курса для решения ограничений - PullRequest
5 голосов
/ 23 июля 2011

Я ищу новый собственный проект: я хотел бы написать планировщик курсов , который рассчитывает расписание курсов с оптимальным распределением курсов по комнатам и времени.Задача состоит в том, чтобы решить ограничения , например: нет дублирования в пространстве и времени, ни один преподаватель не преподает более одного курса одновременно, требования к функциям для определенного курса и т. Д.

IЯ с нетерпением жду написания двух или трехкомпонентной архитектуры:

  • front end: веб-интерфейс (AJAX)
  • что-то среднее для хранения и управления данными: база данных (?)
  • серверная часть: планировщик курса

В основном, веб-интерфейсы принимают пользовательские запросы, например ввод данных, запрос курсапланировщик и планировщик курсов будут загружать набор курсов и ресурсов и пытаться определить оптимальное распределение курсов.

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

Поэтому мои вопросы таковы:

1) С учетом внешнего интерфейса, не так либыть проще в использовании Erlang или Haskell ?Я читал некоторые фрагменты блога об Эрланге против Хаскелла, но это не очень помогает.У кого-нибудь есть мнение относительно этого специального проекта?

2) Как вы думаете, полезно ли использовать базу данных для обмена данными в конце концов?Я боюсь отображения между ER и типами , используемыми в Erlang / Haskell.Существуют ли более совершенные способы хранения данных или мне будет намного проще по сравнению с парадигмами ORM, используемыми в объектно-ориентированном языке?

Ответы [ 2 ]

9 голосов
/ 23 июля 2011

Мой совет: выберите язык и получите код!В Haskell существует множество библиотек, которые упрощают взаимодействие с базами данных и написание веб-приложений, и я уверен, что в мире Erlang ситуация аналогичная.В любом случае, интересные и сложные проблемы почти наверняка возникнут в другом месте - в каком-то месте вы не можете предсказать прямо сейчас.Так что доберитесь до этих проблемных точек как можно быстрее и начните разбивать их!

Удачи.

3 голосов
/ 18 сентября 2011

Это, скорее всего, очень вычислительно дорогая проблема, если вы не планируете небольшую школу. Так что скорость кода будет важна.

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

Я бы порекомендовал Haskell, потому что ваша проблема в основном связана с чистыми вычислениями, а не с побочными эффектами.

Кроме того, чтобы прокомментировать то, что сказал @Daniel Wagner, Haskell и Erlang на самом деле не совсем одинаковы с точки зрения библиотек - у Erlang действительно нет централизованной библиотеки, такой как Hackage или CPAN.

Удачи!

...