Python 3 正在毀滅 Python 嗎?

來源:互聯網
上載者:User
... Python 2最重要的一個優勢在於擁有眾多的第三方庫,可以用來做任何事情,但是Python 3沒有這個優勢。誠然,有很多的庫已經移植到Python 3了,但是有更多的庫沒有移植,也不容易移植。例如,你需要解析 X,但是X不像YAML和JSON那樣容易解析。很可能有一個第三方的解析器可供選擇,但是只可以用Python 2,而沒有針對Python 3的移植版本。此外,加之Python 2中的位元組字串(str)和Python 3 中的位元組字串(bytes)之間有著功能上的差異,使得這更難移植。而事實上,移植它非常困難,並且需要很多的小技巧(trick)來相容Python 2和Python 3。所以,你有兩種選擇,要麼使用Python 2 (已經不建議使用的語言)快速的開發你的程式,但這會花費你十倍以上的時間去移植相關的庫(以及所有的依賴)。要麼,使用另一門同樣擁有很多庫的程式設計語言,但是不用再困擾於Python 2 / 3之間的問題。第二種選擇顯然不受歡迎,因為如果我們這樣做了,在我們的生產環境中已經有很多Python 3的程式了並且大部分Python 2的庫需要被移植。不管這些情況是否存在,人們要麼繼續使用Python 2開發程式,要麼選擇另一門不會打自己臉的語言...
文章連結:Python 3 正在毀滅 Python

回複內容:

謝邀。先總結一下該文觀點
  1. Python 2.x的優勢在於擁有眾多的第三方庫,雖然有很多庫已經移植到Python 3.x,但也有很多沒有移植,而且有很多庫很難移植。
  2. 已有的Python 2.x項目可以無縫移植到Python 2.x的新版本上,而移植到Python 3.x上將更難,需要花費更多的人力物力。
  3. 大多數比較受歡迎並且支援相容Python 2和Python3的庫是通過運行在各自平台上的語言子集(subset)來寫的。
  4. 最好的辦法是Fork 2.7製作2.8,但官方卻不支援這種做法。
該文作者說得很有道理,但我覺得Python 3.x並不會毀滅Python,會令Python社區變得更好。
  1. 第三方庫現在越來越多庫已經轉向相容Python 3.x,看PyPI上的列表https://pypi.python.org/pypi?:action=browse&c=533&show=all。是有些庫使用了所謂語言子集來實現相容Python 2 & 3,或者是使用six這個module來協助處理跨Py2和Py3的相容問題,這些有可能會影響效率,但是,對於整個程式而言,相信核心模組的演算法最佳化帶來的效能提升會遠大於這些損失。而且有2to3.py這個指令碼可以協助轉換產生Py3 Only的指令碼來發布,完全可以做到自動化。
  2. 如果是現有的項目,相信很多都還處理Py 2.4-2.6的階段吧,相信連Py 2.7都不會到,何況更新的庫。這些老舊代碼,相信有一些庫的升級版也不一定能支援到<=Py2.5了吧。老的服務就讓它持續運行下去,沒有必要非要對它動刀。要是真的想要升級,其實無論如何都會引起重構的了,那是要選擇稍作修改,重用絕大部分的Python相容代碼,移植到Python 3,還是直接換一種語言,從頭來過,就是總監要想的問題了。
  3. Python 3把bytes和str的行為分開,是一件好事,終於把一個曆史遺留下來的錯誤fix了,居然有人說不好?
  4. Python 3每次升級都會帶來新的stdlib,會fix掉一些錯誤,還可能會加入新的文法。比如Python 3.4.x裡面新的asyncio庫,最愛!
舊的項目,stays in Python 2。若你要開啟一個新的項目,Why not choose Python 3?新生代py程式員可能更願意用py3,各種教輔資料也會慢慢轉向py3。py2到3就是進步,C語言還幾十年幾乎不變呢。向下相容可能成為發展的阻礙,看看Windows。Python依然是主流語言,隨著py2停滯開發,py3必然會慢慢替代py2,不斷加入新特性和修複以前的設計錯誤,使之成為更好用的工具。不能因為你習慣2,不想接受新東西就排斥3,沒好處的,就像WinXP與win7,新軟硬體很多已不再支援XP如果python3改名叫python++可能就沒爭議了。。。不會,python3隻會毀滅python2,因為這本就是它出現的意義Python3 開發了6年,毫無建樹。Python3沒有革命性的創新,又不向下相容。
照這樣折騰下去Python真的要滅亡了。

反觀PHP這幾年一直在蓬勃發展,命名空間,包管理,HHVM,PHPng,還有非同步並行的Swoole。曾經Python說自己是下一個PHP。結果呢。。。

其他語言如Golang,Node.js也逐漸火起來了。Python還是那樣不溫不火。可以說Python3這6年真的是致命錯誤。1 C++是一個和C完全不同的語言,但是它向下相容C
2 看不出Python3有任何理由不相容Python2的文法。因此,唯一可以解釋的,就是Python官方希望像一個獨裁者一樣領導社區,“反對我的都去死”。 那麼社區的回應就是“獨裁者去死”。
3 Python3對於Python2的語言特性優勢,根本不足以打動Python2社區。
4 既然Python開源,而且著作權限制比GPL還弱, 那麼一旦Python官方停止對2.x的支援,一定會有社區自發維護的版本,不會比官方做得差。
5 既然得罪了社區,那麼得到的回應就會有很多開發人員抵制Python3,堅決不會將他們開發的庫升級到3新手學,幹下哪個版本啊?因為我在c++界混了那麼多年所以我很吊,所以你們該聽我說說話:
python的優勢就是庫多,我能快速抄襲別人的庫,從而瞬間開發。
然而python3不相容我用的庫。
什麼,你說移植?那種髒活累活怎麼能讓我這麼有經驗,這麼高貴優雅的人去幹!!!
我建議你們趕緊fork出來一個我能繼續用的版本,最好啥也不改,以便於我即能什麼都不用改我的碼,又能聲稱我用的是最新版本,以便裝逼
其他人的建議都不值一提,你們要是不聽我的,就會死的跟perl社區一樣慘。
——作者精神概要Python 3的原罪就在於break了back compatibility,並且沒有成功的說服開發人員為什麼他們需要遷移到Python 3上來。

但要說Python 3會殺死Python我覺得實在是言過其實,Python的生態系統擺在那裡,可能在一些方面被其他語言和技術超過,但是總體而言地位依然是穩固的,畢竟在大多數應用情境下,它的效能並不是一個大的問題。

不過負面影響總是存在的。Python 2.x於3.x這個膠著的狀態,在社區造成了很大的分歧。而這個分歧拖下去的時間越長,對於Python未來的發展就越不利。為什麼呢?因為其他競爭者都在快速的演化。例如在最重要的web開發領域,node.js和Go正在吸引越來越多的注意力。特別是Go,syntax和Python差別不大,out-of-box的效能卻高了不止一個數量級。這促使不少的開發人員,尤其是那種願意嘗試新技術並且廣為傳播的(所謂的evangelist),在面對2to3這個選擇的時候,索性直接將整個技術棧換成Go。

個人而言,為什麼不願意遷移到Python 3呢?一句話:Python 2 just works。Python 3缺乏讓人眼前一亮,想要躍躍欲試的feature upgrade。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.