Node的開發者大都是它的早期的接受者,他們更喜歡自定義而不是按慣例創建結構/模式,這樣使他們覺得更舒服。它吸引開發者使用已知的語言(JS)去處理高層的并發。Node作為一個框架處理的水平比經典的MVC更底層一些。Node開發者們也真的喜歡這個在服務器和客戶端使用相同語言的想法。
Clojure
理念:
實用且符合現代人使用的Lisp
一切皆是數據
并發性,并發性,并發性
讓那該死的可變狀態見鬼吧
能夠很好地與Java協作
稍微靠近科研路線,但并不影響他的實用性
個人觀點:
我最喜歡Clojure的一點是它的lisp精神。一旦你攻克了它的圓括號和操作符/參數順序,那么Clojure將很可能讓你重新思考你構建代碼的方式。對于處理數據跟強迫你保持代碼簡短這兩方面來說,它真的很棒并且高效。
讓我頭疼的是我并非擁有足夠的聰明去更多地編寫Clojure。當我嘗試去追蹤那些數據時,我的大腦會出現棧溢出。對于該語言來說異常通常是沒意義的,假如你嘗試解決別人代碼的bug,這將會是機具挑戰的事情因為Clojure本身是復雜的語言,并且可以用宏來拓展。最后,Clojure社區并不是真的面向web開發,Clojure完成的大多數作品都是以數據作為中心的。
Clojure主要吸引了那些處于邊緣,對編程語言有求知欲,面相數據的程序員。如果你尋找有編程語言怪癖的數據處理專家,那么Clojure將會是吸引他們的好方法。
Scala
哲學:
同時具有面向對象與函數編程世界的最佳優點
讓編譯器為你做一些工作
并發事務
比Java少一些規范,但是目標在于相同或更好的性能
與Java生態系統和諧共存
個人意見:
當目標是JVM時,Scala目前是我所選擇的語言。它的學習曲線陡峭。 知道何時使用 FP 與 OOP是非常復雜的,而且在應對該語言語法本身時也是如此。
那就是說,獲得使用FP的好處,同時又在需要的時候仍然保持OOP,是非常有用的。一旦你“掌握”了該語言的風格,寫Scala實際上是令人愉快的,而且它的社區也非常友好。
Play框架確實很好,它提供了一個很好的替代Rails的選擇,特別是對API開發來說。Twitter的工程師團隊為此提供了許多資源與開源代碼。
目前使用Scala是一個非常安全的選擇。Java開發者會有舒適感并會嘗試這種更加“現代的”語言。動態語言開發者不會感覺太陌生,并且獲得了Java生態環境,性能提升,并發性和永恒性。如果編譯時間不會使你感到沮喪的話,現有工具以及慣例使得在一個成長的團隊中使用Scala非常不錯。
不過就像Ruby,Scala社區的文檔不是很豐富。我真的希望 API文檔 可以重新編寫得更直觀,總的說來就是更有用。但是公平的說,已經有許多非常好的資源了,比如Martin Odersky (Scala的創造者)提供的Twitter的 Scala學校和Coursera的Scala 課堂之 FP 。
Scala主要是吸引了好奇的Java開發者,他們想要一些更現代的東西,就像Ruby/Python開發者想要他們語言的一個更具伸縮性的版本。對于吸引那些想拓展它們現存開發環境的偉大的開發者,以及那些可以充分利用該語言二元性的開發者來說,Scala是一個好方法。
Go
更強大的C
你可以自己管理內存,前提是你不能粗心大意
直觀的代碼更好
豐富的代碼庫
效率很快..對于任何一個部分來說(從編譯到執行)
存在并行編程模式,并且簡單使用
文檔很關鍵
個人觀點:
我真的很喜歡Go(亦稱Golang)。在我使用它幾年之后,我選擇使用它來開發我自己新項目的API。Go或許對于一些人來說有些無聊,但它的簡潔與效率是真材實料的。
Go強迫你更多地去思考你的代碼的結構,你的數據/代碼行為,因為你不能總是堅持面向對象的編程模式。我發現我的代碼總算變得容易調試,結構更簡潔,但有時會重復性比較大(例如:錯誤處理)。
沒有比Go更加方便地開發并發業務的語言了。一旦需要編譯,你的代碼編譯加上運行的時間會比Rails服務器啟動的時間還快。Go支持一些鴨子類型(duck typing,動態類型的一種風格),這造就了從Ruby(舉個例子)轉換過來顯得頗為簡單。對比起一些腳本語言,它所編寫產品的性能實在讓人覺得驚嘆,并且它占用的內存很小。
Go被設計為一個人或是一個大團隊都可以為同一代碼庫工作的語言,而且它的身旁有很多很棒的工具值得你使用。
然而,它不是完美的語言。有時第三方依賴庫很讓人頭疼。當你在高水平編程中運用了Go會讓你覺得它的水平太低了。有些語言設計時的決策有時會引起困惑(例子:交互式接口和結構化設計)。
初創公司里,Go看起來在性能和并發事務方面變得越來越流行。我見過很多初創公司用Go替代了Node,而且另一些公司添加了Go應用作為擴展程序。
Go社區里看起來混合了一些老的C/C++學校黑客和一些喜歡低水平語言的年輕人。Go語言和社區的領導者固執的相信讓人們理解他們的想法是很容易的。同時他們也允許你能快速的評估你接受他們哲學后是有多么的舒適,而且可以發現是否能達到你的預期效果。
Go主要吸引著面向性能和結構體系的開發者。他們想要輕易的實現并發,要達到C的執行速度,也要達到Python/Ruby的開發速度。他們不想在找一個新的有趣的語言,他們需要一個堅定的妥協。
技術驅動理念
技術的選擇會受到理念的影響。你需要清楚而謹慎地權衡你選用的技術是否與企業的價值觀一致。做出正確的決定有助于你從技術細節的糾纏中擺脫出來,擁有更多投入商務運作的時間。
原文轉自:http://blog.sae.sina.com.cn/archives/651?qq-pf-to=pcqq.c2c