2010-07-01 64 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#中引用它,將腳趾浸入水中,而不會自動提交大量額外時間。