我正在就Ruby語言和環境向.NET(C#)開發團隊進行一系列演講。我將它作爲一個機會來強調Ruby比C#更多的好處。起初,我想在進入環境之前專注於語言本身(RoR vs ASP MVC等)。你會介紹哪些Ruby語言的特性?與C#相比,Ruby會突出哪些語言特性?
回答
混合插入和多重繼承。
它在危險的手中是錯誤的,但對正確封裝事物相當有益,而不是必須繼承許多你不一定需要的東西。
C#和ruby都沒有多重繼承... – 2009-02-23 22:18:11
鴨子打字!這在c#4.0中會少一些,但是有時候我不得不復制整個代碼塊,因爲兩個相關的類(用於我的目的)相同的API沒有共享一個基類。
另外,塊。 C#有lambda表達式,但是Ruby的語法更漂亮,並且在整個標準庫中被廣泛使用。他們更習慣於Ruby而不是慣用的c#,並且這很重要。
編輯
哈希文字也值得一提。總的來說,我會強調你在Ruby中的簡潔程度,以及它如何讓你更好地表達意圖,並花費更少的時間來讓編譯器感到高興。
對於靜態鴨子打字而言,如在成員約束中 – MichaelGG 2009-02-23 23:26:26
+1對於塊。這是Ruby的一個強大功能。 – 2009-02-24 14:53:59
前一段時間,我對一個.NET用戶組發表了一個演講。關於IronRuby,並面臨類似的問題。我關注的東西是:
鴨子打字。沒有比
List<string> stringList = new List<string>()
更愚蠢的東西;表達式和簡明語法。簡單的事情,如捨棄括號,數組和哈希文字等(結合鴨子打字,你得到
string_list = []
這顯然更好)。所有小東西加起來都很大。Metaprogramming。從
attr_accessor
這些簡單的東西開始,如果他們沒有立即看到好處,那麼可能會更先進一些。不要試圖比較一下在編寫其他程序的程序上嘲諷和打蠟......人們會認爲你正在吸菸。保持簡單和錘子那家你沒有保持寫入相同蹩腳的樣板代碼了當好「壓軸」的地步,讓他們與
Assert.NotEqual<string> blah
所有的爛攤子一些正常的NUnit的風格測試,他們通常會說,「這裏是用ruby編寫的相同代碼」,並向他們展示它使用rspec編寫的代碼(它的長度是一半,讀取容易10倍......如果不銷售它們,則不會)。
我接近它作爲一個機會在C#突出紅寶石的好處。
我不知道這是正確的做法。如果談話的語氣是「Ruby很酷,因爲你可以做x!」你很快就會失去你的C#觀衆。他們會回答:「如果我們想要,我們可以在C#中模擬x,但在我們的設計中,我們沒有太多的使用x。」或者,「如果你認爲你需要做x那麼你做錯了!」
他們不理解Ruby如何幫助他們,直到他們理解Ruby。爲什麼不讓他們通過一些玩具問題並向他們展示Ruby程序員如何解決它們?教他們紅寶石的方式。一週後,當他們看到他們遇到的問題時,他們中的一個會說:「好吧,我知道如何解決這個問題,但是如果我使用Ruby,它會變得更容易... 」
除了別人都紛紛表示,開放類是紅寶石的一個重要功能,值得一提的:(例如,從Ruby From Other Languages被盜)
class Fixnum
def hours
self * 3600 # number of seconds in an hour
end
alias hour hours
end
# 14 hours from 00:00 January 1st
# (aka when you finally wake up ;)
Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00
我知道,patching like a monkey should be avoided,但我認爲向新手突出這一特性應該讓他們瞭解Ruby背後的哲學。只記得說:「孩子們,不要在家裏試試!」
- 1. 找出哪些是正規的語言
- 2. 哪些約束相沖突?
- 3. UnityContainer.Resolve與Activator.CreateInstance相比有哪些優勢?
- 4. FastBitmapDrawable與Bitmap相比有哪些優勢?
- 5. AVSpeechSynthesizer支持哪些語言?
- 6. Ruby語言特徵[1,2,3]
- 7. Ruby on Rails比其他Web編程語言有哪些主要優勢?
- 8. C++性能,與之相比
- 9. Java 6語言與C#3.0語言的比較
- 10. 我可以使用哪些庫來突出顯示C#中流行語言的語法?
- 11. 語法突出顯示域的特定語言
- 12. Ruby從CLU借用哪些語言功能?
- 13. 隨着時間的推移(以及爲什麼),Scala會刪除哪些語法選項/語言特性?
- 14. Python中哪些語言與其語法類似?
- 15. 百分比C語言
- 16. 命令式語言中的不變性與功能性語言相反
- 17. 找出哪些屬性在C#
- 18. 用C語言中的antlr3解析一些特定的語句
- 19. 語法與C語言
- 20. 哪些語言爲NeutralResourcesLanguageAttribute設置?
- 21. 哪些語言沒有回報
- 22. 哪些語言編譯成CIL/MSIL
- 23. wstring支持哪些語言環境?
- 24. 哪些是新的Android N語言?
- 25. Eclipse不支持哪些編程語言?
- 26. 支持哪些語言的nltk.word_tokenize和nltk.pos_tag
- 27. 語言必須具備哪些功能?
- 28. 掌上電腦接受哪些語言
- 29. 哪些JVM語言是無堆棧的?
- 30. 哪些語言對上下文敏感?
SO的文化是這樣的,我們不喜歡語言戰爭。 「Ruby on C#的好處」很容易讓一些人加入進來。我建議編輯少一點主觀性和議論性。 – 2009-02-23 22:30:48
我不是想開始一場語言戰爭,但是我想得到各種答案,讓一種語言(紅寶石)與另一種語言(C#)不同。 – jsmorris 2009-02-24 21:54:01