分页: 1 / 5

python是一个非常不好的语言

发表于 : 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 都能占上一些!

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

发表于 : 2012-12-15 15:32
qy117121
反正我不是程序员

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

发表于 : 2012-12-15 15:39
eexpress
微菜最近果然猛黑这。
加油。

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

发表于 : 2012-12-15 15:41
YeLee
感觉py对于开发者而言是个好工具,毕竟这货可以大大地减轻开发的工作量;而站在用户的角度而言,这货确实不敢恭维,毕竟这货的运行效率确实那个那个了,窃以为,程序员辛苦点,那么下面那一大堆计算机就轻松点。 :em01 :em01 :em01

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

发表于 : 2012-12-15 15:43
YeLee
嗯,既然eexpress和mircocai过来黑我大py,那我应该做的应该是捍卫我大py的领土了。 :em01 :em01 :em01

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

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

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

发表于 : 2012-12-15 15:47
蔡万钊
YeLee 写了:嗯,既然eexpress和mircocai过来黑我大py,那我应该做的应该是捍卫我大py的领土了。 :em01 :em01 :em01
:em11 支持你过来捍卫 py 。没人和我辩论就没意思了。

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

发表于 : 2012-12-15 15:54
YeLee
我才懒得去捍卫。 :em04 :em04 :em04

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

发表于 : 2012-12-15 16:16
tooktang
支持楼主永远不用 Dropbox,系统里把所有 py 依赖的都给卸载了。


Sent from my Xperia S using Tapatalk 2

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

发表于 : 2012-12-15 16:45
蔡万钊
tooktang 写了:支持楼主永远不用 Dropbox,系统里把所有 py 依赖的都给卸载了。


Sent from my Xperia S using Tapatalk 2
不写python. 对系统没有洁癖。用用可以。

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

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

如果对语言要求很高的话,可以考虑Haskell,你要的那些,haskell可以提供,如果足够精通的话。

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

发表于 : 2012-12-15 19:26
jtshs256
严重支持 microcai & ee 黑 qy…… :em11
啊,打错了,是 py……

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

发表于 : 2012-12-15 20:24
onlylove
你们就可劲的黑吧……坐等后面的lisp用户来黑你们……

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

发表于 : 2012-12-15 22:29
code vampire
每一种语言都有其优缺点,楼主这样以偏盖全有失水准。

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门,何为精通,就是给出任何问题,语言的使用不是完成任务的障碍,真正阻挠实现的是算法的设计、数据结构的选择、编程经验、恒心、时间。学软件的常说,语言就是一门工具,不管好不好看,用着顺手,起作用的就是好工具。

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

发表于 : 2012-12-15 22:37
eexpress
ls的说一堆空话。如果从脚本的优点考虑,有perl,哪里还需要python。