使用 Visual Studio 開發的情況下 C# 的編程效率能否和 Python、Ruby 媲美?
編程效率是語言能影響得了的么。。
是有一部分語言比較拖沓需要打很長時間的代碼才能寫出目標程序來。但是大多數時候編程效率都不是語言類型決定的而是架構設計、演算法、數據結構構建決定的。我就不信大型程序你想的還能比寫得還快么?所以編程效率的瓶頸根本就不是語言或者IDE,而是自身的姿勢水平啊親!
C#大多數東西可以用linq寫,這個時候和python差不多
但有些東西比如類的定義之類跑不了,這個是先天特性。有時候這是好事,有時候這是壞事,看你幹什麼用。最後一點是你自己用什麼東西熟練。用的熟練的永遠比不熟練的舒服。
沒有最好,只有適用。如果不把學習的代價算進去的話,我很想說熟悉函數式編程和.net的人用VS寫F#的程序要比python和ruby強多了啊
C#各個方面都比Python、Ruby好一個級別
評論的,都帶嚴重的個人感情色彩。話說回來,如果開發大型系統,就不用比了,而開發腳本,那也不用比了。理解了,就不會提這個問題了。
如果項目組上百人,然而開發流程不規範,文檔不齊全,開發人員水平參差不齊……這種狀況估計還挺多的
用python有的你爽,用.net稍微好控制點。開發人員少,代碼行數不多,流程規範,文檔齊全。.net可能顯得有點臃腫了。
-------------------------當然你覺得編程效率就是寫代碼的速度的話,那C#確實不如python拿 Python 來講:
- IDE,我們有 PyCharm
- 動態語言,但是我們有 Type Annotation
- 函數式編程,我們有 ReactiveX/RxPY · GitHub
我覺得並沒有明顯的劣勢。只能說現在各種語言都趨同發展了(比如 C#6 的動態字元串?),弄熟就好。
這種問題問的,從問題就能看出結論來,
c# 是一種編程語言,它運行效率並不差!(可以說不比任何語言差)。那為什麼通常我們還是認為c#效率不好呢,那是指平台,啟動階段,內存管理,聯合起來說的。當然,總體來說,都是因為 .net framework 這個平台的拖累。
c#沒有被編譯到目標語言,而是編譯到中間語言,在具體環境上執行的時候,才被即時編譯到目標語言。這就導致 c# 程序啟動的時候吃力。還得給運行環境上裝 。net framework。
.net 的內存管理,被託付給平台負責。這就導致 .net 程序員,基本上沒有對內存管理的干預,基本上 .net 程序耗費資源多,內存佔用更大。依賴於 gc 發現和回收,gc 的運作也是犧牲了運行時效率。
c# 之所以被人說不好,主要就是它的所在平台的拖累。這個平台打個比方,c#就是被放在一個柴油機車的火車上。質量和慣性太大,啟動的時候相當費勁。需要吭哧別賭的花很久,但是火車一旦跑起來了(這時候編譯也完成了,內存也足夠用,也不需要主動釋放,就隨隨便便的放在那),剩下的就沒有人能阻礙它的速度了,和汽車就一樣快了。
c++就好比一輛法拉利跑車,質量小,慣性小,馬力大,沒什麼平台拖累,跑跑停停那是輕鬆的。有個IDE還是很好的,尤其是編譯型語言,可以更好的監測內存,CPU使用度,可以更迅速方便的追蹤Bug所在。我覺得大部分開發時間都用在了Debug上,所以~能夠快速Debug,也是IDE好處所在。
從大家的評論看得出,這裡90%的人,都不理解python,ruby這些動態語言,都是靜態語言的思維方式。你會不會這些動態語言不重要,問題是你能用動態的方式來編程么?如果用靜態語言的思維方式來使用動態語言,那還有什麼好討論的呢?居然還有人說動態語言舉出eval,用個&
看問題都客觀些吧。
1.VS開發、調試等效率的確高,但問題是,貴 + 臃腫 + 巨占內存與硬碟。LinuxPython上班第一天就在寫代碼,VS上班第一天估計得淘寶搜內存條,淘寶搜硬碟,否則那就是卡卡卡卡卡卡。
2.VS + C#再比Python先進,但寫個非常簡單的小腳本,開發效率依然比不上記事本 + Python以及雙擊py源文件直接運行。VSC#屌和Python大神比賽寫世界你好,當VSC#屌剛打開VS創建好工程,Python大神早就已經在屏幕上運行完"世界你好.py"然後開車回家吻嬌妻鬧孩子了。
3.VS + C#再屌,在需要海量伺服器的情況下,前期投入成本可能會完敗於Python + Linux。人家512M內存的Linux在優化下可以跑得汪汪叫,你一個Windows Server 2008 R2估計開機後就先卡半天然後報內存不夠,接著就是我們又熟知的流程,淘寶內存條,淘寶硬碟,不然那就繼續卡卡卡卡卡。
4.對於Python的開發效率來說,目前我覺得主要問題有兩點,第一是缺少一款高效率的原生IDE,第二是語言在某些功能上不如C#對程序員那麼友好,第三點是原生對多線程支持不好(不過這是UNIX/Linux的歷史問題,不怪Python)。我個人認為效率是相對,這要看個人對工具使用和語言的熟練和熟知程度,還要看所選語言的特性對將要解決的問題是否合適.變數很多...
用http://vs.net寫過c#再來寫python 那感覺就像開完轎車換了輛摩托
從ide到語言特性 c#寫起來都不慢
我們不能比較兩個語言都從0開始誰開發起來更快 這不科學 經過積累輪子都會有的
但編譯運行其實挺煩的...
用合適的工具做恰當的事。也許有一些語言可以在不依賴任何工具的情況下高效的做任何事,比如python ruby等等。但是對於c# 或者java這類靜態預編譯的語言,在有IDE的情形下,一定會比拋棄IDE使用文本編輯器要高效的多。IDE不只是一個編輯器,它是多種開發流程的集成,一站式服務,不是文本編輯器所能比擬的,包括VIM等高擴展的文本編輯器。
一部分說 C# 開發效率低的恐怕是沒用過 ctrl + . 。
類、屬性、方法什麼的統統交給 VS 自動生成就好。方法的話最後記得把 throw new NotImplementedException(); 改成真實的實現。
---
一部分說是否自帶函數式範式不重要 Rx 全平台都有的,可能是沒區分好 FP、RP 和 FRP。
---
一部分說 XXX 語言可以寫 C/C++ 擴展所以性能好,簡直醉了。
只能說 C/C++ 擴展的性能好,以及 XXX 語言的互交互性不算太爛而已。(要是不能跨語言交互那是得有多爛)
---
從一開始動態語言的優勢就不在於動態,只是原有的靜態語言多是翔而已。
靜態語言開始注重語法的時候,確實動態語言可以說就沒有動態帶來的任何優勢了。
很多人理解中的靜態語言還是 OC 級別的語法,殊不知很多動態語言現在還沒 Swift 簡潔。visual studio 如此強大的IDE,寫啥語言效率都高c# 如此強大的語言,用啥寫,效率都不低
去reddit/quara上面看英文問答吧,這個問題的
適用場景不同吧,如果說是小型項目(如果能力超群,幾百萬行業可以叫小型項目,這個主要取決於作者(們))的話動態語言應該有優勢吧?但是稍大的項目的話就必須規定嚴格的介面,這樣的話靜態語言顯然更好,即使用動態語言的話,也會至少在函數調用上使用類似靜態語言的類型檢查策略,而且是程序員手動檢查。。。反而行數變多也不是不可能的。。。
推薦閱讀:
※Ruby 和 Python 相比有什麼優勢和缺陷?
※如何配置伺服器自動監控並報警?
※Python、Ruby、Go語言哪個更值得學習?
※Ruby 更像 Perl 還是 Python?
TAG:編程語言 | Ruby | Python | C# | MicrosoftVisualStudio |