Haskell或Erlang用于约束求解课程调度程序

时间:2011-07-22 20:41:14

标签: web-applications haskell erlang

我正在寻找一个属于我自己的新项目:我想编写一个课程安排程序,找出一个课程安排,并对课程和时间进行最佳分配。问题是解决约束,例如:空间和时间没有重叠,没有讲师同时教授多门课程,特定课程的特征要求等。

我期待着编写两个或三个组件架构:

  • 前端:网络界面(AJAX)
  • 介于两者之间以保存和管理数据:数据库(?)
  • 后端:课程安排程序

基本上,Web界面接受用户请求,例如输入数据,请求课程安排程序,课程安排程序将加载一组课程和资源,并尝试找出最佳课程分配。

为什么我要使用函数式编程语言?因为我认为他们只需很少的代码就可以最好地检查约束

所以我的问题是:

1)考虑前端,使用 Erlang还是Haskell 会更容易吗?我已经阅读了一些关于Erlang与Haskell的博客片段,但这并没有多大帮助。有没有人对这个特殊项目有任何意见?

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

2 个答案:

答案 0 :(得分:9)

我的建议:选择一种语言并获得编码!有很多库可以在Haskell中与数据库连接并编写Web应用程序,我确信在Erlang世界中情况类似。无论如何,有趣和困难的问题几乎肯定会在其他地方出现 - 在某些你现在无法预测的地方。所以尽可能快地到达那些问题点,然后开始锤击它们!

祝你好运。

答案 1 :(得分:3)

这很可能是一个非常计算上昂贵的问题,除非您安排一所小型学校。所以代码的速度很重要。

Erlang的创建者和支持者曾多次说过,他们的主要目标不是快速程序(并行性 - 将问题分解成小块,计算速度更快),但对于并发性 - 运行相同计算或操作的许多实例。 (如果你很好奇,我可以找到支持报价)。

我会推荐Haskell,因为你的问题主要是在纯计算领域,而不是副作用很大。

另外,为了跟进@Daniel Wagner所说的,Haskell和Erlang在库方面确实不太相同 - Erlang并没有像Hackage或CPAN那样拥有集中式库。

祝你好运!