- 浏览: 4800073 次
- 性别:
- 来自: 上海
博客专栏
-
robbin谈管理
浏览量:135782
文章分类
最新评论
-
xly1981:
领导者是团队的灵魂。深入一线的过程,包括代码review,能帮 ...
robbin谈管理:改造团队的经验(2) -
jiehuangwei:
像这种总结比较性的ppt文档可以多发啊
Web并发模型粗浅探讨 -
linux1308:
看完学习到了很多东西,感谢推荐!
推荐一篇很好的RoR部署方案性能评测 -
zweite:
直接对搜索的结果进行缓存是不是会更快一点呢
漫谈应用缓存的命中率问题 -
kaogua:
现在已经是ruby2.0了, 不知道这个的效率是怎么样的, 是 ...
Ruby作为服务器端应用已经成熟了
8月9日周日,上海Python社区举办了一次成功的技术交流活动。这次活动的会议室本来预定80个座位,但是来得很多人都没有座位,预计来了将近100个人,其中绝大多数人都是通过JavaEye网站了解到本次活动的信息。
本次活动的发起人和主持人支晓勇邀请了很多Python社区的开发者,进行了相当密集的topic介绍:
第一个演讲的嘉宾是介绍一个python在手机应用上的协议库实现,可以通过编程来实现手机上的很多应用,不过演讲者的声音太小,我没有听太清楚;
第二个演讲的嘉宾是介绍Python单元测试的Mock框架,他介绍了几个不同的Mock框架的实现,不过我对这个topic不是特别感兴趣;
第三个演讲的嘉宾是Leon董,Python社区的大牛,介绍用Python的开源库写垂直搜索引擎,其实真正写一个好的搜索引擎是很不容易事情。
第四个演讲的嘉宾是沈崴,也是Python知名的牛人,介绍Eurasia开源项目。Eurasia是一个用Python编写的支持长连接的Web框架,可以支撑1万个以上的并发连接和百万级别的在线用户。JavaEye网站以前也发表过采访稿件Eurasia3 支持百万级用户的服务器和框架 - 国内开源项目介绍(五)。Eurasia3的代码很精炼,他除了是一个支持长连接的Web框架,他还是一个Socket Server,还带有一个面向对象的数据库(用gdbm实现)MissileDB,以及自己开发的模板系统等等。Eurasia是一个相当领先和前沿的项目,比较适合作为Web游戏的服务器,Web IM服务器等高性能场合。
我对这个topic的印象比较深的是,沈崴还特别介绍了Python的协程,他说到高并发编程的实践,一开始是用多线程,然后是异步模型,接着是事件驱动,而今后会更多的使用协程的编程模型。协程是在一个线程当中同时执行多个任务,和多线程相比,没有线程切换context switch的开销,并且协程的任务切换是当任务发生IO操作的时候,因此可以更加有效利用线程资源。说到协程,Ruby1.9也开始支持协程的概念,Ruby1.9带有一个Fiber的库,叫做“纤程”,也可以实现协程的高并发编程。
这次活动大家参与的热情还是很高的,也确实听到了很多有价值的观点。国内的Python应用在最近两年之内有了飞速的发展,很多互联网公司都开始使用Python,对Python人才的需求也越来越多了。不过国内的Python社区相对来说比较沉寂,因此希望这次活动是一个良好的开端,JavaEye也会更多的支持和推动国内Python社区的发展。
最近几年以来,动态脚本编程语言在国内的得到了越来越多的普及应用,其中Python和Ruby更是佼佼者,经常拿来被比较,我觉得两者倒是各有特点:
一、Python从语法上来说更质朴一些,而Ruby更性感一些
Python的语法相对其他脚本语言来说,没有太多花巧的地方,显得比较死板一点,其实从Python强制代码缩进也可以看出来Guido设计语言的取向。语法死板的一面就是不容易玩出来更性感的东西,比方说Rails这样的框架,另外Python也无法做DSL这样的事情,但是语法死板的另一面就是比较规范,相对来说,更加适应软件开发的工程性要求,更容易组织大规模的团队进行开发。
Ruby的语法非常灵活,Matz设计ruby的出发点也是为了coding for fun,因此可以用ruby玩出来很多花样,运用足够的技巧,可以用Ruby写出来逼近自然语言的DSL,对于程序员来说,玩ruby确实充满了乐趣。Rails能在ruby社区诞生,而不是Python社区诞生绝对和编程语言有直接的关系。不过ruby语法灵活的另一面就是编程实现风格的多样性,这对于大规模团队的协作和管理是一个挑战。
二、Python的解析器实现更成熟,第三方库质量高
Ruby1.9解析器尽管已经有了很大的性能提升和很多新的功能,但是从源代码实现的角度来说,基本上是通过在Ruby1.8源代码上打patch来增加功能的。从源代码的结构来说,Ruby的实现太古老了,Ruby扩展起来比较困难,只能不断打patch。这也是为什么现在Ruby社区涌现出来那么多新的Ruby解析器实现的原因。从很大程度上来说,这制约了Ruby的发展速度。相对而言,Python解析器更成熟,也比较稳定。
在第三方类库的数量上来说,Ruby并不比Python少,但是高性能高质量久经考验的第三方类库Python要明显比Ruby多,事实上很多Ruby的第三方类库都不太成熟,因此这也很大程度上制约了Ruby的发展。
三、Python的应用领域非常广泛,而Ruby目前主要局限在在Web领域
Python应用的领域非常广泛,除了web开发以外,还被广泛用在服务器后端的高性能服务器实现,服务器后端的各种密集运算,全文检索,各种文本处理,系统管理等等,另外桌面应用领域wxPython也是一个很成熟的跨平台GUI框架。对于某些特殊的应用,比方说调用操作系统内核API,Python也可以完成的很好,比方说大量小文件的实时同步方案,就是用Python直接调用Linux Kernel的inotify特性来实现的。所以可以说Python是软件开发领域的瑞士军刀,什么事情都可以做。
正是由于Ruby解析器和Ruby类库的制约,Ruby的应用主要局限在Web开发领域,目前Ruby的应用还无法延伸到web开发领域以外的很多地方。据说豆瓣早期就考虑过Ruby on Rails,但是因为Ruby不能做其他事情,而Python可以大包大揽,最后放弃Ruby选择了Python。
四、在Web领域Ruby是王者
随着互联网应用更进一步渗透到软件开发的各个领域,其实web开发占整个软件行业开发的比重也是越来越大。尽管Ruby在其他领域很受制约,但是在Web开发领域就是绝对的王者了。Rails框架的领先程度已经远远甩开了任何一个潜在的竞争对手十万八千里。因此尽管Ruby可能有这样那样的问题,但是说到Web开发,Rails几乎就是无可争议的唯一选择。
而Python尽管十分全面,却偏偏在web开发领域不彰,web框架虽然众多,却没有一个真正可以挑大梁,Django虽然在Python社区比较流行,但很多方面也有缺陷。现在的互联网应用往往都是多种语言混合编程,Ruby在Web以外的缺陷也可以用其他语言来弥补。
五、Python的包管理不如Ruby
尽管Python的第三方类库更高质量更成熟,但是Python社区缺乏Ruby Gem这样一个良好的包管理软件和包发布的网站。因此应用的构建显得不如Ruby那么方便,那么人性化。特别是在类库的版本升级上,就会遇到很多麻烦,不如Ruby Gem那么简单。
不过总的来说,Python和Ruby还是相似度极高的两种编程语言,即使两种编程语言都学习一下也不会浪费太多时间。如果我个人选择的话,会首选用Rails来构建web应用,再根据情况选择Python或者Java处理一些服务器后端的运算。总之,未来还是一个混合编程的时代,我们需要多了解一些编程工具,然后根据需要看菜吃饭才行。
django真的被甩的那么远么?
同惑。
robbin用的是"夸张,比喻"手法
刚开始不习惯.习惯了才发现了很有好处.
如果是TAB,在不同编辑器,不同系统下的表现就会差别很多.
所以习惯缩进之后,全部用4个空格替代. 感觉很爽.
django真的被甩的那么远么?
我也深有同感,web开发,我是从PHP转到Python,然后因为公司有相关业务,不得不转到Java的,看到Spring,Hibernate,Struts2这种重量级的实现,非常不适应。可笑的是,SSH开发,在Java里,竟然标着“轻量级开发”的头衔,晕啊
本次活动的发起人和主持人支晓勇邀请了很多Python社区的开发者,进行了相当密集的topic介绍:
第一个演讲的嘉宾是介绍一个python在手机应用上的协议库实现,可以通过编程来实现手机上的很多应用,不过演讲者的声音太小,我没有听太清楚;
第二个演讲的嘉宾是介绍Python单元测试的Mock框架,他介绍了几个不同的Mock框架的实现,不过我对这个topic不是特别感兴趣;
第三个演讲的嘉宾是Leon董,Python社区的大牛,介绍用Python的开源库写垂直搜索引擎,其实真正写一个好的搜索引擎是很不容易事情。
第四个演讲的嘉宾是沈崴,也是Python知名的牛人,介绍Eurasia开源项目。Eurasia是一个用Python编写的支持长连接的Web框架,可以支撑1万个以上的并发连接和百万级别的在线用户。JavaEye网站以前也发表过采访稿件Eurasia3 支持百万级用户的服务器和框架 - 国内开源项目介绍(五)。Eurasia3的代码很精炼,他除了是一个支持长连接的Web框架,他还是一个Socket Server,还带有一个面向对象的数据库(用gdbm实现)MissileDB,以及自己开发的模板系统等等。Eurasia是一个相当领先和前沿的项目,比较适合作为Web游戏的服务器,Web IM服务器等高性能场合。
我对这个topic的印象比较深的是,沈崴还特别介绍了Python的协程,他说到高并发编程的实践,一开始是用多线程,然后是异步模型,接着是事件驱动,而今后会更多的使用协程的编程模型。协程是在一个线程当中同时执行多个任务,和多线程相比,没有线程切换context switch的开销,并且协程的任务切换是当任务发生IO操作的时候,因此可以更加有效利用线程资源。说到协程,Ruby1.9也开始支持协程的概念,Ruby1.9带有一个Fiber的库,叫做“纤程”,也可以实现协程的高并发编程。
这次活动大家参与的热情还是很高的,也确实听到了很多有价值的观点。国内的Python应用在最近两年之内有了飞速的发展,很多互联网公司都开始使用Python,对Python人才的需求也越来越多了。不过国内的Python社区相对来说比较沉寂,因此希望这次活动是一个良好的开端,JavaEye也会更多的支持和推动国内Python社区的发展。
最近几年以来,动态脚本编程语言在国内的得到了越来越多的普及应用,其中Python和Ruby更是佼佼者,经常拿来被比较,我觉得两者倒是各有特点:
一、Python从语法上来说更质朴一些,而Ruby更性感一些
Python的语法相对其他脚本语言来说,没有太多花巧的地方,显得比较死板一点,其实从Python强制代码缩进也可以看出来Guido设计语言的取向。语法死板的一面就是不容易玩出来更性感的东西,比方说Rails这样的框架,另外Python也无法做DSL这样的事情,但是语法死板的另一面就是比较规范,相对来说,更加适应软件开发的工程性要求,更容易组织大规模的团队进行开发。
Ruby的语法非常灵活,Matz设计ruby的出发点也是为了coding for fun,因此可以用ruby玩出来很多花样,运用足够的技巧,可以用Ruby写出来逼近自然语言的DSL,对于程序员来说,玩ruby确实充满了乐趣。Rails能在ruby社区诞生,而不是Python社区诞生绝对和编程语言有直接的关系。不过ruby语法灵活的另一面就是编程实现风格的多样性,这对于大规模团队的协作和管理是一个挑战。
二、Python的解析器实现更成熟,第三方库质量高
Ruby1.9解析器尽管已经有了很大的性能提升和很多新的功能,但是从源代码实现的角度来说,基本上是通过在Ruby1.8源代码上打patch来增加功能的。从源代码的结构来说,Ruby的实现太古老了,Ruby扩展起来比较困难,只能不断打patch。这也是为什么现在Ruby社区涌现出来那么多新的Ruby解析器实现的原因。从很大程度上来说,这制约了Ruby的发展速度。相对而言,Python解析器更成熟,也比较稳定。
在第三方类库的数量上来说,Ruby并不比Python少,但是高性能高质量久经考验的第三方类库Python要明显比Ruby多,事实上很多Ruby的第三方类库都不太成熟,因此这也很大程度上制约了Ruby的发展。
三、Python的应用领域非常广泛,而Ruby目前主要局限在在Web领域
Python应用的领域非常广泛,除了web开发以外,还被广泛用在服务器后端的高性能服务器实现,服务器后端的各种密集运算,全文检索,各种文本处理,系统管理等等,另外桌面应用领域wxPython也是一个很成熟的跨平台GUI框架。对于某些特殊的应用,比方说调用操作系统内核API,Python也可以完成的很好,比方说大量小文件的实时同步方案,就是用Python直接调用Linux Kernel的inotify特性来实现的。所以可以说Python是软件开发领域的瑞士军刀,什么事情都可以做。
正是由于Ruby解析器和Ruby类库的制约,Ruby的应用主要局限在Web开发领域,目前Ruby的应用还无法延伸到web开发领域以外的很多地方。据说豆瓣早期就考虑过Ruby on Rails,但是因为Ruby不能做其他事情,而Python可以大包大揽,最后放弃Ruby选择了Python。
四、在Web领域Ruby是王者
随着互联网应用更进一步渗透到软件开发的各个领域,其实web开发占整个软件行业开发的比重也是越来越大。尽管Ruby在其他领域很受制约,但是在Web开发领域就是绝对的王者了。Rails框架的领先程度已经远远甩开了任何一个潜在的竞争对手十万八千里。因此尽管Ruby可能有这样那样的问题,但是说到Web开发,Rails几乎就是无可争议的唯一选择。
而Python尽管十分全面,却偏偏在web开发领域不彰,web框架虽然众多,却没有一个真正可以挑大梁,Django虽然在Python社区比较流行,但很多方面也有缺陷。现在的互联网应用往往都是多种语言混合编程,Ruby在Web以外的缺陷也可以用其他语言来弥补。
五、Python的包管理不如Ruby
尽管Python的第三方类库更高质量更成熟,但是Python社区缺乏Ruby Gem这样一个良好的包管理软件和包发布的网站。因此应用的构建显得不如Ruby那么方便,那么人性化。特别是在类库的版本升级上,就会遇到很多麻烦,不如Ruby Gem那么简单。
不过总的来说,Python和Ruby还是相似度极高的两种编程语言,即使两种编程语言都学习一下也不会浪费太多时间。如果我个人选择的话,会首选用Rails来构建web应用,再根据情况选择Python或者Java处理一些服务器后端的运算。总之,未来还是一个混合编程的时代,我们需要多了解一些编程工具,然后根据需要看菜吃饭才行。
评论
15 楼
jasongreen
2009-08-14
活靶子 写道
robbin 写道
Rails框架的领先程度已经远远甩开了任何一个潜在的竞争对手十万八千里。因此尽管Ruby可能有这样那样的问题,但是说到Web开发,Rails几乎就是无可争议的唯一选择。
django真的被甩的那么远么?
同惑。
14 楼
redaready
2009-08-14
另外python有google撑腰,还有很多大软件使用,比如argis,blender,inkscape等等。。python跟c,c++结合容易点,而且以后还会更快,ref:http://code.google.com/p/unladen-swallow/wiki/ProjectPlan
13 楼
redaready
2009-08-14
pythonxy是个比较好的distro,ruby就是性感点,其它的目前来说还是python好。其实语言无所谓,反正都是老外写的。关键啥时候中国人能写个让中国人用得舒服的中文编程语言就好了。
12 楼
bohemia
2009-08-14
引用
十万八千里.
robbin用的是"夸张,比喻"手法
11 楼
bohemia
2009-08-14
liuhs 写道
缩进,开始也是不习惯。现在,不是缩进的反而不习惯了,这个就是个习惯培养的问题。过段时间就适应了。
刚开始不习惯.习惯了才发现了很有好处.
如果是TAB,在不同编辑器,不同系统下的表现就会差别很多.
所以习惯缩进之后,全部用4个空格替代. 感觉很爽.
10 楼
活靶子
2009-08-14
robbin 写道
Rails框架的领先程度已经远远甩开了任何一个潜在的竞争对手十万八千里。因此尽管Ruby可能有这样那样的问题,但是说到Web开发,Rails几乎就是无可争议的唯一选择。
django真的被甩的那么远么?
9 楼
KorbenZhang
2009-08-14
SSH轻量看和谁比,与EJB比算是轻量吧。
8 楼
liuhs
2009-08-14
缩进,开始也是不习惯。现在,不是缩进的反而不习惯了,这个就是个习惯培养的问题。过段时间就适应了。
7 楼
Blithe
2009-08-13
我还是不习惯 缩进
6 楼
mikeshi
2009-08-13
moonlitsky 写道
python的语法缩进,我感觉挺好的,摆脱了大括号的烦恼。而且成熟的库太多了,另外邮件列表里的人很热心。不过pythoner有点“张狂”,哈哈,他们中的很多人灰常讨厌java,有点看不惯。
另外我觉的py的web框架好的也不少,只是别人知道的少。django我是不喜欢的,web.py,和最近比较火的web2py,还有模仿rails的pylons都不错。
另外我觉的py的web框架好的也不少,只是别人知道的少。django我是不喜欢的,web.py,和最近比较火的web2py,还有模仿rails的pylons都不错。
我也深有同感,web开发,我是从PHP转到Python,然后因为公司有相关业务,不得不转到Java的,看到Spring,Hibernate,Struts2这种重量级的实现,非常不适应。可笑的是,SSH开发,在Java里,竟然标着“轻量级开发”的头衔,晕啊
5 楼
moonlitsky
2009-08-11
python的语法缩进,我感觉挺好的,摆脱了大括号的烦恼。而且成熟的库太多了,另外邮件列表里的人很热心。不过pythoner有点“张狂”,哈哈,他们中的很多人灰常讨厌java,有点看不惯。
另外我觉的py的web框架好的也不少,只是别人知道的少。django我是不喜欢的,web.py,和最近比较火的web2py,还有模仿rails的pylons都不错。
另外我觉的py的web框架好的也不少,只是别人知道的少。django我是不喜欢的,web.py,和最近比较火的web2py,还有模仿rails的pylons都不错。
4 楼
ququzone
2009-08-11
并不是非要说Python还是Ruby好,不过多比较一下还是能扩展眼界的。下面这篇文章就是比较rails和django的文章和其各自的源代码。
http://docs.google.com/View?docid=dcn8282p_1hg4sr9
http://3columns.net/habitual/
http://docs.google.com/View?docid=dcn8282p_1hg4sr9
http://3columns.net/habitual/
3 楼
wanghuanan
2009-08-10
系统日常管理喜欢用perl,玩起来很有趣
2 楼
robbin
2009-08-10
当时学习python的时候,确实不了解这些东西,看来落伍了
1 楼
wayhome
2009-08-10
5. Python Cheese Shop 即pypi不会被robbin无视了吧,setuptools管理起来也不是很麻烦,介绍可以看看http://www.ibm.com/developerworks/cn/linux/l-cppeak3.html,类debian系统下安装只需apt-get install python-setuptools。
还有更好用点儿的pip,不过这个现在比不上easy_install官方。
还有最强大无所不能的buildout,这个比较复杂,但在大型应用中就能感觉到它的好处了。非一两句可以讲完,就不介绍了。
还有更好用点儿的pip,不过这个现在比不上easy_install官方。
还有最强大无所不能的buildout,这个比较复杂,但在大型应用中就能感觉到它的好处了。非一两句可以讲完,就不介绍了。
发表评论
-
Web并发模型粗浅探讨
2012-12-10 01:22 16500我带的研发部门使用的编程语言有Java,.net,PHP和Ru ... -
让textmate可以直接修改远程服务器上的文件
2012-11-06 17:20 52691. 在textmate的 Preferences | Ter ... -
晒晒我们的开源项目
2012-09-23 22:17 38101我们的研发团队是一支mini型研发团队,目前共有研发人员13人 ... -
再谈非主流工业语言
2011-03-22 00:15 22993今天看到Fenng同学的发 ... -
我的PHP,Python和Ruby之路
2011-03-21 12:12 72302因为看到一篇讨论PHP,P ... -
互联网网站的反爬虫策略浅析
2009-08-17 01:07 37963因为搜索引擎的流行, ... -
LVM - 很好很强大
2008-11-29 22:19 35795LVM (Logic Volume Management, ... -
Linux平台gcc和动态共享库的基础知识
2008-11-02 15:25 12787对大多数不从事Linux平台C语言开发的人来说,GNU gcc ... -
贴一段遍历memcached缓存对象的小脚本
2008-10-13 18:07 13667memcached因为性能的缘故,没有提供遍历整个缓存当中对象 ... -
用Google的网站流量分析系统来看全球软件行业的分工趋势
2008-06-25 13:05 10386用Google的网站流量分析 ... -
memcache_engine + memcachedb = 高性能分布式内存数据库
2008-01-22 12:05 33801memcachedb是一个由新浪网 ... -
豆瓣的程序性能真的很惊人,但...
2008-01-17 22:42 34465http://www.dbanotes.net/arch/do ... -
关系模型和对象模型的究竟匹配还是不匹配?
2007-12-27 12:23 12680在过去的很多年,我以 ... -
AJAX与RIA技术之我见
2007-08-02 11:46 43260DHH于6月底曾经发表过一 ... -
从分布式系统的角度看REST
2007-05-23 15:46 51522上周末在杭州网侠大会 ... -
软件行业2006年终回顾以及2007展望(二)展望
2006-12-11 22:02 13002http://www.iteye.com/topic/1778 ... -
Linux reiserfs文件系统即将陨落
2006-10-12 16:29 25118Linux著名的高性能文件系统reiserfs向来是Linux ... -
lighttpd的tunning tips
2006-09-21 00:20 6674http://trac.lighttpd.net/trac/w ... -
动态脚本语言的部署运行方式介绍
2006-09-18 12:42 7751现在这类脚本语言的运行方式基本上有三种: 1、Apache ...
相关推荐
使用Python Lua和Ruby语言进行游戏编程
用Python,Lua和Ruby语言设计游戏,是python lua 和ruby的入门类书籍(英文版)
Python 北京开发者聚会 slides
用Python,Lua和Ruby语言设计游戏-Game.Programming.with.Python.Lua.And.Ruby
Python背记手册
python语⾔程序设计实践教程上海交通⼤学_Python语⾔程序 设计 Q:为什么越来越多的学校和专业已经或者计划开设Python程序设计相关课程? A:相较于其它⼤部分的通⽤型程序设计语⾔,Python的基础语法相对简单,且在...
Python必备背记手册
Eric is a full featured Python and Ruby editor and IDE, written in python. It is based on the cross platform Qt gui toolkit, integrating the highly flexible Scintilla editor control. It is designed to...
将教你如何使用游戏界中的三款主流脚本语言进行游戏编程。 从深层次阐述Python、Lua和Ruby这三种解释性脚本语言和用它们编写的游戏。
PyCall:从Ruby语言中调用Python函数该库提供了直接从Ruby语言中调用Python并与之进行部分互操作的功能。 您可以在PyCall中导入任意Python模块:从Ruby语言调用Python函数该库提供了直接从Ruby语言调用Python并与之...
所以今天给大家带来的是字节大佬用了72小时整理出来的这本python入门知识背记手册,能保证在你成为python大牛之前,都离不开这本基础知识点啦。 话不多说,直接来展示: 第一章、走进Python if语句 if...else语句 ...
python必背知识点
【python入门必背】python入门基础知识点合集、python基础知识背记手册 主要内容概要: 第1章 走进 Python. 第2章 Python语言基础 第3章 运算符与表达式 第4章 流程控制语句 第5章 列表与元组 第6章 字典与集合 第...
Python知识点背诵手册(免积分下载),适合初学者知识点梳理,详细情况请看我的文章介绍:http://t.csdn.cn/ncRdk
Cdo。{rb,py}-使用Ruby / Python访问CDO的功能 欢迎使用的脚本接口!...{rb,py}需要有效的CDO二进制文件和Ruby 2.x或Python 2.7 / 3.x 多维数组(用于python的numpy,用于ruby的narray)需要附加
#Python统计西游记主要人物出场次数(使用jieba分词) 1. 建立西游记主要人物表及其别名; 2. 读入西游记原文txt文件并使用jieba分词; 3. 统计所有分词中出现各人名的次数。