簡體   English   中英

個人Silverlight項目的F#或C#?

[英]F# or C# for personal Silverlight project?

我即將開始為我所在大學的學生組織開展一個富互聯網應用項目。 我將是唯一的程序員,使用什么技術完全取決於我。 我已經決定使用Silverlight,但我不確定是使用C#還是F#。 以下是我要記住的一些事情:

C#:

  • 我已經知道了,並且在工作中廣泛使用了Silverlight。 我沒有F#和一般的FP經驗。
  • 有人說OOP范例對於復雜的有狀態UI更有效。
  • 維護:我將在學校待上三年,但之后如果該應用程序仍在使用中,如果我使用更常用的語言,他們可能會更好地找到其他人來維護它。
  • C#體驗在“現實世界”中可能更有價值。

F#:

  • 主要原因是我想學習新的東西。 函數式編程語言似乎很酷(我發現自己經常使用C#的FP功能,並認為它們是C#3.0中最大的改進)。 如果我使用F#,我想我會有更多的樂趣,但我認為時間和精力的成本可能不會超過收益,這是不切實際的嗎?

在我看來,當你是一名學生時,你應該盡量把手指放在盡可能多的花盆里。

您玩的語言越多,您對用特定語言做事的“最佳”方式的理解就越多。

至於“經驗”在“現實世界”中更有價值。 就個人而言,在尋找潛在候選人時,我只考慮真正的商業經驗。 當你在工作和獲得報酬時,使用某種語言的經驗與在學習/學習時使用語言的經驗是截然不同的。 你在學習期間所做的事情是獲得技能和知識,而你在商業環境中所做的事情會給你解決現實生活問題的經驗。

底線......盡可能地玩酷炫的東西!

因為你希望創建一些有用的東西,這些東西將作為維護者過去,我建議用C#編寫大部分內容。 但是,你可以做些什么來划分你的新技術癢,它可以提供不同的,定義明確的組件,它們不直接與UI交互並在單獨的F#程序集中編寫。

我做過類似於我過去開源的項目。 我的基本UI邏輯(在這種情況下,MV-VM的V-VM部分)是在C#中,因為它與WPF技術一起工作得很好。 然后,模型本身的某些面向功能的組件我爆發成一個單獨的程序集,並在F#中寫入只是為了獲得一些有限的語言接觸。

這不是一種雙腳跳躍的學習技術方法,所以我可能沒有盡可能多地學習。 不過,一個F#-only項目也不會教我幾乎同樣以友好的方式向更大的.Net世界公開F#功能。

無論如何,這種情況下的關鍵是讓你享受樂趣,享受你正在做的事情。 :)

您可以制作F#業務邏輯項目(一個DLL)。

然后是C#中的用戶界面。 在用戶界面項目中,您可以添加對F#-library的引用。

在使用Silverlight時,這是一個很好的解決方案:F#的強大功能是(功能)編程,但目前C#將擁有更好的工具支持。

我知道它不在您的列表中,但如果您對學習新內容感興趣,可以考慮使用GWT - 您使用Java編寫客戶端(這應該是從C#輕松跳轉),然后編譯器轉向客戶端進入JavaScript。 應該比Silverlight更具跨平台兼容性,並且它是一種有趣的技術融合(CSS,JavaScript和Java在不久的將來不會出現在任何地方)。

我剛剛在倫敦F#用戶組會議上討論了在F#中編寫反應式Silverlight應用程序的問題。 這里可以記錄談話(和樣本) ,所以你可以看一下。

您可以考慮以下幾點:

  • 我認為F#有一些非常好的功能,使編程這種應用程序比C#更優雅(例如,你可以很好地將程序建模為狀態機並在代碼中直接編碼)。

  • F#仍然相對較新,但我相信有一個很好的機會,找到三年后熟悉F#的人比今天容易得多(找到有興趣學習新東西的年輕學生應該更容易:-))。

  • 令我感到驚訝的是,倫敦地區已經有很多優秀的F#程序員需求。 這在不同的地方可能會有所不同,但我認為F#在一些工作的CV上變成了一個“很好的”功能。

我假設這將用於內部網環境。 否則,我會質疑Silverlight的選擇是否真的是最好的,因為市場滲透。 我要提出的第二點是大多數Web開發人員真正關鍵的技能之一就是Javascript。 (現在,這將是Javascript與JQuery一樣的庫來操縱DOM,簡化AJAX等),除非應用程序特別復雜,考慮DHTML + Javascript作為起點可能有一些優點,只看其他技術如果證明太多了。 但是,如果你打算沿着Silverlight路線走下去,那么C#是最有可能得到支持的。 如果您還在學習,那么它也是擁有最佳文檔的路線。 F#有一些很好的文檔,但不幸的是沒有C#的那么多。 您簡要提及時間和成本承諾。 除非您對函數式編程非常熟悉,否則F#可能會花費更長的時間,部分原因是由於不熟悉,部分原因是由於大量的參考文檔可以幫助您完成工作。 雖然掌握一系列編程語言的知識無疑是有益的,但對大多數雇主而言,更有價值的是對他們選擇的語言的充分理解 - 因此過多的多樣化可能會錯過這一點。 當想要學習一種不熟悉的編程語言時,從解決項目歐拉問題開始,可能會提出一種更好的方法,而不是直接進入一個使用新語言的重大項目。 如果你從C#開始,你總是可以創建一個F#項目來實現更適合它的焦點的函數,並從C#中引用它,將你的腳趾浸入其水域,同時不會自動為它提供大量的額外時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM