Web applications Haskell或Erlang用于约束求解课程调度器

Web applications Haskell或Erlang用于约束求解课程调度器,web-applications,haskell,erlang,Web Applications,Haskell,Erlang,我正在寻找一个我自己的新项目:我想写一个课程计划表,计算出一个课程计划表,将课程分配到最佳的房间和时间。问题是要解决约束,例如:在空间和时间上没有重叠,没有讲师同时教授多个课程,某个课程的功能要求等 我期待着编写两个或三个组件的体系结构: 前端:web界面(AJAX) 用于保存和管理数据的介于两者之间的内容:数据库(?) 后端:课程调度程序 基本上,web界面接受用户请求,例如输入数据,请求课程调度器,课程调度器将加载一组课程和资源,并尝试找出最佳的课程分配 为什么我要使用函数式编程语言?因

我正在寻找一个我自己的新项目:我想写一个课程计划表,计算出一个课程计划表,将课程分配到最佳的房间和时间。问题是要解决约束,例如:在空间和时间上没有重叠,没有讲师同时教授多个课程,某个课程的功能要求等

我期待着编写两个或三个组件的体系结构:

  • 前端:web界面(AJAX)
  • 用于保存和管理数据的介于两者之间的内容:数据库(?)
  • 后端:课程调度程序
基本上,web界面接受用户请求,例如输入数据,请求课程调度器,课程调度器将加载一组课程和资源,并尝试找出最佳的课程分配

为什么我要使用函数式编程语言?因为我认为它们在用很少的代码行检查约束方面做得最好

因此,我的问题是:

1) 考虑到前端,使用Erlang或Haskell是否更容易?我读过一些关于Erlang和Haskell的博客片段,但这并没有多大帮助。有人对这个特殊项目有什么意见吗


2) 你认为使用数据库来共享数据有用吗?我担心Erlang/Haskell中使用的ER和类型之间的映射。与面向对象语言中使用的ORM范例相比,是否有更好的方法来存储数据,或者对我来说会容易得多?

我的建议:选择一种语言并进行编码!在Haskell中有大量的库可以使与数据库的接口和编写Web应用程序变得轻松,我相信Erlang世界中的情况也是如此。无论如何,有趣而困难的问题几乎肯定会在其他地方出现——在一些你现在无法预测的地方。所以,尽可能快地找到这些问题点,并开始努力解决它们


祝你好运。

这很可能是一个计算量非常大的问题,除非你是为一所小型学校安排课程。因此,代码的速度将非常重要

Erlang的创建者和支持者多次表示,他们的主要目标不是快速程序(并行——将问题分解成小块,以加快计算速度),而是并发性——运行同一计算或操作的多个实例。(如果你好奇,我可以找到支持性的引语)

我推荐Haskell,因为你的问题主要是纯计算领域,而不是副作用严重的领域

此外,根据@Daniel Wagner所说的,Haskell和Erlang在图书馆方面真的不太一样——Erlang没有像Hackage或CPAN那样的中央图书馆


祝你好运

我知道erlang对prolog有很大的影响,prolog会很好地匹配约束,而且作为一个数据库,有mnesia。可能没有太多的信息,但在我的新学习haskell中,我没有被类似的东西绊倒。约束编程本身就是一个领域。对于Haskell或Erlang,您必须编写自己的解算器。对于像Mozart/Oz或CHR(约束处理规则)这样的约束语言,解算器是系统的一部分。调度器将是计算密集型的吗?Erlang(及其动态类型)可能会处于劣势,因为Haskell(由于其静态类型)允许更多的编译时优化…@hvr:是的,至少我用Java编写的调度器实现是这样的。如果我再次坚持使用遗传算法或贪婪算法,并行计算也有很大的潜力。