有什么附加价值的学习F#当你已经熟悉了舌头?

有帮助吗?

解决方案

这些很多是相对最近的事态发展编程语言中的世界。这是什么东西你会看到在F#你不会在口齿不清,尤其是共同的口齿不清的,因为F#标准仍在发展。结果,你会发现有一个相当学习。当然事情似的位、模式匹配、单元和扩充可以建立一个图书馆在口齿不清,但它是更好的学习如何使用他们的语言在他们方便地建立。

最大的优点的学习F#真实世界的利用是其一体化。网。

其他提示

将Lisp直接与F#进行比较并不公平,因为在一天结束时有足够的时间你可以用任何一种语言编写相同的应用程序。

但是,你应该学习F#,原因与C#或Java开发人员应该学习它的原因相同 - 因为它允许在.NET平台上进行函数式编程。我不是100%熟悉Lisp,但我认为它有一些与OCaml相同的问题,因为没有一流的库支持。你如何在Lisp中进行数据库访问?高性能图形怎么样?

如果您想了解有关'为什么选择.NET'的更多信息,请查看此 SO问题

如果您了解F#和Lisp,您会发现这是一个相当奇怪的问题。

正如其他人所指出的那样,Lisp是动态类型。更重要的是,Lisp的独特之处在于它是homoiconic: Lisp代码是一种基本的Lisp数据类型(列表)。宏系统通过让你编写在编译时执行的代码并修改其他代码来利用它。

F#没有这样的东西 - 它是一种静态类型的语言,借用了ML和Haskell的很多想法,并在.NET上运行它

你问的是什么类似于“如果我知道如何使用叉子,为什么我需要学习使用勺子?”

鉴于LISP是动态类型的,而F#是静态类型的,我发现这种比较很奇怪。

如果我从Lisp切换到F#,那完全是因为我手上的任务非常受益于一些仅支持.NET的库。

但我没有,所以我不是。

货币。 F#代码已经比Lisp代码更有价值,并且随着F#的广泛采用,这种差距会迅速扩大。

换句话说,使用F#获得稳定收入的机会比使用Lisp要好得多。

干杯, Jon Harrop。

与大多数Lisp方言相比,F#是一种非常不同的语言。所以F#给你一个非常不同的编程角度 - 你不会从Lisp学到的角度。大多数Lisp方言最适合用于符号软件的增量交互式开发。同时,大多数Lisp方言不是函数式编程语言,而更像是多范式语言 - 不同的方言在支持FPL特征方面有不同的权重(没有副作用,不可变数据结构,代数数据类型......)。因此,大多数Lisp方言要么缺乏静态类型,要么不太注重它。

所以,如果你知道一些Lisp方言,那么学习F#会很有意义。只是不要认为你的很多Lisp知识适用于F#,因为F#是一种非常不同的语言。在学习Lisp时,用于C或Java的命令式编程需要忘记一些想法,在使用F#时,还需要忘记Lisp习惯(没有类型,副作用,宏,......)。 F#也是由微软驱动并利用.net框架。

F#具有以下优点:.NET开发(一般而言)被广泛采用,易于获取,并且更具有大众市场。

如果你想编写F#代码,你可以获得许多开发人员已经拥有的Visual Studio ......而不是让LISP环境启动并运行。

此外,现有的.NET开发人员更倾向于使用F#而不是LISP,如果这对您来说意味着什么。

(这是来自.NET开发人员,他在大学期间编写并喜爱LISP)。

我不确定你会吗?如果你找到F#有趣,这将是一个原因。如果你的工作,需要它,这将是一个原因。如果你觉得这会让你更加富有成效的或给你带来附加价值超过当前的知识,这将是一个原因。

但如果你找不到F#有趣,你的工作不需要它,你不认为这会让你更加富有成效的或给你带来增加值,那么为什么你会吗?

如果这个问题的另一方面是什么F#给那些不这样做,那么类型推理模式匹配和一体化的其余部分。净框架应该加以考虑。

我知道这个帖子已经老了但是因为我偶然发现了这个故事,我只想评论一下我的理由。我正在学习F#只是为了获得专业机会,因为.NET在一个主导我的领域的公司中占有很大的份量。功能范式在越来越多的定量和数据导向型公司中得到应用,我希望成为这一趋势的早期成员之一。目前还没有一种强大的功能语言可以完全安全地与.NET库集成。我实际上试图从Lisp代码移植一些.NET,这真的是一个痛苦的原因,FFI只支持C原语,.NET互操作性需要一个“接口”构造,即使我知道如何在C中做到这一点它真的是一个巨大的痛。如果Lisp在下一个标准中加倍努力并且需要一个c ++类(包括虚拟函数w / vtables),并且在它的FFI中使用C#样式接口类型,那将是非常非常好的。甚至可能也会抛出Java接口样式类型。这将允许与.NET库完全互操作,并使Lisp成为大规模语言的有力竞争者。然而就是说,来自Lisp背景使得学习F#相当容易。而且我喜欢F#如何通过额外的努力提供通常会看到定量类型工作的类型。我相信F#是在考虑数学工作的情况下创建的,而且它本身对Lisp有价值。

查看此问题(原始问题)的一种方法是将语言(以及相关工具和平台)与即时任务相匹配。如果任务需要绝大多数的.NET代码,并且在一种语言中需要较少的鞋子来完成任务,那么就采取阻力最小的路径(F#)。如果你不需要.NET功能,并且你很乐意使用LISP并且没有手臂弯曲可以远离它,那就继续使用它。

与将锤子与扳手进行比较没有太大区别。选择最有效的工具。试图选择客观“最佳”的工具。是胡说八道。并且在任何情况下,在20年内,所有当前“热”的都是语言可能已经过时了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top