首页
论坛
门户
空间
手机版
IXPUB
插件
收藏
设置
注册
登录
商店
搜索
培训
Wiki
Blog
归档
丛书
退出
ITPUB论坛
»
动态语言
» Python是垃圾?(转)
‹‹ 上一主题
|
下一主题 ››
17
1/2
1
2
››
投票
交易
悬赏
活动
评价
|
打印
|
推荐
|
订阅
|
收藏
标题: Python是垃圾?(转)
四紫
中级会员
精华贴数 0
个人空间
0
技术积分 1244 (1323)
社区积分 0 (1029403)
注册日期 2006-7-15
论坛徽章:0
#1
使用道具
发表于 2006-7-28 20:37
Python是垃圾?(转)
第一个常见看法是:
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。
只看该作者
blackjimmy
初级会员
精华贴数 0
个人空间
0
技术积分 4 (137572)
社区积分 0 (415967)
注册日期 2005-5-20
论坛徽章:0
#2
使用道具
发表于 2006-7-29 13:27
我刚开始学习python,先前学过c,不过都忘了,感觉python挺不错
只看该作者
way out
初级会员
精华贴数 0
个人空间
0
技术积分 18 (55539)
社区积分 0 (229637)
注册日期 2004-12-20
论坛徽章:0
#3
使用道具
发表于 2007-9-5 15:19
python让我找到了目标,嘿嘿~~~虽然也很喜欢汇编和C,但是觉得python是我现在最应该学的
只看该作者
iooyoo
迷眼流金
精华贴数 0
个人空间
20
技术积分 4018 (321)
社区积分 3386 (369)
注册日期 2006-6-15
论坛徽章:20
#4
使用道具
发表于 2007-9-7 16:14
上手中
__________________
使君欲醉离亭酒
酒醒离愁转有
紫禁多时虚右
苕霄留难久
一声歌掩双罗袖
日落乱山春后
犹有东城烟柳
青荫长依旧
只看该作者
忍者神龟
精华贴数 1
个人空间
0
技术积分 4575 (277)
社区积分 3796 (339)
注册日期 2002-7-22
论坛徽章:11
#5
使用道具
发表于 2007-9-10 12:34
看看有多少人用就知道是不是垃圾了,呵呵。
__________________
http://blog.sina.com.cn/ginza3
只看该作者
shiren1118
Groovy脚本小孩
来自 长春工业大学050507
精华贴数 0
个人空间
0
技术积分 1269 (1293)
社区积分 16 (8153)
注册日期 2007-3-14
论坛徽章:7
#6
使用道具
发表于 2007-9-12 21:47
呵呵。楼上有意思
__________________
今天的努力换取明天别人的尊重
Groovy脚本小孩的论坛
Groovy脚本小孩
只看该作者
qwby67522800
暖暖
精华贴数 0
个人空间
0
技术积分 1953 (789)
社区积分 1264 (757)
注册日期 2007-6-5
论坛徽章:15
#7
使用道具
发表于 2007-9-25 10:26
QUOTE:
最初由 忍者神龟 发布
看看有多少人用就知道是不是垃圾了,呵呵。
用python的人好像很多啊~真的期待它能更加的出色点
__________________
揭谛揭谛
波罗揭谛波罗僧
揭谛菩提娑婆诃
只看该作者
saromman
初级会员
精华贴数 0
个人空间
0
技术积分 34 (34815)
社区积分 0 (59735)
注册日期 2002-8-6
论坛徽章:0
#8
使用道具
发表于 2007-10-7 18:54
有个程序员推荐我学PYTHON,我打算明天开始学习
__________________
MSN:zhang-rui-peng@hotmail.com
QQ:45185852
闲聊勿扰
只看该作者
X-Power
老会员
精华贴数 0
个人空间
0
技术积分 782 (2333)
社区积分 47 (4797)
注册日期 2006-6-14
论坛徽章:4
#9
使用道具
发表于 2007-10-7 22:22
看看有多少人用就知道是不是垃圾了,呵呵。
__________________
http://www.hotel-cn.com
http://www.booking-cn.com
只看该作者
alonemo
半人间
精华贴数 0
个人空间
0
技术积分 3241 (429)
社区积分 145 (2650)
注册日期 2004-10-8
论坛徽章:10
#10
使用道具
发表于 2007-10-9 14:43
PYTHON是什么意思啊
__________________
做人太苦,成仙太难
只看该作者
17
1/2
1
2
››
投票
交易
悬赏
活动
相关内容
ITPUB论坛
≡ 数据库技术 ≡
> Oracle数据库管理
> Oracle开发
> Oracle Developer Suite
> Oracle入门与认证
> Oracle专题深入讨论
> Oracle新技术/11g
> Oracle电子文档
> Oracle Application Server套件
> IBM数据库产品
> MS SQL Server
> Sybase管理与开发
> MySQL及其它开源数据库
> 内存数据库
> 数据仓库与数据挖掘
> 移动及嵌入式数据库
≡ 企业信息化 ≡
> ERP产品与实践
> CRM产品与实践
> HR产品与实践
> 物流
> 供应链
> 供应链建模与仿真
> 物流设备与系统工程
> 企业管理咨询
> 管理协同与办公自动化
> IT服务管理
> 数据中心建设
> ERP二次开发
> Oracle ERP
> EBS相关文档
> PeopleSoft与JDE
> SAP R/3
> SAP Business One开发与快速实施
> SAP财务及CRM
> SAP后勤及HR
> mySAP ERP
> 系统开发及跨应用设置
> SAP相关文档
> 国外其它ERP产品
> 国内ERP产品
≡ 开发技术 ≡
> Java入门与认证版
> Java web开发及框架技术
> Java企业开发
> ASP.NET
> .Net企业开发与应用
> WEB程序开发
> WEB 2.0技术
> 动态语言
> 移动与游戏开发
≡ 系统设计与项目管理 ≡
> 系统分析与UML
> 系统分析与UML精华区
> 项目管理
> 项目过程
> 软件测试
> 算法讨论与研究
≡ IBM软件技术园地 ≡
> IBM数据库产品
> Lotus
> Tivoli
> Websphere
> Rational
> 与SOA相关的IBM产品与技术
> IBM软件技术精英协会
> 软件技术精英活动专版
≡ 操作系统与硬件 ≡
> AIX及IBM产品【已迁移到IXPUB】
> HP-UX及HP产品【已迁移到IXPUB】
> Solaris及SUN产品【已迁移到IXPUB】
> Linux及其应用 【已迁移到IXPUB】
> 其它UNIX系统【已迁移到IXPUB】
> windows系统及微软相关产品 【已迁移到IXPUB】
> 存储设备与容灾技术 【已迁移到IXPUB】
> 服务器 【已迁移到IXPUB】
≡ 行业纵向讨论区 ≡
> IT业界评论与展望
> 政府与教育事业
> 中国政府信息主管联盟
> 电信行业
> 金融行业
> 医卫行业
> 制造行业
> 电力行业
> 信息安全与审计
≡ 会员交流 ≡
> IT职业生涯
> 招聘求职商务信息
> 投资理财
> 体育世界
> 体育博彩专版
> 旅游,驴友
> 汽车世界
> 外语角
> 数码摄影
> 你的故事我的歌
> 音乐推荐区
> 电子图书与IT文档资料
> 软件交流
> 软件交流精华区
≡ ITPUB产品与服务 ≡
> ITPUB地面活动专版
> BLOG天地
> WIKI世界
> 授权用户区
> 站务管理
技术积分榜
社区积分榜
徽章
电子杂志
会员
团队
统计
邮箱
游乐场
帮助
TOP
CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号
联系我们
法律顾问
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计