为什么 Python 不用 C++ 实现?
程序员文章站
2022-05-23 20:42:00
...
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 封装、多态这两个特性根本用不到 OOP 语言。必须非用 OOP 语言不可才能比较容易实现的特性是实现继承 (implementation inheritance) 。所以我说喜爱 OO 的人先看看你的系统里实现继承多不多。实际情况是除了 UI framework 没有什么地方非要用到实现继承。 从Python的源码实现上可以认为,Python和C++是分别对C语言做了面向对象的“扩展”,而它们的“扩展”思想是不一样的,C++是极尽可能地减少性能上的损耗,而Python一切都是为了简化对象的高层视图,所以Python用C开发则不需要先经过C++对面向对象的理解,直接用更底层的材料按自己的想法构建出另外一座高楼大厦 在很多大型的C工程中,都采用或部分采用了面向对象的思想,使用C语言写一些封装和对象类似的封装,这样只是为了以面向对象的思想更好的组织整个工程.并不是说写一个面向对象的语言就要另一个面向对象的语言来实现.
还有很多语言底层是用C写的,很多网络库,网络工具等. 个人认为:
1. c语言更接近底层的操作系统,能更耦合于操作系统(你想想为什么LINUX不用C++去写)
2. C语言写使跨平台更好,同样还是观点1中的,操作系统是C写的 因为CPython太老了,而在CPython基础上使用新架构的Pyston是用C++11实现的。 python在windows下的实现都是调用API,这个用C足够。MFC的话只能用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 封装、多态这两个特性根本用不到 OOP 语言。必须非用 OOP 语言不可才能比较容易实现的特性是实现继承 (implementation inheritance) 。所以我说喜爱 OO 的人先看看你的系统里实现继承多不多。实际情况是除了 UI framework 没有什么地方非要用到实现继承。 从Python的源码实现上可以认为,Python和C++是分别对C语言做了面向对象的“扩展”,而它们的“扩展”思想是不一样的,C++是极尽可能地减少性能上的损耗,而Python一切都是为了简化对象的高层视图,所以Python用C开发则不需要先经过C++对面向对象的理解,直接用更底层的材料按自己的想法构建出另外一座高楼大厦 在很多大型的C工程中,都采用或部分采用了面向对象的思想,使用C语言写一些封装和对象类似的封装,这样只是为了以面向对象的思想更好的组织整个工程.并不是说写一个面向对象的语言就要另一个面向对象的语言来实现.
还有很多语言底层是用C写的,很多网络库,网络工具等. 个人认为:
1. c语言更接近底层的操作系统,能更耦合于操作系统(你想想为什么LINUX不用C++去写)
2. C语言写使跨平台更好,同样还是观点1中的,操作系统是C写的 因为CPython太老了,而在CPython基础上使用新架构的Pyston是用C++11实现的。 python在windows下的实现都是调用API,这个用C足够。MFC的话只能用C++。 用面向对象的语言开发面向对象的语言经常迷失
推荐阅读
-
为什么在美国的cs编程入门课大多有java和python。而在国内首先学习的语言是c/c++?
-
【C++实现python字符串函数库】二:字符串匹配函数startswith与endswith
-
Linux下python与C++使用dlib实现人脸检测
-
Python实现字符串的逆序 C++字符串逆序算法
-
Mybaits 源码解析 (五)----- 面试源码系列:Mapper接口底层原理(为什么Mapper不用写实现类就能访问到数据库?)
-
如何利用Boost.Python实现Python C/C++混合编程详解
-
Mybaits 源码解析 (三)----- Mapper接口底层原理(为什么Mapper不用写实现类就能访问到数据库?)
-
ubuntu c++ 调用 python实现交互
-
如何利用Python实现简单C++程序范围分析
-
如何利用Python实现简单C++程序范围分析