python是一个非常不好的语言

不同视角、不同观点、深度探讨,禁止人品和道德攻击
蔡万钊
帖子: 420
注册时间: 2009-02-01 19:41
联系:

python是一个非常不好的语言

#1

帖子 蔡万钊 » 2012-12-15 15:30

一直以来我都表达 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 都能占上一些!
头像
qy117121
论坛版主
帖子: 50546
注册时间: 2007-12-14 13:40
系统: Winbuntu
来自: 志虚国乌由市
联系:

Re: python是一个非常不好的语言

#2

帖子 qy117121 » 2012-12-15 15:32

反正我不是程序员
渠月 · QY   
本人只会灌水,不负责回答问题
无聊可以点一下→ http://u.nu/ubuntu

Ubuntu 20.04 快速设置指南,请配合浏浏览器自动翻译使用

邮箱 chuan@ubuntu.org.cn
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: python是一个非常不好的语言

#3

帖子 eexpress » 2012-12-15 15:39

微菜最近果然猛黑这。
加油。
● 鸣学
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

Re: python是一个非常不好的语言

#4

帖子 YeLee » 2012-12-15 15:41

感觉py对于开发者而言是个好工具,毕竟这货可以大大地减轻开发的工作量;而站在用户的角度而言,这货确实不敢恭维,毕竟这货的运行效率确实那个那个了,窃以为,程序员辛苦点,那么下面那一大堆计算机就轻松点。 :em01 :em01 :em01
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

Re: python是一个非常不好的语言

#5

帖子 YeLee » 2012-12-15 15:43

嗯,既然eexpress和mircocai过来黑我大py,那我应该做的应该是捍卫我大py的领土了。 :em01 :em01 :em01
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
蔡万钊
帖子: 420
注册时间: 2009-02-01 19:41
联系:

Re: python是一个非常不好的语言

#6

帖子 蔡万钊 » 2012-12-15 15:46

YeLee 写了:感觉py对于开发者而言是个好工具,毕竟这货可以大大地减轻开发的工作量;而站在用户的角度而言,这货确实不敢恭维,毕竟这货的运行效率确实那个那个了,窃以为,程序员辛苦点,那么下面那一大堆计算机就轻松点。 :em01 :em01 :em01
python非但没有带来执行效率(这是python不追求的,所以姑且不算缺点),
连它拼命牺牲执行效率希望换来的开发效率事实上也一点没有。
蔡万钊
帖子: 420
注册时间: 2009-02-01 19:41
联系:

Re: python是一个非常不好的语言

#7

帖子 蔡万钊 » 2012-12-15 15:47

YeLee 写了:嗯,既然eexpress和mircocai过来黑我大py,那我应该做的应该是捍卫我大py的领土了。 :em01 :em01 :em01
:em11 支持你过来捍卫 py 。没人和我辩论就没意思了。
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

Re: python是一个非常不好的语言

#8

帖子 YeLee » 2012-12-15 15:54

我才懒得去捍卫。 :em04 :em04 :em04
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
头像
tooktang
帖子: 674
注册时间: 2010-07-15 18:30

Re: python是一个非常不好的语言

#9

帖子 tooktang » 2012-12-15 16:16

支持楼主永远不用 Dropbox,系统里把所有 py 依赖的都给卸载了。


Sent from my Xperia S using Tapatalk 2
我是OS控…
蔡万钊
帖子: 420
注册时间: 2009-02-01 19:41
联系:

Re: python是一个非常不好的语言

#10

帖子 蔡万钊 » 2012-12-15 16:45

tooktang 写了:支持楼主永远不用 Dropbox,系统里把所有 py 依赖的都给卸载了。


Sent from my Xperia S using Tapatalk 2
不写python. 对系统没有洁癖。用用可以。
头像
tangboyun
帖子: 701
注册时间: 2009-07-25 1:57
联系:

Re: python是一个非常不好的语言

#11

帖子 tangboyun » 2012-12-15 19:15

