我应该学习F#或函数式编程语言吗?

时间:2022-09-11 09:30:40

Should I invest time learning Microsoft's new F# language? I am mainly a C# .NET developer and I wonder if learning F# will be of any help in developing today's typical applications.

我应该花时间学习微软的新F#语言吗?我主要是一名C#.NET开发人员,我想知道学习F#是否对开发当今的典型应用程序有所帮​​助。

6 个解决方案

#1


15  

F# is a perfectly good place to start learning functional languages. If you're worried that F# knowledge won't apply to other functional languages, you shouldn't. F# is a member of the ML family of languages. Microsoft just tweaked it a bit so that it plays well with .NET.

F#是开始学习函数式语言的绝佳场所。如果您担心F#知识不适用于其他功能语言,则不应该。 F#是ML系列语言的成员。微软只是稍微调整了一下,以便它与.NET一起运行良好。

Luca Bolognese gave an amazing presentation on F# at PDC 2008. I would strongly recommend you watch it and decide for yourself whether F# is worth learning.

Luca Bolognese在PDC 2008上发表了关于F#的精彩演讲。我强烈建议你观看它并自己决定F#是否值得学习。

#2


13  

It's worthwhile to take a look at programming languages that make you think differently, and if you're a C# developer, F# is probably the functional programming language you'd find most accessible.

值得一看的是让您以不同的方式思考的编程语言,如果您是C#开发人员,F#可能是您最容易访问的函数式编程语言。

Even if you decide that you don't want to develop applications in F#, the experience of using F# could change the way you write C#.

即使您决定不想在F#中开发应用程序,使用F#的体验也可能改变您编写C#的方式。

#3


3  

You said, "should I learn functional programming languages in general?"

你说,“我应该学习一般的函数式编程语言吗?”

If you want to understand programming on a deeper level I say you should. Learning LISP was an eye-opening adventure for me. It was very hard at first. And then one day as if by magic it was natural to me. That can only be better for your ability to see problems in different ways.

如果你想在更深层次上理解编程,我说你应该。学习LISP对我来说是一次令人大开眼界的冒险。起初这很难。然后有一天,仿佛通过魔法对我来说很自然。这对你以不同方式看问题的能力来说更好。

#4


3  

I learned Prolog a long time ago and it's remained my favorite language in many regards. Now Prolog is not just a functional language but an AI language, however some time ago I learned Erlang which is based on Prolog. I can recommend you to learn both these languages as you learn alot that benefits your day to day development in - for example - C#.

我很久以前就学过Prolog,在许多方面它仍然是我最喜欢的语言。现在Prolog不仅仅是一种功能语言,而是一种AI语言,不过前段时间我学习的是基于Prolog的Erlang。我建议你学习这两种语言,因为你学到了很多东西,这有利于你的日常开发 - 例如 - C#。

If I was to learn a new functional language today it would most probably be F# since it's going to be a first class citizen of the .Net platform. I think that F# is the functional (well multi paradigm) language you'll have the best chance of being productive in.

如果我今天要学习一种新的功能语言,很可能是F#,因为它将成为.Net平台的一等公民。我认为F#是功能性(多范式)语言,你最有可能获得高效率。

#5


2  

Check out the responses in What would be a good second lanuguage to learn for a C# programmer. The bottom line is: functional languages offer a complete new paradigm and will be of value to you as it will enhance your programming skills.

查看对于C#程序员来说,学习第二语言的好处。底线是:功能语言提供了一个全新的范例,对您有价值,因为它将提高您的编程技能。

#6


1  

Will it be useful in development of 'common' applications? Not particularly, no more or less than c or c# is anyhow. It's not RAD, so there are no shortcuts available in F# that will get you any closer to release of a 'common' application any faster than any other non-RAD language.

它会在开发“常见”应用程序时有用吗?不是特别的,无论如何不得多于或少于c或c#。它不是RAD,因此F#中没有可用的快捷方式,可以比任何其他非RAD语言更快地发布“常用”应用程序。

On the other hand, for programs that are more computation than presentation, F# may be closer to the application domain than another language. Functional languages make dealing with certain problem domains a lot more intuitive.

另一方面,对于计算量大于表示的程序,F#可能比另一种语言更接近应用程序域。功能语言使得处理某些问题域更加直观。

I personally think it's worth learning, not because it is going to solve all your problems, but because every programmer worth a flip should know atleast one functional language. A lot of seemingly baroque programatic concepts are made more transparent when functional programming concept are floating around in your head.

我个人认为值得学习,不是因为它会解决你所有的问题,而是因为每个值得翻转的程序员都应该知道至少一种功能语言。当函数式编程概念浮现在脑海中时,很多看似巴洛克式的编程概念变得更加透明。

Another personal preference of mine; I like programming languages with a solid, diverse type system. I do not like shoe horning structures into types that do not have a very strong conceptual match to them. ML type systems, in my mind, allow you to build types with a much finer granularity than more mainstream type systems. As a result, I feel that I can write code that interacts with these structures in a more natural way with ML style languages like F#.

我个人的另一个偏好;我喜欢使用可靠,多样的系统编程语言。我不喜欢将鞋子结构变成与它们没有很强概念匹配的类型。在我看来,ML类型系统允许您构建比更主流类型系统更精细的类型。因此,我觉得我可以使用ML样式语言(如F#)以更自然的方式编写与这些结构交互的代码。

While this doesn't help much with common concepts, that have feature sets to support them in more mainstream languages, for anything that is even remotely uncommon, I would prefer F# to most other languages.

虽然这对于常见概念没有多大帮助,但是它们具有在更主流的语言中支持它们的功能集,对于任何甚至是非常罕见的东西,我更喜欢F#和大多数其他语言。

#1


15  

F# is a perfectly good place to start learning functional languages. If you're worried that F# knowledge won't apply to other functional languages, you shouldn't. F# is a member of the ML family of languages. Microsoft just tweaked it a bit so that it plays well with .NET.

F#是开始学习函数式语言的绝佳场所。如果您担心F#知识不适用于其他功能语言,则不应该。 F#是ML系列语言的成员。微软只是稍微调整了一下,以便它与.NET一起运行良好。

Luca Bolognese gave an amazing presentation on F# at PDC 2008. I would strongly recommend you watch it and decide for yourself whether F# is worth learning.

Luca Bolognese在PDC 2008上发表了关于F#的精彩演讲。我强烈建议你观看它并自己决定F#是否值得学习。

#2


13  

It's worthwhile to take a look at programming languages that make you think differently, and if you're a C# developer, F# is probably the functional programming language you'd find most accessible.

值得一看的是让您以不同的方式思考的编程语言,如果您是C#开发人员,F#可能是您最容易访问的函数式编程语言。

Even if you decide that you don't want to develop applications in F#, the experience of using F# could change the way you write C#.

即使您决定不想在F#中开发应用程序,使用F#的体验也可能改变您编写C#的方式。

#3


3  

You said, "should I learn functional programming languages in general?"

你说,“我应该学习一般的函数式编程语言吗?”

If you want to understand programming on a deeper level I say you should. Learning LISP was an eye-opening adventure for me. It was very hard at first. And then one day as if by magic it was natural to me. That can only be better for your ability to see problems in different ways.

如果你想在更深层次上理解编程,我说你应该。学习LISP对我来说是一次令人大开眼界的冒险。起初这很难。然后有一天,仿佛通过魔法对我来说很自然。这对你以不同方式看问题的能力来说更好。

#4


3  

I learned Prolog a long time ago and it's remained my favorite language in many regards. Now Prolog is not just a functional language but an AI language, however some time ago I learned Erlang which is based on Prolog. I can recommend you to learn both these languages as you learn alot that benefits your day to day development in - for example - C#.

我很久以前就学过Prolog,在许多方面它仍然是我最喜欢的语言。现在Prolog不仅仅是一种功能语言,而是一种AI语言,不过前段时间我学习的是基于Prolog的Erlang。我建议你学习这两种语言,因为你学到了很多东西,这有利于你的日常开发 - 例如 - C#。

If I was to learn a new functional language today it would most probably be F# since it's going to be a first class citizen of the .Net platform. I think that F# is the functional (well multi paradigm) language you'll have the best chance of being productive in.

如果我今天要学习一种新的功能语言,很可能是F#,因为它将成为.Net平台的一等公民。我认为F#是功能性(多范式)语言,你最有可能获得高效率。

#5


2  

Check out the responses in What would be a good second lanuguage to learn for a C# programmer. The bottom line is: functional languages offer a complete new paradigm and will be of value to you as it will enhance your programming skills.

查看对于C#程序员来说,学习第二语言的好处。底线是:功能语言提供了一个全新的范例,对您有价值,因为它将提高您的编程技能。

#6


1  

Will it be useful in development of 'common' applications? Not particularly, no more or less than c or c# is anyhow. It's not RAD, so there are no shortcuts available in F# that will get you any closer to release of a 'common' application any faster than any other non-RAD language.

它会在开发“常见”应用程序时有用吗?不是特别的,无论如何不得多于或少于c或c#。它不是RAD,因此F#中没有可用的快捷方式,可以比任何其他非RAD语言更快地发布“常用”应用程序。

On the other hand, for programs that are more computation than presentation, F# may be closer to the application domain than another language. Functional languages make dealing with certain problem domains a lot more intuitive.

另一方面,对于计算量大于表示的程序,F#可能比另一种语言更接近应用程序域。功能语言使得处理某些问题域更加直观。

I personally think it's worth learning, not because it is going to solve all your problems, but because every programmer worth a flip should know atleast one functional language. A lot of seemingly baroque programatic concepts are made more transparent when functional programming concept are floating around in your head.

我个人认为值得学习,不是因为它会解决你所有的问题,而是因为每个值得翻转的程序员都应该知道至少一种功能语言。当函数式编程概念浮现在脑海中时,很多看似巴洛克式的编程概念变得更加透明。

Another personal preference of mine; I like programming languages with a solid, diverse type system. I do not like shoe horning structures into types that do not have a very strong conceptual match to them. ML type systems, in my mind, allow you to build types with a much finer granularity than more mainstream type systems. As a result, I feel that I can write code that interacts with these structures in a more natural way with ML style languages like F#.

我个人的另一个偏好;我喜欢使用可靠,多样的系统编程语言。我不喜欢将鞋子结构变成与它们没有很强概念匹配的类型。在我看来,ML类型系统允许您构建比更主流类型系统更精细的类型。因此,我觉得我可以使用ML样式语言(如F#)以更自然的方式编写与这些结构交互的代码。

While this doesn't help much with common concepts, that have feature sets to support them in more mainstream languages, for anything that is even remotely uncommon, I would prefer F# to most other languages.

虽然这对于常见概念没有多大帮助,但是它们具有在更主流的语言中支持它们的功能集,对于任何甚至是非常罕见的东西,我更喜欢F#和大多数其他语言。