2010-07-01 62 views
3

我即将开始在我的大学为一个学生组织开发一个富互联网应用程序项目。我将成为唯一的程序员,所使用的技术完全取决于我。我已经决定使用Silverlight,但我不确定是否使用C#或F#。下面是一些我牢记的事情:个人Silverlight项目的F#或C#?

C#:

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

F#:

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

“维护”子弹最多听起来“乐观”......学生项目多久才能存活超过3年,需要维护人员?我不会在你的初始标准中考虑这一点。如果两年后,应用程序仍然强劲,那么我会开始考虑维护交付,但现在不是。 – Brian 2010-07-01 16:59:48

+0

@Brian该应用程序将帮助规划和运行自1950年代以来每年发生的事件。我认为认为它将在三年后仍然可以使用是不合理的。 – 2010-07-01 18:43:47

+0

我这样做,但只有时间会告诉。 :) – Brian 2010-07-01 19:25:41

回答

11

在我看来,当你是一名学生时,你应该尽量将手指放在尽可能多的盆中。

你玩的语言越多,对特定语言的“最佳”做事方式的理解就越多。

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

底线......尽管你仍然可以玩酷玩!

+1

这需要更多的重点:**尽管你仍然可以玩酷的东西! ** – sbk 2010-07-01 13:17:28

+0

谢谢 - 你们已经说服我解决F#:) – 2010-07-02 01:20:33

1

我知道这是不是在你的名单,但如果你有兴趣在学习新的东西,你可能会考虑GWT - 你写你的客户端的Java(这应该是从C#一个简单的跳跃),然后编译器将客户端转换为JavaScript。应该比Silverlight更具跨平台兼容性,它是一种有趣的技术融合(CSS,JavaScript和Java在不久的将来不会发生任何变化)。

+1

Upvoted你的答案,因为这是一个很酷的事情考虑,即使我可能会留在Silverlight。我宁愿建立更多的Silverlight体验,而不是去学习一个全新框架的怪癖和不一致之处,我认为这会比学习一门新语言更有趣。 – 2010-07-01 12:43:22

+0

够公平的。不过考虑在未来看看它 - 特别是一旦我到达“本地接口”(使用内联JavaScript支持Java对象,然后将其转换为JavaScript),它真的改变了我对编程的看法。 另外,函数式语言会让我头疼。 :) – Curtis 2010-07-01 12:53:47

+4

Java编译为Javascript代码:: shudders :: – 2010-07-01 12:54:44

4

因为你希望创造一些有用的东西,并且能够维持你的职位,所以我建议你写C#中的大部分。然而,你可以做什么来划分你的新技术痒,就是抽出不直接与UI交互并且在单独的F#程序集中编写这些组件的明确的,定义明确的组件。

我已经做了一些类似的项目,我已经开源了。我的基本UI逻辑(在这种情况下,M-V-VM的V-VM部分)使用C#,因为它对WPF技术非常有效。然后,我将模型本身的某些功能导向组件分解为一个单独的程序集,并在F#中编写,以便对该语言进行有限的暴露。

这不是一种双脚兼顾学习技术的方法,所以我可能没有尽可能多地学习。尽管如此,只有F#的项目并没有教会我如何以一种友好的方式将F#功能暴露给更大的.Net世界。

无论如何,这种情况下的关键是让你玩得开心,享受你正在做的事情。 :)

3

您可以使F#业务逻辑项目(一个DLL)。

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

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

1

我刚刚在伦敦F#用户组会议上就F#中的活动Silverlight应用程序进行了编程进行了讨论。 recording of the talk (and samples) are available here,所以你可以看看。

这里有几个点,你可以考虑:

  • 我认为F#有一些非常不错的功能,使编程这种应用比C#更优雅(例如,你可以很好的模型程序作为一个状态机并将其直接编码)。 F#还是比较新的,但我相信在三年后找到熟悉F#的人会比今天容易得多(并且找到有兴趣了解新事物的年轻学生应该更容易:-))。

  • 我很惊讶在伦敦地区已经有很好的F#程序员的需求。这在不同的地方可能会有所不同,但我认为F#正在成为一些工作的简历上的“有用”功能。

0

我假设这将用于Intranet环境。否则,我会质疑,由于市场渗透,Silverlight的选择是否真的是最好的。我提出的第二点是,大多数Web开发人员真正关键的技能之一就是Javascript。 (现在,除了应用程序特别复杂之外,这将会是Javascript,带有像JQuery这样的库来操纵DOM,简化AJAX等),但考虑到DHTML + Javascript是一个起点,并且只考虑其他技术,如果它证明了太多。然而,如果你设置了Silverlight路线,那么C#是最有可能被支持的。如果你还在学习,那么它也是具有最好文档的路线。 F#有一些优秀的文档,但不幸的是没有C#那么多。 您简要提及时间和成本承诺。除非您对函数式编程非常满意,否则F#可能会花费更长时间,部分原因是由于不熟悉,部分原因是大量参考文档可帮助您顺利完成工作。 尽管掌握各种编程语言的知识无疑是件好事,但对于大多数雇主来说更有价值的是对他们的选择语言的深刻理解 - 因此多样化太多可能会错过。当想要学习一门不熟悉的编程语言,从解决Project Euler问题开始,可能会提供一种更好的开始,而不是用一种新语言直接进入一个主要项目。如果你用C#开始,你总是可以创建一个F#项目来实现更适合其焦点的函数,并从C#中引用它,将脚趾浸入水中,而不会自动提交大量额外时间。