我即将开始为我所在大学的学生组织开展一个富互联网应用项目。我将是唯一的程序员,使用什么技术完全取决于我。我已经决定使用Silverlight,但我不确定是使用C#还是F#。以下是我要记住的一些事情:
C#:
F#:
答案 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#中引用它,将你的脚趾浸入其水域,同时不会自动为它提供大量的额外时间。