论坛首页 编程语言技术论坛

我喜欢Ruby的原因

浏览 68484 次
精华帖 (0) :: 良好帖 (12) :: 新手帖 (0) :: 隐藏帖 (2)
作者 正文
   发表时间:2008-04-26  
mcpssx 写道
robbin 写道

来吧,继续科普吧,又露怯了。拜托你搞搞清楚,mod_ruby是猴年马月的东西?再搞搞清楚,mod_ruby能不能用来跑Rails。如果你连Rails怎么部署都不知道,我可以认为,你没有资格在这个帖子里面讨论。


谢谢,那就请您apache多线程部署一下mod_rails吧!
或者请您在任何一个支持多线程的服务器(注意是系统线程,不是什么green thread)啊,部署一个多线程的ror给我们看看,ruby的线程安全是真么表现出比php的优势的!



嘿嘿,继续露怯,咱们继续科普。首先你的逻辑思维能力有问题。我说你根本不懂mod_ruby,你回复说我说,你有本事给我多线程部署mod_rails来跑。请问我的帖子是如何推导出来你的回贴的?你给我讲讲中间的逻辑推导关系?

其次,我多次强调Rails不是线程安全的,这就是说Rails不能以多线程方式运行(PHP也是这样的)。但是很遗憾,明显我白白给你科普了这么久,Rails/PHP不能以多线程方式运行这个基本概念还是没能灌输到你的榆木脑袋里面,于是你又说出了“部署一个多线程的ror给我们看看,ruby的线程安全是真么表现出比php的优势的!”这种无知的话。真是无知者无畏阿。

不过关于mod_rails的话题,我还是有兴趣回答一下的,我才刚刚研究过mod_rails,并且写了篇博客来介绍mod_rails,你有兴趣可以到我的博客去看。

mod_rails和mod_php5的运行机制完全两码事,mod_php5的机制是把PHP解释器加载在Apache的进程里面运行的,所以此时Apache不应该以多线程方式运行;但是mod_rails的机制并不是这样,而是自己启动若干ruby管理进程,由这些管理进程来控制更多的Rails进程的启动,Rails进程和Apache之间通过Unix Socket通讯,因此在这张情况下,Apache用多进程跑也罢,用多线程跑也罢,都无所谓。
0 请登录后投票
   发表时间:2008-04-26  
自言200801 写道

哈哈,这位mcpssx朋友,虽然我不认识你,也不知道你为什么要来参战,
不过呢,我可以给你提个醒,呵呵,这里的“偶像”们大多都死要面子的,自己扯淡了就转移话题,
死不认错,就怕一认错,粉丝们可就心灰意冷啦,想想崇拜了如此多年,心目中“偶像”竟然那么的不堪一击。

要不,你先休息一下,我来当当主力。

挺好玩的,我竟然意外地发现心理学在这种“战斗”中有如此多的功效,
上次在  <<主题:一门天生就能损害人眼视力的语言->Erlang>>[url] http://www.iteye.com/topic/179337[/url]里
知道多玩几下就好啦。
让“偶像”们变成“呕像”已变成我每天两小时当中的乐趣啦。

哈哈


要说脸皮厚者真是莫过于此。自己都漏洞百出,连ruby基本概念,进程线程概念,PHP的部署,CGI方式等等统统压根不懂,还真是拿无知当有趣,不过的确有趣的很,逗逗你们,看你们暴露出一个又一个无知的常识性错误,我觉得很娱乐。嘿嘿,不过我也就今天有空,明天就没空逗你们玩了。



0 请登录后投票
   发表时间:2008-04-26  
liusong1111 只是想说明一下闭包用于事务管理(例如这里就是确保数据库关闭)是很方便的....怎么说着说着又扯的这么远了?

资源回收如果靠操作系统来完成毕竟有很多局限(例如有些资源回收要求一定顺序,或者有些资源操作系统无法自动回收),而编程语言如果提供了相应的设施,自然更加灵活好用了。操作系统回收资源一般就当作最后一道盾牌来“收尸”。
0 请登录后投票
   发表时间:2008-04-27  
各位,我不了解PHP,不过这里谈的是语言特性在实现一些功能时是否很有意义,就数据库连接这个问题,ruby的伪代码估计就是:
def do_something
  @db = conn_to_db()
  if @db
    begin 
      yield @db
    ensure
      close_db_conn(@db)
    end
  end
end

do_something do |db|
  ....
end


那么,在do_something后面跟的那个闭包里面,如果有意外发生导致中途退出,则数据库连接会确保被正确关闭。

或者以下这种按需关闭的:
def do_something
  begin
    yield
  ensure
    close_db_conn(@db) if @db
  end
end

do_something do
  ...
  @db = conn_to_db()
  ...
  @db = nil if close_db_conn(@db)
  ...
end


其实这里确保资源回收的是begin...ensure...end机制,闭包只是使这种机制可以很好的被包装起来,使用时更加方便而已。

那么如果PHP有类似begin...ensure...end的机制,当然可以实现类似的回收资源,但是如果缺少闭包功能(或者函数不是一等公民)的话,实现起来不免就罗嗦了。

至于那个考操作系统回收资源(通过关闭socket)来关闭数据库,应该不是最佳选择。再者,如果以多线程方式运行,操作系统进程级别回收资源的机制就不会发生作用,例如线程中打开的socket不会被自动销毁。

另外,一个脚本语言的实现是否是“线程安全”的,要看在一个进程中是否允许多个实例,每个实例是否拥有单独的状态机,例如lua就是线程安全的。从C ruby的api来看,是不具备“线程安全”这个条件的。还请对C ruby实现有研究者来谈谈。


0 请登录后投票
   发表时间:2008-04-27  
一个小小的建议,这帖锁了吧,语言之间爱恶的讨论,便如宗教之争,何必呢.
0 请登录后投票
   发表时间:2008-04-27  
myxex 写道
一个小小的建议,这帖锁了吧,语言之间爱恶的讨论,便如宗教之争,何必呢.


没有宗教信仰的人,当然无所谓宗教之争。

无心研究语言特性的人,自然无需参与此贴,一边看着就行,何必来此说风凉话呢?

我使用C/C++很有一段时间了也曾有“用什么语言无所谓”的想法。可最近两年想法逐渐改变,认为语言特性对软件开发的许多方面会产生深远影响,而讨论这种影响,以及为什么会有这种影响都不是没有意义的事。

即使严肃的讨论最终不幸被口水淹没,也希望大家能够保持清醒的头脑,否则JE就和CSDN没什么两样了。
0 请登录后投票
   发表时间:2008-04-27  
rubynroll 写道
myxex 写道
一个小小的建议,这帖锁了吧,语言之间爱恶的讨论,便如宗教之争,何必呢.


没有宗教信仰的人,当然无所谓宗教之争。

无心研究语言特性的人,自然无需参与此贴,一边看着就行,何必来此说风凉话呢?

我使用C/C++很有一段时间了也曾有“用什么语言无所谓”的想法。可最近两年想法逐渐改变,认为语言特性对软件开发的许多方面会产生深远影响,而讨论这种影响,以及为什么会有这种影响都不是没有意义的事。

即使严肃的讨论最终不幸被口水淹没,也希望大家能够保持清醒的头脑,否则JE就和CSDN没什么两样了。

行,我标明自己的语言立场是ruby。
但帖子里某些“讨论”近乎人身攻击,哪来清醒这两个字?
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics