个人Silverlight项目的F#或C#?

时间:2010-07-01 12:35:30

标签: c# silverlight f#

我即将开始为我所在大学的学生组织开展一个富互联网应用项目。我将是唯一的程序员,使用什么技术完全取决于我。我已经决定使用Silverlight,但我不确定是使用C#还是F#。以下是我要记住的一些事情:

C#:

  • 我已经知道了,并且在工作中广泛使用了Silverlight。我没有F#和一般的FP经验。
  • 有人说OOP范例对于复杂的有状态UI更有效。
  • 维护:我将在学校待上三年,但之后如果该应用程序仍在使用中,如果我使用更常用的语言,他们可能会更好地找到其他人来维护它。
  • C#体验在“现实世界”中可能更有价值。

F#:

  • 主要原因是我想学习新东西。函数式编程语言似乎很酷(我发现自己经常使用C#的FP功能,并认为它们是C#3.0中最大的改进)。如果我使用F#,我想我会有更多的乐趣,但我认为时间和精力的成本可能不会超过收益,这是不切实际的吗?

6 个答案:

答案 0 :(得分:11)

在我看来,当你还是一名学生时,你应该尽量把手放在尽可能多的花盆里。

您玩的语言越多,您对以特定语言执行操作的“最佳”方式的理解就越多。

“经验”在“现实世界”中更有价值。就个人而言,在寻找潜在候选人时,我只考虑真正的商业经验。当你在工作和获得报酬时,使用某种语言的经验与在学习/学习时使用语言的经验是截然不同的。你在学习期间所做的事情就是获得技能和知识,而你在商业环境中所做的事情会给你解决现实生活问题的经验。

底线...尽管你仍然可以玩很酷的东西!

答案 1 :(得分:4)

因为你希望创建一些有用的东西,这些东西将作为维护者过去,我建议用C#编写大部分内容。但是,你可以做些什么来划分你的新技术痒,它可以提供不同的,定义明确的组件,这些组件不直接与UI交互并将它们写在单独的F#程序集中。

我做过类似于我过去开源的项目。我的基本UI逻辑(在这种情况下,M-V-VM的V-VM部分)是在C#中,因为它与WPF技术一起工作得很好。然后,模型本身的某些面向功能的组件我爆发成一个单独的程序集,并在F#中写道只是为了获得一些有限的语言接触。

这不是一种双脚跳跃的学习技术方法,所以我可能没有尽可能多地学习。一个F#-only项目不会教我几乎同样以友好的方式将F#功能暴露给更大的.Net世界,不过。

无论如何,在这样的情况下,关键是让你享受乐趣,享受你正在做的事情。 :)

答案 2 :(得分:3)

您可以制作F#商业逻辑项目(dll)。

然后是C#中的用户界面。在用户界面项目中,您可以添加对F#-library的引用。

使用Silverlight时,这是一个很好的解决方案:F#的强大功能是(功能)编程,但目前C#将提供更好的工具支持。

答案 3 :(得分:1)

我知道它不在您的列表中,但如果您对学习新内容感兴趣,可以考虑使用GWT - 您使用Java编写客户端(这应该是从C#轻松跳转),然后编译器转向客户端进入JavaScript。应该比Silverlight更具跨平台兼容性,并且它是一种有趣的技术融合(CSS,JavaScript和Java在不久的将来不会出现在任何地方)。

答案 4 :(得分:1)

我刚刚在伦敦F#用户组会议上讨论了在F#中编写反应式Silverlight应用程序的问题。 recording of the talk (and samples) are available here,所以你可以看一下。

您可以考虑以下几点:

  • 我认为F#有一些非常好的功能,使编程这种应用程序比C#更优雅(例如,你可以很好地将程序建模为状态机并在代码中直接编码)。

  • F#还是比较新的,但我相信有一个很好的机会,找到三年后熟悉F#的人会比今天容易得多(找到有兴趣学习新东西的年轻学生应该是更容易: - ))。

  • 我很惊讶伦敦地区对F#程序员的需求已经很大了。这在不同的地方可能会有所不同,但我认为F#在一些工作的CV上变成了“很棒的”功能。

答案 5 :(得分:0)

我认为这将用于Intranet环境。否则,我会质疑Silverlight的选择是否真的是最好的,因为市场渗透。 我要提出的第二点是大多数Web开发人员真正关键的技能之一就是Javascript。 (现在,这将是Javascript与JQuery一样的库来操纵DOM,简化AJAX等),除非应用程序特别复杂,考虑DHTML + Javascript作为起点可能有一些优点,只看其他技术如果证明太多了。 但是,如果你打算沿着Silverlight路线走下去,那么C#是最有可能得到支持的。如果您还在学习,那么它也是拥有最佳文档的路线。 F#有一些很好的文档,但不幸的是没有C#的那么多。 您简要提及时间和成本承诺。除非您对函数式编程非常熟悉,否则F#可能会花费更长的时间,部分原因是由于不熟悉,部分原因是由于大量的参考文档可以帮助您完成工作。 虽然掌握一系列编程语言的知识无疑是有益的,但对大多数雇主而言,更有价值的是对他们选择的语言的充分理解 - 因此过多的多样化可能会错过这一点。当想要学习一种不熟悉的编程语言时,从解决项目欧拉问题开始,可能会提出一种更好的方法,而不是直接进入一个使用新语言的重大项目。如果你从C#开始,你总是可以创建一个F#项目来实现更适合它的焦点的函数,并从C#中引用它,将你的脚趾浸入其水域,同时不会自动为它提供大量的额外时间。