本來做一個勤勤懇懇的碼農我應該學習佩雷爾曼前輩的作風 --- "佩雷爾曼反覆說他已經退出了數學界,不再認為自己是職業數學家了。"
不過鑒於Gtalk跳出很多朋友 -- 寫PHP的和寫Java的 -- 很高興的告訴我偉大的CSDN上出現了一條新聞:
[獨家]Google將限制Python語言的應用 開發社區熱議 http://news.csdn.net/a/20091116/214803.html
加上很多菜鳥們無知的寫到"看得心都碎了。"
我這顆不甘寂寞的心久久不能平靜。
還是寫一點東西吧。
不過,先做一個廣告,我在賣python空間 http://stdyun.com/vhost 。
11月11號開始小規模出售,目前已經賣出11個,預定幾個,距離一台機器賣50個目標還很遙遠,不過距離賣出30個新增另一個機房第二台伺服器已經很接近了:)
鑒於CSDN編輯翻譯的非常非常非常糟糕 -- 斷章取義,詞不及義,加上不懂Python。
大家還是先去看看原帖 http://groups.google.com/group/unladen-swallow/browse_thread/thread/4edbc406f544643e
原帖在Unladen Swallow的論壇上。Unladen Swallow是Python的一個分支,由Google的一組開發人員組成。
我來翻譯一小段:
kgn
I'm told that Google employees are being discouraged from using Python for new projects,
which seems silly given how much Python code and Python support comes out of Google.
I've hunted for more information but haven't found any.
Do you know any details, or is this just a rumor?
我聽說Google不鼓勵員工在新項目中用Python。
Google把如此多是Python代碼和Python支援挪走聽起來很傻。
我想再八卦一下,可惜沒找到什麼爆料。
你瞭解更多細節嗎,又或者只是謠傳。
Collin Winter
Well, simple common sense is going to limit Python's applicability when operating at Google's scale:
it's not as fast as Java or C++, threading sucks, memory usage is higher, etc.
One of the design constraints we face when designing any new system is,
"
what happens when the load goes up by 10x or 100x?
What happens if the whole planet thinks your new service is awesome?
"
Any technology that makes satisfying that constraint harder -- and I think Python falls into this category -- *should* be discouraged if it doesn't have a very strong case made in its favor on other merits.
You have to balance Python's strengths with its weaknesses:
your engineers may be more productive using Python,
but if they have to work around more platform-level performance/scaling limitations as volume increases, do you come out ahead?
etc.
恩,顯而易見,一些缺陷將限制Google在做大規模時使用Python:
沒Java或是C++那麼快,糟糕的線程,高的記憶體佔用,等等。
我們開始設計任何一個新系統時,我們需要面對的問題是:
當負載增加了10倍或者100倍系統會怎樣?
當全世界都讚歎你的新應用令人難忘時會怎麼樣?
在這樣有高難度的挑戰面前,什麼技術都很難讓人滿意 -- 並且,我認為Python也是屬於這類 -- 如果沒有什麼特別的應用情境,在其他方面使其將功贖罪的話,"應該"不被鼓勵使用。
你需要權衡Python的優缺點:
你的工程師用Python生產力會更高。
但是,隨著壓力膨脹,當你不得不去面對更多平台層級的效能/可擴充性時,你能領先(問題)一步嗎?
等等
--------------------------------------------------------------------
點評:
到此為止,大家可以看到,其實這兩人就是在隨便扯扯 -- 大意就是,Python不是萬能,一切都是要權衡的 -- 與那標題黨的標題基本沒有什麼關係 。
這簡直就是廢話 -- 從來沒有一個 Pythoner 認為 Python 是萬能的 -- Python是我們偉大的膠水 -- 倒是有很多Cpper和Javaer認為自己的神是萬能的。
--------------------------------------------------------------------
接著看下面的郵件,CSDN的編輯不懂Python,沒搞懂Cython是什麼,把它和CPython混淆了。
CPython是python的官方解譯器。
Cython是用類似Python文法,給Python寫C擴充的方式。
Cython is a language that makes writing C extensions for the Python language as easy as Python itself. Cython is based on the well-known Pyrex, but supports more cutting edge functionality and optimizations.
Cython是一種語言,讓用C給Python寫擴充和寫Python一樣容易。Cython從廣為人知的Pyrex的基礎上發展起來,但有更多的轉換函式和最佳化。
事實上,Python+Cython是一種很爽的組合方式,如同 Tom Machinski 所說
"""
Specifically, if an engineer wishes to pursue a performance-intensive
project in Python, why not tell him to use Cython (or Python with some
C extensions) rather than force him to a completely different language
like Java or C++.
An engineer who picks Python as his first choice is probably familiar
enough with the language to utilize Cython / C-extension effectively,
and would probably rather do that than use any of those completely
different languages. As a bonus, Google gets a tool that's probably
easier to maintain than your common C++ codebase.
確切地說,如果一個工程師希望在Python的項目中追求效能,為什麼不告訴他如何使用Cython(或蟒蛇和一些C擴充),而不是強迫他一個完全不同的語言:如Java或C + +。
一個Pythoner的程式員,不難熟悉運用Cython / C擴充來追求效率。而且這樣做或許會比用其他完全不同的語言更合適。
同時,Google也能得到一個比C++程式碼程式庫更容易維護工具。
"""
當然,一般而言,普通代碼用Cython最佳化沒什麼明顯效果,用它封裝一些瓶頸的函數就可以了 -- 更多時候是用來把C庫變成Python的庫 。
=====================================
好吧,大家就不要扯淡了。
莊子逍遙遊有云:
且夫水之積也不厚,則其負大舟也無力。
覆杯水於坳堂之上,則芥為之舟;
置杯焉則膠,水淺而舟大也。
風之積也不厚,則其負大翼也無力。
故九萬裡則風斯在下矣,
而後乃今培風;背負青天而莫之夭閼者,而後乃今將圖南。
有資格去設計這麼大應用的時候再去指手畫腳吧,Python寫網站抗個日PV幾KW還是很小case的。
Google怎麼做,只是用來吹牛的聊資罷了,何況Python之父還在Google呢。
現在 -- 該幹嘛幹嘛去。
再批判一下CSDN,當年誤導我鑽研C++ Template,浪費了一年半載的光陰。
唉,我又浪費青春在口水戰中了。。。