【洪強寧的回答(89票)】:
太多硬傷和臆想,懶得批。只說“代碼超過 10w 以后你就別想用 python 開發了”這一句,2012年4月豆瓣主站項目代碼行數就近50萬行了,可我們還在用 python 開發。
【劉鑫的回答(42票)】:
我寫過幾年Python,也寫過幾年CPP,寫過幾年CS,Python做大項目沒什么問題,不會比其它主流語言更差,項目的可控規模多大,主要還是取決于人,不是語言——語言當然有差別,但是沒有宣傳的那么大。至于開發工具的問題,高水平的開發人員根本不會依賴開發工具。而且,Python本身不是那種非常依賴代碼補全等功能的技術,我習慣的組合是emacs+ipython+python-mode,用doctesting做TDD,效率很高。最近一段用sublime text比較多,也沒覺得離開習慣的環境就做不下去。
至于錯誤在運行時,這就看自動化測試的水平了。Python項目出現的bug不會比CPP或Java更高。
如果用不好,什么都是爛語言。這是個相當廉價的態度。
==========
看了一下鏈接里的文章,覺得挺可樂,那位老兄根本不知道Python比Java還要早一年發布吧……(準確的說,1994年是python發布了1.0版,而第一次publish代碼是在1991年的0.9.0版)
【猛禽的回答(3票)】:
雖然在TL組的另一個帖里回復過這位microcai,既然在這里看到就再說一下吧。
在那個帖里,他說道:
但是說實話,他這段恰恰就是“缺乏根據在那里胡扯”,而且是從開始提到python就扯——比如解釋器比編譯器(他還給說成了匯編)簡單,除了C++那種變態級別的編譯器,python的解釋器不比其它編譯器簡單多少。另外,python也需要編譯為pyc,除非說.net/java也是解釋語言,何況就算是編譯成目標代碼,也有cython這種間接方式,或是pypy這種動態方式。
當然我不會真的逐條反駁這么浪費時間的,上面這條就足夠說明他的問題了。
回到樓主的問題上:python是否不適合大型項目?
成功的例子參見 @洪強寧 等人的答案。
事實上項目管理的根本問題是對人的管理。java之所以適合做大項目,很大原因在于比較容易找到一幫水平差不多的人,并且管理起來也比較容易。python的優點是易學,雖然找一大幫人不容易,但培養起來比較快,規劃得當問題也不太大。但是C++就不同了,找一幫會C++的人不難,但是水平參差不齊,如頂樓匿名人士所說“你修不盈新手挖的坑,扶不正老人搭的廟”,就算是找到一幫C++高手,還各有各的習慣和愛好。至少python還有pythonic這條陽關道。
【梁濤的回答(7票)】:
根據這些年用過的編程語言,我總結出一條判斷語言是否值得學習、使用的指導原則:
易用、靈活、高效,一門編程語言最多只能同時擁有兩項。
易用 包括:
1. 簡潔,易讀、易理解、易寫;
2. 一致性好,易協作,易接手維護;
3. 基本構造緊湊;
4. 盡可能自包含,擁有豐富的類庫和軟件包支持;
5. 可移植,對執行環境的假定越少越好;
6. 從編寫到執行,整個過程涉及的工具越少越好,程序易部署;
7. 手冊可隨手取用。
靈活 包括:
1. 伸縮性好,刪除依賴性與加入依賴性一樣簡單;
2. 允許在不同層次上抽象(含DSL);
3. 支持多種編程范式;
4. 盡可能適用于更多的領域;
5. 可定制語言子集(方言);
6. 可編譯執行,也可解釋執行。
高效 包括:
1. 編寫快,越快越好(考慮工具支持與純手寫);
2. 編譯快,越快越好;
3. 除錯快,越快越好;
4. 執行快,越快越好。
還有一些特性沒有羅列出來。
仔細考慮一下,上述各特性不乏相互對立的,如何取得平衡,完全視應用環境而定。
這些特性考量將與設計哲學相互影響,最終決定一門編程語言的編寫風格與使用方式。
但終究,一門編程語言被設計出來的主要目的,是在成本最小化的基礎上,盡可能好地解決某些問題。
另外,不從架構角度考慮開發與運維、用戶操作的關系,做出來的東西必然到外都是坑,且很難持續。
不要隨便看不起一門編程語言,它被發明出來必然有其用處。
在恰當的時機用適當的語言解決正確的問題比什么都重要。
【徐辰的回答(17票)】:
NASA用FORTRAN把人送上了月球;K&R用匯編和B語言寫出了UNIX……
有爭論哪種語言好的功夫還不如去改改程序里的Bug,優化下執行效率,要不就美化下代碼多寫兩行注釋,省得總有人說你正在用的語言是個爛語言……
【李遙的回答(1票)】:
我用Python做過商業項目,在同時支持python2和python3以及各種小版本號的時候覺得被坑了。不是完全沒有walkaround,但是回顧時覺得選擇Python很不明智
【王亞暉的回答(5票)】:
沒有爛語言,只有爛人寫的語言罷了。
【池靜若的回答(5票)】:
寫大項目主要是邏輯的管理,和人的管理能力,與語言沒關,有些語言強制加了管理能力,就省了很多管理的規劃。舉個淺顯的例子。
匯編語言是最沒管理能力的,甚至變量就是內存和寄存器
C語言有點管理能力,至少分了全局,局部,函數,函數體內變量隔離
匯編就不說了,C語言對于沒經驗的幾個人來說很難寫大型程序,
但是簡單的規劃一下就可以寫了
例如,每個變量都前綴個人的名字,int tom_var; char jerry_var;float xx_var;
然后如果需要共用的,就寫 int public_var;
函數同樣處理,這是個非常好的技巧。。。。。。。
但是這種技巧一直被別有用心的公司諷刺
于是出現了C++;c++ 其實把名字換成了命名空間,然后把一些函數加了class頭,然后引入了面向對象的東西。但是class里面加了太多的歧義和難于理解。
于是又出現了,java ,強制用包,類
java算是編譯語言走到的極點,算軟件工程的產物,加了太多管理和約束的東西
導致寫代碼又羅嗦,又麻煩。適合大工程,但是效率很低(開發效率)
python出現了,更接近人的語言,高度的邏輯化,用python 基本上比java的邏輯減少了3倍。
大項目本質上是大邏輯的管理,python從理論上說能寫比java大3倍的項目
一個語言只要具備了,函數,類,模塊,包就是一個具有良好管理能力的語言。
如果你覺得什么語言寫不了大程序,仔細思考一下你的邏輯管理能力
或許 c是個好的鍛煉方式,如果沒有類,每個文件變量會沖突,你該如何解決呢!
分割線----------------------------------------分割線
吐槽。。。。加班中。。。寫代碼。。。。。隨便看到,忍不住吐槽。。。。。,繼續寫。。。
【Pyclass的回答(1票)】:
哪一種語言沒有缺點呢?在適用的領域,用好Python,那Python就是最好的語言,在不適用的領域,即使寫再好的程序,也無法完成任務。 爛的不是語言,而是不懂的人把它用爛了、、、
【長風的回答(0票)】:
可以看看OpenStack有多少行代碼,或者Django多少行代碼
【陳思源的回答(0票)】:
語言只是個工具,python作為動態語言,有快速開發的優勢,遇到大項目時,架構是項目成敗的關鍵,至于bug量,完全的團隊的水平相關,與語言無關
【alexzhan的回答(0票)】:
Dropbox算不算大型項目?但是基本上所有的客戶端都是Python寫的。
有很多網站也是用Python開發的,比如豆瓣還有豆瓣的很多客戶端都是用純Python,Quora也是用的Python,不過最近可能轉到Scala上了。
【夜末的回答(0票)】:
因人而異
【楊浪的回答(0票)】:
用python的好處就是這位兄弟還在跟你講python怎么不好的時候 你的1k行的代碼都快寫完了..
語言之爭從來都是毫無意義,好的設計架構才是最重要的
【馮子浩的回答(0票)】:
為什么python沒有好的ide……因為不大需要……
為什么python沒有強大的debugger……因為不大容易寫出有明顯bug的程序……
縱使Java死搞類型,該出bug的照樣出……
【zhoutall的回答(7票)】:
我記得一句話,寫出來的代碼目的是給別人看的,順便可以在機器上執行。
好的代碼是可讀性強的,好的語言便是為了方便寫出可讀性強的代碼。
我覺得Python很不錯