標籤:

為什麼 Python 不用 C++ 實現?

python源碼里,C的代碼已經完全對象化了,封裝、多態等特性已經用C實現,那為什麼不直接上C++?這也能使代碼可讀性更強


參見:

Why is Python written in C and not in C++?http://programmers.stackexchange.com/questions/20988/why-is-python-written-in-c-and-not-in-c

1. CPython 1.0發佈於1989年,那時候C剛剛標準化,C++還不為人知

2. C比C++有更好的移植性

3. 重寫代碼是一件大工程


CPython為啥用C而不是C++實現, @用心閣的回答已經很明確。

至於時至今日為啥不用C++實現Python,題主是想要Dropbox的Pyston唄,C++實現的Python


因為CPython太老了,而在CPython基礎上使用新架構的Pyston是用C++11實現的。


封裝、多態這兩個特性根本用不到 OOP 語言。必須非用 OOP 語言不可才能比較容易實現的特性是實現繼承 (implementation inheritance) 。所以我說喜愛 OO 的人先看看你的系統里實現繼承多不多。實際情況是除了 UI framework 沒有什麼地方非要用到實現繼承。


在很多大型的C工程中,都採用或部分採用了面向對象的思想,使用C語言寫一些封裝和對象類似的封裝,這樣只是為了以面向對象的思想更好的組織整個工程.並不是說寫一個面向對象的語言就要另一個面向對象的語言來實現.

還有很多語言底層是用C寫的,很多網路庫,網路工具等. 個人認為:

1. c語言更接近底層的操作系統,能更耦合於操作系統(你想想為什麼LINUX不用C++去寫)

2. C語言寫使跨平台更好,同樣還是觀點1中的,操作系統是C寫的


從Python的源碼實現上可以認為,Python和C++是分別對C語言做了面向對象的「擴展」,而它們的「擴展」思想是不一樣的,C++是極儘可能地減少性能上的損耗,而Python一切都是為了簡化對象的高層視圖,所以Python用C開發則不需要先經過C++對面向對象的理解,直接用更底層的材料按自己的想法構建出另外一座高樓大廈


用面向對象的語言開發面向對象的語言經常迷失


python在windows下的實現都是調用API,這個用C足夠。MFC的話只能用C++。


推薦閱讀:

Python為什麼直接運行和在命令行運行同樣語句但結果卻不同,他們的緩存機制不同嗎?
在Mac系統下python如何安裝第三方函數庫?
Python3如何實現兩個列表的交叉列印?
初學python,pycharm和Spyder哪個好?
python3.5有哪些可用的第三方模塊?

TAG:Python |