为什么python是一个非常不好的语言

cai posted @ 2012年12月15日 15:23 in 思维碎片 with tags python 糟糕 垃圾 高级语言 , 5601 阅读

一直以来我都表达 python 是个糟糕语言的观点,但是没有深入的解释。

计算机一直都是“工具”,意味着我们是拿它干活的,也就是所谓的提高生产力。

 

指挥计算机干活的重要工具就是编程语言。计算机并不是训练来干活的,是编程来干活的。编程语言的效率有2个指标:编写干活指南的效率和机器人执行的效率。

 

在人力成本低于硬件的时候,人追捧的是执行效率。

人力成本越来越高的时候,人开始追求编程的效率。

人自然是希望一个语言能两头兼顾。可惜的是 python非但没有带来执行效率(这是python不追求的,所以姑且不算缺点),连它拼命牺牲执行效率希望换来的开发效率事实上也一点没有。

 

执行效率:首先,执行效率和语言本身高级不高级是没有任何关系的。执行效率的高低只关系到冗余操作的多寡。这也是“优化”的基础,去除冗余操作。

冗余操作的多寡通常有3个因素影响到:1 编译器的效率  2 程序员的水平 3 语言本身的累赘

但是衡量一个语言本身效率的,事实上应该是最后一个 "语言本身的累赘",这个才是编译器永远无法改进的,程序员水平再高也无能为力的。

不幸的是,python是一个本身的累赘非常多的语言。而累赘最少的语言,应该算是C++语言了。所有C++用到的功能,没有一个是可以在别的语言用更低的代价实现的。当然,有的语言压根就没有C++提供的功能,必须自己模拟。模拟的代价和C++提供的是一样的,水平不够的人来模拟只能获得更烂的结果。

当然 ,python是个高级语言,语法糖多点,性能烂就接受一下吧!毕竟开发效率高呢(?)

接下来我们说编程的效率。编程效率主要是受5个因素影响:语法是否自然,语义是否凝炼,文档或者或教程多不多,库是不是丰富,开发环境好不好。不用说python的文档还是很多的,但是显然没有c++多。各种粗制滥造的c++教程铺天盖地,算了,这是c++的坏处。误人子弟的教程太多。库当然是C++最丰富了。python还面临着 python3 和 python2 的分裂。

 

开发环境和库一直是C++的优势。不用说 Visual C++这种重量级公司出的IDE ,还有 kdevelop , eclipse CDT 这些免费开源的IDE。自动完成和代码提示让你写代码的时候非常轻松。相比之下 , python 就没有好的IDE了。

当然,接下来是程序员最关心的,语法是否自然,语义是否凝炼。python 的语义自然是很多的,一条语句能相当于写几千行 C 代码。这也是人常说的,语法糖多。可惜的是,C++一样有高级语法糖,而且代价很低!比python低太多了。在这一点上,python没有优势,只有劣质。python的语法糖是以牺牲性能换来的,而C++在不损失性能的同时提供了语法糖。

 

至于语法自然不,仁者见仁智者见智了。对于大多数C学过来的人来说, 自然是C++的语法简单。当然,前提是不使用模板这种高级货。真的用模板的话,模板是属于用起来简单,写起来难的语法糖。我们自然可以选择把困难留给 boost,快乐留给自己。所以这点上 C++没有输。何况python还不支持模板。

 

那么开发效率到底是 C++高还是 python呢?

差不多!

那执行效率呢? 

C++和python不是一个档次的,没法比。

 

好了,单从这点已经 python 完败。不过我想说的还不是这个。

 

如果真的有语言像python那样慢,我觉得对得起它的性能的,就必须拿出像样的功能,这个功能包括

 

语言级的并行能力,语言级的多进程能力 (等等,这不就是shell么!),语言级的SIMD能力(语言级的矩阵运算支持)

语言级的复杂数学公式计算能力  ,内置的标准各种算法(STL笑而不语,不过我要的还不止STL),描述性语义(而非指令性语义)

 

我要求的这些,是高级语言需要具备的,而 python 统统没有,连 shell 都能占上一些!

 

 

 

 

Avatar_small
依云 说:
2012年12月15日 16:13

C++ 难学(难入门也难精通。Python 入门简单)
shell 更难学(精通对一般人几乎不可能)
:-)

哦对了,C++ 还和 Haskell 一样难以编译通过,编译器错误里长长的类型声明占了绝大部分。clang++ 的高亮做得挺好,可惜 C++11 的 GNU 变种的支持有 bug 不知道修正没有。要 C++11 是为了 auto 关键字,GNU 变种忘记了是什么原因。

哦对了,Python 不支持模板是因为它不需要支持模板。当然,动态的同时也带来的性能损失。

Avatar_small
Garfileo 说:
2012年12月17日 17:20

呃?

想当年你个也是差不多这样黑过 c++

也许再过两年,你个又觉得 python 粉好勒

doyle 说:
2012年12月20日 12:13

c++开发效率和python差不多……这是我今天看到的最好的笑话。谢谢让我开心一整天。

Avatar_small
rca 说:
2013年1月29日 09:38

债这里萌萌系黑过它的嘛,还系跟着 linus 屁股后面黑

http://microcai.is-programmer.com/posts/35907.html

风之小祈 说:
2016年1月09日 19:13

何况python还不支持模板

我来类比一下

何况汽车还不支持吃草

请让我笑一会儿...

daftar situs agen sb 说:
2019年3月27日 03:22

Kabar menggembirakan datang kepada para bettor bola lovers, karena telah hadir situs sbobet online terpercaya di Indonesia yakni daftarbolasport.

Agen Bola Terpercaya 说:
2019年3月30日 18:18

Bettingligafox is agen bola online terpercaya giving you the opportunity to join in and enjoy all the facilities that have been provided. In the participation of members to daftar bola online terpercaya in it, so that the services we have become trust in members. The official situs bola online resmi Indonesia is not only limited to being used, but how when members play will get satisfaction and comfort.

bandar bola online t 说:
2019年4月01日 20:42

<a href="http://ligafoxbola.com">bandar bola online resmi</a>

bandar bola online t 说:
2019年4月01日 20:43

[url=http://ligafoxbola.com]bandar bola online[/url]

situs agen judi bola 说:
2019年4月06日 20:13

Thanks for sharing this useful information here

situs judi bola 说:
2019年4月08日 18:32

Kami hadir sebagai situs agen bola resmi indonesia, dengan pelayanan istimewa buat anda dalam cara melakukan pendaftaran serta bertaruh dalam permainan judi bola. Kami terus meningkatkan kualitas dan mengutamakan pelayanan terbaik buat seluruh member baru dan lama. Mungkin dengan begitu kami bisa menjadi terbaik dan lebih baik lagi dari sebelumnya.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter