查看: 22099|回复: 24

Python是垃圾?(转)

[复制链接]
论坛徽章:
0
跳转到指定楼层
1#
发表于 2006-7-28 20:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
第一个常见看法是:

python和basic差不多应该是容易学,但是功能弱的语言


basic是好多人的年幼时的回忆了,gvbasic,gwbasic,qbaisc,各种版本把很多人带入了快乐的世界里面。但是很多人都会用了一段时间basic之后就把它废置了,因为觉得除了能够用来play,功能太少。即便是vb,也是功能不甚完善的,很多地方要依靠其他语言写的组件和直接调用api来完成功能。
而python由于粗看之下,也是那么的像玩具。而且那个交互式命令行给人带来的教学语言的感觉更加加强了人们的想法。
但是python其实功能不能说是弱,其实是非常强大。python内置了重要的数据结构和文件这些功能,而且包含了一个很大的标准库,基本上涵盖了从GUI到数据库到网络种种功能上的要求。而且还有很多爱好者,公司企业为python写第三方的库,这些库品种繁多,功能齐全。而且还能把其他语言的库加以包装给自己使用,直接用c这样的语言了来写扩展的库也是可以的。所以说,python像basic一样好学,但是功能却要强大很多。

第二个常见看法是:

python速度很慢,只能用在很少的应用场合

对于习惯了汇编和C++这样的语言的人,思维总是有一个惯性(包括我自己也经历了这么一个阶段)。就是看文件大小是数字节的,任何运行时的overhead都是绝对不可以的。那么一看见python这样的动态语言,而且动态得非常厉害的语言,怎么看怎么不顺眼也是情理之中了。
关键的问题首先是你是否需要省那么个100~200k的大小,现在的内存,硬盘,网络通信环境已经不大在乎这么一点的空间了,所以大小不是问题。关键的是运行时间吗?其实在很多场合下是不需要那么快的速度的,比如开一个窗口,运行如果延时100ms,你感觉得到吗?
python还能够把py文件进行一些处理变成pyc文件,加速源文件的解释执行。像java的虚拟机中的just in time或者hot spot这样的预先读取,预先编译的技术都能构同等的用于python。
python还有一个非常大的好处就是能够用C这样的快速的语言写扩展模块。在软件中一般都是20%的代码占据了80%的运行时间。这样你可以先用benchmark这样的工具看看软件是否慢得无法忍受了,然后再用profiler查出问题瓶颈在哪里,那么就可以把关键的代码用C解决掉。这样可以节省了开发时间(大部分代码用python写,比C快),而且运行速度也可以令人满意。
所以说,对于python的速度是不用多担心的。但是为了客观起见,python的却是慢的,在python中什么都是对象,这个比java这样的不那么纯的OO语言,就要差一些了。

第三个常见问题是:

由于python是动态的,程序更加容易出错了

有这个看法主要是认为,因为python是动态的,所以缺乏静态的类型检查,那么程序中的错误就很难发现了。设置可能说没有执行到的块的语法都没有得到完全彻底的检查。变量由于没有声明,所以容易产生误写的错误。事情真这么糟糕吗?

第一个缺乏类型检查是说一个函数有几个参数,但是由于参数的类型是动态确定的,所以没有办法在静态的时候就检查传入的参数和参数表是否匹配了。问题是你写的函数一定要自己测试了,而且一旦出了问题,你是非常容易找到出错的地方的。dynamic typing是那么灵活好用,多这么一点麻烦也是值得的。

第二个看法就是错误的。在python中所有语法都得到了检查的。即使是处在分支语句中。只是有可能你说的是这样的情况:
a = 1;
明明加了分号,怎么不说我错了呢?其实分号是可以用的,用来格开在一行中的不同语句。
还有可能是这样的:
if a == 0:
  fsdfsdafsad
这个怪东西应该是一个语法错误吧。其实是未必。因为程序运行到这个的时候可能这个名字就绑定到了什么东西上了,未必就是错误。它是符合语句的语法的。

第三个则不是那么回事了。在basic中,你引用一个没有出现过的变量名。那么这个变量自动被分配,而且得到初始化。这个就会出问题了。而python中,你不能引用一个没有绑定到对象上的名字,而
name = 0
这样的语句就是一个声明了。没有什么问题。
name = 0
nama = 1
这个总是问题了吧。对于变量名的误拼写出现在赋值的情况的时候就会被通过,因为认为是产生一个新的名称绑定。那么这个也好找出来啊,必然是出现在赋值的情况下,比basic中的那种情况好多了