楼主,即使你不喜欢一些东西,但也应该保持冷静客观的态度,否则终究只是活在自己的世界里。

如果对语言要求很高的话,可以考虑Haskell,你要的那些,haskell可以提供,如果足够精通的话。
https://github.com/tangboyun
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
jtshs256
帖子: 22323
注册时间: 2010-07-19 21:41
系统: OS X

Re: python是一个非常不好的语言

#12

帖子 jtshs256 » 2012-12-15 19:26

严重支持 microcai & ee 黑 qy…… :em11
啊,打错了,是 py……
躺平
onlylove
论坛版主
帖子: 5230
注册时间: 2007-01-14 16:23

Re: python是一个非常不好的语言

#13

帖子 onlylove » 2012-12-15 20:24

你们就可劲的黑吧……坐等后面的lisp用户来黑你们……
#include <stdio.h>
void main()
{
double world;
unsigned letter;
short stay;
long memories;
printf("I miss you.\n");
}
头像
code vampire
帖子: 193
注册时间: 2010-06-19 12:50
系统: AIX、UBUNTU
联系:

Re: python是一个非常不好的语言

#14

帖子 code vampire » 2012-12-15 22:29

每一种语言都有其优缺点,楼主这样以偏盖全有失水准。

C、C++完美吗?在底层系统程序员眼中,他们就是完美的,但对应用程序员,它们不够强大,却复杂,繁琐。

同样Python也是,在适用的领域,用好Python,那Python就是最好的语言,在不适用的领域,即使写再好的程序,也无法完成任务。

连这点问题都想不明白,程序员以后的路还很长。

最浅显的例子:

一件工作,C写的程序去完成,运行2个小时。
同样的工作,Python等动态语言、甚至是脚本语言去完成,需要8个小时。

光看这儿你觉得应该去用C写这个程序,但就这样就够了吗?

你还需要考虑如果用C编写,需要花费多少的人力、时间。如果用C写,需要5个人的小组写上1个月,而用Python写,需要5个人的小组写上10天,这时你选择什么语言?

仅仅考虑这些还是不够,你还需要考虑,这个程序的执行频率,如果这个程序写来将海量数据从旧数据库,导入新数据库,只要完成了,就不需要再执行,那么你应该用什么语言?如果这个程序需要每天,运行一次,比如网站的访问日志分析之类的工作,那你应该用什么语言?

不仅如此,如果是十分重要的任务,有时间限制,有时你甚至需要先开发出动态语言版本的程序,完成后先用着再开发静态语言的程序。

如果让你做老板,你愿意你手底下的员工不分轻重缓急、不计成本整天跟你说,“老板,C++是最NB的,可以完成任何任务,只是开发时间长点,何况像我这样NB的C++程序员中国找不到几个,你给我时间。”老板可以给你时间,但你的工资谁给。没几个老板是这样,也许追求完美的乔布斯会,但乔布斯死了,况且乔布斯不懂编程,要不以你的理论苹果无须研发Object-C。

追求完美这个品质很重要,但偏执就会坏事。对个人来说,你可以不计时间、利益去完成你心目中的好程序,但在企业里,需要的是高回报。如果你不能适应,或许可以做像RMS或Linus那样的人,但是全世界这样的人有几个?

顶尖的程序员都会5-8门语言,这说的是会,也就是能写程序,而不是仅仅看过几天、写过helllo world那么简单。而这5-8门语言中,精通的只有1-3门,何为精通,就是给出任何问题,语言的使用不是完成任务的障碍,真正阻挠实现的是算法的设计、数据结构的选择、编程经验、恒心、时间。学软件的常说,语言就是一门工具,不管好不好看,用着顺手,起作用的就是好工具。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: python是一个非常不好的语言

#15

帖子 eexpress » 2012-12-15 22:37

ls的说一堆空话。如果从脚本的优点考虑,有perl,哪里还需要python。
● 鸣学
回复