Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Programming languages Haskell会是我任务的好选择吗?_Programming Languages_Haskell_Functional Programming_Ocaml - Fatal编程技术网

Programming languages Haskell会是我任务的好选择吗?

Programming languages Haskell会是我任务的好选择吗?,programming-languages,haskell,functional-programming,ocaml,Programming Languages,Haskell,Functional Programming,Ocaml,我正在开始一个新项目,不知道该用哪种语言 我的“必备”要求是: 能够在Windows/LinuxMacOs上本机运行(本机可执行)-用户应该能够只运行.exe(例如,在Windows上运行时)并查看结果 没有运行时/解释器(没有JVM、CLR等)——一个文件下载应该足以运行应用程序 完全支持Unicode 能够操作操作系统线程(创建线程、在多核CPU上并行运行多个任务等) 速度相当快(Python级别的性能更好) 拥有某种标准的库来完成低级的、平凡的任务 不是很利基,有一些社区支持,能够提出问题

我正在开始一个新项目,不知道该用哪种语言

我的“必备”要求是:

  • 能够在Windows/LinuxMacOs上本机运行(本机可执行)-用户应该能够只运行.exe(例如,在Windows上运行时)并查看结果
  • 没有运行时/解释器(没有JVM、CLR等)——一个文件下载应该足以运行应用程序
  • 完全支持Unicode
  • 能够操作操作系统线程(创建线程、在多核CPU上并行运行多个任务等)
  • 速度相当快(Python级别的性能更好)
  • 拥有某种标准的库来完成低级的、平凡的任务
  • 不是很利基,有一些社区支持,能够提出问题
  • 我的“拥有美好”要求是:

  • 语言应该是功能性的
  • 它应该具有良好的字符串操作功能(不一定是正则表达式)
  • 不太难学
  • 我现在想的是Haskell,但也要记住OCaml

    更新: 此应用程序旨在成为一个简单的语言解析和操作实用程序


    如果我的选择是正确的,请给我建议。

    哈斯克尔听起来很适合这个要求。GHC在OS X、linux和windows上生成的本机代码非常好,总体而言,它的性能要比Python好得多(在很多方面,不是所有方面)

    唯一奇怪的要求是需要操作系统线程。GHC生成的程序使用轻量级线程,它的性能比操作系统线程好得多,并且比pthread更易于使用

    Haskell还非常适合使用Parsec之类的库进行语言解析

    我们也非常了解Haskell周围的社区是如何提供帮助的。

    Haskell:

    1:它在Linux、Windows和OS X上运行,在许多情况下不更改源代码

    2:生成本机二进制文件。没有虚拟机

    3:完全支持Unicode。支持所有UTF变体

    4:全线程支持,另外,如果您只希望并行化,那么您可以使用“par”,并100%保证它只影响所花费的时间而不是语义

    5:与C一样快,虽然需要一些调整,但所需的技能目前相当模糊,而且显然较小的调整可以产生多个数量级的影响

    6:包括标准库,“Hackage”有更多的包,包括一系列解析器库

    7:IRC(#haskell)和这里的友好社区

    编辑:在“拥有美好”点上:

    1:Haskell是一种毫不妥协的纯函数式语言

    2:它通常有很好的字符串操作,如果需要,可以使用正则表达式。正如有人在后面的评论中所说,请注意内置“String”类型的效率(它将字符串表示为字符的链接列表),但是ByteString和文本库将为您解决这一问题

    3:学起来难吗?它远不如C++复杂,而且可能比java甚至python都要简单得多。但是它的纯功能性质意味着它与命令式语言有很大的不同。问题不在于学习哈斯克尔,而在于忘记命令式思维模式。

    也许“拥有它很好”:

  • 是的,纯函数和惰性评估
  • 是的(如前所述)
  • 取决于你,我觉得很难学, 但是给你带来了很多好处

  • 第三个好处是:看一看,它是免费的,是一个非常好的介绍,包括介绍你需要的所有要点。(如并行计算、字符串解析等)。

    您在这两种语言的编程能力如何?您打算使用什么算法?在Haskell中以最佳方式实现某些算法可能很困难(例如任何需要哈希表或可能从哈希表中受益的算法)。这两种语言对我来说都是新语言,但我对F#有一些经验,这与OCaml非常接近,并且在命令式语言方面有着丰富的经验。我不会给出正式的回答,因为如果我从未用这两种语言构建过大型项目,但我认为完成它比学习更重要,我推荐OCaml。它与F#非常相似。如果你想学一门新的语言,就跟哈斯克尔一起学吧。它很漂亮,非常适合数字任务和解析。是的,在每一点上打勾。除了根据你的背景可能“不太难学”之外。但是由于您正在寻找一种函数式语言,我怀疑您在函数式编程方面有一定的背景,所以Haskell应该不难学。最近的GHC版本也提供了操作系统线程。如果你想利用多核系统,它们是必须的。GHC在SMP机器上的性能相当好。它的
    par
    infix操作符使得实现并行性变得轻而易举。此外,GC可以在最新版本中异步运行,从而超过使用全局锁定GC的其他函数式语言。不要忘记Haskell对软件事务性内存的强大支持。“mhh”代表什么?汉诺威医学院(德国汉诺威汉诺威医学院)?大声思考的表达;)但我会尽量避免在以后的帖子中,在某人的名字前使用@,以吸引他们的注意。我没有其他办法知道你的评论。亚西尔,我认为你对莫有点苛刻,每个人都有弱点。例如,你的是英语语法。@Narzanka:我不是以英语为母语的人。谷歌没有给我一些与Haskell和“mhh”相关的信息。我要花上一天甚至更长的时间才能明白“mhh”与“hmm”很接近,而不是缩写词。我正在尽可能地讲清楚。关于第6点的另一个注意事项是:Haskell的默认字符串实现有时会因为第5点中提到的一些问题而变得缓慢;谢天谢地,haskell(第7点)的热心人可以向您介绍Da等有用的工具