总体来说是,dynamic的东西缺少一些静态的检查的却是会使得错误隐蔽一些。但是由于动态带来的调试上的方便(比如能够一眼从出错信息中找到出错的行,以及调用流程)足以把副作用给抵消了。

希望通过我的一点解释,能够让你消去疑惑,喜欢上python。
论坛徽章:
0
2#
发表于 2006-7-29 13:27 | 只看该作者
我刚开始学习python,先前学过c,不过都忘了,感觉python挺不错

使用道具 举报

回复
论坛徽章:
0
3#
发表于 2007-9-5 15:19 | 只看该作者
python让我找到了目标,嘿嘿~~~虽然也很喜欢汇编和C,但是觉得python是我现在最应该学的

使用道具 举报

回复
论坛徽章:
53
2010新春纪念徽章
日期:2010-03-01 11:19:062012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:25版主1段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14
4#
发表于 2007-9-7 16:14 | 只看该作者
上手中

使用道具 举报

回复
论坛徽章:
33
授权会员
日期:2005-10-30 17:05:33ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:522013年新春福章
日期:2013-02-25 14:51:24马上有车
日期:2014-02-19 11:55:14
5#
发表于 2007-9-10 12:34 | 只看该作者
看看有多少人用就知道是不是垃圾了,呵呵。

使用道具 举报

回复
论坛徽章:
7
开发板块每日发贴之星
日期:2007-08-16 01:07:19授权会员
日期:2007-09-05 19:24:16开发板块每日发贴之星
日期:2007-09-16 01:04:47ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44开发板块每日发贴之星
日期:2007-11-10 01:06:26开发板块每日发贴之星
日期:2007-11-24 01:02:58生肖徽章2007版:鸡
日期:2008-01-02 17:35:53
6#
发表于 2007-9-12 21:47 | 只看该作者
呵呵。楼上有意思

使用道具 举报

回复
论坛徽章:
16
授权会员
日期:2007-06-18 09:23:37生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2008-01-02 17:35:53生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2007-11-28 15:47:16ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44会员2007贡献徽章
日期:2007-09-26 18:42:10
7#
发表于 2007-9-25 10:26 | 只看该作者
最初由 忍者神龟 发布
[B]看看有多少人用就知道是不是垃圾了,呵呵。 [/B]

用python的人好像很多啊~真的期待它能更加的出色点

使用道具 举报

回复
论坛徽章:
0
8#
发表于 2007-10-7 18:54 | 只看该作者
有个程序员推荐我学PYTHON,我打算明天开始学习

使用道具 举报

回复
论坛徽章:
11
开发板块每日发贴之星
日期:2007-09-24 01:04:44开发板块每日发贴之星
日期:2010-07-29 01:01:01ERP板块每日发贴之星
日期:2010-07-29 01:01:01设计板块每日发贴之星
日期:2010-06-12 01:01:06ERP板块每日发贴之星
日期:2010-05-18 01:01:01数据库板块每日发贴之星
日期:2010-05-18 01:01:01设计板块每日发贴之星
日期:2008-10-16 01:03:26行业板块每日发贴之星
日期:2007-10-29 01:05:31ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44开发板块每日发贴之星
日期:2007-10-18 01:05:07
9#
发表于 2007-10-7 22:22 | 只看该作者
看看有多少人用就知道是不是垃圾了,呵呵。

使用道具 举报

回复
论坛徽章:
12
会员2006贡献徽章
日期:2006-04-17 13:46:34生肖徽章2007版:兔
日期:2009-03-10 21:27:28ERP板块每日发贴之星
日期:2007-10-24 01:04:58ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44设计板块每日发贴之星
日期:2007-10-18 01:06:03ITPUB元老
日期:2007-10-11 14:47:20开发板块每日发贴之星
日期:2007-10-10 01:05:30行业板块每日发贴之星
日期:2007-10-01 01:05:12行业板块每日发贴之星
日期:2007-09-30 01:05:35会员2007贡献徽章
日期:2007-09-26 18:42:10
10#
发表于 2007-10-9 14:43 | 只看该作者
PYTHON是什么意思啊

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表