Rob*_*lan 20 functional-programming immutability data-structures
在Real World Haskell中,有一个标题为"没有数组或哈希表的生命"的部分,作者建议列表和树在函数式编程中是首选,而数组或哈希表可能在命令式程序中使用.
这是有道理的,因为在创建新列表或树时,重用部分(不可变)列表或树要比使用数组更容易.
所以我的问题是:
Cur*_*son 12
作为一个多年来一直在做OO的人,最近在Haskell建立了一个需要大量速度的大型项目(实时自动化期权交易系统):
如果你在谈论Haskell,是的,非常如此.然而,很大一部分是由于纯度; 在更常使用可变数据的其他函数语言中,差异稍微小一些.也就是说,正如其他人所指出的那样,递归代码和结构在所有或几乎所有函数语言中使用得更多.
除了不得不花一些时间学习新的工作方式之外,它不适合我.特别是,性能肯定不是问题:例如,我正在开发的系统运行速度比以前的Java实现快得多.
通常问题不在于"你确实需要一个哈希表",而是你需要在某些给定的时间限制内访问某些数据(这可能是"在某些给定的硬件上尽可能快".).为此,你环顾四周,做你需要做的事情.如果这包括引入可变性,我没有看到它的大问题,你可以在Haskell中做到这一点,尽管它可能不像在其他语言中那样方便.但是请记住,如果你有这种性质的问题,它肯定不会那么简单,"使用通用哈希表,你就完成了." 特定硬件平台上特定功能的极高性能总是需要大量工作,通常不仅仅是一些技巧.仅仅因为它有一些特殊的东西比其他语言更好,所以优先考虑一种语言实现,在我看来,这是一种相当简单的软件工程方法,不太可能始终如一地产生好的结果.
| 归档时间: |
|
| 查看次数: |
4658 次 |
| 最近记录: |