Python 3毫不費力地成為發生在Python社區里最糟糕的事。我還記得第一次使用Python的時候,我還在花大量時間在C++這塊上,而Python就像是我的一次開光。我可以打開文本編輯器用幾秒鐘或者幾分鐘寫出一個可以工作的程序,而不是用幾小時或幾天。我記得Python 2.5出來的時候,帶來了一大堆嶄新的簡潔的語言特性。我愛Python,但是我承認它有弱點,但是沒關系,所有編程語言都有。它強大的地方使其變得有趣。Python 3相比Python 2擁有一些小小的增量的改進,但同時卻失去了很多Python 2強大的東西。
Python 2強大的一個地方是它身后巨大的第三方庫,恩,可以做任何事。Python 3沒有這個。是的,很多庫已經移植了,但是仍然有數以十倍的庫沒有移植過去,而且也不太容易。舉個例子,你需要解析X格式,而X解析起來并不簡單,它不是常見的像YAML或JSON的格式。很有可能這個為X的解析器在Python 2里已經寫好了,但是還沒有移植到Python 3。另外,考慮到Python 2的字節字符串(str)和Python 3的字節字符串(bytes)之間的根本不同,移植起來將不會那么容易。事實上會很難移植,并且需要一點移植技巧,像維護Python 2和Python 3的兼容性那樣。因此,你有一些選擇,可以用Python 2(一個被棄用的語言)快速寫你的app,導入一些庫(還有它們所有的依賴),可能會有十倍之長;或者可以用另外的編程語言,它也有很多第三方庫,但是不會面臨Python 2/3的問題。第二個選擇顯然不是很流行,因為不然,我們就有大量Python 3寫的app產品,然后Python 2的一大批庫會被移植過來。(譯者注:這個邏輯貌似有點問題?)這兩種都沒有發生。人們要么繼續用Python 2寫軟件,要么選擇另一個不自己打臉的語言。
另外一個Python 2的強大之處是用它寫的程序幾乎總是能夠不用大量修改而運行在Python的下一個版本上。如果你的公司運營在用Python 2寫的軟件上(就像很多公司那樣),移植到Python 3將會消耗大量資金,因為你的requirements文件可能十分大,并且充斥著各種還沒有移植到Python 3的庫。沒有哪個理智的商業理由會花成百上千甚至百萬美元價值的開發時間來移植到Python 3。如果相比更便宜的話,你都可能會要求某某把他們整個代碼庫移植到Ruby。現在如果你必須要重寫你的軟件的話,你會選擇Python 3嗎?不。
那些支持Python 2和3的比較流行的庫幾乎都只用該語言的子集,這樣在兩個平臺上就都能運行。SQLAlchemy,我喜愛的Python庫之一,它這樣做的很好。Django也如此,但是做得不那么好。這個語言子集,我會稱之為Python X,使用起來很沒意思,需要一些奇淫技巧,并且通常沒有Python 2或者Python 3強大。把Python 2的庫移植到Python X有意思嗎?很可悲的是一點意思都沒有,因為令Python偉大的就是這些樂趣。
新聞熱點
疑難解答